Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_Лаб_Гриф.doc
Скачиваний:
7
Добавлен:
14.11.2019
Размер:
2.81 Mб
Скачать

Алгоритм роботи оператора циклу for ( )

  1. Обчислюється перший вираз (якщо він присутній).

  2. Обчислюється другий вираз (якщо він присутній), перевіряється умова закінчення циклу: (<Вираз_2> дорівнює  ( = = ), тобто є “Неправда”). Якщо <Вираз_2> не дорівнює  ( != ), тобто є “Істина”, – відбувається перехід до пункту 3, інакше - вихід з циклу.

  3. Виконується тіло циклу.

  4. Обчислюється <Вираз_3>, якщо він присутній.

  5. Перехід до пункту 2.

Поява в будь-якому місці тіла оператора циклу for оператора continue приводить до припинення виконання операторів у тілі циклу і негайному переходу до пункту 2.

Вихід з циклу можливий аналогічно while за допомогою операторів: break, goto, return.

Приклад застосування оператора for приведений у таблиці 4.3. Програма виводить парні числа у діапазоні від 100 до 0 у порядку убування.

Таблиця 4.3- Приклади застосування оператора for

Варіант 1

Варіант 2

#include <stdio.h>

void main (void) {

for (int i=100; i >= 0; i - = 2)

//Шаг дорівнює –2 (i = i - 2)

printf("\n%d", i);

}

fоr ( i =100; i >= 0; i - -)

if (i%2 = = 1) //% - Залишок

//від розподілу на 2

continue; //Оператор continue

//припиняє поточну ітерацію

else printf("\n%d", i);

Для демонстрації гнучкості оператора for перепишемо приведені приклади у наступному вигляді (варіант 3):

for(int i= 100; i >= 0; printf("\n%d", i), i - = 2);

Приклад

/* ЗАНЯТТЯ N 4

Розробив ...........Петров Л.Г.

Рядок символів записується у зворотному порядку з

застосуванням різних операторів організації циклів. */

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

# define N 23

main( ) {

int t, b; char m;

char string[ ] = " \"Ініціалізація рядка\" ";

clrscr( );

printf("Виведення вхідного рядка\n");

for (t = 0; t < N; t ++) // Цикл for – ( з передумовою)

printf("%c ", string[ t ] );

for (t = 0, b = N - 2; t < ( N - 1) / 2; t ++, b - - )

{m = string[ t ];

string[ t ] = string[ b ];

string[ b ] = m;

}

printf("\n Виведення рядка у зворотному порядку \n");

for (t = 0; t < N; t ++) printf("%c ", string[ t ] );

printf("\nВведення нового рядка -y, не вводити - n:\t");

m = getche( );

if(m != 'n')

new_str: scanf("%s", string);

else printf("\n");

t=0;

while(string[ t ] != '\0') // Цикл while – (з передумовою)

{printf("%c", string[t]);

t++;

}

printf("\n Кількість символів =%2d\n", t);

printf("Виведення рядка у зворотному порядку \n");

b = t - 1; t = 0;

do { // Цикл do...while - (з постумовою)

m = string[t];

string[t] = string[b];

string[b] = m;

t++; b - -;

}while(t < b);

printf("%s ", string);

printf("\n Введення нового рядка - y, не вводити - n:\t");

m = getche( );

if( m = = 'у' ) goto new_str; //new_str - мітка

else getch( );

}

/* Виведення вхідного рядка

" І н і ц і а л і з а ц і я р я д к а "

Виведення рядка у зворотному порядку

" а к д я р я і ц а з і л а і ц і н І "

Введення нового рядка - y, не вводити - n: n

"а к д я р я і ц а з і л а і ц і н І "

Кількість символів =19

Виведення рядка у зворотному порядку

"Ініціалізація рядка"

Введення нового рядка - y, не вводити - n: y

qwert12345

Кількість символів =10

Виведення рядка у зворотному порядку

54321trewq

Введення нового рядка - y, не вводити - n: n */