- •О.Ф.Тарасов, о.В.Алтухов
- •1 Заняття № 1 Вивчення інтегрованого середовища с
- •1.1 Теоретичні відомості
- •1.2 Хід роботи
- •1.3 Вимоги до звітів
- •1.4 Питання для контролю і самостійної роботи
- •2 Заняття № 2 Функції введення/виведення даних printf( ), scanf( ). Лінійні обчислювальні процеси
- •2.1 Теоретичні відомості
- •2.2 Хід роботи
- •2.3 Індивідуальне завдання до заняття №2
- •2.4 Питання для контролю і самостійної роботи
- •3 Заняття № 3 Розробка програм зі скалярними типами даних
- •3.1 Теоретичні відомості
- •Приклад
- •3.2 Хід роботи
- •3.3 Індивідуальне завдання до заняття № 3
- •3.4 Питання для контролю і самостійної роботи
- •4 Заняття № 4 Розробка програм з циклічними обчислювальними процесами
- •4.1 Теоретичні відомості
- •Алгоритм роботи оператора циклу for ( )
- •4.2 Хід роботи
- •4.3 Індивідуальне завдання до заняття № 4
- •4.4 Питання для контролю і самостійної роботи
- •5 Заняття № 5
- •Розгалуження обчислювального процесу.
- •Оператори, які реалізують розгалуження: if... Else, switch,
- •Умовна операція ( ? : )
- •5.1 Теоретичні відомості
- •Умовна тернарна операція ( ? : )
- •Оператор варіанта switch
- •Приклад
- •5.2 Хід роботи
- •5.3 Індивідуальне завдання до заняття № 5
- •5.4 Питання для контролю і самостійної роботи
- •6 Заняття № 6 Операції с, їхні пріоритети і використання. Перетворення типів
- •Пріоритет операцій і порядок виконання (асоційованість)
- •(Новий_тип) Операнд
- •Приклад
- •6.2 Хід роботи
- •6.3 Індивідуальне завдання до заняття № 6
- •6.4 Питання для контролю і самостійної роботи
- •7 Заняття № 7
- •7.1 Теоретичні відомості
- •Оголошення функцій (створення прототипів)
- •([ Список_типів_параметрів ])
- •Синтаксис визначення функцій
- •[ Return Значення_типу_що_повертається ]
- •Використання локальних і глобальних перемінних у функціях. Виклик функції
- •Приклад
- •7.2 Хід роботи
- •7.3 Індивідуальне завдання до заняття № 7
- •7.4 Питання для контролю і самостійної роботи
- •8 Заняття № 8
- •8.1 Теоретичні відомості
- •Основні операції з покажчиками
- •Покажчики і цілі величини
- •Динамічне розміщення покажчиків у пам'яті
- •Приклад
- •Приклад
- •8.2 Хід роботи
- •8.3 Індивідуальне завдання до заняття № 8
- •8.4 Питання для контролю і самостійної роботи
- •9 Заняття № 9
- •9.1 Теоретичні відомості
- •Приклад
- •9.2 Хід роботи
- •9.3 Індивідуальне завдання до заняття №9
- •9.4 Питання для контролю і самостійної роботи
- •10 Заняття № 10
- •10.1 Теоретичні відомості
- •Приклад
- •10.2 Хід роботи
- •10.3 Індивідуальне завдання до заняття № 10
- •10.4 Питання для контролю і самостійної роботи
- •Заняття №11 Обробка символьних даних
- •Теоретичні відомості
- •Індивідуальне завдання до заняття №11
- •Питання для контролю і самостійної роботи
- •Приклад
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Теоретичні відомості
- •Приклад
- •Індивідуальне завдання до завдання №13
- •Питання для контролю і самостійної роботи
- •Заняття № 14 Розробка програм зі складеними типами даних
- •Структури
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Заняття № 15 Використання покажчиків для роботи зі складеними типами даних (2години)
- •Теоретичні відомості
- •Приклад
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •Використання покажчиків для роботи з функціями
- •Покажчики як параметри функції
- •[Const ] Тип * Ім'я_покажчика
- •Приклад
- •Хід роботи
- •Індивідуальне завдання до заняття №16
- •Питання для контролю і самостійної роботи
- •Використання функцій високого і низького рівня для роботи з потоками (файлами)
- •Функції для роботи з файлами
- •Хід роботи
- •Індивідуальне завдання до заняття №17
- •Питання для контролю і самостійної роботи
- •Розробка програм із багатофайловою структурою. Заголовочні файли. Класи пам'яті перемінних і функцій
- •Керування многофайловими проектами
- •Використання адміністратора проектів
- •Приклад
- •Основний файл проекту
- •Заголовний файл
- •Хід роботи
- •Індивідуальне завдання до заняття №18
- •Питання для контролю і самостійної роботи
- •Графічні функції
- •Графічні примітиви
- •Хід роботи
- •Індивідуальне завдання до заняття №19
- •Питання для контролю і самостійної роботи
- •Заняття№20 Розробка програм з використанням класів
- •Теоретичні відомості
- •Оголошення і визначення класу
- •Тіло класу
- •Інкапсуляція. Керування доступом до членів класу
- •Використання даних-членів класу
- •Хід роботи
- •Індивідуальне завдання до заняття №20
- •Питання для контролю і самостійної роботи
- •Заняття№21 Використання конструкторів і деструкторів у класах
- •Теоретичні відомості
- •Ініціалізація об'єктів класу
- •Деструктори
- •Виклик деструкторів
- •Хід роботи
- •Питання для контролю і самостійної роботи
- •"Друзі" класів (friend)
- •Хід роботи
- •Індивідуальне завдання до заняття №22
- •Контрольні питання для підготовки і самостійної роботи
- •Віртуальні базові класи
- •Віртуальні деструктори
- •Хід роботи
Умовна тернарна операція ( ? : )
Синтаксис даної операції наступний:
<Вираз_1> ? <Вираз_2> : <Вираз_3>
Результат операції буде дорівнювати <Виразу_2> у тому випадку, якщо <Вираз_1> є «Істина», у противному випадку результат буде дорівнювати <Виразу_3>. Нижче показаний приклад реалізації даної конструкції.
int result = (i < j) ? i : j; //Перемінній result привласнюється найменше
//значення (i або j), якщо i < j, то i, інакше - j.
Оператор варіанта switch
Оператор вибору варіанта switch заміняє декілька операторів if…else. Звичайно оператор switch використовується тоді, коли потрібно вибрати і виконати тільки одну послідовність операторів з декількох можливих, хоча можливості оператора switch не обмежуються цим випадком.
Синтаксис оператора switch
switch ( <Вираз> )
{
case <Константний_вираз_1> :
<Оператор_1>
[case <Константний_вираз_2> :
<Оператор_2>]
...
[case <Константний_вираз_n> :
<Оператор_n>]
[default :
<Оператор>_n+1]
}
Після обчислення Виразу типу int (у заголовку оператора switch) результат порівнюється послідовно з <Константними_виразами_і, що розташовані після зарезервованих слів case. Послідовності слів case разом з Константними_виразами, як і default, є внутрішніми мітками оператора switch. Після Константних_виразів обов'язково ставиться ознака мітки ":". Порівняння значення Виразу починається із самого верхнього Константного_вирази _1 і далі, поки не буде встановлена їхня відповідність. Тоді послідовно виконуються всі оператори після відповідної мітки case, на яку передається керування. Для того, щоб припинити послідовне виконання операторів і вийти з оператора switch, необхідно після групи операторів, що належать обраному case, поставити оператор break. Якщо break є відсутнім, то мітки не враховуються і послідовно виконуються всі оператори.
Послідовність операторів, що розташовані після слова default (умовчання), виконується тоді, коли значення Виразу у заголовку оператора switch не збігається з жодним Константним_виразом_і.
Приклад показує можливості оператора switch. Функція ermes( ) виводить одне з трьох повідомлень у залежності від значення коду помилки ercode.
Приклад використання оператора switch:
void ermes(int ercode)
{
switch(ercode)
{ case 1: printf("\n Повідомлення 1"); break;
case 2: printf("\n Повідомлення 2"); break;
case 3: printf("\n Повідомлення 3"); break;
default : printf("\n Невірний код помилки");
}
}
Приклад
/* ЗАНЯТТЯ N 5
Виконав студент групи ......... Петров Н.В.
Застосування операторів if, switch, тернарної операції (? :)
на прикладі простого калькулятора. Більш складні умови для
оператора switch приведені нижче та реалізовані в тексті програми */
//Умови для оператора switch:
//якщо s = 0, то - a++, p++, h++
//якщо s = 1, то - p++, h++
//якщо s = 2, то - h++
//якщо s = 3, то – a - -
//якщо s = 4, то - p - -
//якщо s = 5, то - h - -
//якщо s = 6..7, то - a = 1, p = 1, h = 1
//якщо s = 8, то - a = 0, p = 0, h = 0
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main(void)
{ float a, b, rez;
int s, p, h;
char oper, flag = ' ';
clrscr( );
printf("\n Введіть через пробіл два числа: ");
scanf(" %f %f ", &a, &b);
printf(" Введіть знак операції (+ - * /): ");
oper1: oper=getche( );
switch(oper)
{ case '+': rez = a+b; break;
case '-': rez = a-b; break;
case '*': rez = a*b; break;
case '/': rez = a/b; break;
default : printf("\n Повторіть введення знака: ");
goto oper1;
}
printf("\n Результат операції: %5.2f\n", rez);
oper2: printf("\n Введіть цифру в інтервалі (-9 < S < +9) : ");
scanf("%d", &s);
if(s < 0)
{ s = abs( s );
flag = ' - ';
else flag = ' ';
if(s <= 9)
switch( s )
{ case 0: a++; //break є відсутнім
case 1: p++; //break є відсутнім
case 2: printf("\tВи ввели %c%d", flag, s); h++; ;
case 3: printf("\tВи ввели %c%d", flag, s); a - -; break;
case 4: printf("\tВи ввели %c%d", flag, s ); p - -; break;
case 5: printf("\tВи ввели %c%d", flag, s); h - -; break;
case 6: case 7: printf("\tВи ввели %c%d", flag, s);
a=1; p=1; h=1; break;
case 8: printf("\tВи ввели %c%d",flag,s);
a=0; p=0; h=0; break;
default: printf("\tВи ввели %c%d \n\
на границі інтервалу", flag, s); goto oper2;
}
else { printf("\tВи ввели число поза інтервалом (-9...+9)\n");
goto oper2;
}
printf("\n Результат switch: a=%5.2f p=%2d h=%2d\n", a, p, h);
getch( );
if (p = = 0) {b=10; a=10;}
else {b+= b / p; a+= a / p;}
printf("\n Результати обчислень: a=%5.2f b=%5.2f", a, b);
rez = ( b < a ) ? b : a;
printf("\n Результат тернарної операції: res=%5.2f", rez);
getch( );
return 0;
}
/* Введіть через пробіл два числа: 54 32
Введіть знак операції (+ - * /): /
Результат операції: 1.69
Введіть цифру в інтервалі (-9 < S < +9) : -9
Ви ввели -9 на границі інтервалу
Введіть цифру в інтервалі (-9 < S < +9) : -6
Ви ввели -6
Результат switch: a= 1.00 p= 1 h= 1
Результати обчислень: a= 2.00 b= 64.00
Результат тернарної операції: res = 2.00 */