You are on page 1of 80

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

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


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

МЕТОДИЧНІ ВКАЗІВКИ
до виконання лабораторних робіт
з дисципліни «Комп'ютерні технології та програмування. Частина 2» для
студентів денної та заочної форм навчання всіх спеціальностей

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

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


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

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


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

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


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

Рецензент: Дікова Ю.Л., к.т.н., доц. каф. комп’ютерної інженерії.

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


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

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


протокол № 10 від 28.04.2020 р.

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


протокол №3 від 01.04.2020 р.

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


ЗМІСТ

ВСТУП……………………………………………………………………………… 4
1. Лабораторна робота №1. Одновимірні масиви……..…………………………..6
2. Лабораторна робота №2. Двовимірні масиви…………………………..............15
3. Лабораторна робота №3. Рядки та робота з файлами……………………........24
4. Лабораторна робота №4. Вирішення рівнянь алгебри і систем……………....37
5. Лабораторна робота №5. Програмування з використанням логічних функцій
…………………………………………………………………………………….48
6. Лабораторна робота №6. Розробка консольного меню……………………….56
7. Лабораторна робота №7. Робота з графікою…………………………………..66
8. Лабораторна робота №8. Розрахунок значень функцій на заданому інтервалі
…………………………………………………………………………………….73
СПИСОК РЕКОМЕНДОВАНОЇ ЛІТЕРАТУРИ………………………………….80
ВСТУП

Методичні вказівки призначені для вивчення мови програмування Сі,


пакета прикладних програм MathCAD і програми Microsoft Excel на
лабораторних роботах.
У методичних вказівках на прикладах розглядаються окремі теми,
пов’язані зі програмуванням на мові Сі, а саме: одновимірні та двовимірні
масиви, символьні рядки та робота зі зовнішними файлами, розробка
консольного меню, використовуючи “текстовий” режим консолі і робота з
основними графічними функціями. А також розкриваються основні можливості
роботи з пакетом прикладних програм MathCAD і програми Microsoft Excel.
У посібнику наводяться короткі теоретичні відомості, порядок виконання
та завдання до лабораторних робіт, зміст звіту, контрольні питання та перелік
рекомендованої літератури, що необхідні для виконання восьми лабораторних
робіт.
У кожній роботі представлено типові приклади завдань.
Розглянуті приклади і завдання допоможуть ефективному освоєнню основ
програмування на мові Сі, пакета прикладних програм MathCAD і програми
Microsoft Excel.
Загальний порядок виконання лабораторних робіт є наступним: вивчення
теоретичного матеріалу, що стосується теми відповідної лабораторної роботи;
розробка алгоритму рішення завдань та написання програмного коду або
виконання відповідних завдань роботи у випадку MathCAD та Microsoft Excel
відповідно до варіанту згідно з журналом; налагодження та тестування програм
у середовищі розробки (CodeBlocks) або аналіз отриманих результатів у
випадку MathCAD та Microsoft Excel; складання і захист звіту з лабораторної
роботи. Під час захисту лабораторної роботи студенту задаються питання з
теоретичної та практичної частин відповідної лабораторної роботи та видається
додаткове завдання.

4
З кожної виконаної роботи, що пов’язана із вивченням мови
програмування Сі складається звіт, що повинен включати в себе: мету роботи,
текст завдань за варіантом, блок-схеми алгоритмів, лістинги програм,
результати тестування роботи програм при різних вхідних даних (тести повинні
покривати всі гілки алгоритму), висновки.
З кожної виконаної роботи, що пов’язана із вивченням пакету прикладних
програм MathCAD та програми Excel складається звіт, що повинен включати в
себе: мету роботи, текст завдань за варіантом, результати виконання завдань
(текст коду, графік, електронна таблиця, словесний опис у разі необхідності),
висновки.
На титульному аркуші всіх лабораторних робіт вказується дисципліна,
тема лабораторної роботи й автор звіту.

5
ЛАБОРАТОРНА РОБОТА №1
ОДНОВИМІРНІ МАСИВИ

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


масивами на мові програмування Сі.

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


Масив - це безперервна ділянка пам'яті, що містить послідовність об'єктів
однакового типу, що позначається одним ім'ям. Масив характеризується
наступними основними поняттями:
1. Елемент масиву (значення елемента масиву) - значення, яке
зберігається в певній комірці пам'яті, що розташована в межах масиву, а також
адреса цього осередку пам'яті.
Кожен елемент масиву характеризується трьома величинами:
- адресою елемента - адресою початкової комірки пам'яті, в якій
розташовано цей елемент;
- індексом елемента (порядковим номером елемента в масиві);
- значенням елемента.
2. Адреса масиву - адреса початкового елемента масиву.
3. Ім'я масиву - ідентифікатор, який використовується для звернення до
елементів масиву.
4. Розмір масиву - кількість елементів масиву.
5. Розмір елемента - кількість байт, що займано одним елементом
масиву.
6. Довжина масиву - кількість байт, що відводиться в пам'яті для
зберігання всіх елементів масиву.

Синтаксис оголошення одновимірного масива:


Тип_елементів ім’я_масива [кількість_елементів];

6
Індекс елементів масива починається з 0 (нуль); останній індекс дорівнює
К-1, тобто число елементів масива на 1 більше від індексу останнього елемента
масива.

Приклад. Опис масиву з іменем A, що містить 10 цілих чисел.

int A[10];

У результаті в пам’яті комп’ютера виділяється 10 комірок цілого


типу int. У Сі нумерація комірок починається з нуля. Всі комірки об’єднані
спільним іменем A.

А 0 1 2 3 4 5 6 7 8 9

Рисунок 1.1 – Структура одновимірного масиву

Ще масиви можуть бути ініціалізовані при описі таким чином:

int temp [31] = {7, 8, 6, 5, 5, 7, 10, 12, 9, 13, 8, 6, 7, 6, 4, 3, 3, 2, 1, 2, 0,


1, 2, 1, -1, -2, -4, -5, -2, 1, -4}
str Days_of_week [7] = {"Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday"}

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


допомогою функцій, що генерують випадкові числа, зчитують із файлів. При
генерації випадкових чисел використовується формула для отримання
випадкового числа в діапазоні [a, b], яка виглядає наступним чином:

srand(time(NULL));
rand() % довжина_діапазона + зсув

де довжина_діапазона обчислюється, як b - a + 1, зсув є значенням a.

Обробку масивів як правило здійснюють за допомогою циклів for.

7
Приклад. Знайти суму від'ємних елементів масиву цілих чисел. Введення
елементів організувати з клавіатури в діапазоні [-2; 14].

Лістинг програми
#include <stdio.h>
#include <locale.h>

int main()
{
setlocale (LC_CTYPE, "ukr");
int i,N,sum=0;

printf("N: "); //введення розміру масиву


scanf("%d",&N);
int mass[N]; //оголошення масиву

printf("Введіть елементи масиву у диапазоні [-2; 14]\n");


for (i=0; i<N; i++) // заповнення масиву користувачем
{
printf("mass[%d] : ",i+1);
scanf("%d",&mass[i]);
}

for (i=0; i<N; i++) //знаходження суми від'ємних елементів масиву


{
if (mass[i]<0)
sum+=mass[i];
}

if(!sum)
printf("Немає елементів < 0");
else
printf("\nСумма від'ємних елементів масиву:%d",sum);

getch();
return 0;
}

8
1
початок

i=0,1...N

sum=0
-
mass[i]<0
N
+
Введіть
елементи sum+=mass[i];
масиву у
диапазоні [-
2; 14]

-
i=0,1...N !sum

1
+
Немає
елементів sum
mass[i]
<0

кінець

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

Приклад. Видалити з масиву mass(N) від'ємні елементи. Введення


елементів організувати випадковим чином в діапазоні [-4; 8].

Лістинг програми
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
int main()
{
setlocale (LC_CTYPE, "ukr");
9
int i=0,j,N;

printf("N: "); //введення розміру масиву


scanf("%d",&N);
int mass[N]; //оголошення масиву

srand(time(NULL));
for (i=0; i<N; i++) // заповнення масиву випадковими числами (8-(-4)+1=13)
{
mass[i]=rand()%13-4;
}

printf("\nПочатковий масив\n");
for(i=0;i<N;i++) // виведення масиву
printf("%d\t",mass[i]);

i=0;
while(i<N) // перебір елементів і видалення від'ємних елементів
{
if(mass[i]<0)
{
for(j=i;j<N-1;j++)
{
mass[j]=mass[j+1];
}
N--;
}
else
i++;
}

printf("\nЗмінений масив\n");
for(i=0;i<N;i++) // виведення зміненого масиву
printf("%d\t",mass[i]);

getch();
return 0;
}

10
1

початок
i=0;
2

N
Змінений
масив
i<N 2

i=0,1...N
-
i=0,1...N

mass[i]<0
mass[i]=rand()%13-4;
+
mass[i]
j=i,1...N-1 i++;
Початковий
масив

кінець

i=0,1...N mass[j]=mass[j+1];

mass[i]
N--;

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

Порядок виконання
1. Скласти блок-схему алгоритму, написати й налагодити програму для
завдання №1.
2. Скласти блок-схему алгоритму, написати й налагодити програму для
завдання №2.
Варіанти завдань (1-2) наведено в табл. 1.1.

11
Таблиця 1.1 – Варіанти завдань
Завдання №1 Завдання №2
Варіант Діапазон Введення елементів з Введення елементів
клавіатури випадковим чином у діапазоні

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

До завдань 1,2
1. У масиві цілих чисел X (N) визначити кількість елементів менших
середнього арифметичного значення.
2. Визначити чи містить заданий масив групи елементів, розташовані в
порядку зростання їх значень.
3. У заданому масиві цілих чисел знайти першу серію поспіль стоять
непарних елементів.
12
4. Видалити з масиву цілих чисел перші п'ять простих чисел. Знайти
різницю між максимальними та мінімальними елементами масиву до і після
видалення.
5. Видалити з масиву останню групу елементів, що представляють
собою знакозмінний ряд.
6. Визначити кількість простих чисел в масиві.
7. Впорядкувати за зменшенням масив X, вставити в масив X
максимальне і мінімальне просте число цілого масиву Y, зберігши
впорядкованість масиву.
8. Задано масив натуральних чисел X. Видалити з нього 2 найбільших і
найменших елемента.
9. Задано масив Y. Якщо він впорядковано, залишити його без зміни.
Якщо масив не впорядковано, то упорядкувати його за зростанням (якщо
мінімальний елемент розташовано до максимального) чи зменшенням (якщо
мінімальний елемент розташовано після максимального).
10. Заданий масив Z. впорядкувати за зменшенням елементи, що
розташовані між максимальним і мінімальними елементами.
11. Задано масив натуральних чисел. Видалити з масиву два найбільших
простих числа.
12. Знайти суму елементів масиву між двома першими нулями. Якщо
двох нулів немає в масиві, то вивести нуль.
13. З масиву X (N) видалити три найбільших простих числа.
14. У масиві цілих чисел поміняти місцями передостаннє просте число і
максимальне. Видати повідомлення, якщо таких чисел немає.
15. З масиву цілих чисел X (N) видалити елементи, сума цифр яких
дорівнює 12.
16. З масиву X (N) видалити три найменших простих числа.
17. Впорядкувати по зростанню масив X, вставити в масив X
максимальне і мінімальне просте число цілого масиву Y, зберігши
впорядкованість масиву.
13
18. Видалити з масиву першу групу елементів, що представляють собою
знакозмінний ряд.
19. З масиву цілих чисел X (N) видалити елементи, сума цифр яких
менше 4.
20. Визначити чи містить заданий масив групи елементів, що
розташовані в порядку убування їх значень.

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

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

ЛІТЕРАТУРА: [1], [2], [3], [4].

14
ЛАБОРАТОРНА РОБОТА №2
ДВОВИМІРНІ МАСИВИ

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


масивами на мові програмування Сі.

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


