You are on page 1of 80

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД

«ДОНЕЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ»

КАФЕДРА ЕЛЕКТРОННОЇ ТЕХНІКИ

МЕТОДИЧНІ ВКАЗІВКИ

до виконання лабораторних робіт

з дисципліни «Комп'ютерні технології та програмування. Частина 1» для


студентів денної та заочної форм навчання всіх спеціальностей

Покровськ – 2019
УДК 004(072)
М 54

Методичні вказівки до виконання лабораторних робіт з дисципліни


«Комп'ютерні технології та програмування. Частина 1» (для студентів денної та
заочної форм навчання всіх спеціальностей) / [Укл. О.А. Штепа, Г.А. Лактіонова,
В.А. Лебедєв]. – Покровськ: ДонНТУ, 2019. – 80 с.

Методичні вказівки є лабораторним практикумом з дисципліни


«Комп'ютерні технології та програмування. Частина 1», у них викладено
необхідні положення при підготовці до лабораторних робіт, рішення типових
прикладів, порядок виконання та завдання до лабораторних робіт, зміст звіту,
контрольні запитання та перелік рекомендованої літератури.

Укладачі: Штепа О.А., доц., к.т.н., доц. каф. електронної техніки;


Лактіонова Г.А., ас. каф. електронної техніки;
Лебедєв В.А., ас. каф. електронної техніки.

Рецензент: Поцепаєв В.В., доц., к.т.н., зав. каф. автоматики та


телекомунікацій.

Відповідальний за випуск: проф., д.т.н., завідувач кафедри електронної


техніки, Вовна О.В.

Затверджено навчально-методичним відділом ДонНТУ,


протокол №5 від 17.12.2019 р.

Розглянуто на засіданні кафедри електронної техніки,


протокол № 4 від 03.12.2019 р.

ДонНТУ, 2019 рік


ЗМІСТ

ВСТУП……………………………………………………………………………… 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
ВСТУП

Лабораторні роботи присвячені вивченню основ алгоритмізації


обчислювальних процесів, вивчення синтаксичних і семантичних конструкцій
мови програмування середнього рівня С. У виданні розглядаються системи
числення, алгоритмизація процесів, принципи програмування процесів, що
розгалужуються і циклічних обчислювальних процесів, використання
підпрограм з особливостями передачі в них параметрів. У кожній лабораторній
роботі наводиться приклад виконання типового завдання з урахуванням
пропонованих вимог.
Методичні вказівки є лабораторним практикумом із зазначеної
дисципліни, в них викладено необхідні положення при підготовці до
лабораторних робіт, порядок виконання та завдання до лабораторних робіт, зміст
звіту, контрольні запитання та перелік рекомендованої літератури.
Метою вивчення дисципліни «Комп'ютерні технології та програмування.
Частина 1» надати студентові знання і практичні навички у алгоритмізації,
розробці, налагодженню і тестуванню програм. Велика увага приділяється
сучасній технології розробки програмного продукту в умовах багаторазового
використання створених програм і роботи обчислювальних систем в реальному
масштабі часу, обробці і зберіганню великих обсягів інформації, діалоговому
режиму роботи на ЕОМ.
Основним завданням вивчення дисципліни є набуття студентами
теоретичних знань та практичних умінь щодо основних принципів
алгоритмізації, основних методів обробки даних, етапах розробки програми і
методів автоматизації програмування, основних понять та методів
програмування, конструкцій мови С.
Загальний порядок виконання лабораторних робіт є наступним: вивчення
теоретичного матеріалу, що стосується теми відповідної лабораторної роботи;
вирішення відповідних завдань роботи (обчислення виразів, складання
алгоритмів, програм) відповідно до заданого варіанту; налагодження та
4
тестування програм у середовищі розробки; аналіз отриманих результатів;
складання і захист звіту з лабораторної роботи. Під час захисту лабораторної
роботи студенту задаються питання, з теоретичної та практичної частин
відповідної лабораторної роботи та видається додаткове завдання.
З кожної виконаної роботи складається звіт, що повинен включати в себе:
мету роботи, текст завдання за варіантом, теоретичні обчислення (якщо вказано
у завданні), блок-схеми алгоритмів, лістинги програм, результати тестування
роботи програм при різних вхідних даних (тести повинні покривати всі гілки
алгоритму), висновки. На титульному аркуші вказується дисципліна, тема
лабораторної роботи й автор звіту.

5
ЛАБОРАТОРНА РОБОТА №1
ПОЗИЦІЙНІ СИСТЕМИ ЧИСЛЕННЯ

Мета роботи: отримати навички за поданням числових даних та


виконання арифметичних операцій над ними в різних системах числення.

Основні теоретичні відомості


Система числення – сукупність правил зображення чисел цифровими
знаками.
Позиційна система числення – система числення, в якій значення кожного
числового знаку (цифри) в запису числа залежить від його позиції (розряду).
Основа системи числення – це кількість різних знаків або символів, які
використовуються для зображення цифр в даній системі числення.

Таблиця 1.1 – Набори цифр систем числення


Основа системи числення Цифри, які використовуються в системі числення
10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
2 0, 1
8 0, 1, 2, 3, 4, 5, 6, 7
16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, B, C, D, E, F

Припустимо, що число записане в довільній позиційній системі числення,


має n+1 цифру в цілій частині і m цифр у своїй дробовій частини:

an an 1an  2 ...a2 a1a0 , b1b2 ...bm , (1.1)


де ai – i -а цифра цілої частини, b j – j -а цифра дробової частини числа.

Тоді значення цього числа можна представити у вигляді:

an  u n  an1  u n1  ...  a1  u1  a0  u 0  b1  u 1  b2  u 2  ...  bm  u m , (1.2)

6
де u – основа системи числення.
Наприклад, для десяткового числа ( u = 10) виходить:
83887,45  8 104  3 103  8 102  8 101  7 100  4 101  5 102 .

Алгоритми переведення чисел з однієї позиційної системи числення в іншу.


Переведення 10  2. Таке переведення здійснюється окремо для цілої і дробової
частин числа.
Для цілої частини здійснюється ділення на основу системи:

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  2. Для перекладу вісімкового числа в двійкову систему


числення потрібно кожну восьмеричну цифру записати у вигляді двійковій
тріади, тобто трьох двійкових цифр.

Таблиця 1.2 – Подання вісімкових чисел у двійковій системі числення


Вісімкове число Двійкове число Двійкова тріада
0 0 000
1 1 001
2 10 010
3 11 011
4 100 100
5 101 101
6 110 110
7 111 111

Наприклад, 3763,248  011111110011,0101002 (відкинуто незначущі нулі).

Додавання і віднімання двійкових чисел.


Додавання однорозрядних двійкових чисел виконується за наступними
правилами:

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  210).
4. Підсумувати в двійковій системі числення два десятичних числа.
5. Відняти в двійковій системі числення два десятичних числа.
Варіанти завдань (1-5) наведені в табл. 1.3.

Таблиця 1.3 – Варіанти завдань


Варіант 1 завдання 2 завдання 3 завдання 4 завдання 5 завдання
1 77,372 10111101,101 1530,413 47+22 243-127
2 26,678 10010101,001 7756,563 56+62 254-117
3 60,127 01010101,100 5567,556 34+19 123-45
4 19,332 10101111,1001 6114,527 19+45 222-33
5 58,501 00110011,0011 2662,135 23+34 214-178
6 35,031 11111000,0110 6401,151 12+56 213-56
7 82,284 10111101,101 3756,573 34+63 245-111
8 77,413 10010101,001 6771,666 12+33 243-227
9 71,050 01010101,100 66,171 11+43 254-217
10 30,399 10100011,1101 2756,672 23+11 123-145
11 29,141 00110011,0011 5675,117 10+56 222-139
12 64,731 11111000,0110 6376,076 23+61 214-128
13 98,851 10111101,101 4645,306 23+78 213-156
14 11,908 10010101,001 7437,277 11+47 215-121
15 30,892 01010101,100 4575,757 23+54 213-137
16 53,166 10101111,1001 7444,166 57+22 214-117
17 60,176 10110011,0011 5550,413 36+62 223-45
18 76,625 11111000,0110 7350,035 24+19 242-33

