Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
31.01.2021
Размер:
16.55 Кб
Скачать

Інформатика — Теорія — Цикл for    Автори

|

Контакти

|

Підсистема допомоги

|

Методичні вказівки

|

Анотація

|

Назад

   ІнформатикаОператори циклу : Цикл forЗміст курсу

Вступ

Теорія

Оператор циклу з передумовою while

Оператор циклу з постумовою do … while

Цикл for

Практика

Лабораторна робота

Поточна перевірка знань

Використання циклів

Висновки

Версія для друку

  Цикл for      Оператор циклу for має наступну форму запису:

for ( [вираз_1;] [вираз_2;] [вираз_3] ) оператор;

або

for ( [вираз_1;] [вираз_2;] [вираз_3] ) { тіло циклу;}

де вираз_1 - вираз ініціалізації, що звичайно використовується для установки початкового значення; це вираз присвоювання (необов'язковий параметр);

вираз_2 - вираз умови, що визначає, при якій умові цикл буде повторюватися (необов'язковий параметр);

вираз_3 - вираз ітерації, що визначає крок зміни змінних, які керують циклом після кожного виконання (необов'язковий параметр).

     Цей оператор реалізується таким чином:

- спочатку виконується вираз ініціалізації (ця нотація може бути виконана до оператора for);

- обчислюється умовне вираження;

- якщо результат умовного вираження є "істина" (не дорівнює нулю), то виконується оператор циклу;

- обчислюється вираз ітерації;

- знову перевіряється умова;

- як тільки умовний вираз стає рівним нулю ("неправда"), керування передається оператору, що розташовується за оператором циклу for.

     Оскільки перевірка умови виконується перед циклом, то цикл може жодного разу не виконуватися, якщо умова відразу буде помилковою.

     Розглянемо наступний приклад послідовного друку чисел від 0 до 9 за допомогою двох циклів:

int x;

for (x=0; x<10; x++)

cout<<" "<<x;

int x; x=0;while (x<10)

{

     cout<<" "<<x;

     x++;

}

     В заголовку циклу for - у круглих дужках, що стоять після ключового слова - стоять три вираження, розділені ; (крапка з комою). Спочатку йде x=0. Це - частина ініціалізації. Цей оператор виконається єдиний раз при вході в цикл, заславши в змінну x значення 0. За ініціалізацією, у другій частині заголовка, розміщена умова x<10. Після виконання ініціалізації цю умову буде перевірено, і, якщо вона виявиться істинною, буде виконаний оператор тіла циклу - cout. Зрозуміло, замість одного cout можна поставити як тіло блок у фігурних дужках. Після того, як відпрацює тіло циклу, справа дійде до третьої частини заголовка (цю частину прийнято називати ітерацією). І ця третя частина виконається, начебто це останній виконуваний оператор циклу. У прикладі як ітерація в заголовку стоїть x++, так що після cout змінна x збільшиться на одиницю. На цьому перший прохід циклу закінчиться.

Перед другим (і наступними проходами) ініціалізація виконуватися вже не буде - програма перевірить умову x<10 і, якщо вона усе ще не хибна, повторить cout і за ним частину заголовка з ітерацією x++. І так буде тривати доти, поки умова не виявиться помилковою, тобто, поки х не доросте до 10. На цьому виконання циклу закінчиться. І, що важливо, останнє надруковане значення буде 9, але змінна x після циклу виявиться рівної 10.

Якщо ж умова в заголовку циклу не виконується відразу при вході в цикл, наприклад

int x;

for (x=10; x<10; x++)

     cout<<" "<<x;

то ні тіло, ні ітерація - x++ не виконуються жодного разу.

     Зовсім необов'язково писати всі три частини заголовка циклу - можна опустити кожну з них, або навіть всі, але крапки з комами є обов'язковими. От як міг би виглядати той же цикл for з відсутніми частинами ініціалізації й ітерації:

int x;x=0;

for ( ; x<10 ; )

{

     cout<<" "<<x;

     x++;

}

     Якщо ж пропущена умова виходу, програма буде вважати, що умова завжди істинна, так що

for (;;)

     cout<<"hello\n";

як і

while (1)

cout<<"hello\n";

буде друкувати рядок "hello" нескінченно.

     Саме собою зрозуміло, що умова виходу в циклі for, як, втім, і у двох інших циклах, може бути й складнішою. Наприклад, цикл

for ( ; x<10 && y!=0; )...;

буде виконуватися доти, поки x менше 10 і y не дорівнює нулю.

     За правилами мови в заголовок for як ініціалізацію й ітерацію можна поставити тільки один вираз. Але синтаксис не забороняє використовувати в цих виразах оператор кома, який дозволяє, наприклад, наступне:

for ( x=0, y=10; x<y; x+=2, y-- ) {...;}

     В такому випадку змінні х і у будуть змінюватись одночасно кожна за своїм законом, доки умова є істинною.

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

Приклад 6. Просумувати всі парні числа від парного числа a до парного числа b.

#include <iostream.h>

void main()

{

     int sum=0, a, b, i, temp;

     cout<<"Треба ввести a, a=";

     cin>>a;

     cout<<"\nТреба ввести b, b=";

     cin>>b;

     if (b<a)

     {

          temp=b;

          b=a;

          a=temp;

     } // поміняли місцями значення b і a

     for (i=a; i<b; i+=2)

          sum+ =i;

     cout<<"\n Sum= "<<sum;

     cout<<"\n";

}     

Приклад 7. Обчислити функцію , якщо х∈[-1,1]; а∈[-2,4]; hx=0.2, hа=0.5 з використанням оператора циклу for.

#include <iostream .h>

#include <math.h>

void main ( )

{

     float a, x, y;

     for ( а = -2 ; а <= 4; а+= 0.5 )

     for ( x = -1 ; x <= 1; x+= 0.2 )

     {

          y = a * x * x - sin(x) ;

          cout<<"\na="<<a<<" x = "<<x<<" y = "<< y ;

     }

}

 © 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.uaРозроблено за допомогою LERSUS

Соседние файлы в папке content