- •Елементи мови с.Основні символи
- •Ключові слова
- •Ідентифікатори
- •Константи
- •Лексеми
- •Коментарі
- •Умовні оператори. Логічні вирази
- •Форми оператора if
- •Оператор вибору switch
- •Перерахування типів
- •Перетворення типів
- •Оператори циклу
- •Оператор while
- •Оператор for
- •Оператор do-while
- •Оператори переходу
- •Cтруктури
- •Об'єднання (суміші)
- •Робота з структурами.
- •Ініціалізація структур
- •Робота з обєднаннями
- •Визначення об'єктів та типів
- •Методи доступу до елементів масивів
- •Покажчики на багатовимірні масиви
- •Операції з вказівниками
- •Робота з покажчиками.
- •Покажчики на структуру
- •Масиви структур
- •Динамічне розміщення масивів
- •Робота з динамічними масивами
- •Робота з непрямою адресацією
- •Робота з покажчиками як параметрами функцій
- •Використання вказівників
- •Операції з вказівниками
- •Використання вказівників в програмі
- •Робота з файлами
- •Відкриття файлу
- •Обробка відкритого файлу
- •Перевірка ознаки кінця файлу
- •Закриття файлу
- •Функції введення-виведення
- •Робота з текстовими файлами
- •Функція форматованого виведення printf ()
- •Основні формати
- •Модифікації форматів
- •Функція форматованого введення scanf ()
- •Робота функції scanf ()
- •Призначеня функцій бібліотеки введення-виведення
- •Макрокоманди
- •Потокові інтерфейси введення-виведення
- •Ближні покажчики (near)
- •Дальні покажчики (far)
- •Покажчики huge
- •Функції для роботи з рядками
- •Динамічні рядки, клас string
- •Визначення поточної робочої директорії
- •Визначення поточного каталогу диска
- •Визначення / встановленн поточного диска
- •Пошук файлу
- •Створення, видалення, зміна директорій
- •Приклад програми для роботи з директоріями
- •Перегляд каталогу диска
- •Параметри структури ffblk
- •Робота з клавіатурою
- •Робота з файлами
- •Послідовний доступ до елементів двійкових файлів
- •Організація довільного доступу до елементів двійкових файлів
- •Робота динамічних структур даних.
- •Функції управління пам'яттю
- •Атрибути файлів.
- •Параметри
- •Динамічні структури даніх
- •Лінійні списки
- •Стек. Загальні поняття.
- •Приклад використання стеку
- •Основні визначення
- •Приклад використання дерев
Оператори циклу
У мові C, як і в інших мовах програмування, оператори циклу служать для багатократного повторення послідовності операторів до тих пір, поки виконується деяка умова. Цикл складається з заголовка і тіла циклу. Вхід в цикл і вихід з циклу здійснюються через заголовок циклу. У C існують три види циклів: for, while, do-while.
Оператор while
Ключове слово while дозволяє виконувати оператор або групу операторів до тих пір, поки умова не перестане бути істинним.
Синтаксис: while (ЛВ) ОP;
де ЛВ - логічне вираження, ОP - тіло циклу (простий або складений оператор).
Отже:
якщо ЛВ - істинно, виконується ОР, потім знову перевіряється ЛВ і так далі;
якщо ЛВ - помилково, ОР пропускається, і управління передається на оператор, наступний за тілом циклу.
Оскільки перевірка ЛВ виконується перед тілом циклу, цикл while називають циклом з передумовою.
Якщо ЛВ спочатку хибно, тіло циклу while не виконається жодного разу.
Приклад програми
Обчислити значення sin (x) для деякого x із заданою точністю шляхом розкладання в степеневий ряд, за умови, що x> e:
# Include <stdio.h>
# Include <math.h>
# Define EPS 0.001
int main (void)
{ float x, S = 0, U;
int i = 0;
printf («\ n Input x →");
scanf ("% f", & x);U=x;
while (fabs (U)> EPS) / * fabs - функція обчислення
абсолютного значення, оголошена в math.h * /
{S + = U;
+ + I;
U * = (-x) * x;
U / = 2 * i * (2 * i +1);
}
printf ("\ n sin (% f) =% 7.3f", x, S);
return 0;}
Оператор for
Оператор циклу for дозволяє виконувати оператор або групу операторів заздалегідь задану кількість разів.
Загальна форма оператора
for (V1; ЛВ; V2) ОP;
де V1 - вираз, в якому проводиться присвоювання змінної, званої параметром циклу, початкового значення (ініціалізація); ЛВ - умова, що визначає, чи слід в черговий раз виконувати оператор (тіло циклу); V2 - вираз, в якому проводиться зміна змінної циклу ( прирощення); ОР - оператор або група операторів.
Принцип роботи:
обчислюється V1;
обчислюється ЛВ;
якщо ЛВ істинно, виконується ОР, потім обчислюється V2;
перевірка ЛВ → ОP → V2 і т. д.
Коли ЛВ стає помилковим, здійснюється перехід до оператора, наступного за ОP. Якщо ОP - складений оператор, то його треба укласти в {}.
Якщо ЛВ відразу помилково, то ні ОР, ні V2 не виконуються жодного разу.
Відзначимо дві додаткові можливості оператора for в порівнянні з оператором while:
Про можливість включення ініціалізує вираження V1, використовуваного один раз перед тим, як буде зроблено оцінку умови;
прo можливість включення вирази V2, яке буде використовуватися після кожної ітерації оператора ОР.
Приклад 1. Обчислити значення функції sin (x) в рівновіддалених точках на інтервалі [0, 4π]. Кількість розрахункових точок вводиться з клавіатури:
#include <stdio.h>
#include <math.h>
int main(void)
{int n;
float x, y;
float x1=0, x2=4*M_PI;
printf("Введіть кількість точок\n");
scanf("%d",&n);
x=x1;
float step=(x2−x1)/(n−1);
for (int i=1; i<=n; i++)
{y = sin(x);
printf("%3d %8.3f %8.3f\n",i,x,y);
x+=step;}
return 0;
}
У цьому прикладі кількість точок задається в цілочисельний змінної n, межі інтервалу зміни x - в змінних x1 і x2, які мають дійсний тип і ініціалізувалися при оголошенні. M_PI - макрос, який представляє число π, оголошений в заголовному файлі math.h. Там же оголошена функція sin ().
Слід мати на увазі, що всі три вирази - V1, ЛВ, V2 є необов'язковими. В якості ОP може бути використаний порожній оператор.
Можливі конструкції:
for (V1;; V2) ОP (нескінченний цикл); for (; ЛВ ;) ОP і навіть for (; ;).
Зауважимо, що за допомогою операторів for і while можна створювати нескінченні цикли, якщо опустити всі три вирази в операторі for і використовувати завжди істинне ЛВ в while. Такі програми не можна назвати коректними, але існують способи завершення самих некоректних циклів.
Допускається використання оператора for, коли є декілька початкових виразів виду V1, перерахованих через кому, і кілька виразів виду V2, також перерахованих через кому. Конструкція такого виду носить назву - операція кома.
Використовуючи операцію кома, складемо програму обчислення все того ж sin (x):
# Include <stdio.h>
# Include <math.h>
# Define EPS 0.001
int main (void)
{
float x, S, U;
int i;
printf ("\ n Input x?");
scanf ("% f", & x);
for (S = 0, U = x, i = 0; fabs (U)> EPS; S + = U, i + +, U * = (-x / 2 * i +1)));
printf ("\ n sin (% 6.3f) =% 7.3f", x, S);
return 0;
}