10
Таблиця 1.3 – Варіанти завдань (продовження)

19 45,079 10111101,101 5723,567 59+45 214-78


20 75,706 10110101,001 1515,572 43+34 213-156
21 78,332 01110101,100 4251,645 12+56 245-11
22 51,988 11101111,1011 5171,201 34+13 222-133
23 87,597 00111011,0011 7515,364 12+53 214-78
24 95,590 10111000,0110 1665,555 21+43 213-156
25 53,934 11111001,01101 4516,643 42+33 245-111

Зміст звіту
1. Мета роботи.
2. Переведення числа з десяткової системи числення в двійкову.
3. Переведення числа з двійкової системи числення в десяткову.
4. Переведення числа з вісімкової системи числення в десяткову через
двійкову.
5. Обчислення суми двох десяткових чисел в двійковій системі числення.
6. Обчислення різниці двох десяткових чисел в двійковій системі числення.
7. Висновки.

Контрольні питання
1. Що таке системи числення? На які групи діляться?
2. Що таке основа системи числення? Які системи обчислення
найбільш часто використовуються в ЕОМ? Навести цифри, що в них
використовуються.
3. Навести алгоритми переведення числа з десяткової системи
числення в двійкову і навпаки.
4. Навести алгоритми переведення числа з вісімкової системи числення
в десяткову і навпаки.

11
5. Як здійснюються арифметичні операції (додавання, віднімання)
в двійковій системі числення?

Список рекомендованої літератури

1. Андреева, Е.В. Системы счисления и компьютерная арифметика:


учеб. пособие / Е.В. Андреева, И.Н. Фалина. – 3-е изд., испр. и доп. – М.: БИНОМ.
Лаб. знаний, 2004. – 254 с.
2. Могилев А.В. Информатика: учеб. пособие / А.В. Могилев, Н.И. Пак,
Хённер Е.К. – 3-е изд. – М.: Академия, 2004. – 848 с.
3. Фатеева Н. М. Арифметические и логические основы компьютера:
учебно-методические указания / Н. М. Фатеева, О. А. Возилкина, Н. В. Тумбаева.
– Барнаул: Изд – во АГАУ, 2008. – 53 с.
4. Савельев А. Я. Основы информатики : учебник / А. Я. Савельев. – М.:
Изд-во МГТУ им. Н. Э. Баумана, 2001. – 328 с.

12
ЛАБОРАТОРНА РОБОТА №2
АЛГОРИТМІЗАЦІЯ

Мета роботи: отримати навички складання алгоритмів формульно-


словесним способом та графічним у вигляді блок-схем.

Основні теоретичні відомості


Алгоритм – це точний й повний опис послідовності виконання кінцевого
числа дій, необхідних для вирішення будь-якого завдання заданого типу.
Властивості алгоритму:
1. Визначеність. Кожна команда алгоритму однозначно визначає дії виконавця і
не припускає подвійного тлумачення. Суворо визначеним є й порядок виконання
команд.
2.Результативність. Виконання алгоритму не може закінчуватися
невизначеною ситуацією або зовсім не закінчуватися. Будь-який алгоритм
передбачає, що його виконання при допустимих початкових даних за кінцеве
число кроків приведе до очікуваного результату.
3. Масовість. Алгоритм має передбачати можливість зміни початкових (вхідних)
даних у деяких допустимих межах і можливість використання його для
розв’язання задач одного класу (універсальність алгоритму).
4.Дискретність. Алгоритм розв’язання задачі повинен складатися з
послідовності окремих кроків – відокремлених одна від одної команд (вказівок),
кожна з яких виконується за кінцевий час. Тільки закінчивши виконання однієї
команди, виконавець переходить до виконання іншої.
5. Ефективність. Для вирішення завдання повинні використовуватися обмежені
ресурси комп'ютера (процесорний час, обсяг оперативної пам'яті і т. д.).
Можна виділити три основні способи представлення алгоритмів:
1. Словесний спосіб.
2. Графічний у вигляді блок-схеми.
3. Алгоритмічною мовою або мовою програмування.
13
Словесний спосіб представлення алгоритмів.
Алгоритм Евкліда. За допомогою алгоритма Евкліда можна знайти
найбільший спільний дільник двох цілих чисел.
Позначимо найбільший спільний дільник через d ( m, n ) . Цілком очевидно,
що d ( m,0)  m .
Тоді алгоритм Евкліда можна описати таким чином.
Крок 1. Якщо n = 0, то прийняти d  m і закінчити обчислення, інакше
перейти до кроку 2.
Крок 2. Обчислити q  m / n та r  m  q n . Тут q - ціла частина від ділення
m на n; r - залишок від ділення.
Крок 3. Замінити значення m на значення n , а значення n - на значення r .
Перейти до кроку 1.
Приклад
При m = 420, n = 90 маємо:
Крок 1. n = 90  0;
Крок 2. q = [420/90] = 4; r = 420 - 4  90 = 60;
Крок 3. m = 90; n = 60;
Крок 1. n = 60  0;
Крок 2. q = [90/60] = 1; r = 90 – 1  60 = 30;
Крок 3. m = 60; n = 30;
Крок 1. n = 30  0;
Крок 2. q = [60/30] = 2; r = 60 – 2  30 = 0;
Крок 3. m = 30; n = 0;
Крок 1. n = 0  d = 30 .

Алгоритм Герона. Алгоритм Герона дозволяє обчислити квадратний


корінь з довільного позитивного дійсного числа х. Метод заснований на
багаторазовому застосуванні формули:

14
1 x 
z n 1   z n   при z 0  1 , (2.1)
2 zn 

де x – число, для якого обчислюється квадратний корінь.

Числова послідовність в межі при n   сходиться до шуканого значення.


Зазвичай десяти ітерацій методу Герона більш ніж достатньо для досягнення
необхідної точності розрахунку.
Варіант запису алгоритму:
1. Ввести х.
2. Присвоїти z0  1.
3. Присвоїти i  0 .
4. Присвоїти zi1  ( zi  x / zi ) / 2 .
5. Присвоїти i  i  1.
6. Якщо i  n ( n – кількість ітерацій ), то перейти до кроку 4, інакше
надрукувати значення.
Розроблений програмістом алгоритм повинен давати правильну відповідь.
У простих випадках перевірка алгоритму може бути виконана за допомогою
заповнення трасувальної таблиці. Кожен стовпець такої таблиці відповідає
певній змінної, а кожен рядок - одному кроку алгоритму.
В якості прикладу (табл. 2.1) приведена трасувальна таблиця для
алгоритму Герона обчислення квадратного кореня з числа 2.

Таблиця 2.1 – Обчислення квадратного кореня з числа 2 за допомогою


алгоритма Герона
i z
0 1,00000
1 1,50000
2 1,41666
3 1,41421
4 1,41421
5 1,41421
15
Опис алгоритмів за допомогою блок-схем.
Для розробки структури програми зручніше користуватися записом
алгоритму у вигляді блок-схеми. У табл. 2.2 представлені спеціальні графічні
символи для зображення основних алгоритмічних структур і блоків.

