Программирование циклических алгоритмов. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Программирование циклических алгоритмов.



Организация циклов.

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

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

 

Оператор цикла while.

Оператор цикла с предусловием является наиболее общим по сравнению с другими конструкциями. В принципе, для программирования достаточно иметь только цикл while.

While (< выражение>) оператор

 

истинно
Проверяется выражение, стоящее в заголовке. Если выражение истинно, то выполняется оператор до тех пор, пока выражение не будет ложно.

NV!! Значение выражения определяется до выполнения оператора, следовательно, если выражение ложно с самого начала, то оператор вообще не выполняется.

В качестве внутреннего оператора можно использовать любой оператор языка или группу операторов, заключённые в фигурные скобки, при этом; после закрывающей фигурной скобки не ставится.

Пример 1:

while (k<n){ y=y*x; k++;}

Оператор цикла do-while.

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

 

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

 

Выполняется оператор, проверяется выражение, стоящее в заголовке. Если выражение истинно, то выполняется оператор до тех пор, пока выражение не будет ложно.

 

Пример 2:

x=1;

do

 printf(“%d \n”,power(x,2));

while (++x<=7);

 

Определить является ли число простым.

#include <conio.h>

#include <stdio.h>

void main()

{int i, N;

printf (“\|n Введите число ”); scanf (“%d”, &N);

i=1; 

Do

i++;

while (N%i!=0);

if (i==N) printf (“\n число простое ”);

else printf (“ \n делится на %d”, i);

getch();

}

 

Вычислить сумму целых чисел, введённых с клавиатуры, пока не встретится “0”.

#include <conio.h>

#include <stdio.h>

void main()

{int a, s;

a=1; s=0;

Do

{printf (“\n a=”); scanf (“%d”, &a);

s+=a;

}

  while (a!=0);

printf (“ \n сумма=%d”, s);

getch();

}

Операторы цикла while и do-while. Рекомендации к использованию:

n перед каждым выполнением цикла условие окончания или продолжения цикла должно быть определено (имеет конкретное значение);

n тело цикла должно содержать хотя бы один оператор, влияющий на условие окончания или продолжения цикла;

n  условие окончания цикла должно выполняться за конечное время;

n условие вычисляется при каждом выполнении цикла и поэтому должно быть по возможности наиболее простым.

Оператор цикла for.

Для реализации цикла с известным числом повторений целесообразно использовать оператор цикла с параметром.

for ( <выражение_1>; < выражение_2>; < выражение_3> )

оператор

выражение_1 - инициализация цикла (вычисляется только один раз перед началом выполнения цикла);

выражение_2 – проверка условия завершения цикла (выполняется перед каждым шагом цикла);

выражение_3 – вычисляется после каждой итерации (обычно оно                      применяется для коррекции значения параметра цикла).

     
 
Оператор

 


ложно  
 

Оператор for эквивалентен следующей последовательности операторов:

выражение_1;

while (выражение_2)

  { оператор;

выражение_3;

 }

Пример

 3: распечатать квадраты цифр от 1 до 7

for (x=1; x<=7; x++)

 printf (“%d \n”, power(x,2));

 

Пример

 4: распечатать цифры от 1 до 6 и их кубы.

int num;

for (num=1; num<=6; x++)

 printf (“%5d %5d\n”, num,num*num*num);

 

Замечания:

1) Любое из трёх или все три выражения могут отсутствовать в операторе for, однако, разделяющие их  ;   опускать нельзя.

Если отсутствует

· выражение_3, то отсутствует шаг;

· выражение_2, то считается, что выражение всегда даёт значение истинно;

· выражение_1, то отсутствует начальная инициализация.

2) for(;;) // бесконечный цикл, из которого выходят при помощи других

{           // действий (Пример: ожидание запуска процесса)

 ...

}

3) while, for – аналогичные операторы, при этом логичнее использовать while, если нет начальной инициализации.

while ((c=getchar())==’ ‘ || c==’\n’ || c==’\t’);

с клавиатуры читаем символы, если нет символов табуляции

При явной инициализации логичнее использовать оператор for.

Обработка первых N элементов массива.

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

 ...

4) В языке С оператор for имеет отличия по сравнению с другими языками:

· при любом выходе из цикла значение параметра цикла считается определённым и можно его использовать;

· внутри цикла можно менятьпределы выполнения цикла

for (i=0; i<n; i++) //обработка значений массива

{...

 n=30;

 }

· каждое из выражений 1-3 может состоять из нескольких выражений, объединённых оператором запятая  ,  .  

a)for (i=0,j=n-1; i<n; i++,j--)

  a[i]=a[j];

 

b)for(i=2b=1.0,r=x; r>eps ||r<-eps; b+=r,r*=x/i,i++)

 

Вспомогательные операторы.



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 119; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.41.214 (0.01 с.)