Двовимірний масив - це звичайна таблиця з рядками і стовпцями. Тобто
двовимірний масив - це одновимірний масив одновимірних масивів.
Структура двовимірного масиву, з ім'ям A, розміром m на n наведена на
рис. 2.1.

A[0][0] A[0][1] … A[0][n]


A[1][0] A[1][1] … A[1][n]
A[2][0] A[2][1] … A[2][n]
A[3][0] A[3][1] … A[3][n]
… … … …
A[m][0] A[m][1] … A[m][n]

Рисунок 2.1 – Структура двовимірного масиву

Де, m - кількість рядків двовимірного масиву; n - кількість стовпців


двовимірного масиву; m х n - кількість елементів масиву.
Синтаксис оголошення двовимірного масива:

Тип_елементів ім’я_ масива [розмірність 1] [розмірність 2]…


[розмірність n];

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


способами:

15
1) int arr[5][3];
2) int arr[5][3] = { {4, 7, 8}, {9, 66, -1}, {5, -5, 0}, {3, -3, 30}, {1, 1, 1} };
В останньому випадку подання масиву показано на рис. 2.2.

4 7 8
9 66 -1
5 -5 0
3 -3 30
1 1 1

Рисунок 2.2 – Приклад двовимірного масиву

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


допомогою функцій, що генерують випадкові числа, зчитують із файлів.
Обробку масивів як правило здійснюють за допомогою циклів for.
Якщо двовимірний масив має однакове значення рядків (i) та стовбців (j),
то він перетворюється на квадратну матрицю розмірністю nxn, та при обробці до
неї можна застосувати властивості елементів матриці (рис. 2.3).

i<j i+j<n-1
i=j i+j=n-1

i>j i+j>n-1

Рисунок 2.3 – Властивості елементів квадратної матриці

16
Приклад. Знайти суму елементів матриці mass(N,N), що лежать вище
головної діагоналі. Введення елементів організувати випадковим чином в
діапазоні [5; 15].
Лістинг програми
#include <conio.h> //виведення початкового масиву
#include <stdio.h> for(i=0;i<N;i++)
#include <windows.h> {
#include <locale.h> for(j=0;j<N;j++)
int main () printf("%d\t",mass[i][j]);
{ printf("\n");
setlocale (LC_CTYPE, "ukr"); }
int i,j,N,sum; //знаходження суми елементів вище
printf("Введіть розмір матриці N:"); головної диагоналі
scanf("%d",&N); sum=0;
int mass[N][N];//оголошення for(i=0;i<N;i++)
двомірного масиву {
//заповнення масиву випадковими for(j=0;j<N;j++)
числами {
srand(time(NULL)); if(j>i)
for(i=0;i<N;i++) sum+=mass[i][j];
{ }
for(j=0;j<N;j++) }
mass[i][j]=rand()%11+5; printf("\nsum = %d\n",sum);
} system("pause");
return 0;
}

Приклад. Задана матриця mass(N, N). Останній елемент кожного стовпця


замінити різніцею мінімального и максимального елемента в цьому ж стовпці.

Лістинг програми
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <locale.h>
int main()
{
setlocale (LC_CTYPE, "ukr");
int i,j,N,min,max;
printf("Введіть розмірність матриці N:");
17
scanf("%d",&N);
int mass[N][N];//оголошення двомірного масиву
//заповнення масиву числами
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("mass[%d][%d]=",i,j);
scanf("%d",&mass[i][j]);
}
}
// виведення початкового масиву
printf("\nпочатковий масив\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d\t",mass[i][j]); printf("\n");
}
//послідовно перебираємо всі стовпці матриці.
for(j=0;j<N;j++)
{
//максимальним і мінімальним оголошуємо перший
//елемент поточного (j-го) стовпця матриці
max=mass[0][j];
min=mass[0][j];
//послідовно перебираємо всі елементи в поточному (j-му) стовпці матриці.
for(i=1;i<N;i++)
{
if (mass[i][j]>max) max=mass[i][j];
if (mass[i][j]<min) min=mass[i][j];
}
//у останній елемент стовпця записуємо різницю між максимальним і
мінімальним елементами стовпчика.
mass[N-1][j]=max-min;
}
// виведення зміненого масиву
printf("\nзмінений масив\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d\t",mass[i][j]);
printf("\n");
}
system("pause");return 0;}
18
1
2
початок
початкови
й масив j=0,1...N
N 4

max=mass[0][j];
i=0,1...N
min=mass[0][j];
mass[N-1][j]=max-
2
i=0,1...N min;

1
j=0,1...N i=1,1...N
3
j=0,1...N

mass[i][j]
-
mass[i][j]>max

mass[i][j] +

max=mass[i][j];

-
mass[i][j]<min

+
min=mass[i][j];

змінений
масив

i=0,1...N

кінець

j=0,1...N

mass[i][j]

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


19
Приклад. У квадратній матриці знайти найбільший елемент серед
елементів, що розташовані на головній і побічної діагоналях.

Лістинг програми
#include <conio.h> for(i=0;i<N;i++)
#include <stdio.h> {
#include <windows.h> for(j=0;j<N;j++)
#include <locale.h> printf("%d\t",mass[i][j]);
int main () printf("\n");
{ }
setlocale (LC_CTYPE, "ukr"); max=mass[0][0];
int i,j,N,min,max; for(i=0;i<N;i++)
printf("Введіть розмір матриці N:"); {
scanf("%d",&N); for(j=1;j<N;j++)
int mass[N][N];//оголошення {
двомірного масиву if((i==j || j==N-1-i) &&
//заповнення масиву числами mass[i][j]>max)
for(i=0;i<N;i++) max=mass[i][j];
{ }
for(j=0;j<N;j++) }
{ printf("max=%d",max);
printf("mass[%d][%d]=",i,j); getch();
scanf("%d",&mass[i][j]); return 0;
} }
}

Порядок виконання
3. Скласти блок-схему алгоритму, написати й налагодити програму для
завдання №1.
4. Скласти блок-схему алгоритму, написати й налагодити програму для
завдання №2.
Варіанти завдань (1-2) наведено в табл. 2.1.

20
Таблиця 2.1 – Варіанти завдань
Завдання №1 Завдання №2
Варіант Діапазон Введення елементів з Введення елементів
клавіатури випадковим чином у діапазоні

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

До завдань 1,2
1. Визначити суму і кількість простих чисел, що розташовано поза
діагоналей матриці А (n, n).
2. Задана матриця A (n, n). Дзеркально відобразити її відносно головної
діагоналі. У реформованій матриці знайти рядки, елементи якої утворюють
спадну або зростаючу послідовність.

21
3. Задана матриця A (n,n). Дзеркально відобразити її щодо побічної
діагоналі.
4. У прямокутної матриці поміняти місцями рядки, що містять
максимальний і мінімальний її елементи.
5. Задана матриця цілих чисел A (n, n). Знайти два найбільших простих
числа.
6. Задана матриця A (n, m). Знайти три найбільших і два найменших
числа.
7. Задана матриця A (n, m). Знайти чотири найменших числа.
8. Знайти середнє арифметичне простих чисел квадратної матриці,
розташованих на діагоналях.
9. Задана матриця A (n, n). Поміняти місцями елементи на головній і
побічної діагоналях.
10. Задана матриця A (n, n). Перший елемент кожного стовпця замінити
середнім арифметичним серед чисел цього стовпчика.
11. Задана матриця A (n, m). Обнулити ту рядок, де знаходиться
найбільше просте число.
12. Всі елементи матриці цілих чисел, які не є простими, замінити
сумою цифр.
13. Задана матриця цілих чисел A (n, n). Всі елементи стовпця, де
знаходиться більше двох простих елементів, замінити різницею між
максимальним і мінімальним елементом матриці.
14. Задана матриця цілих чисел. Знайти номер рядка, де є числа, у яких
чотири дільника.
15. Задана матриця цілих чисел. Обнулити стовпці, де є числа, що
більше заданого числа К.
16. Задана матриця цілих чисел. Обнулити стовпці, з максимальною
кількістю п'ятірок в запису чисел.
17. Задана квадратна матриця цілих чисел. Обнулити рядки з числами,
які утворюють зростаючу послідовність.
22
18. Задана матриця A (n, n). Дзеркально відобразити її відносно головної
діагоналі. У реформованій матриці знайти рядки, елементи яких утворюють
зростаючу послідовність.
19. Задана матриця A (n, m). Знайти чотири найбільших числа.
20. Задана матриця цілих чисел. Знайти номер рядка з найменшим
номером, де є числа, у яких тільки три дільника.

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

Контрольні питання
1. Що таке двовимірний масив? Навести його структуру. Синтаксис
оголошення.
2. Якими способами здійснюється ініціалізація двовимірного масиву?
Навести приклади обробки масиву.
3. Властивості елементів квадратної матриці, що використовуються
при обробці матриць.

ЛІТЕРАТУРА: [1], [2], [5].

23
ЛАБОРАТОРНА РОБОТА №3
РЯДКИ ТА РОБОТА З ФАЙЛАМИ

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


зовнішними файлами на мові програмування Сі.

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


У мові програмування Сі текстова інформація може надаватися двома
типами даних: за допомогою символів і рядків - масивів символів.
Символьний тип даних. Значенням даних символьного типу є будь-який
символ з набору всіх символів комп'ютера або його код. Кожному символу
відповідає порядковий номер (код) в діапазоні 0…255 (ASCII - коди символів).
При написанні програм символьні дані можуть бути представлені або
константами, або змінними.
Символьна константа є одиночним символом, що укладено в апострофи,
наприклад: 'Y' '!' '_' 'Д’
Символьна змінна оголошується за допомогою ключового слова char,
наприклад: char cr;
У внутрішній пам'яті комп'ютера кожен символ займає 1 байт.
Введення-виведення символьних даних. Для введення символьних даних
використовуються функції:
- scanf() – форматоване введення, getchar() или getch() – спеціальні
функції для введення символу.
- для форматного введення і виведення символьних констант
використовується специфікатор (формат) %с.
Приклад. Організувати введення символьних змінних: a='i' b='j' c='k‘.

main()
{ char a,b,c; printf("Введіть початкові дані"); scanf("%c%c%c",&a,&b,&c); ... }

24
При введенні символи набираються без апострофів і прогалин:
ijk [Enter]

- getchar() – запрошує з клавіатури одиничний символ. Виклик


відбувається, як присвоювання якийсь змінній значення функції та при
натисканні клавіші символ виводиться на екран:

char rsim;
rsim = getchar ();

- getch() - змінні будуть введені, але на екрані їх значення не


позначаться:

printf("Введіть вихідні дані ");


a=getch();b=getch();c=getch();

- для виведення символьних даних використовуються функції printf()


і putchar().

Приклад. Організувати виведення зазначених вище змінних на екран в


один рядок.
Запис оператора виведення буде наступною:

printf("%c%c%c\n",a,b,c); або putchar(a); putchar(b); putchar(c);


Результат:
Ijk

Обробка символьних даних. Оскільки символи в мові Сі впорядковані, до


них можна застосовувати операції відносини (>, >=, <, <=, ==, !=). Це дає
можливість записувати логічні вираження з символьними даними в умовних
операторах.
25
Наприклад: if (ch =='!' ) ch ='.';
Cимвольні дані можуть використовуватися і в операторах циклу for:

for( ch='a'; ch>='d'; ch++) printf("%с",ch);


Результат: a b с d

Якщо значення символьної змінної вивести за допомогою специфікатора


для цілих чисел %d, то на екрані відобразиться код символу. Наприклад:

for(ch='a'; ch>='d'; ch++) printf("%d ",ch);


Результат: 97 98 99 100

Над символьними даними можна виконувати арифметичні операції


додавання і віднімання. Наприклад:

char ch,ch1,ch2;
ch='a'-'A';
ch1='k';
ch2=ch1-сh;
printf("%c-%d %c-%d\n",ch1,ch1,ch2,ch2);

Результат: k-107 K-75

Рядки. Рядок в C - це масив символів, що закінчується нуль-символом - '\


0' (Нуль-термінатором). Кількість елементів в такому масиві на 1 більше, ніж
зображення рядка.
Ініціалізація рядка:

char s[80] = «Мова програмування Сі";


char s[] = «Мова програмування Сі";

Введення-виведення рядкових даних. При введенні використовується


функція scanf(). При цьому використовується специфікатор %s.
Приклад. Організувати введення ПІБ студента.
26
char fam[20]; printf ("Введіть прізвище та ініціали студента "); scanf("%s", fam);
Введення: Андрєєва С.В. [Enter]

Результат: Андрєєва

При введенні використовується також спеціальна функція gets().


Наприклад: gets(fam);
Виведення рядків здійснюється за допомогою функції printf() і спеціальної
функції puts().
Наприклад:

printf(“| %20s|”,fam);
Результат: | Андрєєва С.В.|

Наприклад:

putchar(‘|’); puts(fam); putchar(‘|’);


Результат: |Андрєєва С.В.
|

Обробка рядкових даних. До будь-якого символу рядка можна звернутися


як до елементу одновимірного масиву, наприклад, запис st[i] визначає i-ий
символ в рядку st. Тому при вирішенні деяких завдань обробку строкових даних
можна проводити посимвольно, організовуючи цикли для перегляду рядка.
Наприклад: Дано речення. Визначте кількість слів у ньому.

#include <string.h>
int main()
{ char slova[120]; int i, n, k=1;
printf("Введіть речення\n");
gets(slova);
n= strlen(slova);
for(i=0;i<n; i++)
if(slova[i]==' ') k++;
printf("k=%d\n",k);
return 0;}
27
Основні функції обробки рядків. Визначення довжини рядка.
Приклад. Визначити довжину рядка.

char fam[] = "Андрєєва С.В.";


printf("%d",strlen(fam));

Результат: 13 символів.

Копіювання рядків. Приклад. Скопіювати прізвище співробітника в змінну fam і


вивести на екран.

#include int main()


{
char fam[15]; char *str = " Андреева С.В.";
strcpy(fam, str);
printf("|%s|\n", fam); return 0; }
Результат: |Андрєєва С.В.|

Порівняння рядків. Приклад:

char st1[10]="Приклад";
char st2[10]="ПPиклад";
int a;
if (strcmp(st1,st2)>0) a=1; else a=2;
Результат: a=1, так як код ‘p’ більше ‘P’

Зчеплення рядків. Приклад:

char fam[] = "Андрєєва С.В. ";


char pr[7]= " "; //7 прогалин
strcat(fam ,pr);
printf(“|%20s|”, fam);
Результат: |Андрєєва С.В. |

Робота з файлами. Відкриття та закриття потоків відбувається наступним


чином:

- відкриття потоку
FILE * fopen(імя_файла, режим_відкриття);
28
Функція повертає покажчик на структуру, яка має тип FILE. Цей покажчик
ідентифікує потік в програмі і через нього ми зможемо звертатися до відкритого
файлу.

- закриття файлу
int fclose(покажчик_на_поток);

Функція повертає число: 0 - у разі успішного виконання і вбудоване


значення EOF у випадку помилки.
Наприклад, відкриємо і закриємо файл "D:\data.txt":

#include <stdio.h>
int main(void)
{ FILE * fp = fopen("D:\data.txt", "w");
fclose(fp);
return 0; }

Операції введення / виводу в файл (з файлу). Введення-виведення символів


та рядків здійснюється за допомогою наступних функцій:
- читання/запис окремих символів: getc() і fgetc() - введення символу з
файлу; putс() і fputc() - виведення символу в файл.
- форматоване введення / виведення - fprintf() и fscanf().
- введення / виведення рядків - fgets() і fputs () .
Приклад. Порахувати кількість малих (маленьких) і прописних (великих)
букв у рядку, що ведено користувачем. Враховувати тільки латинські букви.

Лістинг програми
#include <stdio.h>

int main()
{ char str[255];
int i,let_b, let_s;

29
//введення рядку користувачем
printf("input string: ");
gets(str);

//встановлення початкових значень лічильникам букв


let_s = 0;
let_b = 0;

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


знаходження малих та великів букв
for (i=0; str[i]!='\0'; i++)
if (str[i] >= 'a' && str[i] <= 'z') let_s += 1;
else
if (str[i] >= 'A' && str[i] <= 'Z') let_b += 1;

// виведення отриманих значень лічильників


printf("%d\n", let_s);
printf("%d\n", let_b);
return 0;
}

Приклад. У заданому тексті замінити всі символи '+' на '+++'. Рядок


вводити з текстового файлу.

Лістинг програми
#include <stdio.h> while ((ch = fgetc(fp)) != EOF)
#include <string.h> {
int main() if(ch=='+')
{char str[256]; {str[j++] = '+';
int j; str[j++] = '+';
char ch; str[j++] = '+';}
FILE *fp; else
if((fp= fopen("pr_3.txt", "r"))==NULL) {str[j]=ch; j++;}
{perror("Error occured while opening }
pr_3.txt"); }
exit(0);} str[j] = '\0';
else printf("%s",str);
{j = 0; fclose(fp);
return 0;}

30
Початок

fp=
fopen("pr_3.txt",
+ Error
"r"))==NULL
-
j = 0;

ch = fgetc(fp)) != str[j] = '\0';


EOF

str

ch=='+'
-
str[j]=ch;
+ j++;
fclose(fp);
str[j++] = '+';
str[j++] = '+';
str[j++] = '+'; Кінець

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

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


непарними номерами. Рядок вводити з текстового файлу.