Таблиця 2.2 – Умовні позначення на блок-схемах


R R=0.25b Початок/кінець
алгоритму
0.5a

Передача управління

a Введення/виведення данних даних


незалежно від типу пристрою
0.25a
b

Блок обчислень
a

b
0.5a 0.5a

Введення-виведення даних, носієм


яких служить папір
a

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
ФУНКЦІЇ ВВЕДЕННЯ-ВИВЕДЕННЯ, АРИФМЕТИЧНІ ОПЕРАЦІЇ

Мета роботи: отримати практичні навички запису арифметичних операцій


для найпростіших виразів та організації введення-виведення даних на мові
програмування Сі.

Основні теоретичні відомості


Оператор - це команда мови програмування високого рівня. Оператор
присвоювання служить для зміни значень змінної.
Загальна структура оператора присвоювання:

ім'я змінної (куди записати?) = вираз (що записати?);

У мові програмування Сі застосовується компактна форма операції


присвоювання (табл. 3.1).

Таблиця 3.1 – Компактні форми запису операції присвоювання


Повний запис Скорочений запис
a=a+1 a++
a=a+b a+=b
a=a-1 a--
a=a-b a-=b
a=a*b a*=b
a=a/b a/=b
a=a%b a%=b

Арифметичний вираз може включати:


- константи (постійні);
23
- імена змінних;
- знаки арифметичних операцій (множення, ділення, залишок від ділення,
додавання, віднімання);
- виклики функцій;
- круглі дужки.
Старшинство арифметичних операцій наступне:
++, --
- (унарный минус)
*, /, %
+, –
Зовнішню неоднозначність мають вираження, в яких знак операції ++ (або
--), що записаний поруч зі знаком + (або -): x+++b или z---b.
У цих випадках трактування виразів однозначна і повністю визначається
рангами операцій (+ - ранг4; ++ - ранг2). Таким чином:
(x++)+b или (z--)-b.
Операції, однакові по старшинству, виконуються в порядку зліва направо.
Щоб змінити порядок операцій використовують круглі дужки.
Введення і виведення інформації здійснюється через функції стандартної
бібліотеки. Прототипи розглянутих функцій знаходяться у файлі stdio.h. Ця
бібліотека містить функції:
- printf () - для виведення інформації;
- scanf () - для введення інформації.
Функція printf () призначена для форматованого виведення. Вона
переводить дані в символьне уявлення і виводить отримані зображення символів
на екран. При цьому у програміста є можливість форматувати дані, тобто
впливати на їх уявлення на екрані.
Загальна форма запису функції printf ():
printf("РядокФорматів", об'єкт 1, об'єкт 2, ..., об'єкт n);
Рядок Форматів складається з наступних елементів:
- керуючих символів;
24
- тексту, представленого для безпосереднього виведення;
- форматів, призначених для виведення значень змінних різних типів.
Об'єкти можуть бути відсутні.
Основні керуючі символи:
'\ n' - новий рядок;
'\ t' - горизонтальна табуляція;
'\ v' - вертикальна табуляція;
'\ b' - повернення на символ;
'\ r' - повернення на початок рядка;
'\ a' - звуковий сигнал.
Основні формати:
% d - ціле число типу int зі знаком в десятковій системі числення;
% u - ціле число типу unsigned int;
% hu - ціле число типу unsigned short;
% lu - ціле число типу unsigned long int;
% lx - ціле число типу long int зі знаком в шістнадцятковій системі
числення;
% f - речовинний формат (числа з плаваючою точкою типу float);
% lf - речовинний формат подвійної точності (числа з плаваючою точкою
типу double);
% c - символьний формат;
% s - строковий формат.
Функція форматованого введення даних з клавіатури scanf () виконує
читання даних, що вводяться з клавіатури, перетворює їх у внутрішній формат і
передає функції, що викликає. При цьому програміст задає правила інтерпретації
вхідних даних за допомогою специфікацій рядка формату.
Загальна форма запису функції scanf ():
scanf ("РядокФорматів", адреса1, адреса2,…);

25
Рядок форматів аналогічний функції printf(). Для формування адреси
змінної використовується символ амперсанд '&': адреса = & об'єкт.

Структура програми на Сі:


# Директиви препроцесора
int main() // початок програми
{ // початок функції
.....;
.....; // інструкції (оператори, функції)
.....;
return 0;
} // кінець функції і кінець програми

Приклад. Обчислити значення виразів. Організувати введення початкових даних


користувачем та вивід результатів обчислення на екран.

Лістинг програми
#include <stdio.h> //бібліотека стандартів введення/виведення
#include <conio.h> //бібліотека для роботи з консоллю
int main()
{

setlocale(0,""); // підключення кирилиці в консолі Windows


int a,b,c; //оголошення змінних

printf ("Введення значення a: ");


scanf ("%d",&a);
printf ("Введення значення b: "); //введення початкових даних користувачем
scanf ("%d",&b);
printf ("Введення значення c: ");
scanf ("%d",&c);
a--; // вирази
b/=a;
c=c+(--b);
printf("a=%d, b=%d, c=%d ",a,b,c); // виведення на екран значень змінних
getch(); // читання символу, що введений з клавіатури
26
return 0; // повернення значення головної функції
}

Початок

a,b,c

a--
b/=a
c=c+(--b)

a,b,c

Кінець

Рисунок 3.1 – Блок-схема та результати роботи програми

Порядок виконання
1. У завданні 1:
- здійснити теоретичний розрахунок арифметичних виразів.
- скласти блок-схему та програму обчислення арифметичних виразів
на мові програмування Сі. Передбачити введення даних і виведення результатів
на екран.
- порівняти результати теоретичного та практичного розрахунків.
Варіанти завдань наведені в табл. 3.1.

27
Таблиця 3.1 – Варіанти завдань
Варіант Завдання 1

1 a++; b+=a; c=a+b; a=а* (a++)


2 b + =a; c+ = b; b = 1/b*--c
3 a++; b+=++a; c=a+b; a=b/(a++)
4 b * =a; c* =++ b; b = 1/b*++c
5 b - =a*a; c+ =b*b*b*b; b* = --c
6 a--; b*=a; c=a+b++; a=c* (a--)
7 a++; b+=a; c=a+b; a=а* (a++)
8 b + =a; c+ = b; b = 1/b*--c
9 a++; b+=++a; c=a+b; a=b/(a++)
10 b * =a; c* =++ b; b = 1/b*++c
11 b - =a*a; c+ =b*b*b*b; b* = --c
12 a--; b*=a; c=a+b++; a=c* (a--)
13 a++; b+=a; c=a+b; a=а* (a++)
14 b + =a; c+ = b; b = 1/b*--c
15 a++; b+=++a; c=a+b; a=b/(a++)
16 b * =a; c* =++ b; b = 1/b*++c
17 b - =a*a; c+ =b*b*b*b; b* = --c
18 a--; b*=a; c=a+b++; a=c* (a--)
19 a++; b+=a; c=a+b; a=а* (a++)
20 b + =a; c+ = b; b = 1/b*--c
21 a++; b+=++a; c=a+b; a=b/(a++)
22 b * =a; c* =++ b; b = 1/b*++c
23 b - =a*a; c+ =b*b*b*b; b* = --c
24 a--; b*=a; c=a+b++; a=c* (a--)
25 a++; b+=a; c=a+b; a=а* (a++)

28
Зміст звіту
1. Мета роботи.
2. Результати теоретичного розрахунку арифметичних виразів.
3. Блок-схема, лістинг програми та результати роботи програми.
4. Висновки.

Контрольні питання
1. Для чого служить оператор присвоювання? Яка в нього загальна
структура?
2. Наведіть компактні форми запису операції присвоювання.
3. Що може включати у себе арифметичний вираз?
4. Наведіть ранги арифметичних операцій.
5. Функції printf() та scanf(). Загальні форми запису.

Список рекомендованої літератури

1. Керниган Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – 2-


е изд. : Пер. с англ. – М.: Вильямс, 2007. – 304 c.
2. Ковалюк Т.В. Алгоритмізація та програмування: підручник / Т.В.
Ковалюк. – Львів: «Магнолія 2006», 2013. – 400 с.
3. Культин Н. Б. С/С++ в задачах и примерах / Н. Б. Культин. – Санкт-
Петербург: «БХВ-Петербург», 2005. – 288 с.
4. Дорогов В.Г. Основы программирования на языке С: учеб. пособие /
В.Г. Дорогов, Е.Г. Дорогова. – М.: ИД «Форум» – ИНФРА-М, 2011. – 224 c.

29
ЛАБОРАТОРНА РОБОТА №4
МАТЕМАТИЧНІ ФУНКЦІЇ, ЛОГІЧНІ ВИРАЗИ

Мета роботи: отримати практичні навички обчислення логічних виразів


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

Основні теоретичні відомості


Алгебра логіки - це розділ математики, що вивчає висловлення, що
розглядаються з боку їх логічних значень (істинності або хибність) і логічних
операцій над ними.
Істинність висловлювання може приймати одне з двох значень: 0 (вислів
помилковий) або 1 (вислів дійсний). У програмуванні операції алгебри логіки
використовуються при обчисленні логічних виразів.
Найбільш важливими логічними операціями алгебри логіки є три:
заперечення, логічне множення і додавання.
а) Заперечення (операція НЕ). Таблиця операції:

