
- •1 Основні елементи мови с
- •1.1 Алфавіт мови програмування
- •1.2 Лексеми
- •1.3 Ключові слова
- •1.4 Ідентифікатори
- •1.5 Класифікація типів даних
- •1.6 Літерали
- •1.7 Оператори
- •1.8 Коментарі
- •1.9 Директиви препроцесора
- •1.10 Організація програми
- •2 Операції та вирази
- •2.1 Загальні відомості
- •2.2 Арифметичні операції
- •2.3 Операції приведення типів
- •2.4 Операції присвоєння
- •2.5 Операції інкремента і декремента
- •2.6 Операції порівняння
- •2.7 Операції зсуву
- •2.8 Порозрядні операції
- •2.9 Логічні операції
- •2.10 Операція sizeof
- •2.11 Операція послідовного обчислення
- •2.12 Операція умови (?:)
- •2.13 Адресні операції
- •3 Прості типи даних
- •3.1 Оголошення змінних
- •3.2 Час існування та область видимості змінних
- •3.3 Цілі типи даних
- •3.4 Дійсні типи даних
- •4 Оператори керування
- •4.1 Оператор розгалуження if
- •4.2 Оператор розгалуження if-else
- •4.3 Оператор множинного розгалуження switch
- •4.4 Оператор циклу for
- •4.5 Оператор циклу while
- •4.6 Оператор циклу do while
- •4.7 Оператор break
- •4.8 Оператор continue
- •5 Функції
- •5.1 Основні поняття
- •5.2 Види виклику функцій
- •5.3 Область видимості
- •5.4 Порожній тип void
- •5.5 Передача аргументів у функцію
- •5.6 Рекурсивні функції
- •5.7 Прототипи функцій
- •6 Покажчики
- •6.1 Визначення та ініціалізація покажчиків
- •6.2 Визначення покажчиків
- •6.3 Масиви
- •6.4 Операції порівняння
- •6.5 Копіювання рядка
- •6.6 Покажчики на функцію
- •6.7 Покажчики на void
- •6.8 Арифметика покажчиків
- •7 Масиви
- •7.1 Загальні поняття
- •7.2 Одновимірні масиви
- •7.3 Багатовимірні масиви
- •8 Рядки в с
- •8.1 Рядки
- •8.2.Створення рядків
- •8.3 Прототипи
- •8.3 Функції перетворення буферів
- •8.4 Функції перевірки літер
- •8.5 Операції з рядками
- •9 Структури, об’єднання, перерахування
- •9.1 Структури
- •9.2 Бітові поля
- •9.3 Ключове слово typedef
- •9.4 Об’єднання
- •9.5 Перераховуваний тип
- •10 Введення та виведення даних
- •10.1 Функція виведення printf
- •10.2Функція введення scanf
- •10.3 Введення та виведення у файл
- •11 Динамічне виділення пам'яті
4.4 Оператор циклу for
Оператор for – це найбільш загальний спосіб організації циклу.
Синтаксис оператора for:
for (Вираз 1 ; Вираз 2 ; Вираз 3)
тіло циклу
«Вираз 1» як правило використовується для встановлення початкового значення (ініціалізації) змінних, керуючих циклом. «Вираз 2» визначає умову, при якій тіло циклу буде виконуватися. «Вираз 3» визначає зміну змінних, керуючих циклом після кожного виконання тіла циклу.
Схема виконання оператора for наступна:
1. Обчислюється «Вираз 1».
2. Обчислюється «Вираз 2».
3. Якщо значення «Виразу 2» відмінне від нуля, тобто «істина» (true), виконується тіло циклу, обчислюється «Вираз 3» і здійснюється перехід до пункту 2, якщо «Вираз 2» дорівнює нулю, «хибність» (false), то управління передається оператору, що іде за оператором for.
Оператор for є циклом з передумовою, тобто перевірка умови завжди виконується на початку циклу. Це значить, що тіло циклу може жодного разу не виконатися, якщо умова виконання відразу буде хибною. Тіло циклу може бути простим чи складеним оператором.
Графічне представлення оператора циклу for зображене на рисунку 4.4.
Приклад 4.5. Написати програму яка виводить на екран таблицю квадратів перших десяти додатних чисел.
#include <stdlib.h>
#include <stdio.h>
int main()
{
int x = 1; /* число*/
Int y; /* квадрат числа*/
for(int i=1; i<=10; i++)
{
y = x * x;
x += 2;
}
system("PAUSE");
return 0;
}
Рисунок 4.4 – Графічне представлення оператора циклу for
4.5 Оператор циклу while
Оператор циклу while є циклом із передумовою.
Синтаксис оператора while:
while (Вираз)
тіло циклу
У якості виразу допускається використовувати будь-який вираз мови С, а у якості тіла циклу простий чи складений оператор.
Схема виконання оператора while наступна:
1. Обчислюється вираз.
2. Якщо вираз хибний (false), то виконання оператора while закінчується і виконується наступний оператор. Якщо значення виразу «істина» (true), то виконується тіло циклу.
3. Процес повторюється з пункту 1.
Графічне представлення оператора циклу while зображене на рисунку 4.5.
На рисунку 4.5 а) зображена загальне графічне представлення оператора циклу while, графічне представлення на рисунку 4.5 б) можна інтерпретувати як розгорнуте графічне представлення оператора for.
а) б)
Рисунок 4.5 – Графічне представлення оператора циклу while
Приклад
4.6. Напишіть
програму, яка виводить на екран таблицю
значень функції
у діапазоні від -4 до 4. Крок зміни аргументу
0,5.
#include <stdlib.h>
#include <stdio.h>
int main()
{
float xmin=-4, xmax=4; /* xmin, xmax – границі
діапазону */
float dx = 0.5; /* dx – крок зміни аргументу */
float y,x;
printf (" x | y \n");
x=xmin;
while (x <= xmax)
{
y = 2*x*x – 5*x – 8;
printf ("%.2f | %.2f \n", x, y);
x = x + dx;
}
system("PAUSE");
return 0;
}
4.6 Оператор циклу do while
Оператор циклу do while є циклом із післяумовою і використовується в тих випадках, коли необхідно виконати тіло циклу хоча б один раз.
Синтаксис оператора do while:
do
тіло циклу
while (Вираз);
Схема виконання оператора do while наступна:
1. Виконується тіло циклу (яке може бути простим чи складеним оператором).
2. Обчислюється вираз.
3. Якщо вираз хибний (false), то виконання оператора do while закінчується і виконується наступний за do while оператор. Якщо значення виразу «істина» (true), то виконання оператора продовжується з пункту 1.
Графічне представлення оператора циклу do while зображене на рисунку 4.6.
а) б)
Рисунок 4.6 – Графічне представлення оператора циклу do-while
На рисунку 4.6 а) зображене загальне графічне представлення оператора циклу do while, на рисунку 4.6 б) зображене розгорнуте графічне представлення оператора циклу do while, в якому «Вираз 1», «Вираз 2» та «Вираз 3» відповідає виразам визначеним для оператора for.
Приклад 4.7. Написати програму обчислення суми чисел введених з клавіатури, у випадку введення числа «0» припинити обчислення.
#include <stdlib.h>
#include <stdio.h>
int main()
{
int sum = 0, ch;
printf(“Vveditj chysla (0 – kinezj vvedennya):”);
do
{
scanf("%i", &ch);
sum = sum + ch;
}
while(ch!=0);
printf("sum = %i \n", sum);
system("PAUSE");
return 0;
}