Лістинг програми
#include <stdlib.h> if(ch!=' ' && ch!= '.')
#include <stdio.h> str[i++]=ch;
#include <string.h> else
int main() {
{char str[256]; str[i]='\0'; i=0;
int i=0, flag=0; if(flag==0) flag=1;
char ch; else
FILE *fp; {flag=0;printf("%s ",str);}
if((fp = fopen("pr_3.txt", "r"))==NULL) strcpy(str,"");
{perror("Error occured while opening }
pr_3.txt"); exit(0);} }
else fclose(fp);
{ }
while ((ch = fgetc(fp))!= EOF) return 0;
{ }
31
Початок

fp=
fopen("pr_3.txt",
+ Error
"r"))==NULL
-
flag=0;
i=0;

ch = fgetc(fp)) != Кінець
fclose(fp);
EOF

ch!=' ' && ch!= -


'.'
str[i]='\0';
+ i=0;

str[i++]=ch;

flag==0
-

+ flag=0;

flag=1;

str

strcpy(str,"");

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

Порядок виконання
1. Скласти блок-схему алгоритму, написати й налагодити програму для
завдання №1.
2. Скласти блок-схему алгоритму, написати й налагодити програму для
завдання №2.
Варіанти завдань (1-2) наведено в табл. 3.1.

32
Загальні вказівки до всіх завдань:
- текст, що обробляється, міститься в одному рядку та його довжина
складає до 60 символів;
- у загальному випадку слова тексту розділяються між собою одним
пробілом;
- слово - це довільна послідовність символів, відмінних від символів-
роздільників.

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


Завдання №1 Завдання №2
Варіант Рядок вводити з клавіатури Рядок зчитувати з зовнішнього файлу
1 3 13
2 15 1
3 6 10
4 5 14
5 2 19
6 23 4
7 7 8
8 25 6
9 22 11
10 24 23
11 19 25
12 1 20
13 16 21
14 8 9
15 11 18
16 17 12
17 13 3
18 10 22
19 9 24
20 21 2
21 18 15
22 14 16
23 12 17
24 20 7
25 4 5

33
До завдань 1,2
1. Видалити всі голосні з рядка.
2. Підрахувати кількість слів у рядку.
3. Перевернути кожне парне слово в рядку.
4. Видалити з рядка всі слова, що починаються на голосну букву.
5. У вихідному реченні перед кожним словом поставити знак?.
6. У заданому реченні знайти найкоротше і найдовше слово.
7. Дано непорожня послідовність символів, за якою слідує пробіл.
Побудувати і надрукувати безліч, що складається з цифр 4-8 і знаків
арифметичних дій, які зустрілися в послідовності.
8. Дана непорожня послідовність символів, за якою слідує пробіл.
Побудувати і надрукувати безліч, що складається з розділових знаків (.,;:!?), Які
зустрілися в послідовності.
9. Дана непорожня послідовність цифр і малих латинських букв, за
якою слідує крапка. Визначити, яких букв - голосних (а, е, i, о, u) або
приголосних більше в цій множині.
10. Видалити з тексту все слова, що складаються з однієї літери.
11. У всьому тексті після кожних трьох слів вставити слово "привіт".
12. У всьому тексті все появи слова good взяти в лапки.
13. Дано текст з N символів. Групи символів, розташовані між
пробілами і не містять пробілів всередині себе, називаємо словами. Замінити
прогалини між словами на кому.
14. Дано текст з N символів. Групи символів, розташовані між
прогалинами і не містять пробілів всередині себе, називаємо словами. Знайти
слова, у яких перший і останній символи збігаються.
15. У кожному рядку замінити "1-2-3" на послідовність слів "один",
"два", "три" на "1-2-3".
16. Дано текст, за яким слідує крапка. Замінити всі вхідні в нього
символи a, b, c на d, e, f.

34
17. Дано текст з N символів. Визначити чи є в тексті п'ять йдуть підряд
букв "е".
18. Дано текст з N символів. Визначити найбільшу кількість йдуть
підряд прогалин.
19. Дано текст з N символів. Групи символів, розташовані між
прогалинами і не містять пробілів всередині себе, називаємо словами.
Підрахувати кількість слів, що починаються з літери "b".
20. Дано непорожня послідовність слів з малих літер, між сусідніми
словами - кома, за останнім словом - крапка. Надрукувати в алфавітному порядку
всі голосні літери, які входять в цей текст.
21. Дано непорожня послідовність цифр і малих латинських букв, за
якою слідує крапка. Визначити, впорядковані ці букви в алфавітному порядку.
22. У кожному слові рядка змінити порядок букв на протилежний.
23. Видалити з тексту все слова з парними номерами.
24. Дано непорожня послідовність заголовних латинських букв, за якою
слідує крапка. Побудувати і надрукувати в алфавітному порядку безліч, що
складається з букв А..F і X..Z, які зустрілися в послідовності.
25. Дано текст з N символів. Виключити з тексту групу символів,
розташовану між (). Передбачається, що всередині дужок немає інших дужок.

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

35
Контрольні питання
1. Символьний тип даних. Особливості. Функції введення-виведення.
2. Що таке рядок? Варіанти ініціалізації рядків. Основні функції
обробки рядкових даних.
3. Відкриття та закриття потоків при роботі з файлами. Функції
введення/виведення в файл (з файлу).

ЛІТЕРАТУРА: [1], [2], [5], [7].

36
ЛАБОРАТОРНА РОБОТА №4
ВИРІШЕННЯ РІВНЯНЬ АЛГЕБРИ І СИСТЕМ

Мета роботи: отримати практичні навички вирішення рівнянь алгебри і


систем у пакеті прикладних програм MathCAD.

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


MathCAD є математичним редактором, який дозволяє проводити
різноманітні математичні та наукові розрахунки, починаючи від елементарної
арифметики і закінчуючи складними арифметичними обчисленнями.
Користувач отримує можливість просто і наочно в звичної для математика формі
вводити за допомогою редактора формул математичні вирази і тут же
отримувати результат.
У число дій, що виконується входить:
- введення математичних виразів,
- проведення різних розрахунків,
- підготовка графіків різних результатів обчислень,
- введення даних із зовнішнього файлу,
- запис даних у зовнішній файл,
- оформлення веб-сторінок,
- надання доступу до довідкового матеріалу з математики.
Функції. У MathCAD формально функції можна розділити на 2 групи:
вбудовані і задані користувачем. Імена функцій можна вводити з клавіатури або
викликати з панелі інструментів, деякі можна ввести з панелі Calculator. Функції
записуються у звичайній для користувача формі. Наприклад:

v ( x y)  x  2 y v ( 1 1)  3
f ( x)  cos( x)
z  5 h ( x)  x  z h ( 1)  6

37
Обчислення поліноміальних коефіцієнтів. Якщо вираз є поліномом щодо
деякої змінної, то коефіцієнти легко визначаються символьним процесором
MathCAD.
Для того, щоб обчислити поліноміальні коефіцієнти у виразі за допомогою
меню необхідно:
- ввести вираз;
- виділити в ньому ім'я змінної або вираз, для якого потрібно розрахувати
поліноміальні коефіцієнти;
- виконати команду Symbolic/Polynomial Coefficients (Символіка/
Коефіцієнти полінома).
Для того, щоб обчислити поліноміальні коефіцієнти за допомогою
оператора символьного виводу необхідно:
- ввести вираз;
- натиснути кнопку Coeffs на панелі Symbolic (Символіка);
- ввести після вставленого ключового слова coeffs аргумент полінома;
- ввести оператор символьного виводу ->
- натиснути клавішу <Enter>.
Рішення рівнянь. Багато рівнянь і систем з них не мають аналітичного
рішення. Однак вони можуть вирішуватися чисельними методами із заданою
похибкою (не більше значення, заданого системної змінної TOL).
Для пошуку коренів полінома ступеня n MathCAD містить функцію:
polyroots (V). Вона повертає вектор коренів многочлена (полінома) ступеня n,
коефіцієнти якого знаходяться у векторі V, мають довжину, рівну n + 1. Вектор
коефіцієнтів заповнюється в зворотному порядку. Включаючи всі коефіцієнти
многочлена, навіть якщо вони дорівнюють нулю.
За допомогою символьного процесора можна вирішити рівняння з одним
невідомим наступним чином:
- ввести рівняння, користуючись панеллю Booleans (Булеві
оператори) або натиснувши клавіші <Ctrl> + для отримання логічного знака
рівності.
38
- за допомогою миші вибрати змінну, щодо якої вирішується рівняння.
- вибрати в меню Symbolics (Символіка) пункт Variable/Solve
(Змінна / Вирішити).
При вирішенні систем нелінійних рівнянь використовується спеціальний
обчислювальний блок, що відкривається службовим словом Given і має
наступну структуру:

Given
рівняння
обмежувальні умови
вираз з функцією find або miner.

Між функціями find і miner існує принципове відмінність. Функція find


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

A x  b ,
де А - матриця коефіцієнтів системи; b - вектор правих частин.

А вектор рішення системи лінійних алгебраїчних рівнянь буде визначатися


як lsolve( A, b) .
Створення графіків. Графіки створюються за допомогою панеллі
інструментів Graph. У MathCAD можна побудувати графіки 2 типів:
- двовимірні графіки (декартові і полярні графіки);
- тривимірні графіки (лінії рівня в тривимірному просторі, тривимірна
гістограма, тривимірне безліч точок, векторне поле).
39
Для побудови двовимірного графіка необхідно:
- ввести діапазон значень аргументу;
- записати функцію в залежності від цього аргументу;
- вказати місце, де буде розташовуватися область графіка;
- вибрати на панелі Graph значок X-Y графік;
- ввести в місця заповнень на осях імена змінних і функцій, які повинні
бути зображені на графіку.
Вид графіка можна змінити, змінюючи його дані, форматуючи його
зовнішній вигляд або додаючи елементи оформлення. Для форматування
графіків можна скористатися контекстним меню, вибравши Format (або
«клацнути» по тій області, форму якої планується змінити).
На одному графіку можна побудувати до 16 залежностей. Для цього через
кому в місце заповнення для найменування осі ординат (вісь у) треба внести
найменування функцій.
Приклад виконання роботи.
1. Побудова графіку функцій f(x) та знаходження наближеного корня
рівняння. Вирішення рівняння f(x) за допомогою функції root.
x2 2
f ( x)  e x x x  10 9.9  5

1.4
 10 5 0 5 10

 20
f ( x)

 40

40
root( f ( x) x 0 3)  1.391

2. Для полинома g(x):


- створення коефіцієнтів полінома
 5 
 20 
4 3 2
 
v  x  4 x  4 x  20 x  5 coeffs   4 
 4 
 
-  1 

- вирішення рівняння за допомогою функції polyroots

 3.732 
 

polyroots( v)   
2.236
 0.268 
 
 2.236 

- вирішення рівняння символьно


4 3 2
x  4x  4x  20 x  5 0

 5 
 
  5 
 32 
 
  3  2 

3. Рішення системи лінійних рівнянь S


- за допомогою функції Find
x1  0 x2  0 x3  0 x4  0
Given

4 x1  2 x2  5 x3  x4 12


x1  3 x2  12 x4 3
x1  2 x3  3 x4 22 41

2 x1  x2  2 x3  3 x4 2


 1731 
 
 182 
 825 
  182 
Find ( x1 x2 x3 x4)   
  97 
 26 
 305 
 
 182 

- матричним способом і використовуючи функцію lsolve

4 2 5 1   12 
   
3 0 12 
A   B   
1 3
1 0 2 3   22 
   
2 1 2 3   2 

 9.511 
X  A
1
B  

X 
4.533
 3.731 
 
 1.676 

 9.511 
 

lsolve ( A B)   
4.533
 3.731 
 
 1.676 

4. Рішення системи рівнянь F аналітично та графічно


x  0 y  0
Given

sin ( x  0.1 )  y 0.5


cos( y  1)  x 1.5

 1.4283650084695155964 42
Find ( x y)   
 0.49909992666700318715 
z ( t)  sin ( t  0.1 )  0.5 q ( t)  acos( 1.5  t)  1

z( t ) 1

q ( t)
 10 5 0 5 10

1

2

Порядок виконання
1. Побудувати графік функції f x  і приблизно визначити один з коренів

рівняння. Вирішити рівняння f x   0 з точністю =10–4 за допомогою


вбудованої функції root .
2. Для полінома g x  виконати наступні дії:
- за допомогою команди Символіка  Поліномінальні коефіцієнти або за
допомогою команди coeffs на панелі Символьна створити вектор v , що містить
коефіцієнти полінома;
- вирішити рівняння g x   0 за допомогою функції polyroots ;
- вирішити рівняння символьно, використовуючи команду Символіка 
Змінні  Обчислити.
3. Вирішити систему лінійних рівнянь S :
- використовуючи функцію Find ;
- матричним способом та використовуючи функцію lsolve .
4. Вирішити систему рівнянь F аналітично і графічно, в разі відсутності
рішень графічно це довести.

43
Варіанти завдань наведено в табл. 4.1.

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


№ f x  g x  S F
2 x1  x2  2 x3  3x4  8;
3x  3x  6;
e  x  x; sinx   2 y  2;
x 1 3
x  2x  x 
4 3 2
 1 3
1  
x  0,1  12 x  20; 2
 1 x  x 2  3 x 4  4; cos y  1  x  0.7.
 x1  2 x2  x3  2 x4  4.
 x1  2 x2  3 x3  4 x4  22;
1 2 x  3 x  x  2 x  17;
x х 4  6х3   1 sinx  0.5  y  1;
2 3  sin(3.6 x) 
2 3 4

 х 2  4 х  60  x1  x2  x3  x4  8; cos y  2  x  0.
x  [0, 1]
 x1  2 x3  3 x4  7.
2 x1  x2  5 x3  x4  4;
arccos х    x  3x  6 x  7;
х 4  14  х 2   1 2 4 cosx   y  1.5;
3  1  0. 3 x 3  
 40 х  75 2 x2  x3  2 x4  2; 2 x  sin y  0.5  1.
x  [0, 1]
 x1  4 x2  7 x3  6 x4  2.
 x1  2 x2  3x3  4 x4  26;
2 x  3 x  4 x  x  34;
cosx  0,5  y  0,8;
1  0.4 x 2 
x4  x3  x2   1
 arcsin х  
2 3 4
4 
x  [0, 1]
 11x  120; 3 x1  4 x2  x3  2 x4  26; sin  y   2 x  1,6.
4 x1  x2  2 x3  3 x4  26.
9 x1  10 x2  7 x3  x4  23;
3 x  14  e x  7 x  x  5 x  37;
x 4  x 3  29 x 2   1 3 sin( x  1)  1.3  y;
e 
x 4
5 
x  [1, 3]
 71x  140; 5 x1  2 x3  x4  22;  x  sin  y  1  0.8.
4 x1  x2  2 x3  3x4  26.
6 x1  x2  10 x3  x4  158;
2 x  1.2  cos x   2 x  x  10 x  7 x  128;
cos(x  0,5)  y  1;
2

x  7x  9x 
4 3 2
 1 2

3 4
6 1 
 13x  30;    4  7;
x  [0, 1]
3
 1 x 2 x2 2 x3 x
sin( y )  2 x  2.
 x1  12 x2  2 x3  x4  17.
2
cos    x1  2 x2  6 x3  x4  88;
 x 5 x  2 x  3 x  88;
x 4  3x 3  23x 2   1  sin( x  1)  y  0,8;

3 4
7 1 1
 2 sin   
 x x  55 х  150; 7 x1  3 x2  7 x3  2 x4  181; sin( y  1)  x  1,3.
x  [1, 2] 3x1  7 x2  5 x3  2 x4  99.
 x1  2 x2  8 x4  7;
 x  4 x  7 x  6 x  8;
0.1  x 2  x  lnx  x  6x  4x   1 sin( x )  2 y  1;
4 3 2


2 3 4
8 
x  [1, 2]  10 х  75;  x1  x2  5 x3  x4  10; sin( y  1)  x  1,3.
2 x1  x2  2 x4  7.

44
Таблиця 4.1 – Варіанти завдань (продовження)
2 x1  2 x2  6 x3  x4  15;
 x  2 x  x  18;
0.25x 3  x  2 x 4  x 3  17 x 2   2 sin  y   x  0,4;

3 4
9 
x  [0, 2]  45 х  100; 4 x1  3x2  x3  5 x4  37; 2 y  cosx  1  0.
3x1  5 x2  x3  x4  30.
4 x1  5 x2  7 x3  5 x4  165;
 1  x2  2 x  x  3 x  x  15;
arccos x x 4  5x3  x 2   1 sin( x  2)  y  1,5;
1  x  
2 3 4

2
10
x  [2, 3]
 15 х  50; 9 x1  4 x3  x4  194; cos y  2   x  0,5.
 x1  x2  2 x3  3 x4  19.
2 x1  8 x2  3x3  2 x4  18;
3x  4 lnx   5 x  4x  2x 
4 3 2  x  2 x  3x  2 x  28;
 1 cos(x  0,5)  y  2;

2 3 4
11 
x  [2, 4]  20 х  25;  x2  x3  x4  10; sin  y   2 x  1.
11x2  x3  2 x4  21.
2 x1  x2  4 x3  x4  66;
2 x  6 x  x  63;
e x  e x  2 x 4  5x 3  7 x 2   2 cos(x  2)  y  0;

3 4
12 
x  [0, 1]  7 х  20; 8 x1  3 x2  6 x3  5 x4  146; sin  y  0,5  x  1.
2 x1  7 x2  6 x3  x4  80.
2 x1  3x3  2 x4  16;
2 x  x  13x  4 x  213;
1  x  tg  x  x 4  7 x3  7 x 2   1 cos(x  0,5)  y  1,

2 3 4
13 
x  [0, 1]  5 х  100; 3x1  x2  2 x3  x4  72; sin  y  0,5  x  1.
 x1  12 x3  5 x4  159.
7 x1  7 x2  7 x3  2 x4  5;
1  x  sinx   3 x  4 x  5 x  8 x  60;
x  10 x  36 x 
4 3 2
 1 sin( x )  2 y  1;
 ln(1  x) 
2 3 4
14 
x  [0, 2]
 70 х  75; 2 x1  2 x2  2 x3  x4  27; cos( y  0,5)  x  2.
2 x1  2 x3  x4  1.
6 x1  9 x2  5 x3  x4  124;
7 x  5 x  x  54;
x5  x  0.2 x 4  9 x 3  31x 2   2 2 y  sin( x  0,5)  1;

3 4
15 
x [1, 2]  59 х  60; 5 x1  5 x2  2 x3  4 x4  83; cos( y )  x  1,5.
3 x1  9 x2  x3  6 x4  45.
2 x1  2 x2  6 x3  x4  15;
 x  2 x  x  18;
x 4  4 x3  2 x 2   2 sin( x  0.5 y )  x  y 2  0;
x  sin  x   0.25
3 4
16  
 20 х  25; 4 x1  3x2  x3  5 x4  37;  ( y  0.1)  x  1;
2 2

3x1  5 x2  x3  x4  30.
4 x1  5 x2  7 x3  5 x4  165;
2 x  x  3x  x  15;
x  5x  7 x 
4 3 2
 1 e y0.1x  x  y  1.4;
x  20  sinx  0 
2 3 4
17 2

 7 х  20; 9 x1  4 x3  x4  194;  2  y  x  4.
2 2

 x1  x2  2 x3  3x4  19.

45
Таблиця 4.1 – Варіанти завдань (продовження)
2 x1  8 x2  3 x3  2 x4  18;
x  7x  7x   x  2 x  3 x  2 x  28;
 1 tg ( x  y)  x  y  0,
4 3 2

x 2  sin5x   0
2 3 4
18  
 5 х  100;  x2  x3  x4  10;  2  y  0.5x  1;
2 2

11x2  x3  2 x4  21.
2 x1  x2  4 x3  x4  66;
2 x  6 x  x  63;
1.8 x 2  x 4  10 x 3  36 x 2   2 3 4 tg ( y  x)  x  y  0.3,
19  
 sin10 x   0  70 х  75; 8 x1  3 x2  6 x3  5 x4  146;  y 2  x 2  1.5;
2 x1  7 x2  6 x3  x4  80.
2 x1  3x3  2 x4  16;
2 x  x  13x  4 x  213;  cos(x 2  y 2 )  x  y  0,
x 4  9 x 3  31x 2   1 
2 xe  0
2 3 4
20 x
 
( x  y  2) 2 
( x  y) 2
 1;
 59 х  60; 3x1  x2  2 x3  x4  72; 
 0.9
 x1  12 x3  5 x4  159.
2 x1  x2  2 x3  3 x4  8;
3 x  3 x  6;
x  x  29 x 
4 3 2
 1 sin( x  y)  x  y  1,
x  cos x   0
3
21  
 71х  140; 2 x1  x2  3 x4  4;  x  y  0.75;
2 2

 x1  2 x2  x3  2 x4  4.
 x1  2 x2  3x3  4 x4  22;
2 x  3x  x  2 x  17;
x 4  7 x3  9 x 2   1  e. x y  e 2  y  2;
x2  cosx  0
2 3 4
22  
 13х  30;  1x  x2  x3  x 4  8 ; ( x  0.52)  y  1.
2 2

 x1  2 x3  3x4  7.
2 x1  x2  5 x3  x4  4;
 x  3x  6 x  7;
x 4  3x3  23x 2   1  e x y  x 2  y  1;
x  cos x  0
2 4
 
2
23
 55х  150; 2 x2  x3  2 x4  2; ( x  0.5)  y  1.
2 2

 x1  4 x2  7 x3  6 x4  2.
 x1  2 x2  3 x3  4 x4  26;
2 x  3 x  4 x  x  34;
x 4  6 x3  4 x 2   1  sinx   y  1.32;
x  cos x   0
2 3 4
 
2 2
24
 10 х  75; 3 x1  4 x2  x3  2 x4  26; cos y   x  0.85.
4 x1  x2  2 x3  3 x4  26.
9 x1  10 x2  7 x3  x4  23;
7 x  x  5 x  37;
x 4  x3  17 x 2   1 2  x 3  y 2  1  0;
2 x  cos x   0
3 4
25  
 45х  100; 5 x1  2 x3  x4  22;  x  y  y  4  0.
3

4 x1  x2  2 x3  3 x4  26.

46
Зміст звіту
1. Мета роботи.
2. Графік функції f x  і приблизно визначений один з коренів рівняння.

Рішення рівняння f x   0 з точністю =10–4 за допомогою вбудованої функції


root .
3. Вектор v , що містить коефіцієнти полінома g x  , рішення рівняння
g x   0 за допомогою функції polyroots , символьне рішення рівняння.
4. Рішення системи лінійних рівнянь S за допомогою функції Find
,матричним способом та за допомогою функції lsolve .
5. Аналітичне і графічне рішення системи рівнянь F .
6. Висновки.

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

ЛІТЕРАТУРА: [8], [9], [10].

47
ЛАБОРАТОРНА РОБОТА №5
ПРОГРАМУВАННЯ З ВИКОРИСТАННЯМ
ЛОГІЧНИХ ФУНКЦІЙ

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


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

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


MathCAD - це система, орієнтована на користувача, який не зобов'язаний
знати абсолютно нічого про програмування. Творці MathCAD спочатку
поставили перед собою таке завдання, щоб дати можливість професіоналам -
математикам, фізикам і інженерам самостійно проводити складні розрахунки, не
звертаючись за допомогою до програмістів.
Останні версії MathCAD мають не дуже потужну, але досить елегантну
власну мову. Незважаючи на невелике число операторів, мова програмування
MathCAD дозволяє вирішувати найрізноманітніші, в тому числі і досить складні,
завдання і є серйозною підмогою для розрахунків.
У будь-якому місці документа MathCAD можна вставити код програми на
вбудованій мові програмування. Це можна зробити за допомогою «гарячих
клавіш» або команд з панелі інструментів Programming (Програмування).

Рисунок 5.1 – Панель інструментів Програмування

48
На даній панелі є десять команд. Клацання по одній з цих команд створює
в поточній позиції заготовку для відповідної програмної конструкції.
Алгоритм створення програмного модуля наступний:
1. ввести частину виразу, яка буде знаходитися зліва від знака
присвоювання і сам знак присвоювання. При необхідності викликати на екран
панель інструментів Programming (Програмування);
2. натиснути на цій панелі кнопку Add Line (Додати лінію);
3. якщо приблизно відомо, скільки рядків коду міститиме програма,
можна ствоити потрібну кількість ліній повторним натисканням кнопки Add
Line (Додати лінію) відповідне число раз.
4. у місці для введення, що з'явилося, ввести бажаний програмний код,
використовуючи програмні оператори.
Оператор if призначено для організації обчислювальних процесів, що
розгалужуються. Для того, щоб ввести оператор if в програму, необхідно
мишкою клацнути по кнопці if з панелі програмування.
При цьому в програму вставляється заготовка для оператора: if. Загальний
вигляд простого оператора if:

D if L,
де L - логічне вираження; D - оператор, що виконується в разі, якщо умова L
приймає значення «істина».

Оператор працює наступним чином:


- обчислюється логічне умова L;
- якщо L - істина, то виконується оператор D, в іншому випадку він не
виконується;
- виконання програми триває з наступного, після if, оператора.
Оператор for використовується для створення циклічних обчислювальних
процесів. У документі MathCAD найпростіші цикли можуть бути замінені
ранжируваними векторами. Для більш складних циклів необхідно складати
49
програму. Щоб вставити оператор for в програму, необхідно мишкою клацнути
по кнопці for з панелі програмування. При цьому в програму вставляється
заготовка для оператора: for.
Загальний вигляд оператора вибору for:

for i k1..kn
D
або
for i (k1 k2 k3 ... kn)
D
де i - лічильник циклу, змінна, яка змінюється в діапазоні від k1 до kn.
Діапазон зміни лічильника циклу вводиться за допомогою ранжированої змінної
або за допомогою вектора.
D - дії, які виконуються в циклі (тіло циклу).

Якщо тіло циклу оператора for складається з декількох рядків, то


необхідно встановити курсор на позицію для введення тіла циклу і відповідну
кількість разів натиснути на Add Line.
Приклад виконання роботи.
1. Обчислення значення f(x) та формування з отриманних значень
вектора.
a  3 b  3 d  0.5
ba
n  1 n  13
d
Fx1( a b d)  i0
for x  a a  d  b
x
fi  e cos( 2 x)
ii1
f

50
0
0 19.286
1 3.456
2 -4.83
3 -4.437
4 -1.131
5 0.891
Fx1( 3 3 0.5 ) 
6 1
7 0.328
8 -0.153
9 -0.221
10 -0.088
11 0.023
12 0.048

2. Отримання передавальної характеристики, осциллограмм вхідної і


вихідної напруг.
U1  0.5
U2  0.5 4

K1  2
K2  2 2

Uin  1 0.99  1  
Uout Uin
2 1 0 1

 
Uout Uin  0 if Uin 0
2

K1 Uin  U1 if Uin  0 4

Uin
K2 Uin  U2 if Uin  0

Рисунок 5.2 – Передавальна


характеристика нелінійність типу
«зони нечутливості 1» у MathCAD

51
3 3
t  0 0.01 10  210 3

3 2
T  1 10
Uout ( t ) 1
2  3 0
    6.283  10 Uin( t )
T 1

2
Um  1
3
Uin ( t)  Um sin (  t) 0 110
3
210
3

Uout ( t)  0 if Uin ( t) 0
K1 Uin ( t)  U1 if Uin ( t)  0
K2 Uin ( t)  U2 if Uin ( t)  0 Рисунок 5.3 – Осцилограми вхідної
і вихідної напруг при моделюванні
нелінійного елемента «зони
нечутливості 1» у MathCAD

Порядок виконання
1. Для, х що змінюється від a до b з кроком d обчислити значення
f x і сформувати з цих значень вектор f . Кількість повторень визначається за
формулою:

ba
n 1
d
Описи програми-функції формальні параметри використовуються для
завдання діапазону зміни параметра циклу (змінна х ). Для зміни індексу
елемента масиву f вводиться змінна цілого типу i всередині програми-функції.
Звернення до описаної програми-функції може мати вигляд: f a, b, d .
2. Описати нелінійність типу «зони нечутливості 1». Ця нелінійність
може бути описана залежністю:

52
0, если U ВХ  0;

U OUT U IN    К1  U IN  U1 , если U ВХ  0;
 К  U  U , если U  0;
 2 IN 2 ВХ

Описати нелінійність типу «зони нечутливості 2». Ця нелінійність може


бути описана залежністю:

0, если U1  U ВХ  U 2 ;

U OUT U IN   ( K1  1)  U in  U1 , если U ВХ  U1;
( K  1)  U  U , если U  U ;
 2 in 2 ВХ 2

де U1  U2  0,5 В - постійна величина, яка визначає ширину зони


чутливості по відношенню до вхідного сигналу U IN ; К1  К 2  2 - коефіцієнт
перетворення.
Отримати передавальні характеристики, а підключивши на вхід гармонійні
коливання, отримати осцилограми вхідних і вихідних напруг.

3 UВЫХ,B U(t),B
3
UВЫХ
K1
2
2
UВХ
1 1
U1
UВХ,B t,mc
0 0,5 1,0 1,5 2
-1 -0,5 U2 0 0,5 1
-1 1
K2
-2 2

-3
3

Рисунок 5.4 – Передавальна Рисунок 5.5 – Осцилограми вхідної і


характеристика нелінійність типу вихідної напруг при моделюванні
«зони нечутливості 1» нелінійного елемента «зони
нечутливості 1»

53
1,5UВЫХ,B U(t),В
1,0
UВХ
1,0
UВЫХ
0,5
0,5

UВХ,B t,mc
2,0 -1,5 1,0 -0,5 0 0.5 1,0 1,5 2,0 0 0,5 1,0 1,5
2
-0,5

-0,5
-1,0

-1,5 -1,0

Рисунок 5.6 – Передавальна Рисунок 5.7 – Осцилограми вхідної і


характеристика нелінійність типу вихідної напруг при моделюванні
«зони нечутливості 2» нелінійного елемента «зони
нечутливості 2»

Варіанти завдань (1) наведено в табл. 5.1.

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


№ f x  а b d
1 2 3 4 5
1 e  x  cosx  –2 2 0.5
2 e  x  sin2 x –1 1 0.1
3 e x  3x  14 1 3 0.2
4 x 2  cos  x  0   /5
5 x 2  cos2   x  2   /4
6 x  cos2 2    x  0 4   /2
7 3  x  sin 3  x  0 5 0.5
8 2  x  ex 1 6 0.5
9 1  x  tg x  0 1 0.1
10 2  х 2  1.2  cos x  0 1 0.05
11 x5  x  0.2 1 2 0.05
12 x 2  e x3 1 2 0.01
2 1
13 cos   –1 –2 –0.01
 x x
14 sin 2  x   x 0 2 0.01
15 x  tg 3  x  0 20 1
16 3  x 2  2  x 0 5 1
17 4  x 2  e x 0 2.5 0.5
54
Таблиця 5.1 – Варіанти завдань (продовження)
16 x3  x0.2 0 0.2 0.01
17 x  sin x   0.25 0 10 1
18 x  sin  x  2  1 15 1
19 3x3  14 0 2 0.1
20 cosx   х 2  12 0 2 0.1
21 x2  2  x  4 –1 1 0.1
22 2  x  e x 0 1 0.02
23 x 3  cos2 2  x  0 3 0.2
24 x 4  x 2  х 0 1 0.02
25 x  sin 3  x  0 10 0.2

Зміст звіту
1. Мета роботи.
2. Обчислення значення f x  та формування з отриманних значень вектора
f.
3. Опис нелінійності типу «зони нечутливості 1», графіки передавальної
характеристики, осцилограми вхідної та вихідної напруг.
4. Опис нелінійності типу «зони нечутливості 2», графіки передавальної
характеристики, осцилограми вхідної та вихідної напруг.
5. Висновки.

Контрольні питання
1. Алгоритм створення програмного модуля у MathCAD.
2. Оператор if. Загальний вигляд простого оператора. Принцип роботи.
3. Оператор for. Загальний вигляд. Приклад використання.

ЛІТЕРАТУРА: [8], [9].

55
ЛАБОРАТОРНА РОБОТА №6
РОЗРОБКА КОНСОЛЬНОГО МЕНЮ

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


мові програмування Сі.

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


Приклад. Розглянемо приклад виконання завдання:
1) Вертикальне меню з управлінням функціональними клавішами;
2) Знайти суму чисел послідовності з N довільних чисел;
3) Побудувати таблицю істинності функції L =!(a || c) || (a&&c);