0 1
10

Читається: "Не нуль є одиниця".

б) Логічне множення (кон'юнкція, операція І). Таблиця операції:

00  0
0 1  0
1 0  0
11  1

Читається: "Нуль і нуль є нуль".

30
в) Логічне додавання (диз'юнкція, операція АБО). Таблиця операції:

00  0
0 1 1
1 0  1
11  1

Читається: "Нуль або нуль є нуль".


Логічні операції є бітовими. Якщо їх застосовують для полів бітів, то ці
операції виконуються окремо для кожної пари біт.
Логічне значення - це одне з двох значень істинності, які позначають
іменами false і true (false еквівалентно значенням 0, true - значенням 1 в алгебрі
логіки; використання імен false і true викликано прагненням відрізняти в
програмі логічні значення від числових значень 0 і 1).
Логічний тип (тип boolean) визначений так, що false < true, що відповідає
машинному поданню логічних констант false і true. Операції відношення завжди
дають логічний результат. Наприклад, вираз x 1  y при x  0, y  0 дає false; при
x  0, y  10 - значення true.

Приклад

(( x  1  y )andnot( x  5))or (( y  0)andtrue

Обчислити значення цього виразу при x  5, y  5 :

((6  1)andnot(5  5))or((5  0)andtrue)  ( falseandnotfalse)or(trueandtrue) 


 ( falseandtrue)or(trueandtrue)  falseandtrue  true

У символіці алгебри логіки:

(0  0 )  (1  1)  (0  1)  (1  1)  0  1  1 .

Порядок виконання арифметичних операцій алгебраїчних виразів в мові Сі


наступний:
1. обчислення виразів в дужках
2. множення, ділення (зліва направо)
31
3. додавання, віднімання (зліва направо)
Для використання в програмі математичних функцій мови Сі необхідно
включити в код програми заголовок стандартної бібліотеки math.h. У таблиці 5.1
наводиться короткий опис доступних математичних функцій.

Таблиця 4.1 – Основні математичні функції бібліотеки math.h


Функція Опис
int abs(int x) Модуль цілого числа x
double acos(double x) Арккосинус x
double asin(double x) Арксинус x
double atan(double x) Арктангенс x
double cos(double x) Косинус x
double cosh(double x) Косинус гіперболічний x
double exp(double x) Експонента x
double fabs(double x) Модуль дійсного числа
double fmod(double x, double y) Залишок від ділення x/y
double log(double x) Натуральний логарифм x
double log10(double x) Десятковий логарифм x
double pow(double x, double y) x у ступені y
double sin(double x) Синус x
double sinh(double x) Синус гіперболічний x
double sqrt(double x) Квадратний корінь x
double tan(double x) Тангенс x

Приклад
a 2  5  c 2  d  ( a  b)
x
(c  d )  ( d  2  a )

Вираз на мові програмування Сі:

x  ( pow(a,2)  5 * pow(c,2)  d * (a  b)) /((c  d ) * (d  2 * a ));

Порядок виконання
1. У завданні 1 обчислити значення логічного виразу при заданих
числових значеннях. Записати вираз в символіці алгебри логіки.

32
2. У завданнях 2,3,4 скласти блок-схему та програму обчислення
виразів на мові програмування Сі. Передбачити введення даних і виведення
результатів на екран.
Варіанти до 1 завдання наведено в табл. 4.2.
Варіанти до завдань 2,3,4 наведено в табл. 4.3.

Таблиця 4.2 – Варіанти до 1-го завдання

Завдання 1
Варіант Логічний вираз Числові
значення

1 ((x + 1 < y) and not (x > 5)) or ((y > 0)


and true) x = 5, y = 5
2 ((x + 2 < y) or (x > 4)) and ((y > 0)) x = 4, y = 5
3 ((x + 1 < y) and (x > 5)) or ((y > 10) or
true) x = 1, y = 1
4 ((x - 1 < y) and not (x > 2)) or ((y >1 0)
and true) x = -5, y = 5
5 ((x + 2 < y) or (x > 4)) and ((y > 0)) x = 4, y = -5
6 ((x - 1 < y) and (x > 2)) or ((y > 0) or
true) x = 10, y =- 1
7 ((x - 10 < y) and not (x > 5)) or ((y > 1)
and true) x = 5, y = 5
8 ((x + 2 < y) or (x > 4)) and ((y > 0)) x = 4, y = 5
9 ((x + 1 < y) and (x > -5)) or ((y > 0) or
true) x = 1, y = 1
10 ((x + 1 < y) and not (x > -5)) or ((y >
0) and true) x = -5, y =1 5
11 ((x + 2 < y) or (x >- 4)) and ((y >1 0)) x = 4, y = -5
12 ((x + 1 < y) and (x > 50)) or ((y > 0) or
true) x = 10, y =- 1
13 ((x + 1 < y) and not (x >- 5)) or ((y >
1) and true) x = 5, y =15

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

Таблиця 4.3 – Варіанти до 2-4 завдань


Варіант Завдання 2 Завдання 3 Завдання 4

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 xz
 
1.
bc 5. 1 x y
z x
2
a 3  b3 y
x
bc 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.
2a

0,49  e a 2 b2
 ln3 cos(a 2 )   x 1   sin 2 arctg( z )
4. 8. ln y
 
35
9. x 
n m2
x nm a 2t

 b 2k 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

cos(x 3 )  sin 2 y sin 2 x


11. 4 ln( x)  xy 15.
3,01  x  e 2 x
a  b n
12. a
1
a m  b mn

Зміст звіту
1. Мета роботи.
2. Обчислення значення логічного виразу при заданих числових
значеннях. Запис виразу в символіці алгебри логіки.
3. Блок-схема, лістинг програми та результати роботи програми до
завдань 2,3,4.
4. Висновки.

Контрольні питання
1. Що таке алгебра логіки? Які значення може приймати істинність
висловлювання?
2. Наведіть логічні операції алгебри логіки та їх таблиці істинності.
3. Що таке логічне значення? Як записуються логічні вирази у
символіці алгебри логіки?

36
4. Який порядок виконання арифметичних операцій алгебраїчних
виразів в мові Сі?

Список рекомендованої літератури


1. Керниган Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – 2-
е изд. : Пер. с англ. – М.: Вильямс, 2007. – 304 c.
2. Ковалюк Т.В. Алгоритмізація та програмування: підручник / Т.В.
Ковалюк. – Львів: «Магнолія 2006», 2013. – 400 с.
3. Культин Н. Б. С/С++ в задачах и примерах / Н. Б. Культин. – Санкт-
Петербург: «БХВ-Петербург», 2005. – 288 с.
4. Дорогов В.Г. Основы программирования на языке С: учеб. пособие /
В.Г. Дорогов, Е.Г. Дорогова. – М.: ИД «Форум» – ИНФРА-М, 2011. – 224 c.

37
ЛАБОРАТОРНА РОБОТА №5
УМОВНИЙ ОПЕРАТОР IF

Мета роботи: отримати практичні навички в складанні алгоритмів і


програм розгалуженої структури за допомогою умовного оператора if.

Основні теоретичні відомості


Програма - це опис засобами мови програмування алгоритму розв'язання
задачі. Будь-який алгоритм можна розділити на проходження, розгалуження і
цикли. Якщо має місце перевірка умов і вибір одного з можливих напрямків
продовження обчислень, то має місце розгалуження (рис. 5.1).

Так Умова Ні
виконується?

Оператор 1 Оператор 2

Рисунок 5.1 – Умовне позначення розгалуження на блок-схемі

Розгалуження в програмах здійснюються за допомогою оператора умови


if. Цей оператор використовується в двох формах:
а) у повній формі
if (вираз) (if - якщо, else - інакше)
оператор_1;
else
оператор_2;
38
Правило виконання: якщо вираз в дужках (тут деяка умова) не дорівнює
нулю, тобто "істина", то виконується оператор_1. В іншому випадку виконується
оператор_2.
б) у скороченій формі:
if (вираз)
оператор_1;
Якщо вираз в дужках (...) не дорівнює нулю, то виконується оператор_1, в
іншому випадку управління передається наступному оператору програми.
Оператори_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;
}

