- •2. Основні елементи мови с
- •3.1 Алфавіт мови програмування
- •3.2Лексеми
- •3.3Ключові слова
- •3.4Ідентифікатори
- •3.5 Класифікація типів даних
- •3.6 Літерали
- •3.7 Оператори
- •3.8 Коментарі
- •3.9 Директиви препроцесора
- •3.10 Організація програми
- •3. Операції та вирази
- •4.1 Загальні відомості
- •4.2 Арифметичні операції
- •4.3 Операції приведення типів
- •(Тип) ідентифікатор,
- •4.4 Операції присвоєння
- •4.5 Операції інкремента і декремента
- •4.6 Операції порівняння
- •4.7 Операції зсуву
- •4.8 Порозрядні операції
- •4.9 Логічні операції
- •4.10 Операція sizeof
- •Sizeof ( Вираз ),
- •4.11 Операція послідовного обчислення
- •4.12 Операція умови (?:)
- •Операнд-1 ? Операнд-2 : Операнд-3
- •4.13 Адресні операції
- •Тип * ім'я_покажчика;
- •4. Прості типи даних
- •5.1 Оголошення змінних
- •[ Модифікатори ] тип ім’я_змінної;
- •5.2 Час існування та область видимості змінних
- •5.3 Цілі типи даних
- •5.4 Дійсні типи даних
- •5. Оператори керування
- •5.1 Оператор розгалуження if
- •If ( Вираз ) true-оператор;
- •5.2 Оператор розгалуження if-else
- •If ( Вираз ) true-оператор; else false-оператор;
- •5.3 Оператор множинного розгалуження switch
- •5.4 Оператор циклу for
- •For ( Вираз 1 ; Вираз 2 ; Вираз 3 ) тіло циклу
- •5.5 Оператор циклу while
- •While ( Вираз ) тіло циклу
- •5.6 Оператор циклу do while
- •Тіло циклу while ( Вираз ) ;
- •5.7 Оператор break
- •5.8 Оператор continue
- •6 Введення та виведення даних
- •7.1 Функція виведення printf
- •Int printf( стрічка форматування, змінна1, змінна2, ... );
- •7.2Функція введення scanf
- •Int scanf (стрічка форматування, адреса змінної1, адреса змінної2, ... );
- •9.1 Введення та виведення у файл
- •7 Масиви
- •7.1 Загальні поняття
- •7.2 Одновимірні масиви
- •Тип даних ім’я змінної [n];
- •7.3 Багатовимірні масиви
- •6. Функції
- •6.1 Основні поняття
- •{Тіло функції}
- •6.2 Область видимості
- •6.3 Порожній тип void
- •6.4 Передача аргументів у функцію
- •6.5 Рекурсивні функції
- •6.6 Прототипи функцій
- •8. Рядки в с
- •4.1 Прототипи
- •4.2 Функції перетворення буферів
- •4.3 Функції перевірки літер
- •4.4 Рядок символів
- •4.5 Операції з рядками:
- •4.6 Символьні константи
- •9. Покажчики
- •5.1 Визначення та ініціалізація покажчиків
- •5.2 Визначення покажчиків:
- •5.3 Масиви
- •5.6 Копіювання рядка
- •5.7 Посилання та оператор &
- •5.9 Посилання в якості результатів функції
- •5.10 Покажчики на функцію
- •Тип_функціі (* імя_покажчика) (специфікація_параметрів);
- •5.11 Покажчики на void
- •5.12 Арифметика покажчиків
- •10. Структури, об’єднання, перерахування
- •7.1 Структури
- •7.2 Ключове слово typedef
- •7.3 Об’єднання
- •7.4Перераховуваний тип (Enum)
- •Enum dataType
- •Enum day
- •11 Динамічне виділення пам'яті
5.1 Оператор розгалуження if
Приклад 1.Синтаксис оператора розгалуження if
If ( Вираз ) true-оператор;
де «Вираз» – це вираз довільного вигляду, що інтерпретується мовою C як логічне «так» (true), тобто будь-яке відмінне від нуля значення, або «ні» (false) у випадку якщо значення виразу дорівнює нулю.
Виконання оператора if починається з обчислення виразу, якщо значення виразу відмінне від нуля, то виконується true-оператор, а потім наступний за if оператор; якщо значення виразу дорівнює нулю, то true-оператор пропускається і керування передається наступному за if оператору. true-оператор може містити простий чи складений оператор.
Блок-схема оператора if зображена на рисунку 5.1.
Рисунок 5.1 – Блок-схема оператора розгалуження if
Приклад 2. Написати програму обчислення вартості розмови по телефону з врахуванням 20% знижки, яка надається по суботам та неділям.
#include <stdlib.h>
#include <stdio.h>
int main()
{
int time; /*тривалість розмови, хвилин*/
int day; /* день тиждня */
float sum; /*вартість розмови*/
printf("Vveditj tryvalistj rozmovy:\n");
scanf("%i",&time);
printf("Vveditj denj tyznya (1-7):\n");
scanf("%i",&day);
sum = 2.4 * time;
if (day == 6 || day == 7)
{
printf("E znygka 20%\n"); /*Повідомлення про знижку*/
sum = sum * 0.8;
}
printf("Vartistj rozmovy: %3.2f\n", sum);
system("PAUSE");
return 0;
}
5.2 Оператор розгалуження if-else
Розглянутий вище оператор if можна розглядати як окремий випадок оператора if-else.
Приклад 3.Синтаксис оператора if-else .
If ( Вираз ) true-оператор; else false-оператор;
Блок-схема оператора if-elseзображена на рисунку 5.2.
Рисунок 5.2 – Блок-схема оператора розгалуження if-else
Виконання оператора if-else починається з обчислення виразу, якщо значення виразу відмінне від нуля, то виконується true-оператор, а потім наступний за if-else оператор; якщо значення виразу дорівнює нулю, то виконуєтьсяfalse-оператор а потім наступний за if-else оператор. Якtrue-оператор так і false-оператор можуть бути простим чи складеним оператором.
Приклад 4Обчислити площу кільця, радіуси отвору та кільця задати з клавіатури, у випадку якщо введений радіус отвору більший за радіус кільця видати повідомлення про помилку.
#include <stdlib.h>
#include <stdio.h>
int main()
{
float S; // S – площа кільця
float R,r; // R – радіус кільця, r - радіус отвору
printf("Vveditj R, r:\n");
scanf("%f %f",&R,&r); // Введення значень радіусів
if (r > R)
printf("Error!"); //Виведення повідомлення про помилку
else
{
S = 3.14*(R*R - r*r); // Обчислення площі кільця
printf("S = %f", S); // Виведення результату на екран
}
system("PAUSE");
return 0;
}
Оператори if та if-else можуть бути вкладеними. У цьому випадку true-блокчиfalse-блокможуть містити оператори if чи if-else.
Приклад 5.Програма рішення рівняння ax = b.
#include <stdlib.h>
#include <stdio.h>
int main()
{
float a,b,x;
printf("Vveditj a, b:\n");
scanf("%f %f",&a, &b);
if(a!=0)
printf("x = %f\n", b/a);
else
if(b==0)
printf("x - bydj-yake chislo\n");
else
printf("Rishenj nemae\n");
system("PAUSE");
return 0;
}
Для усунення неоднозначності компілятор С інтерпретує вкладені if таким чином, що гілка else належить до найближчого попереднього if.