Лістинг програми
Написання програми починається з підключення необхідних бібліотек
компілятора:

#include "stdio.h" // бібліотека базових функції вводу-виводу


#include "conio.h" // бібліотека додаткових функцій вводу-виводу
#include "windows.h" // бібліотека стандартних функцій ОС
#include "locale.h" // бібліотека локалізації

Вирішення кожної задачі необхідно виділити в окрему функцію. Функції


мають бути описані, або об’явлені, до основної функції main().

void zadanie1() // функція реалізації першого завдання


{

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

unsigned int N, i;
56
float sum = 0, x;

Очищаємо екран та задаємо колір фону та тексту. Перша цифра відповідає


за колір фону, друга за колір тексту (у шістнадцятирічній системі счислення).
Значення чисел у шістнадцятирічній системі счислення: 0 – чорний, 1 – синій, 2
– зелений, 3 – блакитний, 4 – червоний, 5 – ліловий, 6 – жовтий, 7 – білий, 8 –
сірий, 9 – світло-синій, A - світло-зелений, B - світло-блакитний, З - світло-
червоний, E - світло-жовтий, F - яскраво-білий.

system("cls");
system("color 13");

Зчитуємо кількість елементів послідовності та записуємо у змінну N:

printf("Введіть кількість елементів: "); scanf("%u", &N);

Відкриваємо цикл з лічильником. На кожній ітерації циклу з клавіатури


буде зчитуватися кожний наступний елемент послідовностіта складатися з
попередніми елементами. Сума зберігається у змінній sum, якій встановлено
початкове значення 0:

for (i = 0; i < N; i++) {


printf("Введіть %uй елемент > ",i+1);
scanf("%f", &x);
sum += x;
}

Після завершення роботи циклу виводимо на екран отриману суму та


робимо затримку на екрані. Функція вирішення першого завдання готова:

printf("Сумма всех элементов > %5.3f\n", sum);


system("pause");
}

