Программирование циклов

Общая характеристика и особенности реализации трех типов операторов цикла, используемых в языке программирования Си: с предусловием, с постусловием и с параметром. Специфика применения различных операторов. Этапы программирования итерационных циклов.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 10.10.2013
Размер файла 194,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Программирование циклов

В Си существуют все три типа операторов цикла: цикл с предусловием, цикл с постусловием и цикл с параметром.

Цикл с предусловием

Формат оператора цикла с предусловием:

while (выражение) оператор;

Пример записи программы:

Пример 1

int a=0;

while (a<10)

{

a=(a+1)*2;

}

int x;

x = 50;

while (x > 0)

{

x = x - 1;

}

В данном примере тело цикла будет повторяться 50 раз, до тех пор пока переменная x будет больше нуля. На каждом шаге цикла x будет уменьшаться на 1. Когда x станет равным нулю, цикл прекратится.

Цикл повторяет свое выполнение, пока значение выражения отлично от нуля, т.е. заключенное в нем условие цикла истинно.

В качестве примера использования оператора цикла рассмотрим программу вычисления факториала целого положительного числа N!. Сопоставим программу решения этой задачи написанную на Паскале, с программой на Си.

Пример 2.

Программа на Паскале

Program Faktorial;

Var F: Longint; i, N: Integer;

