Professional Documents
Culture Documents
Методичні вказівки до ЛР - KTтаП - Ч1
Методичні вказівки до ЛР - KTтаП - Ч1
МЕТОДИЧНІ ВКАЗІВКИ
Покровськ – 2019
УДК 004(072)
М 54
ВСТУП……………………………………………………………………………… 4
1. Лабораторна робота №1. Позиційні системи числення……………………… 6
2. Лабораторна робота №2. Алгоритмізація………………………………….......13
3. Лабораторна робота №3. Функції введення-виведення, арифметичні
операції…………………………………………………………………………...23
4. Лабораторна робота №4. Математичні функції, логічні вирази……………...30
5. Лабораторна робота №5. Умовний оператор if………………………………..38
6. Лабораторна робота №6. Оператор вибору switch…………………………….47
7. Лабораторна робота №7. Оператори організації циклу……………………….58
8. Лабораторна робота №8. Робота з функціями………………………………….72
СПИСОК РЕКОМЕНДОВАНОЇ ЛІТЕРАТУРИ………………………………….80
ВСТУП
5
ЛАБОРАТОРНА РОБОТА №1
ПОЗИЦІЙНІ СИСТЕМИ ЧИСЛЕННЯ
6
де u – основа системи числення.
Наприклад, для десяткового числа ( u = 10) виходить:
83887,45 8 104 3 103 8 102 8 101 7 100 4 101 5 102 .
43,37510 101011,0112
43 2
42 21 2
1 20 10 2
1 10 5 2
0 4 2 2
1 2 1
0
Ділення виконується до тих пір, поки не буде отримана частка, менше
дільника. Після цього цифри частки і залишків записуються в зворотному
порядку. У даному випадку виходить – 101011.
Для переведення дробової частини послідовно здійснюється множення на
основу системи вихідного числа і дробові частини одержуваних в процесі
перетворення чисел до тих пір, поки дробова частина чергового числа не стане
дорівнювати нулю.
0, 375 2
0, 75 2
1, 5 2
1, 0
7
Отже, дробова частина виходить: 0,37510 0,0112 .
Кінцева десяткова дріб не завжди утворює кінцеву двійкову дріб. У цьому
випадку отримане двійкове число треба округляти.
Переведення 2 10.
11010,1012 1 2 4 1 2 3 0 2 2 1 21 0 2 0 1 2 1 0 2 2 1 2 3
1 1 5
16 8 2 26 26,62510
2 8 8
8
0+0=0
1+0=1
0+1=1
1 + 1 = 10
1101
+ 101
-------
10010
0-0=0
1-0=1
0 - 1 = 1 (позика зі старшого розряду)
1-1=0
Наприклад:
1110
- 101
-------
1001
При відніманні від нуля одиниці відбувається займ у найближчого
старшого розряда, який має значення одиниця, при цьому даний старший розряд
перетворюється в нуль.
9
Порядок виконання
1. Перевести число з десяткової системи числення в двійкову (10 2).
2. Перевести число з двійкової системи числення в десяткову (2 10).
3. Перевести число з вісімкової системи числення в десяткову через
двійкову (8 210).
4. Підсумувати в двійковій системі числення два десятичних числа.
5. Відняти в двійковій системі числення два десятичних числа.
Варіанти завдань (1-5) наведені в табл. 1.3.
10
Таблиця 1.3 – Варіанти завдань (продовження)
Зміст звіту
1. Мета роботи.
2. Переведення числа з десяткової системи числення в двійкову.
3. Переведення числа з двійкової системи числення в десяткову.
4. Переведення числа з вісімкової системи числення в десяткову через
двійкову.
5. Обчислення суми двох десяткових чисел в двійковій системі числення.
6. Обчислення різниці двох десяткових чисел в двійковій системі числення.
7. Висновки.
Контрольні питання
1. Що таке системи числення? На які групи діляться?
2. Що таке основа системи числення? Які системи обчислення
найбільш часто використовуються в ЕОМ? Навести цифри, що в них
використовуються.
3. Навести алгоритми переведення числа з десяткової системи
числення в двійкову і навпаки.
4. Навести алгоритми переведення числа з вісімкової системи числення
в десяткову і навпаки.
11
5. Як здійснюються арифметичні операції (додавання, віднімання)
в двійковій системі числення?
12
ЛАБОРАТОРНА РОБОТА №2
АЛГОРИТМІЗАЦІЯ
14
1 x
z n 1 z n при z 0 1 , (2.1)
2 zn
Передача управління
Блок обчислень
a
b
0.5a 0.5a
b
0.5a Перехід між сторінками
s - номер сторінки
0.6a b - код блоку
0.2a
16
Таблиця 2.2 – Умовні позначення на блок-схемах (продовження)
0.5a
Перехід усередині сторінки
Розгалуження
b
0.25a Цикл
i - ідентифікатор циклу
0.5a
n - початкове значення
a ідентифікатора
k - кінцеве значення ідентифікатора
s - крок зміни
b
0.15a Підпрограма, що написана раніше
Порядок виконання
1. Знайти найбільший спільний дільник двох чисел за алгоритмом
Евкліда. Провести ручний розрахунок.
2. Знайти квадратний корінь з числа за алгоритмом Герона (провести 8
або 10 ітерацій). Провести ручний розрахунок та побудувати трасувальну
таблицю.
3. Скласти блок-схему алгоритму. У всіх варіантах завдань вивести
логічне значення True, якщо наведене висловлювання для запропонованих
вихідних даних є істинним, і значення False в іншому випадку. Всі числа, для
яких вказано кількість цифр (двозначне число, тризначне число і т.д.),
вважаються цілими.
Варіанти завдань (1-3) наведено в табл. 2.3.
17
Таблиця 2.3 – Варіанти завдань
Варіант Завдання 1 Завдання 2 Завдання 3
1 47 i 22 77 Перевірити істинність висловлювання:
"Дане ціле число є парним двозначним
числом".
2 56 i 62 26 Дано координати (як цілі від 1 до 8) двох
різних полів шахової дошки. Якщо ферзь за
один хід може перейти з одного поля на
інше, вивести логічне значення True, в
іншому випадку вивести значення False.
3 34 i 19 60 Перевірити істинність висловлювання:
"Всі цифри даного тризначного числа
однакові".
4 19 i 45 19 Перевірити істинність висловлювання:
"Три заданих числа одного знака".
5 23 i 34 58 Перевірити істинність висловлювання:
"Квадратне рівняння A · x2 + B · x + C = 0
з даними коефіцієнтами A, B, C має один
корінь".
6 12 i 56 35 Дано координати (як цілі від 1 до 8) двох
різних полів шахової дошки. Якщо слон за
один хід може перейти з одного поля на
інше, вивести логічне значення True, в
іншому випадку вивести значення False.
7 34 i 63 82 Перевірити істинність висловлювання:
"Цифри даного тризначного числа
утворюють зростаючу послідовність".
18
Таблиця 2.3 – Варіанти завдань (продовження)
8 12 і 33 77 Перевірити істинність висловлювання:
"Цифри даного тризначного числа
утворюють зростаючу або спадаючу
послідовність".
9 11 і 43 71 Перевірити істинність висловлювання:
"Дане ціле число є непарним тризначним
числом".
10 23 і 11 30 Перевірити істинність висловлювання:
"Цифри даного тризначного числа
утворюють арифметичну прогресію".
11 10 і 56 29 Дано координати (як цілі від 1 до 8) двох
різних полів шахової дошки. Якщо тура за
один хід може перейти з одного поля на
інше, вивести логічне значення True, в
іншому випадку вивести значення False.
12 23 і 61 64 Дано координати (як цілі від 1 до 8) двох
різних полів шахової дошки. Якщо кінь за
один хід може перейти з одного поля на
інше, вивести логічне значення True, в
іншому випадку вивести значення False.
13 23 і 78 98 Перевірити істинність висловлювання:
"Цифри даного тризначного числа
утворюють геометричну прогресію".
14 11 і 47 11 Перевірити істинність висловлювання:
"Серед трьох даних цілих чисел є хоча б
одна пара співпадаючих".
19
Таблиця 2.3 – Варіанти завдань (продовження)
15 23 і 54 30 Перевірити істинність висловлювання:
"Дане чотиризначне число читається
однаково зліва направо і справа наліво".
16 57 і 22 53 Перевірити істинність висловлювання:
"Сума двох перших цифр даного
чотиризначного числа дорівнює сумі двох
його останніх цифр".
17 36 і 62 60 Перевірити істинність висловлювання:
"Сума цифр даного тризначного числа є
парним числом".
18 24 і 19 76 Перевірити істинність висловлювання:
"Серед трьох даних цілих чисел є хоча б
одна пара взаємно протилежних".
19 59 і 45 45 Перевірити істинність висловлювання:
"три заданих числа різних знака".
20 43 і 34 75 Перевірити істинність висловлювання:
"Сума двох перших цифр даного
чотиризначного числа дорівнює добутку
двох його останніх цифр".
21 12 і 56 78 Перевірити істинність висловлювання:
"Все цифри даного тризначного числа
різні".
22 34 і 13 51 Перевірити істинність висловлювання:
"Точка з координатами (x, y) лежить
усередині прямокутника, ліва верхня
вершина якого має координати (x1, y1),
права нижня - (x2, y2), а сторони
паралельні координатним осям".
20
Таблиця 2.3 – Варіанти завдань (продовження)
23 12 і 53 87 Перевірити істинність висловлювання:
"Дані числа x, y є координатами точки, що
лежить в другій координатної чверті".
24 21 і 43 93 Перевірити істинність висловлювання:
"Дані числа x, y є координатами точки, що
лежить в першій або третій координатній
чверті".
25 42 і 33 53 Перевірити істинність висловлювання:
"Квадратне рівняння A · x2 + B · x + C = 0
з даними коефіцієнтами A, B, C має дійсні
коріння".
Зміст звіту
1. Мета роботи.
2. Розрахунок найбільшого спільного дільника двох чисел за алгоритмом
Евкліда.
3. Розрахунок квадратного кореня з числа за алгоритмом Герона.
Трасувальна таблиця обчислення.
4. Блок-схема алгоритму завдання 3.
5. Висновки.
Контрольні питання
1. Що таке алгоритм? Перерахувати властивості алгоритму.
2. Які існують способи подання алгоритмів?
3. Навести алгоритм Евкліда.
4. Навести алгоритм Герона.
5. Опис алгоритмів за допомогою блок-схем. Основні графічні символи
для зображення алгоритмічних структур і блоків.
21
Список рекомендованої літератури
1. Гудман С. Введение в разработку и анализ алгоритмов: монография
/ С. Гудман, С. Хидетниеми. – М.: Мир, Редакция литературы по математическим
наукам, 1981. – 364 с.
2. Криницкий Н.А. Алгоритмы вокруг нас / Н.А. Криницкий. – М.:
Наука. Главная редакция физико-математической литературы, 1984. - 224 с.
3. Парфилова, Н.И. Программирование: Основы алгоритмизации и
программирования: учебник / Н.И. Парфилова, А.Н. Пылькин, Б.Г. Трусов – М.:
Academia, 2018. - 32 c.
4. Ковалюк Т.В. Алгоритмізація та програмування: підручник / Т.В.
Ковалюк. – Львів: «Магнолія 2006», 2013. – 400 с.
22
ЛАБОРАТОРНА РОБОТА №3
ФУНКЦІЇ ВВЕДЕННЯ-ВИВЕДЕННЯ, АРИФМЕТИЧНІ ОПЕРАЦІЇ
25
Рядок форматів аналогічний функції printf(). Для формування адреси
змінної використовується символ амперсанд '&': адреса = & об'єкт.
Лістинг програми
#include <stdio.h> //бібліотека стандартів введення/виведення
#include <conio.h> //бібліотека для роботи з консоллю
int main()
{
Початок
a,b,c
a--
b/=a
c=c+(--b)
a,b,c
Кінець
Порядок виконання
1. У завданні 1:
- здійснити теоретичний розрахунок арифметичних виразів.
- скласти блок-схему та програму обчислення арифметичних виразів
на мові програмування Сі. Передбачити введення даних і виведення результатів
на екран.
- порівняти результати теоретичного та практичного розрахунків.
Варіанти завдань наведені в табл. 3.1.
27
Таблиця 3.1 – Варіанти завдань
Варіант Завдання 1
28
Зміст звіту
1. Мета роботи.
2. Результати теоретичного розрахунку арифметичних виразів.
3. Блок-схема, лістинг програми та результати роботи програми.
4. Висновки.
Контрольні питання
1. Для чого служить оператор присвоювання? Яка в нього загальна
структура?
2. Наведіть компактні форми запису операції присвоювання.
3. Що може включати у себе арифметичний вираз?
4. Наведіть ранги арифметичних операцій.
5. Функції printf() та scanf(). Загальні форми запису.
29
ЛАБОРАТОРНА РОБОТА №4
МАТЕМАТИЧНІ ФУНКЦІЇ, ЛОГІЧНІ ВИРАЗИ
0 1
10
00 0
0 1 0
1 0 0
11 1
30
в) Логічне додавання (диз'юнкція, операція АБО). Таблиця операції:
00 0
0 1 1
1 0 1
11 1
Приклад
(0 0 ) (1 1) (0 1) (1 1) 0 1 1 .
Приклад
a 2 5 c 2 d ( a b)
x
(c d ) ( d 2 a )
Порядок виконання
1. У завданні 1 обчислити значення логічного виразу при заданих
числових значеннях. Записати вираз в символіці алгебри логіки.
32
2. У завданнях 2,3,4 скласти блок-схему та програму обчислення
виразів на мові програмування Сі. Передбачити введення даних і виведення
результатів на екран.
Варіанти до 1 завдання наведено в табл. 4.2.
Варіанти до завдань 2,3,4 наведено в табл. 4.3.
Завдання 1
Варіант Логічний вираз Числові
значення
33
Таблиця 4.2 – Варіанти до 1-го завдання (продовження)
14 ((x -2 < y) or (x > 4)) and ((y > 0)) x = 4, y = 5
15 ((x + 1 < y) and (x > 5)) or ((y > 0) or
true) x = 1, y = 11
16 ((x + 10 < y) and not (x > 5)) or ((y >
10) and true) x = -5, y = 5
17 ((x - 2 < y) or (x > 40)) and ((y > 1)) x = 14, y = -5
18 ((x + 10 < y) and (x >- 5)) or ((y > 0)
or true) x = 10, y =- 1
19 ((x + 10 < y) and not (x > 5)) or ((y >
0) and true) x = 5, y = 5
20 ((x + 2 < y) or (x > -4)) and ((y > 0)) x = 4, y = 5
21 ((x + 1 < y) and (x > 5)) or ((y > 10)
or true) x = 11, y = 1
22 ((x + 1 < y+6) and not (x > 5)) or ((y
> 10) or true) x = -5, y = 5
23 ((x + 2 < y) or (x > 4)) and ((y >1 0)) x = 4, y = -5
24 ((x < y) and (x > 15)) or ((y > 0) or
true) x = 10, y =- 1
25 ((x + 1 < y) or (x > 2)) and ((y > 1)) x = 1, y = 11
1 13 1 4
2 3 15 11
3 6 11 14
4 7 4 5
5 9 10 1
6 1 12 9
7 11 14 6
8 2 8 12
9 4 6 8
10 15 3 7
11 12 7 3
34
Таблиця 4.3 – Варіанти до 2-4 завдань (продовження)
12
14 13 2
13
10 5 13
14
8 9 10
15
5 2 15
16
8 7 13
17
3 14 6
18
2 9 15
19
12 5 4
20
9 3 14
21
11 8 3
22
4 4 12
23
1 10 8
24
15 6 2
25
7 15 5
До завдань 2,3,4
x y a 3 b3 x y xz
1.
bc 5. 1 x y
z x
2
a 3 b3 y
x
bc 1 z z
2.
b2 4 a c 6.
a
1
1 x2
x y
b b2 4 a c 0,15 sin( e z )
2
7. r
3.
2a
0,49 e a 2 b2
ln3 cos(a 2 ) x 1 sin 2 arctg( z )
4. 8. ln y
35
9. x
n m2
x nm a 2t
b 2k 3n x 2 y
13. y
z
t2 x y z
x x y x
x 1 y
10. x2 a 2 3 e 2
1 14. y 1
3 (2 x) 3
Зміст звіту
1. Мета роботи.
2. Обчислення значення логічного виразу при заданих числових
значеннях. Запис виразу в символіці алгебри логіки.
3. Блок-схема, лістинг програми та результати роботи програми до
завдань 2,3,4.
4. Висновки.
Контрольні питання
1. Що таке алгебра логіки? Які значення може приймати істинність
висловлювання?
2. Наведіть логічні операції алгебри логіки та їх таблиці істинності.
3. Що таке логічне значення? Як записуються логічні вирази у
символіці алгебри логіки?
36
4. Який порядок виконання арифметичних операцій алгебраїчних
виразів в мові Сі?
37
ЛАБОРАТОРНА РОБОТА №5
УМОВНИЙ ОПЕРАТОР IF
Так Умова Ні
виконується?
Оператор 1 Оператор 2
{
оператор_1;
оператор_2;
…………
оператор_n;
}
if (y%2!=0)
{
z=x*y;
}
else
{
z=x-y;
}
39
При використанні вкладених конструкцій діє правило: конструктор else
завжди відповідає найближчого зліва конструктору if, який не має частини else.
Приклад
if (x >1)
{
if (y= =2)
z =5;
else
z = 6;
}
if (умова) оператор;
else if(умова) оператор;
else if(умова)оператор;
…
else оператор;
Приклад. Програма функції sqn (x). Вона обчислює знак введеного числа х, тобто
sqn (x) приймає значення 1, якщо х> 0, значення -1, якщо x <0, і значення 0, якщо
х = 0.
40
Лістинг програми
Початок
#include <stdio.h>
x
int main()
{
+
int sqn; x>0 sqn=1
число x
позитивне
float x;
-
-
if (x>0) sqn=0
{ sqn = 1; printf (“число %f позитивне
\n”, x); }
число x
else if (x<0) дорівнює
{ sqn= -1; printf (“число %f нулю
1) вираз у дужках
2) ! (НЕ, заперечення)
3) <, <=, >, >=
4) == ,!=
5) &&
6) ||
41
Приклад
2 1 6 3 5 4
if (! (a>b) || c != d && b == a)
{
…
}
Порядок виконання
1. У завданнях 1,2 записати операцію умови для зазначеного завдання
(тільки конструкцію if_else).
2. У завданнях 3,4 скласти блок-схеми і програми на мові
програмування Сі. Реалізувати за допомогою умовного оператора if.
Варіанти завдань (1-4) наведено в табл. 5.1.
42
Таблиця 5.1 – Варіанти завдань (продовження)
16
5 2 10 1
17 4 8
6 9
18 8 13
13 6
19 9 7
7 2
20 1 11
11 5
21 8 10
9 7
22 6 1
3 1
23 5 12
12 8
24 2 5
4 13
25 3 4 8
7
До завдань 1,2
1. Знайти найменше з двох чисел.
2. Задано два числа х і у. Якщо х більше, то знайти суму цих чисел, в
іншому випадку – різницю.
3. Задано два числа х і у. Якщо х парне, то знайти суму цих чисел, в
іншому випадку – різницю.
4. Задано два числа х і у. Якщо х парне, то знайти суму цих чисел, в
іншому випадку – різницю.
5. Задано два числа х і у. Якщо у непарне, то знайти добуток цих чисел,
в іншому випадку – різницю.
6. Задано два цілих числа х і у, які не дорівнюють нулю. Якщо х більше,
то знайти частку від ділення цих чисел, в іншому випадку - залишок від ділення.
7. Задано ціле число х. Якщо число від'ємне, то знайти куб цього числа,
в іншому випадку піднести до четвертого ступеня.
8. Задано два цілих числа х і у, які не дорівнюють нулю. Якщо х більше,
то знайти частку від ділення цих чисел, в іншому випадку - залишок від ділення.
43
9. Задано ціле число х. Якщо число від'ємне, то піднести до п’ятого
ступеня, в іншому випадку його абсолютне значення.
10. Задано два числа х і у. Якщо х більше, то знайти експоненту суми
цих чисел, в іншому випадку – квадрат їх різниці.
x , x 0
2
5 x , x 3
18. Знайти значення виразу y
ln( x), x 3
6 x , x 1
2
До завдань 3,4
44
2. Визначити, чи поміститься трикутник з основою с і висотою h в
прямокутник зі сторонами а і b так, щоб висота трикутника була паралельна
однієї зі сторін прямокутника.
3. З'ясувати, у якого з двох прямокутних трикутників площа більше,
якщо задано:
- гіпотенуза с, кут ;
- катет a, прилегла кут ;
4. Задано паралелограм зі сторонами a, b і кутом між ними.
Визначити тип паралелограма (ромб, прямокутник або квадрат), якщо це
можливо.
5. Відомі кути і біля основи трапеції. З'ясувати, якщо це можливо,
тип трапеції (прямокутна, рівнобедрена, прямокутник).
6. Заданий коло з центром в точці О (x0, y0) і радіусом R0 і точка A (x1,
y1). Визначити місце розташування точки по відношенню до кола (знаходиться
всередині кола, поза ним або лежить на окружності).
7. Визначте, чи перетинаються парабола y = cx2 + dx + f і пряма у = ах
+ b. При позитивній відповіді знайти точки перетину.
8. З'ясувати, чи перетинаються параболи y = ax2 + bx + c і y = dx2 + ex
+ f. При позитивній відповіді знайти точки перетину.
9. Задана окружність з центром в точці О (x0, y0) і радіусом R0 і пряма
у = ах + b. Визначити, чи перетинаються пряма і окружність. При позитивній
відповіді знайти точки перетину.
10. Відомі довжини відрізків а, b, с і d. Визначити трикутники
мінімальної і максимальної площі, які можна побудувати з цих відрізків.
11. Задані дві окружності: з центром в точці О (x0, y0) і радіусом R0 і з
центром в точці О (x1, y1) і радіусом R1. Визначте, у скількох точках
перетинаються кола.
12. Визначте, у який з двох фігур площа більше:
- Коло з центром радіусом R.
45
- Прямокутник з діагоналями d, пересічними під кутом у.
Зміст звіту
1. Мета роботи.
2. Вираз операції умови до завдань 1-2.
3. Блок-схеми, лістинги програм та результати роботи програм до завдань
3-4.
4. Висновки.
Контрольні питання
1. Форми умовного оператору if. Правило його виконання.
2. Конструкція if - else – if. Правило виконання.
3. Що таке складна умова? Порядок виконання складних умов. Навести
приклад.
46
ЛАБОРАТОРНА РОБОТА №6
ОПЕРАТОР ВИБОРУ SWITCH
Приклад. Дано ціле число n = 1..3, яке є номером функції. За значенням змінної
n обчислити значення відповідної функції:
1) -2x2-4; 2) 5x+2; 3) 15-3x. Записати фрагмент програми за допомогою
скороченої форми оператора switch.
int n;
float f, x;
n = 3;
x = 3;
switch (n)
{
case 1:
f = -2*x*x-4;
break;
case 2:
f = 5*x+2;
break;
case 3:
f = 15-3*x;
48
break;
}
Приклад. Дано ціле число в діапазоні 20 - 69, що визначає вік (в роках). Вивести
рядок - словесний опис зазначеного віку, забезпечивши правильне узгодження
числа зі словом "рік", наприклад: 20 - "двадцять років", 32 - "тридцять два роки",
41 - "сорок один рік". Скласти блок-схему та програму.
Лістинг програми
#include <stdio.h>
int main()
{
setlocale(0,"");
int N;
printf("Введіть вік у роках(20-69):");
scanf("%d",&N);
switch(N/10)
{
case 2: printf ("двадцять "); break;
case 3: printf ("тридцять "); break;
case 4: printf ("сорок "); break;
case 5: printf ("п'ятдесят "); break;
case 6: printf ("шістдесят "); break;
}
switch(N%10)
{
case 1: printf ("один "); break;
case 2: printf ("два "); break;
case 3: printf ("три "); break;
case 4: printf ("чотири "); break;
case 5: printf ("п'ять "); break;
case 6: printf ("шість "); break;
case 7: printf ("сім "); break;
case 8: printf ("вісім "); break;
case 9: printf ("дев'ять "); break;
}
switch(N%10)
{
case 0: case 5:case 6:case 7:case 8:case 9: printf ("років."); break;
49
case 1: printf ("рік."); break;
case 2:case 3:case 4: printf ("роки."); break;
}
getch();
return 0;
}
1 2
Початок
N%10
N%10
N
+
1 один +
N/10 0,5,6,7,8,9 років.
-
+ -
+ 2 два
2 двадцять +
1 рік.
-
- +
+ 3 три
-
3 тридцять +
- 2,3,4 роки.
- +
+ 4 чотири
4 сорок
-
- + Кінець
+ 5 п’ять
5 п’ятдесят
-
- +
+ 6 шість
6 шістдесят
-
+
7 сім
1
-
14 +
вісім
-
+
9 дев’ять
50
Тернарна умовна операція - операція, яка повертає свій другий або третій
операнд в залежності від значення логічного виразу, заданого першим
операндом. Форма запису цієї операції:
min = (a < b) ? a : b;
Порядок виконання
1. У завданнях 1 і 2 визначити, що надрукує задані фрагменти програми
та описати словесно.
2. У завданні 3 скласти блок-схему та програму на мові програмування
Сі. Передбачити введення даних і виведення результатів на екран. Обов’язково
використовувати оператор вибору Switch.
3. У завданні 4 скласти блок-схему та програму на мові програмування
Сі. Передбачити введення даних і виведення результатів на екран. Вирішити
завдання, використовуючи складну умову та оператор вибору Switch.
Варіанти завдань (1-4) наведено в табл. 6.1.
51
Таблиця 6.1 – Варіанти завдань
52
До завдань 1,2
53
13) #include <stdio.h> 14) #include <stdio.h> 15) #include <stdio.h>
main() main() main()
{ { {
int x=1, y=1, z=1; int x = 3, y = 4, z = 4; int x = 3, y =4, z = 4;
x += y += z; printf (“%d ”, z >= y printf (“%d ”, z >= y
printf (“%d ”, x < y ? >= x ? 1 : 0 ); && y >=x );
x-- : y-- ); } }
printf (“x=%d
y=%d”,x,y);
}
16) #include <stdio.h> 17) #include <stdio.h> 18) #include <stdio.h>
main() main() main()
{ { {
int x=1, y=2, z=2; int x=2, y=2, z=1; int x = 4, y =2, z = 2;
x += y -= z; x -= y += z; printf (“%d ”, z >= y
printf (“%d ”, z += x printf (“%d ”, x < y ? >= x ? 5 : 2 );
< y ? x++ : y-- ); x-- : y++ ); }
printf (“y=%d printf (“x=%d
z=%d”,y,z); y=%d”,x,y);
} }
До завдання 3
54
6. Одиниці довжини пронумеровані в такий спосіб: 1 - дециметр, 2 -
кілометр, 3 - метр, 4 - міліметр, 5 - сантиметр. Дано номер одиниці довжини і
довжина відрізка L в цих одиницях (дійсне число). Вивести довжину даного
відрізка в метрах.
7. Одиниці маси пронумеровані в такий спосіб: 1 - кілограм, 2 -
міліграм, 3 - грам, 4 - тонна, 5 - центнер. Дано номер одиниці маси і маса тіла M
в цих одиницях (дійсне число). Вивести масу даного тіла в кілограмах.
8. Елементи окружності пронумеровані в такий спосіб: 1 - радіус (R), 2
- діаметр (D), 3 - довжина (L), 4 - площа кола (S). Дано номер одного з цих
елементів і його значення. Вивести значення інших елементів даної окружності
(в тому ж порядку). Як значення Pi використовувати 3.14.
9. Елементи рівнобедреного прямокутного трикутника пронумеровані
в такий спосіб: 1 - катет (a), 2 - гіпотенуза (c), 3 - висота, опущена на гіпотенузу
(h), 4 - площа (S). Дано номер одного з цих елементів і його значення. Вивести
значення інших елементів даного трикутника (в тому ж порядку).
10. Елементи рівностороннього трикутника пронумеровані в такий
спосіб: 1 - сторона (a), 2 - радіус вписаного кола (R1), 3 - радіус описаного кола
(R2), 4 - площа (S). Дано номер одного з цих елементів і його значення. Вивести
значення інших елементів даного трикутника (в тому ж порядку).
11. Дано два цілих числа: D (день) і M (місяць), що визначають
правильну дату невисокосного року. Вивести значення D і M для дати, що
передує зазначеної.
12. Дано два цілих числа: D (день) і M (місяць), що визначають
правильну дату невисокосного року. Вивести значення D і M для дати, наступної
за вказаною.
До завдання 4
1. Дано три цілих числа. Піднести до квадрата негативні числа і в третю
ступінь - позитивні (число 0 не змінювати).
2. З трьох даних чисел вибрати найменше.
55
3. З трьох даних чисел вибрати найбільше.
4. З трьох даних чисел вибрати найменше та найбільше.
5. Перерозподілити значення змінних X і Y так, щоб в X виявилося менше
з цих значень, а в Y - більше.
6. Значення змінних X, Y, Z поміняти місцями так, щоб вони виявилися
впорядкованими за зростанням.
7. Значення змінних X, Y, Z поміняти місцями так, щоб вони виявилися
впорядкованими по спадаючій.
8. Дано дві змінні цілого типу: A і B. Якщо їх значення не рівні, то
присвоїти кожній змінній суму цих значень, а якщо рівні, то присвоїти змінним
нульові значення.
9. Дано дві змінні цілого типу: A і B. Якщо їх значення не рівні, то
присвоїти кожній змінній максимальне з цих значень, а якщо рівні, то присвоїти
змінним нульові значення.
10. Дано три змінні: X, Y, Z. Якщо їх значення впорядковані за спаданням,
то подвоїти їх; в іншому випадку замінити значення кожної змінної на
протилежне.
11. Дано три змінні: X, Y, Z. Якщо їх значення впорядковані за зростанням
або зменшенням, то подвоїти їх; в іншому випадку замінити значення кожної
змінної на протилежне.
12. Дано цілочисельні координати точки на площині. Якщо точка не
лежить на координатних осях, то вивести 0. Якщо точка збігається з початком
координат, то вивести 1. Якщо точка не збігається з початком координат, але
лежить на осі OX або OY, то вивести відповідно 2 або 3.
13. Дано речові координати точки, що не лежить на координатних осях OX
та OY. Вивести номер координатної чверті, в якій знаходиться дана точка.
14. На числової осі розташовані три точки: A, B, C. Визначити, яка з двох
останніх точок (B або C) розташована ближче до A, і вивести цю точку і її
відстань від точки A.
56
15. Дано чотири цілих числа, одне з яких відмінно від трьох інших, рівних
між собою. Вивести порядковий номер цього числа.
Зміст звіту
1. Мета роботи.
2. Словесний опис роботи фрагментів програм та результати їх роботи у
програмному середовищі до завдань 1,2.
3. Блок-схема, лістинг програми та результати роботи програми до
завдання 3.
4. Блок-схема, лістинг програми та результати роботи програми до
завдання 4.
5. Висновки.
Контрольні питання
1. Загальна форма запису оператора switch. Правило виконання.
2. Тернарна умовна операція. Алгоритм роботи.
57
ЛАБОРАТОРНА РОБОТА №7
ОПЕРАТОРИ ОРГАНІЗАЦІЇ ЦИКЛУ
Кожне з цих трьох виразів може бути груповим або може бути відсутнім, в
тому числі і одночасно, але роздільники ';' обов'язково повинні бути. Якщо
відсутній вираз_2, то воно вважається істинним за замовчуванням.
Конструкції нескінченних циклів:
for ( ; ; ) printf(“Нескінченний цикл\ n”);
for (i =1; 1; i++) printf(“Нескінченний цикл\ n”);
58
for (i =10; i >6; i++) printf(“Нескінченний цикл\ n”);
Для таких циклів також може бути організований вихід. Для цього
використовують оператор break.
Приклад. Дано ціле число N і набір з N ненульових цілих чисел. Вивести в тому
ж порядку номера всіх непарних чисел з даного набору і кількість K таких чисел.
Лістинг програми
#include <stdio.h>
int main()
{
setlocale(0,""); // підключення кирилиці в консолі
int i,N,k=0,r; // N-змінна кількості чисел в послідовності, k-лічильник кількості
непарних чисел
printf("Введіть кількість чисел в послідовності:");
scanf("%d", &N);
for (i=1; i<=N; ++i)
{
printf("%d:",i);
scanf("%d", &r);
if (r%2!=0)
{
printf("%d\n",i); ++k;
}
}
printf("Kілкість непарних чисел в послідовності:%d\n",k);
getch();
return 0;
}
59
початок
i=1...N
- r%2!=0
++k
кінець
while (вираз)
{
оператор 1;
оператор 2;
60
…
оператор N;
}
Лістинг програми
#include <stdio.h>
int main()
{
setlocale(0,""); // підключення кирилиці в консолі
int sum=0,A,B,N=100,a,b,c;
printf("Введіть суму А:");
scanf("%d", &A);
printf("Введіть число В:");
scanf("%d", &B);
while(N<1000)
{
a=N/100;
b=(N/10)%10;
c=N%10;
sum=a+b+c;
if((sum==A) && (N%B==0))
printf("%d\n",N);
N++;
61
}
getch ();
return 0;
}
початок
N=100
sum=0
A,B
-
N<1000
+
a=N/100;
b=(N/10)%10;
c=N%10;
sum=a+b+c
- (sum==A) &&
(N%B==0)
N++
кінець
Лістинг програми
#include <stdio.h>
int main()
{
setlocale(0,""); // підключення кирилиці в консолі
int N,a,b;
printf("Введіть число N:");
scanf("%d",&N);
if(N<10)
printf("число однозначне");
else
{
b=N%10;
do
{
a=N%10;
N=N/10;
}
while(N);
63
if(a==b)
printf("true");
else
printf("false");
}
getch ();
return 0;
}
початок
+
Число
N<10 однозначне
b=N%10
a=N%10;
N=N/10;
+
N
+ -
a==b
true false
кінець
Порядок виконання
1. У завданні 1 скласти блок-схему і програму на мові програмування
Сі. Реалізувати за допомогою оператора циклу for.
64
2. У завданнях 2 скласти блок-схему і програму на мові програмування
Сі. У всіх завданнях передбачається, що вихідний набір містить ненульове число
елементів (зокрема, число N завжди більше нуля). Реалізувати за допомогою
оператора циклу for.
3. У завданні 3 скласти блок-схему і програму на мові програмування
Сі. Реалізувати за допомогою оператора циклу while.
4. У завданні 4 скласти блок-схему і програму на мові програмування
Сі. Реалізувати за допомогою оператора циклу do…while.
Варіанти завдань (1-4) наведено в табл. 7.1.
65
Таблиця 7.1 – Варіанти завдань (продовження)
18
1 7 6 7
19
18 4 25 11
20
7 10 4 24
21
2 11 23 16
22
15 8 24 15
23
9 9 10 12
24
13 5 7 8
25
6 2 13 4
До завдання 1
1. Знайти НСД трьох чисел. Примітка. НСД (a, b, c) = НСД (НСД (a, b),
c).
2. Перевірити, чи є два даних числа взаємно простими. Два числа
називаються взаємно простими, якщо їх найбільший спільний дільник дорівнює
1.
3. Знайти найменше спільне кратне (НОК) чисел n і m, якщо НОК (n,
m) = n * m / НОД (n, m).
4. Знайти кількість дільників натурального числа. Скільки з них
парних?
5. Знайти всі натуральні числа a, b і c з інтервалу від 1 до 20, для яких
виконується рівність: a2 + b2 = c2.
6. Знайти суму непарних дільників натурального числа.
7. Знайти всі натуральні числа з проміжку від 1 до 200, у яких кількість
дільників дорівнює N (N вводити з клавіатури).
8. Знайти всі натуральні числа a, b і c з інтервалу від 1 до 20, для яких
виконується рівність: a + b2 = c2.
9. Знайти всі натуральні числа з проміжку від 1 до 200, у яких сума
дільників дорівнює S (S вводити з клавіатури).
66
10. Знайти всі такі трійки натуральних чисел x, y і z з інтервалу від 1 до
20, для яких виконується рівність: x2 - y = z2.
11. Знайти кількість дільників натурального числа, великих К (К
вводити з клавіатури).
12. Знайти всі натуральні числа a, b і c з інтервалу від 1 до 20, для яких
виконується рівність: a2 * b = c2.
13. Знайти суму цілих чисел з проміжку від 1 до 200, у яких рівно 5
подільників.
14. Знайти всі такі трійки натуральних чисел x, y і z з інтервалу від 1 до
20, для яких виконується рівність: x2 + y2 = z2.
15. Знайти всі цілі числа з проміжку від 100 до 300, у яких сума дільників
дорівнює К (К вводити з клавіатури).
16. Знайти всі такі трійки натуральних чисел x, y і z з інтервалу від 1 до
20, для яких виконується рівність: x2 + y2 - z2 = 0.
17. Знайти всі натуральні числа з проміжку від a до b, у яких кількість
дільників перевищує вказану кількість К.
18. Знайти всі натуральні числа a, b і c з інтервалу від 1 до 20, для яких
виконується рівність: a + b = c2.
19. Знайти суму парних дільників натурального числа.
20. Знайти кількість непарних дільників натурального числа, великих К
(К вводити з клавіатури).
21. Знайти всі натуральні числа x, y і z з інтервалу від 1 до 20, для яких
виконується рівність: x * y2 = z2.
До завдання 2
1. Дано десять чисел. Вивести їх середнє арифметичне.
2. Дано ціле число N і набір з N дійсних чисел. Вивести суму і твір
чисел з даного набору.
3. Дано ціле число N і набір з N ненульових цілих чисел. Вивести в тому
ж порядку всі парні числа з даного набору n K таких чисел.
67
4. Дано цілі числа K, N і набір з N цілих чисел. Якщо в наборі присутній
число, менше K, то вивести True; в іншому випадку вивести False.
5. Дано набір ненульових цілих чисел; ознака його завершення - число
0. Вивести кількість елементів в наборі.
6. Дано набір ненульових цілих чисел; ознака його завершення - число
0. Вивести суму всіх позитивних парних чисел з даного набору. Якщо необхідні
числа в наборі відсутні, то вивести 0.
7. Дано ціле число K і набір ненульових цілих чисел; ознака його
завершення - число 0. Вивести кількість чисел в наборі, менших K.
8. Дано ціле число K і набір ненульових цілих чисел; ознака його
завершення - число 0. Вивести номер першого числа в наборі, більшого K. Якщо
таких чисел в наборі немає, то вивести 0.
9. Дано ціле число K і набір ненульових цілих чисел; ознака його
завершення - число 0. Вивести номер останнього числа в наборі, меншого K.
Якщо таких чисел в наборі немає, то вивести 0.
10. Дано ціле число N і набір з N цілих чисел. Вивести номери тих чисел
в наборі, які менше свого лівого сусіда, і кількість K таких чисел.
11. Дано ціле число N і набір з N цілих чисел. Вивести номери тих чисел
в наборі, які більше свого правого сусіда, і кількість K таких чисел.
12. Дано ціле число N і набір з N дійсних чисел. Перевірити, чи утворює
даний набір зростаючу послідовність. Якщо утворює, то вивести True, якщо
немає - вивести False.
13. Дано ціле число N і набір з N цілих чисел, що містить принаймні два
нуля. Вивести суму чисел з даного набору, розташованих між першими двома
нулями (якщо перші нулі йдуть підряд, то вивести 0).
14. Дано ціле число N і набір з N цілих чисел, що містить принаймні два
нуля. Вивести суму чисел з даного набору, розташованих між останніми двома
нулями (якщо останні нулі йдуть підряд, то вивести 0).
68
До завдання 3,4
1. Дано натуральне число. знайти суму цифр цього числа.
2. Дано натуральне число: знайти твір цифр числа.
3. Дано натуральне число. вірно, що в даному числі немає даної цифри
А (цифру А вводити з клавіатури).
4. Дано натуральне число: знайти кількість цифр даного числа.
5. Дано натуральне число: чи вірно, що дане число починається на
непарну цифру.
6. Знайти кількість тризначних чисел, сума цифр яких дорівнює А, а
саме число закінчується цифрою В (А і В вводяться з клавіатури).
7. Знайти всі симетричні чотиризначні натуральні числа з проміжку від
А до В (А і В вводяться з клавіатури).
8. Дано натуральне число: знайти кількість парних цифр числа.
9. Дано натуральне число. вірно, що дана цифра А зустрічається в числі
більше двох разів (А вводити з клавіатури).
10. Дано натуральне число: знайти першу і останню парних цифри
числа.
11. Дано натуральне число: чи вірно, що сума цифр даного числа
дорівнює А (А вводиться з клавіатури).
12. Знайти всі тризначні цифри, які при діленні на 2 дають залишок 1.
13. Дано натуральне число: скільки разів дана цифра А зустрічається в
даному числі (А вводити з клавіатури).
14. Дано натуральне число: чи вірно, що в даному числі сума цифр
більше В, а число ділиться на В (В вводити з клавіатури).
15. З даного натурального числа видалити всі цифри крім А (А вводиться
з клавіатури).
16. Дано натуральне число: чи вірно, що перша цифра цього числа
ділиться на А, В і С (А, В і С вводяться з клавіатури).
17. Знайти всі двозначні числа, які при множенні на 2 закінчуються на 8,
а при множенні на 3 - на 4.
69
18. Дано натуральне число: знайти кількість цифр даного числа, великих
А (А вводиться з клавіатури).
19. Дано натуральне число: чи вірно, що перша цифра цього числа
належить проміжку від А до В і кратно 3 (А і В вводяться з клавіатури).
20. Знайти суму всіх чисел з проміжку від А до В, кратних 13 і 5 (А і В
вводяться з клавіатури).
21. Дано натуральне число: скільки парних цифр в даному цілому числі.
22. Дано натуральне число вірно, що в даному числі зустрічаються
цифри А і В (А і В вводяться з клавіатури).
23. Знайти всі симетричні чотиризначні числа. Наприклад: 7667, 1331.
24. Дано натуральне число: чи вірно, що перша цифра даного числа -
парна.
25. Знайти всі тризначні числа, сума цифр яких дорівнює А (А вводиться
з клавіатури).
Зміст звіту
1. Мета роботи.
2. Блок-схема, лістинг програми та результати роботи програми до
завдання 1
3. Блок-схема, лістинг програми та результати роботи програми до
завдання 2.
4. Блок-схема, лістинг програми та результати роботи програми до
завдання 3.
5. Блок-схема, лістинг програми та результати роботи програми до
завдання 4.
6. Висновки.
Контрольні питання
1. Форма запису оператора for. Правило виконання. Конструкції
нескінченних циклів.
70
2. Форма запису оператора do…while. Правило виконання.
3. Форма запису оператора while. Правило виконання.
71
ЛАБОРАТОРНА РОБОТА №8
РОБОТА З ФУНКЦІЯМИ
Приклади оголошень:
72
комами. У тому випадку, якщо формальні параметри відсутні, або функція не
повертає ніякого значення, використовується службове слово void.
Визначення функції задає її заголовок, оголошення локальних об'єктів
(констант, змінних) і оператори, які визначають дію функції. Тіло функції
поміщається у фігурні дужки.
Приклад визначення функції:
char* func(int param_1, int param_2, char* param_3)
//тіло функції
{
int i, j, k; // оголошення локальних об'єктів
char buff [80];
…
оператор;
оператор;
…
return buff; // значення, що повертається
}
74
float power(float x, int pow)
{ початок
float rez;
if (pow == 0) -
{ pow == 0
rez = 1; -
pow == 1
} +
else if (pow == 1) + rez=1;pow>0;
rez = 1
--pow
{ rez = x
rez = x;
} rez*=x
else
{
for(rez=1;pow>0;--pow)
{
rez*=x;
кінець
}
} Рисунок 8.2 – Блок-схема функції power
return rez;
}
кінець
75
Порядок виконання
1. У завданні 1 скласти блок-схеми і програму на мові програмування
Сі. У кожному завданні передбачити введення даних, виведення результату на
екран.
До завдання 1
( 1)i
10
1. Обчислити: . Використовувати функцію для обчислення
i 1 i!
факторіала.
100
i 1
2. Обчислити: (1)i . Використовувати функцію для обчислення
i 2 i2
ступіня.
10
1
3. Обчислити: (1 i!)
i 2
2
. Використовувати функцію для обчислення
факторіала.
(1) k N
4. Дано натуральне число N. Обчислити: 5 . Використовувати
k 1 k
76
N
(1)k (k 1)
8. Дано натуральне число N. Обчислити:
k 1 k!
.
77
N
(1) k
17. Дано натуральне число N. Обчислити:
k 1 (2 k 1) k
.
78
(1 x) k 1 1
N
25. Дано натуральне число N і дійсне х. Обчислити: .
k 1 ((k 1)! 1)
2
Зміст звіту
1. Мета роботи.
2. Блок-схеми до основної програми та для функцій обчислення, лістинг
програми та результати роботи програми до завдання 1.
3. Висновки.
Контрольні питання
1. Що таке функція? Типовий приклад запису програми з функціями.
2. Оголошення функції. Приклади.
3. Визначення функції та повернення значення у точку виклику.
4. Виклик функції. Приклади.
79
СПИСОК РЕКОМЕНДОВАНОЇ ЛІТЕРАТУРИ
80