57
Опишемо функцію для другого завдання:

void zadanie2() // функція реалізації другого завдання


{

Для вирішення задачі нам потрібні чотири однотипних змінні. Оскільки


логічні змінні приймають значення 0 або 1, то доцільніше буде обрати тип:
unsigned short.

unsigned short a, b, c, L;

Очищаємо екран та задаємо колір фону та тексту. Перша цифра відповідає


за колір фону, друга за колір тексту:

system("cls");
system("color 1E");

Виводимо на екран заголовок таблиці істинності:

printf("+===============================+\n");
printf("| a | b | c | L |\n");
printf("+===============================+\n");

Відкриваємо цикли з лічильниками. Кількість циклів відповідає кількості


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

for (a = 0; a <= 1; a++)


for (b = 0; b <= 1; b++)
for (c = 0; c <= 1; c++)
{

58
На кожній ітерації циклу обчислюється значення логічної функції та
виводиться на екран поточні значення змінних та функції у форматі таблиці.
Важливо пам’ятати що ! – це операція заперечення, || - це операція «або», && -
це операція «і» :

L = !(a | c) || (a&c); // питома логічна функція


printf("| %1u | %1u | %1u | %1u |\n", a, b, c, L);
}

Закриваємо таблицю та організовуємо затримку даних на екрані. Функція


реалізації другого завдання готова.

printf("+===============================+\n");
system("pause");
}

Функція для виводення відомостей про роботу виглядатиме наступним


чином:

void about()
{
system("cls");
system("color 1F");
printf("Лабораторна робота\n");
printf("------------------------------------------\n");
printf("Знайти додавання числової послідовності з N довільних дійсних
чисел.\n");
printf("------------------------------------------\n");
printf("Обчислення значення логічного виразу:\n");
printf("L = !(a || c) || (a&&c)\n");
printf("------------------------------------------\n");
system("color 1C");
printf("Автор: студент групи ***, ФІП\n");
system("color 1F"); system("pause");
}

59
Після написання усіх необхідних функції можна братися за написання
основної функції програми:
int main()
{

В основній функції буде реалізовано меню, тому потрібна символьна


змінна для зчитування коду клавіш клавіатури:

char ch;

Вмикаємо кирилицю:

setlocale (LC_CTYPE, "ukr");

Для реалізації меню відкриваємо цикл з постумовою. На початку циклу


очищаємо екран, встановлюємо колір тексту та фону, виводимо на екран пункти
меню:

do {
system("cls");
system("color 1B");
printf("F2 - Завдання 1\n");
printf("F3 - Завдання 2\n");
printf("F4 – Про програму\n");
printf("================\n");
printf("F9 - Вихід\n");

Функція getch() повертає код натиснутої кнопки, тому для організації


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

ch = getch();

60
Далі за допомогою конструкції switch перевіряємо чи була натиснута
необхідна клавіша. Код «60» відповідає кнопці F2. Відповідно «61» - F3, «62»
- F4. За бажанням можна змінити керуючі кнопки замінивши коди клавіш на
інші з таблиці ASCII коду. Наприклад, клавіша Enter має код «13», клавіша Esc
– «27». Якщо код кнопки відповідає необхідному – викликаємо відповідну
функцію. У тексті приведено момент зміни коліру шрифту для «підсвічування»
необхідної інформації:

switch (ch) {
case 60: zadanie1(); break;
case 61: zadanie2(); break;
case 62: about(); break;}

Цикл буде виконуватись допоки не буде натиснута клавіша F9, що буде


відповідати виходу з програми:

} while (ch != 67);


return 0;
}

У варіантах завдань, де необхідно реалізувати управління стрілками,


потрібна розробка ще однієї функції для відтворення меню:

void Menu (int im, char **st, int maxmenu)


{
int i;
system("cls");
for (i = 0; i<maxmenu; i++)
{
if (i != im)
{printf(" %s \n",st[i]);}
else {printf(" $ %s $ \n", st[i]);}
}
printf(" Esc - Вихід");
}

61
При цьому у головній програмі знадобляться ще дві змінних: змінна для
вказівки кількості пунктів меню, змінна для визначення поточної позиції у меню
та масив символьних рядків, що містить назви пунктів меню:
const int maxmenu = 3;
char *st[3] = {"Завдання 1","Завдання 2", "Довідка"};
int im = 0;

Таким чином, використовуючи ці дані, можливо відтворення меню при


виборі користувачем окремого пункта. Організовуючи меню таким способом,
також необхідно змінити алгоритм у конструкції switch:
switch (ch) case 72: {
{ im--;
case 13: if (im<0) im = 0;
{ Menu(im, st, maxmenu);
switch(im) }break;
{ case 80: {
case 0: im++;
{ if (im>maxmenu - 1) im
zadanie1(); = maxmenu-1;
Menu(im, st, maxmenu); Menu(im, st, maxmenu);
}break; }break;
case 1: }
{
zadanie2();
Menu(im, st, maxmenu);
}break;
case 2:
{
about();
Menu(im, st, maxmenu);
}break;
}
}break;

Якщо була натиснута клавіша Enter, то необхідно проаналізувати на якій


позиції (пункті) знаходиться курсор та виконати відповідний пункт. Якщо

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

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

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


Варіант Тип меню Математична Логічна функція
дія для
числової
послідовності
1 цифрове горизонтальне додавання L  (a  b)  (b c)  a
2 вертикальне з середнє L  a  b  (c a)  a
управлінням стрілками арифметичне
3 горизонтальне з множення L  a  b  (b  c  a)
управлінням стрілками
4 цифрове вертикальне додавання L  a  ( a  b  c)  a
5 цифрове горизонтальне середнє L  a (a  b)  c  a
арифметичне
6 вертикальне з множення L  a  b  (b  c  a)
управлінням буквами
7 горизонтальне з додавання L  (a  b)  (c  a)  a
управлінням буквами
8 цифрове вертикальне середнє L  (a  b)  (c  a)  a
арифметичне
9 цифрове горизонтальне множення L  a  (b  c)  (c  a)

63
Таблиця 6.1 – Варіанти завдань (продовження)
10 вертикальне з додавання L  ( a  b  c)  a
управлінням стрілками
11 горизонтальне з середнє L  (a  b  c)  (c  a)
управлінням стрілками арифметичне
12 цифрове вертикальне множення L  (a  b)  (b  c)  a
13 цифрове горизонтальне додавання L  (a  b)  (b  c  a)
14 вертикальне з середнє L  a  (a  b  c)  a
управлінням буквами арифметичне
15 горизонтальне з множення L  a  b  (c  a)  a
управлінням буквами
16 цифрове вертикальне додавання L  a  (c  b)  c  a
17 цифрове горизонтальне середнє L  (a  b  c)  c  a
арифметичне
18 вертикальне з множення L  a b  c  a  a
управлінням стрілками
19 горизонтальне з додавання L  a  (b  c)  (c  a)
управлінням стрілками
20 цифрове вертикальне середнє L  a  (b  c)  a  (c  a)
арифметичне
21 цифрове горизонтальне множення L  a  (a  b  c)  a
22 вертикальне з додавання L  a  (a  b)  (c  a)
управлінням буквами
23 горизонтальне з середнє L  a  b  (b  c  a)
управлінням буквами арифметичне
24 цифрове вертикальне множення L  a  b  (b  c  a)
25 цифрове горизонтальне додавання L  (a  b  c)  (c  a)

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

64
Контрольні питання
1. Чим принципово відрізняється алгоритм розробки цифрового меню
від алгоритму розробки меню з управлінням стрілками.
2. Алгоритм побудови таблиці істинності за допомогою програмних
засобів.
3. За допомогою якої системної функції можна задавати колір фону та
тексту? Опишіть параметри цієї функції.

ЛІТЕРАТУРА: [1], [2], [3], [4], [7].

65
ЛАБОРАТОРНА РОБОТА №7
РОБОТА З ГРАФІКОЮ

Мета роботи: отримати практичні навички роботи з графічними


функціями консольного вікна на мові програмування Сі.

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


Консольне вікно Windows є інтерфейсом, який надає Windows для
введення і виведення даних додатків, які працюють в символьному режимі, тобто
таким, що не мають власного графічного інтерфейсу. Так програми, які
створюються на початковому етапі навчання, зазвичай виконуються в
командному вікні. Вони використовують стандартні «текстові» функції Сі
введення / виведення printf (), scanf (), getchar (). Однак бібліотека функцій не
обмежується тільки ними. Є можливість використовувати функції Windows API
для керування консольним введенням - виведенням. Щоб використовувати такі
функції треба включити в програму заголовний файл windows.h, завдяки якому
можна отримати доступ до великої кількості функцій, що становлять бібліотеку
Windows API.
Приклад. Скласти консольну програму побудови графіка функції
f (x)  (x  1) 2  sin(x  0,3)  6, 2 двома способами – точка за точкою і суцільною
лінією.
Для того, щоб скористатися графічними функціями в програмному
комплексі Code Blocks, потрібно створити проект, категорія якого буде WIN32
GUI project (File -> New -> Project -> WIN32 GUI project тип project: Dialog
Based).

Лістинг програми
На початку треба вказати групу бібліотек, що буде використовуватися у
програмі:

66
#include<stdio.h> // бібліотека базових функції вводу-виводу
#include<math.h> // бібліотека для виконання простих математичних операцій
#define _WIN32_WINNT 0x0500 //макрос для вказівки версії виндовс
#include <windows.h> // бібліотека стандартних функцій ОС
#include <conio.h> бібліотека додаткових функцій вводу-виводу

Програми не буде мати своїх функцій, тому далі потрібно об’явити головну
програму:

int main()
{

Першим кроком у головній функції буде відображення заголовку функції.


Тому отримуємо ідентифікатор/дескриптор консольного вікна (HANDLE) за
допомогою функції GetStdHandle, а далі через функцію
SetConsoleTextAttribute задаємо колір шрифту тексту заголовку та через
функцію printf() виводимо текст заголовку:

printf("\n");
printf("\t\t\t\t");
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE);
printf("GRAPH f(x)");

Всі графічні функції C/C ++ в Windows використовують спеціальну


структуру, яка називається контекстом вікна. Вона зберігає поточні параметри
області, в якій праціємо: колір ліній, їх товщину і стиль (пунктир, суцільний, ...),
колір заливки областей, розміри вікна і т.д. У програмах на C/C ++ контекст вікна
зберігається в змінній типу hDC, яка повинна бути пов'язана з вікном, в якому
відбувається побудова.

HDC hDC = GetDC(GetConsoleWindow());

67
Координати положення курсору будемо зберігати в наступних змінних
типу з плаваючою точкою:

double x, y;

Далі створюємо перо, яке є частиною структури контексту вікна, і задаємо


в ньому властивості: тип лінії, ширину і колір. Після створення пера (HPEN) його
потрібно завантажити до контексту (HDC) функцією SelectObject (HDC, HPEN):

HPEN Pen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));