Begin write (`N');

ReadLn(N);

F:=l; i:=l;

While i?N Do

Begin

F:=F*i; i:=i+1 end;

WriteLn (N, '!=', F)

End.

Программа на Си++

// Программа вычисления факториала

#include <iostream.h>

void main ()

{long int F;

int i, N;

cout<< «N=»; cin>>N;

F=i=l;

while (i<=N) F=F*i++;

cout<<»\n»<<N<<»!="<<F;

}

Обратите внимание на операторы в теле цикла. Конечно, и в Си-программе можно было написать два оператора присваивания, объединив их фигурными скобками. Однако использованный способ записи более лаконичен и более характерен для Си. Этот же самый оператор можно было записать еще короче: F*=i++

При практическом использовании этой программы не следует забывать, что факториал - очень быстро растущая функция, и поэтому при определенных значениях N выйдет из диапазона, соответствующего типу long int. Задав для переменной F тип unsigned long, можно сдвинуть эту границу, но этого может оказаться недостаточно. Предлагаем в качестве самостоятельного задания исследовать предельные значения N для двух указанных типов переменной F.

Интересно свойство следующего оператора:

while(1);

Это бесконечный пустой цикл. Использование в качестве выражения константы 1 приводит к тому, что условие повторения цикла все время остается истинным и работа цикла никогда не заканчивается. Тело в этом цикле представляет собой пустой оператор. При исполнении такого оператора программа будет «топтаться на месте».

Рассмотрим еще один пример использования оператора цикла while. Вернемся к задаче итерационного вычисления суммы гармонического ряда: 1 + 1/2+1/3+… с заданной точностью е.

Пример №3

Программа на Си++

/ / Сумма

// гармонического ряда

#include <iostream.h>

#include <limits.h>

void main ()

{int n=l;

double S=0, eps;

cout<<» Точность: «;

cin>>eps;

while (1. 0/n>eps && n<INT_MAX) S+=1/n++;

cout<<»\n Сумма=»<<S;

}

Файл limits. h, подключаемый препроцессором, содержит определения предельных констант для целых типов данных. В частности, константа с именем int_max равна максимальному значению типа int в данной реализации компилятора. Если для типа int используется двухбайтовое представление, то INT_MAX=32767. В этом же заголовочном файле определены и другие константы: INT_MIN=-32768; LONG_MAX=2147483647 И Т.Д.

Пример №4

#include <stdio.h>

int main()

{int i=0; // объявим целочисленный идентификатор и присваиваем ему значение ноль

while (i<5) // выполняем цикл while до тех пор пока i<5

{

printf («Hello, World!\n»);

i++; // увеличиваем значение идентификатора i на единицу.

}

}

Цикл с постусловием

Формат оператора цикла с постусловием:

do оператор while (выражение);

Цикл выполняется до тех пор, пока выражение отлично от нуля, т.е. заключение в нем условие цикла истинно. Выход из цикла происходит после того, как значение выражения станет ложным, иными словами равным нулю. В качестве примера рассмотрим программу вычисления N!, в которой используется цикл с постусловием.

Программа на Си++

// Программа вычисления факториала

include <iostream.h>

void main()

{long int F;

int i, N;

cout<<» N=»; cin>>N;

F=i=l;

do F*=i++;

while (i<=N);

cout<<»\n»<<N<<»!=»<<F;

}

Пример №5.

Если предложенное Вами число превышает задуманное компьютером, Вам выдается сообщение «Больше». В противном случае, если наоборот, не превышает, Выдается сообщение: «Меньше». При попадании на задуманное число компьютер сообщает об этом. Одновременно подсчитывается затраченное Вами число шагов на отгадывание задуманного компьютером числа.

Текст программы, полученный в результате трансляции, Вы видите ниже на рисунке:

На рисунке показан процесс отгадывание задуманного компьютером числа:

Пример №6

#include <stdio.h>

int main()

{int i=0; // объявим целочисленный идентификатор и присвоим ему значение ноль

do // до тех пор пока

{

printf («Hello, World!\n»);

i++; // увеличиваем значение i на единицу

}

while (i<=5); // i<=5 выполняется условие - выполняется цикл

}

Цикл с параметром

Формат оператора цикла с параметром:

for (выражение_1; выражение_2; выражение__3) оператор;

Выражение 1 выполняется только один раз в начале цикла. Обычно оно определяет начальное значение параметра цикла (инициализирует параметр цикла). Выражение 2 - это условие выполнения цикла. Выражение 3 обычно определяет изменение параметра цикла, оператор - тело цикла, которое может быть простым или составным. В последнем случае используются фигурные скобки.

Алгоритм выполнения цикла for представлен на блок-схеме на рис.

Обратите внимание на то, что после вычисления выражения 3 происходит возврат к вычислению выражения 2 - проверке условия повторения цикла.

С помощью цикла for нахождение N! можно организовать следующим образом:

F=l;

for (i=l; i<=N; i++) F=F*i;

Используя операцию «запятая», можно в выражение 1 внести инициализацию значений сразу нескольких переменных:

For (F=l, i=l; i<=N; i++) F= F*i;

Некоторых элементов в операторе for может не быть, однако разделяющие их точки с запятой обязательно должны присутствовать. В следующем примере инициализирующая часть вынесена из оператора for:

F=l; i=1; for (; i<=N; i++) F=F*i;

Ниже показан еще один вариант вычисления N!. В нем на месте тела цикла находится пустой оператор, а вычислительная часть внесена в выражение 3.

for (F=l, i=l; i<=N; F=F*i, i++);

Этот же оператор можно записать в следующей форме:

for (F=l, i=l; i<=N; F*=i++);

В языке Си оператор for является достаточно универсальным средством для организации циклов. С его помощью можно программировать даже итерационные циклы, что невозможно в Паскале. Вот пример вычисления суммы элементов гармонического ряда, превышающих заданную величину е:

for (n=l, S=0; 1.0/n>eps && n<INT_MAX; n++) S+=1.0/n;

оператор программирование цикл итерационный

И наконец, эта же самая задача с пустым телом цикла:

for (n=l, S=0; 1.0/n>eps && n<INT_MAX; S+=l. 0/n++);

Следующий фрагмент программы на Си++ содержит два вложенных цикла for. В нем запрограммировано получение на экране таблицы умножения.

for (x=2; x<=9; x++)

for (у=2; у<=9; у++)

cout<<»\n»<<x<<<<*<<y<<» = «<<x*y;

На экране будет получен следующий результат:

2*2 = 4

2*3 = 6

………

9*8=72

9*9=81

Оператор continue. Если выполнение очередного шага цикла требуется завершить до того, как будет достигнут конец тела цикла. используется оператор continue. Следующий фрагмент программы обеспечивает вывод на экран всех четных чисел в диапазоне от 1 до 100.

for (i = l; i<=100; i++)

{if (i % 2) continue; cout<<»\t»<<i;}

Для нечетных значений переменной / остаток от деления на 2 будет равен единице, этот результат воспринимается как значение «истина» в условии ветвления, и выполняется оператор continue. Он завершит очередной шаг цикла, выполнение цикла перейдет к следующему шагу.

Ниже показан пример программы на языке Си, которая выводит на экран монитора буквы латинского алфавита от «A» до «Z».

#include <stdio.h>

#include <windows.h>

#include <conio.h>

main()

{

char str[50];

unsigned char ch;

textbackground(4);

textcolor(15);

clrscr();

for (ch='A'; ch<='Z'; ch++) printf («%c», ch);

CharToOem («\nДля выхода нажмите любую клавишу», str);

printf(str);

getch();

}

Результат выполнения рассмотренной программы, написанной на языке Си.

// Пример 7

int c;

c=1;

while (c!=0)

{

cin>>c;

if (c==2)

continue;

if (c<0)

break

cout<<«OK, Good Number;)«<<endl;

}

Пример №8

int nums2 [1000];

int j=0;

for (int i=999; i>-1; i-)

{

nums2 [i]=j;

j++;

}

Пример №

int c;

c=1;

while (c!=0)

{

cin>>c;

if (c==2)

continue;

if (c<0)

break

cout<<«OK, Good Number;)«<<endl;

}

Пример №9

#include <stdio.h>

int main()

{

int i, k, z=1, l=2, s=5;

for (i=0; i<5; i++)

{

k=l*z;

z=k;

}

printf («%d в степени % d =%d\n», l, s, z);

}

Вышеприведённая программа возводит 2 (l) в степень 5 (s). Она работает по следующему принципу:

шаг 1. объявляем идентификаторы i, k, z=1, l=2, s=5.

шаг 2. i=0

шаг 3. до тех пор пока i меньше или равно s, выполняем цикл

шаг 4. i=1

шаг 5. k=2*1

шаг 6. z=2

шаг 7. 1<5 продолжаем выполнение

шаг 8. i=2

шаг 9. k=2*2

шаг 10. z=4

шаг 11. 2<5 продолжаем выполнение

шаг 12. i=3

шаг 13. k=2*4

шаг 14. z=8

шаг 15. 3<5 продолжаем выполнение

шаг 16. i=4

шаг 17. k=2*8

шаг 18. z=16

шаг 19. 4<5 продолжаем выполнение

шаг 20. i=5

шаг 21. k=2*16

шаг 22. z=32

шаг 23. 5==5 условие не выполняется, выходим из цикла

шаг 24. производим вывод сообщения 2 в степени 5 = 32.

Размещено на Allbest.ru


Подобные документы

  • Характерные черты программирования на алгоритмическом языке СИ (алфавит, операции, специфика операторов, комментарии и другие элементы). Аналитический обзор и рассмотрение примеров программ, иллюстрирующих особенности применения основных операторов СИ.

    презентация [251,0 K], добавлен 26.07.2013

  • Применение циклической управляющией структуры для организации многократного выполнения некоторого оператора. Конструкция цикла: заголовок и тело, и алгоритм выполнения операторов while, do while и for. Отличия циклов с постусловием и предусловием.

    контрольная работа [65,8 K], добавлен 30.12.2010

  • Изучение циклических операторов: оператора цикла, управляемого счетчиком, оператора цикла с предусловием и постусловием. Минимизированные функции, текст программы. Алгоритм работы приложения по нахождению функции с помощью операторов break и continue.

    лабораторная работа [474,2 K], добавлен 23.11.2014

  • Характеристики операторов языка Си. Операторы безусловного и условного перехода: if, if-else, if-else if. Оператор переключатель switch. Оператор цикла с предусловием while, постусловием do-while. Упрощение логических выражений, взаимозаменяемость циклов.

    лабораторная работа [30,0 K], добавлен 06.07.2009

  • Программа на языке Си как набор операторов разделенных между собой точкой с запятой, знакомство с особенностями структуры, назначение. Общая характеристика линейных и циклических вычислительных процессов. Рассмотрение основных видов операторов цикла.

    презентация [139,7 K], добавлен 26.07.2013

  • Программирование линейных и ветвящихся процессов; циклов с предусловием, постусловием и параметром для вычисления сложных сумм и произведений рядов; таблицы значений функции двух переменных. Блок-схемы алгоритмов. Тексты программ и результаты их работы.

    курсовая работа [2,4 M], добавлен 11.03.2015

  • Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.

    реферат [64,0 K], добавлен 20.03.2016

  • Решение задач, прямо связанных с применением циклов и массивов. Условия применения различных видов циклической структуры. Операторы цикла с предусловием while, постусловием do-while и for. Особенности работы с одномерными и двумерными массивами.

    курсовая работа [1,1 M], добавлен 31.08.2019

  • Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.

    курсовая работа [345,6 K], добавлен 13.11.2009

  • Характеристика алгоритма, его свойств, способов записи. Особенности, типовые примеры линейной алгоритмической структуры. Анализ разветвляющей алгоритмической структуры. Изучение основных операторов циклов. Эволюция, классификация языков программирования.

    контрольная работа [492,2 K], добавлен 15.02.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.