Тут частина else відноситься до другого оператору if.

Часто зустрічається необхідність використовувати конструкцію if - else - if:

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;
-

printf (“Введіть число”); +


число x
x<0 sqn=-1
scanf (“% f “, &x); негативне

-
if (x>0) sqn=0
{ sqn = 1; printf (“число %f позитивне
\n”, x); }
число x
else if (x<0) дорівнює
{ sqn= -1; printf (“число %f нулю

негативне \n”, x); }


else
Кінець
{ sqn =0; printf (“число %f
дорівнює нулю \n”, x);}
getch();
Рисунок 5.2 – Блок-схема програми
return 0;
}

Складна умова - це умова, що складається з декількох простих умов,


пов'язаних з допомогою логічних операцій (! – НЕ, && - І, |
| - АБО). Прості умови: <, <=, >, >=, == (дорівнює),!=(не дорівнює).
Порядок виконання складних умов:

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.

Таблиця 5.1 – Варіанти завдань


Варіант Завдання 1 Завдання 2 Завдання 3 Завдання 4
1 4 2
7 11
2 5 1 8 7
3 2 13 10 13
4 6 9 3 4
5 3 3 13 13
6 8 7 2 12
7 1 5 5 8
8 7 4 1 10
9 10 11 12 13
10 9 8 11 9
11 2 12 4 7
12 3 6 6 13
13 10 10 9 10
14 6 3 1 12
15 7 6 2 11

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

11. Знайти значення виразу y  



 x , x  0
 x5 , x  1
12. Знайти значення виразу y   x

e , x  1
3 x , x  0
13. Знайти значення виразу y  
sin( x), x  0
2 x 2 , x  0
14. Знайти значення виразу y  
cos(x), x  0
 x8 , x  2
15. Знайти значення виразу y   x 1

e , x  2
e x , x  1
2

16. Знайти значення виразу y  


  5
 x , x  1
cos(x 5 ), x  1
17. Знайти значення виразу y  

5e , x  1
x

5 x , x  3
18. Знайти значення виразу y  
ln( x), x  3

 6 x , x  1
2

19. Знайти значення виразу y   2


cos ( x), x  1

6 x8 , x  2
20. Знайти значення виразу y   2 x  4
e , x  2

До завдань 3,4

1. Задана точка М з координатами (х, у). Визначити місце розташування


цієї точки в декартовій системі координат (чи є ця точка початком координат,
лежить на одній з координатних осей або розташована в одному з координатних
кутів).

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, пересічними під кутом у.

13. Задано три точки на площині: М з координатами (х1, у1), L з


координатами (х1, у1) і H з координатами (х1, у1). Визначте, чи лежать вони на
одній прямій. При негативній відповіді знайти площу і периметр трикутника
MLH.

Зміст звіту
1. Мета роботи.
2. Вираз операції умови до завдань 1-2.
3. Блок-схеми, лістинги програм та результати роботи програм до завдань
3-4.
4. Висновки.

Контрольні питання
1. Форми умовного оператору if. Правило його виконання.
2. Конструкція if - else – if. Правило виконання.
3. Що таке складна умова? Порядок виконання складних умов. Навести
приклад.

Список рекомендованої літератури

1. Керниган Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – 2-


е изд. : Пер. с англ. – М.: Вильямс, 2007. – 304 c.
2. Ковалюк Т.В. Алгоритмізація та програмування: підручник / Т.В.
Ковалюк. – Львів: «Магнолія 2006», 2013. – 400 с.
3. Культин Н. Б. С/С++ в задачах и примерах / Н. Б. Культин. – Санкт-
Петербург: «БХВ-Петербург», 2005. – 288 с.
4. Дорогов В.Г. Основы программирования на языке С: учеб. пособие /
В.Г. Дорогов, Е.Г. Дорогова. – М.: ИД «Форум» – ИНФРА-М, 2011. – 224 c.

46
ЛАБОРАТОРНА РОБОТА №6
ОПЕРАТОР ВИБОРУ SWITCH

Мета роботи: отримати практичні навички в складанні алгоритмів і


програм розгалуженої структури за допомогою оператора вибору switch.

Основні теоретичні відомості


Оператор вибору switch дозволяє вибрати один варіант ходу розв’язку
задачі з декількох в залежності від значення виразу. Таким чином забезпечується
багатонаправлене розгалуження.
Загальна форма запису оператора switch наступна:
switch (вираз)
{
case константа 1: послідовність_операторів 1; break;
case константа 2: послідовність_операторів 2; break;
...
case константа N: послідовність_операторів N; break;
default: послідовність_операторів;
}

Де вираз – деякий вираз цілочисельного (int) або символьного типу (char);