SelectObject(hDC, Pen);

На даному етапі необхідно накреслити координатні осі. Це виконуємо за


допомогою фунції MoveToEx(), де задаємо координати початкової координати,
та креслемо відрізок прямої від поточного положення покажчика до точки (X,
Y), а також переміщаємо покажчик в цю точку за допомогою функції LineTo():

MoveToEx(hDC, 50, 220, NULL);


LineTo(hDC, 600, 220);
MoveToEx(hDC, 100, 10, NULL);
LineTo(hDC, 100, 300);

Тепер креслемо графік функції крапка за крапкою. Для цього задаємо


масштаб по осях, початкові значення координат X та Y і діапазон зміни абсциси:

int xScale=40,yScale=2;
int x0=100,y0=220;
float xBeg =0, xEnd = 10.0f;

Далі у заданому діапазоні зміни абцис за допомогою циклу for


встановлюємо точки заданого кольору (змінюємо колір пікселів в точках екрану
з координатами X, Y) через функцію SetPixel(). Тип COLORREF створює макрос
RGB, тобто дозволяє задати колір точки у SetPixel():

68
COLORREF penColor = RGB(255, 255, 0);
for (x=xBeg;x<=xEnd;x+=0.05f)
{ y= pow(x+1,2)*sin(x-0.3)+6.2;
SetPixel(hDC,x0+xScale*x,y0-yScale*y, penColor);
}

Для креслення графіка функції по відрізках необхідно створити перо для


креслення та загрузити його до контексту:

HPEN Pen1 = CreatePen(PS_SOLID, 3, RGB(255, 0, 0));


SelectObject(hDC, Pen1);

Задамо положення початку координат та і встановимо покажчик в


початкову точку кривої:

int x1=100,y1=200;
MoveToEx(hDC,x1+xScale*xBeg,y1-yScale*pow((xBeg)+1,2)*sin((xBeg)-0.3)+6.2,
NULL);

Тепер креслемо відрізки від точки до точки за допомогою циклу for() та


функції LineTo(), що кресле відрізок прямої від поточного положення покажчика
до точки (X, Y) і переміщає покажчик в цю точку:

for (x=xBeg;x<=xEnd;x+=0.05f)
LineTo(hDC,x1+xScale*x,y1-yScale*pow(x+1,2)*sin(x-0.3)+6.2);

Після виконання функціоналу затримуємо зображення на екрані до


натискання будь-якої клавіши користувачем. Перед завершенням програми
видаляємо перо та звільнюємо дескриптор контексту консольного вікна:

getch();
DeleteObject(Pen);
ReleaseDC(NULL, hDC);
return 0;
}

Для визначення параметрів консольного вікна можна скористатися


наступною програмою:
69
#include <stdio.h>
#define _WIN32_WINNT 0x0500
#include <windows.h>
int main()
{HWND hWnd=GetConsoleWindow();
RECT rc;
GetClientRect(hWnd, &rc);
printf(" X=%i Y=%i",rc.right, rc.bottom);
getchar();
return EXIT_SUCCESS;}

Порядок виконання
1. Побудувати графік функції f(x), що наведено у табл.6.1, у пакеті
прикладних програм MathCAD в області [0; 10] з кроком 0,05 (значення x задати
за допомогою діапазонної змінної).
2. Скласти програму побудови графіку заданної функції f(x) в області
[0; 10] з кроком 0,05 за допомогою одного зі способів, що вказано у варіанті
завдання.
3. Скласти блок-схему алгоритму завдання.
Варіанти завдань наведено в табл. 7.1.

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


Варіант f(x) Спосіб побудови
1 2
x  sin( x)  0.5  cos( x)  4  x  3 точка за точкою
2 x суцільною лінією
x  sin( x)  exp( )  2.7
4
3 cos(2  x  0.1)  exp(2  x)  x  sin( x  1.1)  3 точка за точкою
4 1 суцільною лінією
0.4  x 2  5.2  x  sin( x)   3.3
x  1.5
5 x точка за точкою
2  cos( x  1)  sin(  2)  0.4  x  2.5
3
6 (sin( x  0.5))  0.3  x  ln(3  x  1)  2.1
2
суцільною лінією
7 x точка за точкою
5  cos(  0.5)  sin( x)  0.5  ln(2  x  1)  1.2
2
8 x суцільною лінією
12  cos(  0.5)  sin( x  1)  0.5  exp(0.2  x)
3

70
Таблиця 7.1 – Варіанти завдань (продовження)
9 x точка за точкою
2  x 2  8  ( x  1)  exp( )  0.5
2
10 x суцільною лінією
( x  1)  sin( x  1)  exp( )  1.2
5
11 (cos( x  1))  0.2  x  ln( x  1)  1.05
2
точка за точкою
12 1.5  x 2  6  ( x  1)  cos(1.3  x)  exp(0.5  x)  25 суцільною лінією
13 x точка за точкою
4  sin(  1)  cos( x)  0.5  ln( x  1)  1.7
2
14 sin( x  0.5)  ln(x  3)  co s(2  ln( x  1))  0.45 суцільною лінією
15 x 2  7  x  sin( x)  exp(3  x)  18.5 точка за точкою
16 ( x  1) 2  cos( x  0.8)  2.7  x  7.2 суцільною лінією
17 x точка за точкою
8.9  cos( x)  2.5  ln( x  3)  2.3  sin( )  2.4
2
18 0.9  x  sin( x)  3.2  x  cos( x)  5.5
2
суцільною лінією
19 x  sin(1.4  x  0.2)  0.5  cos( x  1)  0.35 точка за точкою
20 sin(2  x  0.1)  exp(2  x)  x  cos( x  1.1)  3 суцільною лінією
21 x точка за точкою
2  x  cos( x  1)  exp( )  2.1
2
22 1 суцільною лінією
2  x 2  exp( x)   1.3
x2
23 x точка за точкою
( x  2)  cos( x  2)  exp( )  1.5
6
24 ( x  4)  sin( x  0.4)  3.3  x  1.5
2
суцільною лінією
25 x точка за точкою
24  sin(  1)  cos( x  2)  2  exp(0.1  x)
2

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

71
Контрольні питання
1. За допомогою чого можна використовувати функції Windows API
для керування консольним введенням – виведенням? Як створити проект, що
буде підтримувати графічні функції у CodeBlocks?
2. Що таке дескриптор консольного вікна? Для яких цілей та функцій
він використовується?
3. Що означає та для чого використовується макрос #define
_WIN32_WINNT 0x0500 ?
4. Який алгоритм побудови графіку функції способом – суцільна лінія?

ЛІТЕРАТУРА: [1], [2], [5], [6]

72
ЛАБОРАТОРНА РОБОТА №8
РОЗРАХУНОК ЗНАЧЕНЬ ФУНКЦІЙ НА ЗАДАНОМУ ІНТЕРВАЛІ

Мета роботи: отримати практичні навички роботи зі вбудованими


функціями програми Microsoft Excel.

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


Прикладна програма Microsoft Excel дозволяє виконувати різні обчислення
з використанням апарату формул і функцій. Формулою називається
послідовність символів, починаючи зі знака рівності і містить константи,
посилання на комірки, імена, функції і оператори.
Програма містить велику кількість стандартних формул, які називаються
функціями. Функції використовуються для простих і складних обчислень. Для
зручності роботи функції розбиті за категоріями: інженерні, логічні,
математичні, статистичні та ін. Функції задаються за допомогою формул, які
обчислюються за заданими величинами, що називаються аргументи, і в
зазначеному порядку, що зветься синтаксисом. В якості відповіді повертаються
значення, що називають результатом.
Автозаповнення осередків числами. Автозаповнення - це автоматичне
введення серії даних в певний діапазон. Алгоритм автозаповнення наступний:
- виділити одне або кілька перших значень серії, а також діапазон
(вправо або вниз), куди буде продовжена послідовність значень;
- викликати діалогове вікно прогресії: Головна - Заповнити –
Прогресія;
- встановити необходні налаштування в діалоговому вікні:
розташування, тип, крок, граничне значення.
Логічна функція ЯКЩО в Excel повертає результат (значення або іншу
формулу) в залежності від умови.
Функція має наступний синтаксис:

73
ЯКЩО (логічний_вираз; значення_якщо_істина; [значення_якщо_неправда]),
де логічний_вираз - ЯКЩО оператор перевіряє (текстові або числові дані
осередки);
значення_якщо_істина - ЯКЩО з'явиться в осередку, коли текст або число
відповідають заданій умові (правдиві);
значення_якщо_неправда - ЯКЩО з'явиться в графі, коли текст або число
НЕ відповідають заданій умові (брехливі).

Функція СУМ обчислює суму всіх своїх аргументів. Синтаксис цієї


функції:

СУМ (число1;число2;…),
де число1; число2;… – це посилання на комірки або на цілий діапазон.

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


