C установка IDE C структура програми C змінні C типи даних С функція printf C константи C арифметичні операції C операції порівняння і логічні операції C порозрядні операції C операції присвоювання C перетворення типів C умовні конструкції C цикли С масиви і рядки С функція scanf C препроцесор. Директива #include C #define директива C макроси C умовна компіляція C функції. Визначення та опис функцій C функції. Передача параметрів в функцію C функції. Повернення результату з функції C функції. Рекурсивні функції C область видимості змінних C зовнішні об'єкти C вказівники C вказівник. Операції з вказівниками C покажчики. Арифметика покажчиків C покажчики. Константи і покажчики C покажчики. Покажчики та масиви C покажчики. Масиви покажчиків, рядки і багаторівнева адресація C покажчики. Покажчики в параметрах функції C покажчики. Динамічна пам'ять C покажчики. Покажчик як результат функції C покажчики. Управління динамічної пам'яттю C покажчики. Покажчики на функцію C покажчики. Покажчики на функції як параметри і результати функцій C покажчики. Функції зі змінною кількістю параметрів C struct. Визначення структур C struct. Структури як елементи структур C struct. Покажчики на структури C struct. Масиви структур C struct. Структури і функції C struct. union об'єднання C struct. Бітові поля С file. Введення-виведення і робота з файлами C file. Читання і запис бінарних файлів C file. Читання і запис структур в файл C file. Читання і запис текстових файлів C file. Форматування вводу-виводу C file. Позиціонування в потоці C file. Консольне введення-виведення

C умовні конструкції


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


оператор if

Оператор if перевіряє істинність умови, і якщо вона істинна, виконує блок інструкцій. Цей оператор має наступну скорочену форму:

if (вираз_умови) інструкція;

Як вираз_умови може використовуватися арифметична, логічна операція або операція порівняння. І якщо ця операція повертає true значення (тобто вираз істинний), то виконується наступна інструкція:

#include <stdio.h>
int main(void)
{
    int x = 60;
     
    if(x > 50) printf("x is greater than 50 \n");   // true
     
    if(x < 30) printf("x is less than 30 \n");      // false
     
    return 0;
}


// RESULT:
// x is greater than 50 \n

Тут використовуються дві умовні конструкції if . Вони перевірять чи більше або менше значення змінної x , ніж певне значення. Як інструкція в обох випадках виконується функція printf .

У першому випадку x > 50 умова true , так як значення змінної x більше 50 , тому ця операція порівняння поверне 1 , і тому буде виконуватися подальша інструкція.

У випадку операції порівняння x < 30 поверне 0 , так як умова false , тим самим інструкція не буде виконуватися. Тому на консоль буде виведено всього один рядок

x is greater than 50 \n

Якщо в конструкції if необхідно виконати не одну, а кілька інструкцій, то ці інструкції оформлюються в блок коду за допомогою фігурних дужок:

int x = 60;
     
if(x > 50) 
{
    printf("if statement \n");
    printf("x is greater than 50 \n");
}

Також ми можемо використовувати повну форму оператора if :

if(вираз_умови)
    інструкція_1
else
    інструкція_2

Після оператора else ми можемо визначити набір інструкцій, які виконуються, якщо вираз_умови помилковий, тобто повертає 0 . Тобто якщо вираз_умови true , виконається інструкція після оператора if , а якщо цей вираз помилковий, то виконується інструкція після оператора else .

int x = 60;
if(x > 60) 
    printf("x is greater than 60 \n");
else
    printf("x is less or equal 60 \n");    // true  x <= 60

Однак в даному випадку у нас є три умови:  x може бути більше 60, менше 60 і дорівнює 60. Для перевірки альтернативних умов ми можемо використовувати вираз else if :

int x = 60;
     
if(x > 60) 
    printf("x is greater than 60 \n");
else if (x < 60)
    printf("x is less than 60 \n");
else
    printf("x is equal 60 \n");           // true

Тобто в даному випадку ми отримуємо три гілки розвитку подій в програмі.

І також якщо після операторів повинен йти набір інструкцій, то ці інструкції оформлюються в блок коду:

int x = 60;
     
if(x > 60)
{
    printf("if statement \n");
    printf("x is greater than 60 \n");
}
else if (x < 60)
{
    printf("else if statement \n");
    printf("x is less than 60 \n");
}
else
{
    printf("else statement \n");
    printf("x is equal 60 \n");
}

конструкція switch

Іншу форму організації розгалуження програм являє конструкція switch ... case . Вона має таку форму:

switch(вираз)
{
    case константа_1: інструкція_1;
    case константа_2: інструкція_2;
     
    default: інструкції;
}

Після ключового слова switch в дужках йде порівняння значень. Значення цього виразу послідовно порівнюється зі значеннями, поміщеними після оператора сase . І якщо збіг буде знайдено, то буде виконуватися певний блок сase .

В кінці конструкції switch може стояти блок default . Він необов'язковий і виконується в тому випадку, якщо жоден збіг в блоках case не було знайдено. наприклад:

#include <stdio.h>
int main(void)
{
    int x = 2;
     
    switch(x)
    {
        case 1: 
            printf("x = 1 \n");
            break;
        case 2: 
            printf("x = 2 \n");
            break;
        case 3: 
            printf("x = 3 \n");
            break;
        default: 
            printf("x is undefined \n");
            break;
    }
    return 0;
}

// RESULT:
// x = 2

Щоб уникнути виконання наступних блоків case / default , в кінці кожного блоку ставиться оператор break .


тернарний оператор

Тернарний оператор ? : Дозволяє скоротити визначення найпростіших умовних конструкцій if і має наступну форму:

[перший операнд - умова - true] ? [другий операнд - true] : [третій операнд - false]

Оператор використовує відразу три операнда. Залежно від умови тернарний оператор повертає другий або третій операнд:

якщо умова дорівнює 1 ( true ), то повертається другий операнд; якщо умова дорівнює 0 ( false ), то третій. наприклад:

#include <stdio.h>
int main(void)
{
    int x=3;
    int y=2;
    char op ='+';
     
    int z = (op == '+') ? (x + y) : (x - y);    // (x + y)
     
    printf("z = %d", z);        // 5
    return 0;
}

Тут результатом тернарної операції є змінна z . І якщо змінна op містить знак " + ", то z дорівнюватиме другому операнду  - (x + y) . Інакше z дорівнюватиме третьому операнду.


Наш партнер:
beta test mp3 playlist downloader