константа 1, константа 2, …, константа N – константні значення, з якими
порівнюється значення виразу. Константні значення мають бути цілочисельного
або символьного типу;
послідовність_операторів1,послідовність_операторів2,…,послідовність_опера
торівN – відповідна послідовність операторів (інструкцій), що зв’язані з
відповідною умовою;
послідовність_операторів – послідовність операторів, яка виконується у
випадку, коли не знайдено жодного співпадіння значення виразу зі значенням
констант.
47
Правило виконання: cпочатку обчислюється значення виразe. Потім це
значення послідовно порівнюється з константами з заданого списку. Як тільки
знайдене співпадіння для однієї з умов порівняння (гілка case), виконується
послідовність інструкцій, що зв’язані з цим порівнянням. Якщо не знайдено
жодного співпадіння, то виконуються оператори, що слідують після ключового
слова default. Якщо ж конструкція default відсутня, то жоден оператор не буде
виконаний, а управління передасться наступному оператору програми.
Операція break перериває (закінчує) виконання коду, що визначений інструкцією
switch.
Кілька "міток" case з різними значеннями констант можуть позначати один
оператор всередині перемикача, що дозволяє ще більше урізноманітнити схеми
побудови операторів switch:
case ‘1’: case ‘3’: case ‘5’: оператор;
case ‘2’: case ‘4’: case ‘6’: оператор;

Приклад. Дано ціле число 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 дев’ять

Рисунок 6.1 – Блок-схема програми

50
Тернарна умовна операція - операція, яка повертає свій другий або третій
операнд в залежності від значення логічного виразу, заданого першим
операндом. Форма запису цієї операції:

логічний вираз ? вираз 1 : вираз 2

Алгоритм роботи операції наступний:


1. Обчислюється логічний вираз.
2. Якщо логічний вираз істинний, то обчислюється значення виразу вираз 1, в
іншому випадку — значення виразу вираз 2.
3. Обчислене значення повертається.

Приклад. У наступному прикладі обчислюється мінімальне з чисел a і b:

min = (a < b) ? a : b;

Порядок виконання
1. У завданнях 1 і 2 визначити, що надрукує задані фрагменти програми
та описати словесно.
2. У завданні 3 скласти блок-схему та програму на мові програмування
Сі. Передбачити введення даних і виведення результатів на екран. Обов’язково
використовувати оператор вибору Switch.
3. У завданні 4 скласти блок-схему та програму на мові програмування
Сі. Передбачити введення даних і виведення результатів на екран. Вирішити
завдання, використовуючи складну умову та оператор вибору Switch.
Варіанти завдань (1-4) наведено в табл. 6.1.

51
Таблиця 6.1 – Варіанти завдань

Варіант Завдання 1 Завдання 2 Завдання 3 Завдання 4


1 16 9 11 1
2 13 1 1 14
3 11 3 10 10
4 2 12 12 13
5 5 6 4 11
6 8 11 9 8
7 10 4 6 5
8 12 10 3 6
9 4 18 2 3
10 1 7 8 4
11 3 5 7 12
12 15 2 5 2
13 7 17 11 9
14 17 8 2 15
15 6 16 10 7
16 14 13 7 5
17 9 14 12 4
18 18 7 6 13
19 10 2 9 3
20 15 9 3 14
21 17 1 1 9
22 11 13 4 1
23 3 14 8 6
24 9 1 5 12
25 7 15 8 15

52
До завдань 1,2

1) 2) #include <stdio.h> 3) #include <stdio.h>