(умовою) використовується функція СУМЯКЩО.
Синтаксис функції СУМЯКЩО:

СУМЯКЩО (діапазон; умова; [діапазон_ підсумовування])


де діапазон - обраний діапазон комірок, до якого застосовується умова.
умова - умова, що визначає, які комірки потрібно підсумувати;
діапазон_ підсумовування - діапазон комірок, який потрібно
підсумувати.

Функція РАХУНОКЯКЩО - це одна зі статистичних функцій. Вона


використовується для підрахунку кількості осередків виділеного діапазону,
відповідних заданій умові.
Синтаксис функції РАХУНОКЯКЩО:

РАХУНОКЯКЩО (діапазон_комірок; умова),


74
де діапазон_комірок - обраний діапазон комірок для підрахунку із
застосуванням заданого умови;
умова - умова, яке потрібно застосувати, введене вручну або знаходиться в
осередку, на яку дається посилання.

Для побудови графіку математичної функції потрібно виконати наступну


послідовність дій:
- виділити діапазон значень змінної x і функції y;
- перейти на вкладку Вставка і в групі Діаграми вибрати Точкова
(можна вибрати будь-яку з точкових діаграм, але краще використовувати вид з
гладкими кривими).
Використовуючи вкладки Конструктор, Макет, Формат, можна змінити
параметри графіка.

Порядок виконання
1. Обчислити значення усіх виразів при заданих умовах.
2. Визначити задані значення.
3. Побудувати графіки функцій залежних змінних від незалежних.
Вказівки до роботи:
- Рішення оформити у вигляді таблиці.
- У перший стовпець помістити значення незалежної змінної.
- У наступні стовпчики помістити значення функцій, що
розраховуються.
- Результати одиночних розрахунків поміщати нижче вихідної
таблиці.
- Написати алгоритм, за яким було проведено розрахунки.
Варіанти завдань (1-2) наведено в табл. 8.1.

75
Таблиця 8.1 – Варіанти завдань
Варіант Завдання 1 Умови Завдання 2
5  z 2 , если z  0; – суму всіх F;
F   2  x  7 ; – максимальне
1  z  5, если z  0. x  0,5 значення F;
y  S  2  F ; S   z ; z  x3  3  x . – кількість y>F.
– кількість y>12,5;
5,2  x3  a  sin 3x, если x  0;  5  x  5 ; – суму всіх y і середнє
y 2
2  x  5, если x  0. x  0,5 ; значення y;
z  y  max( y ) a  0,33 – мінімальне значення
величини y.
 x 3  cos x, если x  0; – кількість y>c;
z – суму всіх і середнє
c  (1  x) , если x  0.
2
 1  x  1 ; значення всех y;
3 S 
1
z, где N – кількість x  0,1 ; – максимальне
N c  0.5 . значення величини y.
обчислених значень z ;
y  z  2S ,
– кількість y>S;
 e x  cos(x  1), если x  1; 3 x  6;
z – суму і середнє
b  ( x  x  1), если x  1.
3 2
4 x  0,5 ; значення z>15;
y  4S  z  b ; S  z , b  3. – максимальне
значення величини z.
– кількість y>;
2e  5  cos(  1), если   1 1    6 – суму і середнє
 
   2   , если   1 значення всех ;
3
5 ,
y  4S   , S      0,4 . – мінімальне значення
.
2    cos( 2  2), если   0  3    1, – кількість z>6;
    0,2 . – суму і середнє
   , если   0
3

6 где N – значення всех z;


1 – мінімальне значення
z  2,5  x  5   , x 
N
 кількість  величини z.
5 x  cos(x 2  30), если x  0 – кількість 0<y<10;
S   5  x  3 ; – суму и середнє y>a;
 2a( x  1)  2 x, если x  0
3
7 x  0,4 ; – максимальне
N a  8. значення величини
y x , ( где N – кількість S);
5 S.
 x  2 cos 3x  x 2 , если x  5 – кількість 1<R<2;
s  1  x  4,5 – суму значень R;
 (5,6 x  1)  7, если x  5
3
8 , – середнє значення
R  s 2  P 2 , P  s
1 s  5
x  0,5 . змінної s;

76
Таблиця 8.1 – Варіанти завдань (продовження)
– кількість 1<t<1;
sin( f  10)  e  3, если f  0
0,5 f
– суму і середнє
t
 3( f  1)  0,25 f , если f  0
2  2  f  3,5 значення величин
9
; f  0,5 .

S t<0;
yt ; S t;
23 – максимальне
значення величини y.
2 x 5  x 3  3), если x  10 – кількість 1<y<1;
s 1 ; – суму і середнє
( x  1)  2 x, если x  10
3  1  x  3,5
10 значення для y>0;
P x  0,5 .
y  sin x  ; P  t ; – максимальне
20 t 1 значення величини S.
– кількість 0<y<10;
 4 x 3  3, если x  0 – сумму y>0;
s
( x  1)  5 sin x  2, если x  0
2  2,5  x  7 – середнє значення
11
y  x  5 / P 1 , P   s , x  0,5 . змінної S;
s2 – максимальне
значення S
 7  x  3,2 x 2 , если  1
– кількість y<1;
s  10  x  5 – суму і середнє
(sin x  2)  x, если x  1
2
12 , значення для y>0;
y  4 x  P  s , где P   s x  1 . – мінімальне значення
s 0
величини s.
cos(   2 )  0,5, если   3 – кількість y>10;
  3 2   3 – суму і середнє
13   2 , если   3
, значення всех;
y  s   f , s    , f  2β  α   0,2 . – мінімальне значення
 1
величини .
3( x  2) 13  11x, если x  0 – кількість 5<y<20;
s – суму всіх значень y;
 (4 x  3) 2  6, если x  0  5  x  4,
14 x  0,5 . – середнє і
y  s  4 P 2  5 x , P   s максимальне значення
s 1 змінної s;
(  1)  7, если   1
2 – кількість f>0;
   4  1 – суму і середнє
   2 если   1
5
15 , значення всех y;
y  s  2  f , s 
2


, f  4s 3
  0,5 . – мінімальне значення
3 величини y.
2  e 2 x 1  2 sin x, если x  0  1  x  4,5
– кількість R>q;
s – середнє значення
16  4 cos x ( x  18), если x  0 ;
змінної R;
x  0,5 ;
R  2 s  P  3q , P  s q=0,5.
– максимальне
sq значення величини s.

77
Таблиця 8.1 – Варіанти завдань (продовження)
– кількість 0<d<5;
6 z  4 cos5 z  z 3 , если z  0
1 – суму і середнє
q значення переменной
 (3z 4  1)  21, если z  0 1  z  2 ,
17 q;
z  0,3
d  6q  P 1 , P   q , – добуток z>0;
q5 – максимальне
значення величини d.
– кількість 2<t<5;
1,5z 2  4,3 cos z  1, если z  0 – суму значень q;
q z 2
 2( e  3z ), если z  0 5 z  5, – середнє значення
18
z  1 . змінної q;
q
1
t  4 z  q  3P , P 
3
, – мінімальне значення
q4
величини t.
   – кількість 1<y<2;
 2 z, если z 
w 2 4   – середнє значення
  2 z, в ост. случаях  z , змінної y;
2 2
19 – мінімальне значення
y  5 sin( wz  3)  w  P , z 

. величини w.
P  w 12
w3

 3,9 z  4 z  1, если z  1
3 – кількість t>P;
q z 4 – суму значень q<1;
5,1(3,4e  z ), если z  1
1  z  6 , – середнє значення
, P  q
20 4P 2
t  9q  z  1 . змінної q;
N q 0 – максимальне
(N – кількість значений q) значення величини t.
– кількість 1<R<2;
2  x 2  sin x, если x  0 – суму значегь R;
s ;  1  x  4,5 ;
 4(5 x  12,8), если x  0 – середнє значення
21 x  0,5 ;
змінної s;
R  s  3P  qx , P  s ,
s3
q=0,5.
– максимальне
значення величини R.
0,2 z  4 cos 2 z  b, если z  1 – кількість t>b;
q – середнє значення
  1, если z  1 5 z  5,
z  1 , змінної t;
t  ( z  1) 2  1,2 P , P  n  q ,
22
q0 b=2. – мінімальне значення
величини t.
(N – кількість значений q)
      – кількість y<w;
 4  2 cos(t  2 ), если t  2  t ;
– середнє значення
w 2 2

23   2 sin(t  ), в ост. случаях  змінної y;
 2 t  ; – мінімальне значення
y  w  P  s , P   w , s  w,
12
  0,5 . величини w.
w 1 w1

78
Таблиця 8.1 – Варіанти завдань (продовження)
– кількість a<y<b;
 3e  2  ax, если x  0
0, 2 x
– суму всіх значень s;
s  5  x  4,
2
( x  1)  10b, если x  0 – середнє значення
24 x  0,5 ;
змінної y;
y  3s  P  max s , P   s b  0.3
s 2
– максимальне
значення величини y.
– кількість a<y<d;
3  2c  ax2 , если x  1  2  x  10 ; – середнє значення
s x  0,5 ; змінної y;
25 d sin 4 x  1, если x  1
d  3,5 ; – добуток s>d;
y  3s  d  3a  P , P   s
s 3 a  1. – мінімальне значення
величини y.

Зміст звіту
1. Мета роботи.
2. Таблиця виконаних розрахунків.
3. Графіки функцій залежних змінних від незалежних.
4. Алгоритм виконання розрахунків.
5. Висновки.

Контрольні питання
1. Що таке формула та функція у програмі Excel?
2. Алгоритм автоматичного заповнення осередків числами.
3. Логічна функція ЯКЩО та СУМЯКЩО. Синтаксис. Призначення.
4. Алгоритм побудови графіку функції у програмі Excel.

ЛІТЕРАТУРА: [11], [12].

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

Ковалюк, Т.В. Алгоритмізація та програмування : підручник / Т.В.


Ковалюк. – Львів : Магнолія 2006, 2013. – 400 с.
2. Культин, Н.Б. С/С++ в задачах и примерах / Н.Б. Культин. – СПб. :
БХВ-Петербург, 2005. – 288 с.
3. Пери, Г. Программирование на С для начинающих / Г. Пери, Д.
Миллер. – 3-е изд. – М. : Эксмо, 2015. – 368 с.
4. Дорогов, В.Г. Основы программирования на языке С : учеб. пособие
/ В.Г. Дорогов, Е.Г. Дорогова. – М. : ИД «Форум» ; ИНФРА-М, 2012. – 224 c.
5. МакГрат, М. Программирование на С для начинающих / М. МакГрат. –
М. : Эксмо, 2016. – 192 с.
6. Доля, П.Г. Введение в C/C++ программирование консоли [Електронний
ресурс] : учеб. пособие / П.Г. Доля. – Харьков : Харьков. нац. ун-
т, 2015. – Режим доступа
: http://geometry.karazin.ua/resources/documents/2015072509372 7_3339f8ece8c.pdf
. – Название с экрана (11.04.2020).
7. Керниган, Б. Язык программирования Си / Б. Керниган, Д. Ритчи ; [пер.
с англ.] – 3-е изд. – СПб. : Невский диалект, 2001. – 337 c.
8. Кирьянов, Д. Matchad 15/Matchad Prime 1.0 / Д. Кирьянов. – СПб. : БВХ-
Петербург, 2012. – 432 с.
9. Очков, В. Matchad 14 для студентов, инженеров и конструкторов / В.
Очков. – СПб. : БВХ-Петербург, 2007. – 368 с.
10. Гурский, Д.А. Вычисления в Mathcad 12 / Д.А. Гурский, Е.С. Турбина.
– СПб. : Питер, 2006. – 544 с.
11. Александер, М. Формулы в Excel 2016 / М. Александер, Д. Куслейка.
– М. : Диалектика-Вильямс, 2017. – 784 c.
12. Леонтьев, В. Microsoft excel 2016. Новейший самоучитель / В. Леонтьев.
– М. : ЭКСМО, 2016. – 128 с.

80

You might also like