#include <stdio.h> main() main()
main() { { int x, y=1, z;
{ int x, y=1, z; x=1;
int x, y=1, z; if (y==0) x=3; if (y<0) if (y>0) x=3;
if ( y!=0 ) x=5; else x=5; else x=5;
printf (“x=%d printf (“x=%d printf (“x=%d
y=%d”,x,y); y=%d”,x,y); y=%d”,x,y);
} } }
4) #include <stdio.h> 5) #include <stdio.h> 6) #include <stdio.h>
main() main() main()
{ int x, y=1, z; { {
if ( y<0 ) {x=3; z=1;} int x, y=1, z; int x=1, y=1, z=1;
else if (y==0) x=5; if (z=(y==0)) x=5; x=3; if (x==z) x=7;
else {x=7;z=2;} printf (“x=%d printf (“x=%d
printf ("x=%d z=%d”,x,z); z=%d”,x,z);
z=%d",x,z); } }
}
7) #include <stdio.h> 8) #include <stdio.h> 9) #include <stdio.h>
main() main() main()
{ int x=5, y=3, z=2; { {
if ( z=y<0 ) x=3; int x, y=2, z=1; int x=1, y=0, z=7;
else if (y==0) x=5; if (z=(y==0)) x=5; x=3; if ( y!=0 ) x=5;
else x=7; printf (“x=%d printf (“x=%d
printf (“x=%d z=%d”,x,z); z=%d”,x,z);
z=%d”,x,z); } }
}
10) #include <stdio.h> 11) #include <stdio.h> 12) #include <stdio.h>
main() main() main()
{ { {
int x=1, y=1, z=1; int x=1, y=1, z=1; int x=1, y=1, z=1;
x += y += z; x += y += z; x += y += z;
printf (“%d ”, x < y ? printf (“%d ”, x < y ? printf (“%d ”, z += x
y : x ); x++ : y++ ); < y ? x++ : ++y );
} printf (“x=%d printf (“y=%d
y=%d”,x,y); z=%d”,y,z);
} }

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

1. Дано номер місяця (1 - січень, 2 - лютий, ...). Вивести назву


відповідної пори року ("зима", "весна" і т.д.).
2. Дано номер місяця (1 - січень, 2 - лютий, ...). Вивести число днів в
цьому місяці для високосного року.
3. Дано ціле число в діапазоні 0 - 9. Вивести рядок - назва відповідної
цифри українською мовою (0 - "нуль", 1 - "один", 2 - "два", ...).
4. Дано ціле число в діапазоні 1 - 5. Вивести рядок - словесний опис
відповідної оцінки (1 - "погано", 2 - "незадовільно", 3 - "задовільно", 4 - "добре",
5 - "відмінно").
5. Арифметичні дії над числами пронумеровані в такий спосіб: 1 -
складання, 2 - віднімання, 3 - множення, 4 - розподіл. Дано номер дії і два числа
A і B (В не дорівнює нулю). Виконати над числами вказану дію і вивести
результат.

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. Тернарна умовна операція. Алгоритм роботи.

Список рекомендованої літератури

1. Керниган Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – 2-


е изд. : Пер. с англ. – М.: Вильямс, 2007. – 304 c.
2. Ковалюк Т.В. Алгоритмізація та програмування: підручник / Т.В.
Ковалюк. – Львів: «Магнолія 2006», 2013. – 400 с.
3. Культин Н. Б. С/С++ в задачах и примерах / Н. Б. Культин. – Санкт-
Петербург: «БХВ-Петербург», 2005. – 288 с.
4. Дорогов В.Г. Основы программирования на языке С: учеб. пособие /
В.Г. Дорогов, Е.Г. Дорогова. – М.: ИД «Форум» – ИНФРА-М, 2011. – 224 c.

57
ЛАБОРАТОРНА РОБОТА №7
ОПЕРАТОРИ ОРГАНІЗАЦІЇ ЦИКЛУ

Мета роботи: отримати практичні навички в складанні алгоритмів і


програм обробки періодично повторюваних послідовностей дій за допомогою
операторів for, while, do…while.

Основні теоретичні відомості


Якщо в програмі має місце періодичне повторення деякої послідовності
дій, то говорять про наявність циклу. Циклічні обчислення в мові Сі реалізуються
операторами for ..., while ..., do ... while. Оператори циклу for - з лічильником,
while- з передумовою; do ... while- використовується в тих випадках, коли
необхідно виконати тіло циклу хоч би один раз.
Оператор for має наступну конструкцію:

for (вираз_1; вираз_2; вираз_3)


{
оператор 1;
оператор 2;

оператор N;
}
де вираз_1 встановлює початкове значення параметра циклу;
вираз_2 визначає умову продовження циклу;
вираз_3 задає правило зміни параметру циклу.

Кожне з цих трьох виразів може бути груповим або може бути відсутнім, в
тому числі і одночасно, але роздільники ';' обов'язково повинні бути. Якщо
відсутній вираз_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

кінець

Рисунок 7.1 – Блок-схема програми

Найбільш універсальним є оператор циклу while (поки). Оператор while


має наступну форму:

while (вираз)
{
оператор 1;
оператор 2;
60

оператор N;
}

Поки вираз в дужках істинно, повторюється виконання оператора


(простого або складеного). Особливістю циклу while є те, що спочатку
перевіряється значення виразу. Якщо воно дорівнює нулю з самого початку, то
цикл не виконається жодного разу, а управління буде передано наступному
оператору. Це так званий цикл з передумовою.
Приклад. Знайти всі тризначні числа такі, що сума цифр дорівнює А, а саме число
ділиться на В (А і В вводяться з клавіатури).

Лістинг програми
#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++

кінець

Рисунок 7.2 – Блок-схема програми

У мові Сі використовується також оператор циклу з умовою поста do ...


while. Форма його записи наступна:
do
{
оператор 1;
оператор 2;
62

оператор N;
}
while (вираз);

Спочатку виконується тіло циклу (оператор), а потім обчислюється


значення виразу. Якщо воно істинно, то тіло циклу виконується знову. Цей
процес повторюється до тих пір, поки значення виразу не стане рівним нулю.
Після чого управління буде передано наступному оператору програми.
Приклад. Дано натуральне число. Чи вірно, що число починається і закінчується
однією і тією ж цифрою.

Лістинг програми
#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

кінець

Рисунок 7.3 – Блок-схема програми

Порядок виконання
1. У завданні 1 скласти блок-схему і програму на мові програмування
Сі. Реалізувати за допомогою оператора циклу for.

64
2. У завданнях 2 скласти блок-схему і програму на мові програмування
Сі. У всіх завданнях передбачається, що вихідний набір містить ненульове число
елементів (зокрема, число N завжди більше нуля). Реалізувати за допомогою
оператора циклу for.
3. У завданні 3 скласти блок-схему і програму на мові програмування
Сі. Реалізувати за допомогою оператора циклу while.
4. У завданні 4 скласти блок-схему і програму на мові програмування
Сі. Реалізувати за допомогою оператора циклу do…while.
Варіанти завдань (1-4) наведено в табл. 7.1.

Таблиця 7.1 – Варіанти завдань


Варіант Завдання 1 Завдання 2 Завдання 3 Завдання 4
1 2 2 17 22
2 5 11 5 18
3 4 1 22 9
4 20 10 15 14
5 13 4 1 5
6 8 12 20 6
7 21 6 18 20
8 19 13 9 10
9 10 5 8 17
10 9 3 21 19
11 1 7 12 25
12 14 8 11 1
13 17 14 16 13
14 3 9 2 2
15 12 12 14 23
16 11 6 19 21
17 16 3 3 3

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. Правило виконання.

Список рекомендованої літератури

1. Керниган Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – 2-


е изд. : Пер. с англ. – М.: Вильямс, 2007. – 304 c.
2. Ковалюк Т.В. Алгоритмізація та програмування: підручник / Т.В.
Ковалюк. – Львів: «Магнолія 2006», 2013. – 400 с.
3. Культин Н. Б. С/С++ в задачах и примерах / Н. Б. Культин. – Санкт-
Петербург: «БХВ-Петербург», 2005. – 288 с.
4. Дорогов В.Г. Основы программирования на языке С: учеб. пособие /
В.Г. Дорогов, Е.Г. Дорогова. – М.: ИД «Форум» – ИНФРА-М, 2011. – 224 c.

71
ЛАБОРАТОРНА РОБОТА №8
РОБОТА З ФУНКЦІЯМИ

Мета роботи: отримати практичні навички в складанні алгоритмів і


програм, що мають у своєму складі власні функції.

Основні теоретичні відомості


Функція - це незалежна сукупність оголошень і операторів, призначена для
виконання певного завдання. Функція є підпрограмою, яка може міститися в
основній програмі, а може бути створена окремо (в бібліотеці). Кожна функція
виконує в програмі певні дії.

З користуванням функцій в мові Сі пов'язані чотири поняття: оголошення


функції, визначення функції і виклик функції, повернення в головну функцію.

Оголошення або прототип функції задає її ім'я, типи і кількість


формальних параметрів, тип значення, що повертає функцією, і клас пам'яті. В
оголошенні формальні параметри можуть мати імена, однак це не є необхідним.
Оголошення закінчується символом ';' (крапка з комою).

Приклади оголошень:

int func_1(char*, int, float); // оголошення функції func_1()

char* func_2(int a, int b, char* ch); // оголошення функції func_2()

void func_3(int, int); // відсутньо значення, що повертається

void func_4(void); // відсутні формальні параметри і значення, що


повертається

З прикладів видно, що спочатку вказується тип значення, що повертається


функцією (за замовчуванням тип int), потім слідує ім'я функції, після чого в
круглих дужках вказуються типи формальних параметрів, що розділяються

72
комами. У тому випадку, якщо формальні параметри відсутні, або функція не
повертає ніякого значення, використовується службове слово void.
Визначення функції задає її заголовок, оголошення локальних об'єктів
(констант, змінних) і оператори, які визначають дію функції. Тіло функції
поміщається у фігурні дужки.
Приклад визначення функції:
char* func(int param_1, int param_2, char* param_3)
//тіло функції
{
int i, j, k; // оголошення локальних об'єктів
char buff [80];

оператор;
оператор;

return buff; // значення, що повертається
}

Виклик функції визначає дії, що виконуються функцією. При виконанні


функції їй можуть бути передані дані за допомогою аргументів функції, які
називаються фактичними параметрами. Якщо функція повертає значення, то це
і є основний результат виконання функції, який при виконанні програми
підставляється в точку її виклику. Якщо функція не повертає ніякого значення її
дія може складатися з виконання операцій, не пов'язаних з обробкою даних.
Приклади викликів:
func (a,b );
func (&a, &b );
func ();
( *func) (&a, &b );
Y = func_1 (a, b) + func_2 (c, d);
73
Повернення в головну функцію. Після закінчення виконання викликається
функції здійснюється повернення значення в точку її виклику. Це значення
присвоюється змінної, тип якої повинен відповідати типу значення, що
повертається функції. Функція може передати в головну програму тільки одне
значення. Для передачі значення, що повертається в головну функцію
використовується оператор return в одній з форм:
return(значення, що повертається);
return значення, що повертається;
N
x2

Приклад. Дано натуральне число N і дійсне число x. Обчислити вираз i 1 (i  1)! .
Використовувати функцію для обчислення факторіала і ступеня.
Лістинг програми
початок
#include <conio.h>
#include <stdio.h>
#include <math.h> N,x
float faktorial(int); //прототипи функцій
float power (float, int);
int main() i=1,1...N
{
setlocale(0,"");
int N,i; sum+=power(x,2)/
float x, sum=0; factorial(i-1)
printf("Введіть N:");
scanf("%d",&N);
printf("Введіть x:");
scanf("%f",&x);
for(i=1;i<=N;i++)
{ sum
sum+=power(x,2)/factorial(i-1);
}
printf("sum=%3.2f\n",sum); кінець
getch();
return 0; Рисунок 8.1 – Блок-схема основної
}
програми

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;
}

float factorial (int a)


початок
{
int t;
float f=1;
for(t=1;t<=a;t++) f=1
{
f=f*t;
} t=1,1...a
return f;
}
f=f*t

кінець

Рисунок 8.3 – Блок-схема функції factorial

75
Порядок виконання
1. У завданні 1 скласти блок-схеми і програму на мові програмування
Сі. У кожному завданні передбачити введення даних, виведення результату на
екран.

До завдання 1

( 1)i
10
1. Обчислити:  . Використовувати функцію для обчислення
i 1 i!
факторіала.
100
i 1
2. Обчислити:  (1)i . Використовувати функцію для обчислення
i 2 i2
ступіня.
10
1
3. Обчислити:  (1  i!)
i 2
2
. Використовувати функцію для обчислення

факторіала.
(1) k N
4. Дано натуральне число N. Обчислити:  5 . Використовувати
k 1 k

функцію для обчислення ступіня.


N
(1) k
5. Дано натуральне число N. Обчислити: 
k 1 (2  k  1)
2
.

Використовувати функцію для обчислення ступіня.


N
(1) k
6. Дано натуральне число N. Обчислити: 
k 1 (2  k  1)  k
.

Використовувати функцію для обчислення ступіня.


(1) k 1
N
7. Дано натуральне число N. Обчислити:  . Використовувати
k 1 (k  1)  k

функцію для обчислення ступіня.

76
N
(1)k  (k  1)
8. Дано натуральне число N. Обчислити: 
k 1 k!
.

Використовувати функцію для обчислення ступіня та функцію для обчислення


факторіала.
N
k!
9. Дано натуральне число N. Обчислити: 1 1 1
.
k 1  
2 3 k 1
Використовувати функцію для обчислення факторіала.
N
xi
10. Дано натуральне число N і дійсне х. Обчислити: 
i 1 i !
.

Використовувати функцію для обчислення ступіня та функцію для обчислення


факторіала.
N
1
11. Дано натуральне число N і дійсне х. Обчислити:  ( i! 
i 1
x ).

Використовувати функцію для обчислення факторіала.


N
x  cos(k x)
12. Дано натуральне число N і дійсне х. Обчислити: 
k 1 2k
.

Використовувати функцію для обчислення ступіня.


N
k
13. Дано натуральне число N і дійсне х. Обчислити:  ( k  1  cos
k 1
k
x).

Використовувати функцію для обчислення ступіня.


(1  x) k 1  1
N
14. Дано натуральне число N і дійсне х. Обчислити:  .
k 1 ((k  1)! 1)
2

Використовувати функцію для обчислення факторіала.


10
( 1)i
15. Обчислити:  . Використовувати функцію для обчислення
i 1 i!
факторіала.
(1) k
N
16. Дано натуральне число N. Обчислити:  5 . Використовувати
k 1 k

функцію для обчислення ступіня.

77
N
(1) k
17. Дано натуральне число N. Обчислити: 
k 1 (2  k  1)  k
.

Використовувати функцію для обчислення ступіня.


N
(1) k 1
18. Дано натуральне число N. Обчислити:  . Використовувати
k 1 (k  1)  k

функцію для обчислення ступіня.


N
(1)k  (k  1)
19. Дано натуральне число N. Обчислити: 
k 1 k!
.

Використовувати функцію для обчислення факторіала. Для обчислення ступіня


використовувати стандартну математичну функцію pow.
N
k!
20. Дано натуральне число N. Обчислити: 1 1 1
.
k 1  
2 3 k 1
Використовувати функцію для обчислення факторіала.
N
xi
21. Дано натуральне число N і дійсне х. Обчислити: 
i 1 i !
.

Використовувати функцію для обчислення факторіала. Для обчислення ступіня


використовувати стандартну математичну функцію pow.
N
1
22. Дано натуральне число N і дійсне х. Обчислити:  ( i! 
i 1
x ).

Використовувати функцію для обчислення факторіала.


N
k
23. Дано натуральне число N і дійсне х. Обчислити:  ( k  1  cos
k 1
k
x).

Використовувати функцію для обчислення ступіня.


N
k
24. Дано натуральне число N і дійсне х. Обчислити:  ( k  1  cos
k 1
k
x).

Використовувати функцію для обчислення ступіня.

78
(1  x) k 1  1
N
25. Дано натуральне число N і дійсне х. Обчислити:  .
k 1 ((k  1)! 1)
2

Використовувати функцію для обчислення факторіала та функцію для


обчислення ступіня.

Зміст звіту
1. Мета роботи.
2. Блок-схеми до основної програми та для функцій обчислення, лістинг
програми та результати роботи програми до завдання 1.
3. Висновки.

Контрольні питання
1. Що таке функція? Типовий приклад запису програми з функціями.
2. Оголошення функції. Приклади.
3. Визначення функції та повернення значення у точку виклику.
4. Виклик функції. Приклади.

Список рекомендованої літератури

1. Керниган Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – 2-


е изд. : Пер. с англ. – М.: Вильямс, 2007. – 304 c.
2. Ковалюк Т.В. Алгоритмізація та програмування: підручник / Т.В.
Ковалюк. – Львів: «Магнолія 2006», 2013. – 400 с.
3. Культин Н. Б. С/С++ в задачах и примерах / Н. Б. Культин. – Санкт-
Петербург: «БХВ-Петербург», 2005. – 288 с.
4. Дорогов В.Г. Основы программирования на языке С: учеб. пособие /
В.Г. Дорогов, Е.Г. Дорогова. – М.: ИД «Форум» – ИНФРА-М, 2011. – 224 c.

79
СПИСОК РЕКОМЕНДОВАНОЇ ЛІТЕРАТУРИ

1. Андреева, Е.В. Системы счисления и компьютерная арифметика: учеб.


пособие / Е.В. Андреева, И.Н. Фалина. – 3-е изд., испр. и доп. – М.: БИНОМ.
Лаб. знаний, 2004. – 254 с.
2. Могилев А.В. Информатика: учеб. пособие / А.В. Могилев, Н.И. Пак, Хённер
Е.К. – 3-е изд. – М.: Академия, 2004. – 848 с.
3. Фатеева Н. М. Арифметические и логические основы компьютера: учебно-
методические указания / Н. М. Фатеева, О. А. Возилкина, Н. В. Тумбаева. –
Барнаул: Изд – во АГАУ, 2008. – 53 с.
4. Савельев А. Я. Основы информатики : учебник / А. Я. Савельев. – М.: Изд-во
МГТУ им. Н. Э. Баумана, 2001. – 328 с.
5. Гудман С. Введение в разработку и анализ алгоритмов: монография / С.
Гудман, С. Хидетниеми. – М.: Мир, Редакция литературы по математическим
наукам, 1981. – 364 с.
6. Криницкий Н.А. Алгоритмы вокруг нас / Н.А. Криницкий. – М.: Наука.
Главная редакция физико-математической литературы, 1984. - 224 с.
7. Парфилова, Н.И. Программирование: Основы алгоритмизации и
программирования: учебник / Н.И. Парфилова, А.Н. Пылькин, Б.Г. Трусов –
М.: Academia, 2018. - 32 c.
8. Ковалюк Т.В. Алгоритмізація та програмування: підручник / Т.В. Ковалюк. –
Львів: «Магнолія 2006», 2013. – 400 с.
9. Керниган Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – 2-е изд.:
Пер. с англ. – М.: Вильямс, 2007. – 304 c.
10. Культин Н. Б. С/С++ в задачах и примерах / Н. Б. Культин. – Санкт-
Петербург: «БХВ-Петербург», 2005. – 288 с.
11. Дорогов В.Г. Основы программирования на языке С: учеб. пособие / В.Г.
Дорогов, Е.Г. Дорогова. – М.: ИД «Форум» – ИНФРА-М, 2011. – 224 c.

80

You might also like