- •Лабораторний практикум
- •Міністерство освіти і науки україни національний університет “львівська політехніка” лабораторний практикум з дисципліни
- •0. Методичні вказівки до оформлення звітів з лабораторних робіт 6
- •1. Лабораторна робота №1
- •Передмова.
- •0.Методичні вказівки до оформлення звітів з лабораторних робіт
- •1.2Завдання.
- •Розділ і. Базові структури алгоритмів.
- •1.Лабораторна робота №1
- •1.1Перелік питань, які необхідно вивчити.
- •1.3Методичні вказівки до виконання роботи № 1.
- •1.4Приклад виконання завдання.
- •1.4.1Постановка задачі.
- •1.4.2Розробка структури даних.
- •1.4.7Висновки.
- •2.Лабораторна робота №2
- •2.1Перелік питань, які необхідно вивчити.
- •2.2Завдання.
- •2.3Приклад виконання завдання.
- •2.3.1Постановка задачі.
- •2.3.2Розробка структури даних.
- •2.3.3Розробка блок-схеми алгоритму.
- •2.3.4Перевірка блок-схеми.
- •2.3.5Запис тексту програми.
- •3.1.2Виведення даних.
- •3.2Завдання.
- •3.3Методичні вказівки до лабораторної роботи.
- •3.3.1Постановка задачі.
- •3.3.2Розробка структури даних.
- •3.3.3Розробка алгоритму.
- •3.3.4Розробка програми.
- •Розділ іі. Використання числових і символьних змінних
- •4.3Методичні вказівки до роботи.
- •4.3.1Методи переведення в двійкову систему числення.
- •4.3.1.1Метод ділення.
- •4.3.1.2Метод віднімання.
- •4.3.1.3Метод маскування або логічного множення.
- •5.Лабораторна робота №5.
- •5.1Теоретичні відомості.
- •5.1.1Відомості з математики.
- •5.1.2Відомості з програмування.
- •5.2Завдання.
- •Розділ ііі. Циклічні алгоритми
- •6.Лабораторна робота №6
- •6.1Перелік питань, які необхідно вивчити для виконання роботи.
- •6.2Завдання.
- •6.3Приклад виконання завдання.
- •6.3.1Постановка задачі.
- •6.3.2Розробка структури даних.
- •6.3.3Розробка алгоритму
- •6.3.4Текст програми.
- •7.3Приклад виконання завдання.
- •7.3.1Постановка задачі.
- •7.3.2Розробка структури даних.
- •7.3.3Розробка алгоритму
- •7.3.4Текст програми мовою Pascal.
- •8.3Методичні вказівки до виконання роботи.
- •8.3.1Постановка задачі.
- •8.3.2Розробка структури даних.
- •8.3.3Розробка алгоритму.
- •Розділ іv. Обробка і використання масивів
- •9.3Приклад виконання завдання.
- •9.3.1Постановка задачі.
- •9.3.2Розробка структури даних.
- •9.3.3Розробка алгоритму.
- •9.3.4Запис тексту програми.
- •11.1.2Програмна реалізація розріджених масивів.
- •11.1.3Метод Гауса обчислення визначника матриці довільного розміру n*n.
- •11.2Завдання.
- •11.3Приклад алгоритму обчислення детермінанту.
- •Розділ V. Методи комп’ютерної графіки
- •12.Лабораторна робота №12.
- •12.1Теоретична частина
- •12.1.1Відомості з програмування.
- •12.1.2Перелік питань, які необхідно вивчити для виконання роботи.
- •12.2Завдання до лабораторної роботи.
- •12.3Методичні вказівки до виконання роботи
- •13.Лабораторна робота №13.
- •13.1Теоретична частина.
- •13.1.1Числовий опис зображення.
- •13.1.2Перетворення координат точки при її відображеннях.
- •13.1.3Питання, які необхідно вивчити.
- •13.2Завдання.
- •13.3Методичні вказівки до виконання роботи.
- •13.3.1Постановка задачі.
- •13.3.2Розробка структури даних.
- •13.3.3Розробка алгоритму.
- •13.3.4Запис тексту програми.
- •13.3.5Налагодження та результати тестування.
- •14.Лабораторна робота №14
- •14.1Перелік питань, які необхідно вивчити для виконання роботи.
- •14.2Теоретичні відомості.
- •14.3Завдання до лабораторної роботи.
- •15.2Завдання.
- •Розділ VI. Деякі математичні методи
- •15.Лабораторна робота №15
- •15.1Теоретична частина.
- •15.1.1Основні статистичні характеристики.
- •15.1.2Гістограма розподілу числових даних.
- •15.1.3Питання, які необхідно вивчити для виконання роботи.
- •16.2Завдання.
- •16.3Методичні вказівки до виконання роботи.
- •16.3.1Постановка задачі.
- •16.3.2Розробка структури даних.
- •16.3.3Розробка алгоритму.
- •16.3.4Написання тексту програми.
- •17.1.2Системи диференційних рівнянь.
- •17.1.3Форми подання результатів.
- •17.1.4Питання, які необхідно вивчити.
- •17.2Завдання.
- •17.3Методичні вказівки до виконання роботи.
- •17.3.1Постановка задачі.
- •17.3.2Розробка структури даних.
- •17.3.3Розробка алгоритму.
- •17.3.4Написання тексту програми.
- •17.3.5НАлагодження і тестування.
- •Список літератури.
2.3Приклад виконання завдання.
Задано вирази: Z(x,y)=arctg(xy)(x2y2+2) і W(x,y)= . Умова Р: x2y2 4 і x<1.
Скласти блок-схему алгоритму та програму, яка б обчислювала задані вирази для довільних x, y та виводила б повідомлення про виконання умови.
2.3.1Постановка задачі.
Проаналізуємо дані.
Константи: 2,4,-1 цілі числа; =3.141592 дійсне.
Вхідні дані: змінні x,y дійсні.
Вихідні дані: змінні Z, W дійсні; повідомлення: “Умова Р виконується” та “Умова Р не виконується”.
Для спрощення виразів і зменшення кількості математичних операцій впровадимо такі змінні: a:=xy; b:=a2, тоді Z:=arctg(a)(b+2); W:= ; умова Р: b4 і x<-1.
Ескіз формату введення/виведення даних:
Введіть значення x,y: 1, 3 <Enter>
Умова Р (не) виконується
Q= xxxxxxx
2.3.2Розробка структури даних.
Згідно проведеного аналізу здійснюється розробка структури даних, яка враховує вхідні, вихідні та проміжні змінні. Приклад розробки стуктури даних наведено в Табл. 2 .4.
Табл. 2.4. Приклад розробки структури даних.
№пп |
Позначення |
Ім’я |
Тип |
Призначення, опис |
1 |
x |
x |
дійсна |
Аргумент функції, вхідна |
2 |
y |
y |
дійсна |
Аргумент функції, вхідна |
3 |
Q |
Q |
дійсна |
Значення функції, вихідна |
4 |
a |
a |
дійсна |
xy |
5 |
b |
b |
дійсна |
a2 |
6 |
|
Pi |
дійсна константа |
Число |
7 |
|
t1 |
символьна |
Повідомлення: “Умова Р” |
8 |
|
t2 |
символьна |
Повідомлення: “виконується” |
2.3.3Розробка блок-схеми алгоритму.
Блок-схеми алгоритму наведено на Error: Reference source not found.
Рис. 2.1. Приклад блок-схеми алгоритму з розгалуженням.
2.3.4Перевірка блок-схеми.
Перевірку блок-схеми треба виконати для випадків як виконання так і невиконання умови Р.
2.3.5Запис тексту програми.
При написанні тексту програми особливу увагу треба зосередити на записі складної умови за допомогою логічних функцій. Для зміни пріорітету або при непевності в черговості виконання операцій EOM слід використовувати дужки “()”. Приклад тексту програми:
Program lab2; {Лаб. роб. №2}
const t1:string=‘Умова Р ’;
t2:string=‘виконується’;
var x,y,a,b,Q:real;
begin
write(‘Введіть значення x, y’);
readln(x,y);
a:=x*y;b:=a*a;
if (b<=4) AND (x<1) then
begin
Q:=arctan(PI*a)(b+2);
writeln(t1,t2)
end
else
begin
Q:=sqrt(4+b)a;
writeln(t1,’ не ’,t2)
end;
writeln(‘Q=‘,Q);
end.
2.4Тестування та налагодження.
В цьому розділі вказуються помилки, які були виявлені під час набору та тестування програми. Наводяться результати роботи програми для декількох різних x та y, таких що задовольняють та не задовольняють умову Р. Наприклад:
Введіть значення x,y: 1,2 <Enter>
Умова Р не виконується
Z=.235494 W=.828427
2.5Висновки.
Студенти наводять декілька власних висновків, які вони зробили в процесі розробки блок-схеми, запису та її виконання.
3.Лабораторна робота №3
Введення виведення даних
Мета роботи: виробити практичні навики застосування операторів введення виведення даних, доступу до файлів, керованого виведення.
3.1Теоретична частина.
3.1.1Введення даних.
Оператори введення даних заносять в комірки пам’яті значення, отримані від зовнішнього пристрою (клавіатура, файл, мишка тощо). Введення даних в Турбо-Паскалі, орієнтоване на файли, будемо називати “введення раніше підготованих даних”. У Турбо-Паскалі передбачена робота із трьома типами файлів: типізованими, не типізованими та текстовими. Для роботи із файлами необхідно оголосити змінні файлового типу. Наприклад:
var f1:file; {змінна для не типізованих файлів}
var f2: file of byte; {змінна для типізованих файлів – в даному випадку у файлі }
{зберігатимуться тільки змінні з типом byte}
var f3: text; {змінна для текстових файлів}
Для введення інформації використовуються дві процедури вигляду
Read(f, a1,a2,..,ak); Readln(f, a1,a2,..,ak);
де f-ім’я файлової зміної, а1,..ak- імена елементарних змінних.
Загальні правила застосування вище згаданих процедур до текстових файлів такі:
зчитуватись (вводитись) можуть тільки дані цілих, дійсних типів та типу char;
перед числами допустиме використання знаків “+”,”“;
символьні значення подаються без апострофів;
значення відділяються одне від одного пропусками (одним чи більше);
Перед читанням значень необхідно під’єднати файлову змінну до певного файлу на зовнішньому носії та відкрити файл для читання (тобто встановити вказівник на початок файлу) :
Assign(f, ‘dani.dat’); Reset(f);
Після цього процедура Read(f, a1,a2,..,ak); читатиме дані з файлу, до якого під’єднана вказана в процедурі файлова змінна, і заноситиме значення в комірки з іменами а1,a2,..ak. Як тільки перелік змінних вичерпається, дія процедури Read закінчується. Після кожного зчитування вказівник в файлі пересувається до наступного значення. Спроба зчитати значення після закінчення файлу викличе помилку. Повторне зчитування записаних в файл значень можливо лише після виконання процедури Reset(f), яка переведе вказівник на початок файлу (нульовий елемент), або Seek(f,n), яка переведе вказівник на n-й елемент файлу. Остання поцедура може застосовуватись тільки до типізованих файлів створених користувачем, а не до текстових файлів. Після завершення операцій із файлом, його необхідно обов’язково закрити за допомогою процедури Close(f). Розглянемо приклад зчитування даних з файлу ‘dani.dat’:
Program Vvid;
var f:text; {текстовий файл }
a,b,c:byte;
Begin
Assing(f, ‘dani.dat’); {нехай файл dani.dat містить:1 2 3 4 5 6}
Reset(f); {відкриваємо файл для читання}
Read(f,a,b,c); {результат читання: a=1,b=2,c=3}
Read(f,a,b,c); {а тепер: a=4,b=5,c=6}
Reset(f); {перевести на початок}
Read(f,a,c); {результат читання: a=1,c=2}
Read(f,a,b,c); {тепер a=3,b=4,c=5}
Read(f,a,b); {a=6, читання b спричиняє помилку, адже ми досягнули}
{кінця файлу}
Close(f); {не забуваємо закрити файл !!!}
ЕND.
Оскільки в процедурі Read вказуються імена комірок, куди будуть заноситись дані, то цих імен стосуються всі застереження, що стосуються лівої частини оператора присвоєння - вони не можуть бути константами чи виразами. Якщо тип чергового значення в файлі вводу не відповідатиме типу змінної, яка зчитується, це також викличе помилку, як і присвоєння між несумісними типами.
Процедура Readln відрізняється від процедури Read тим, що після закінчення вводу значень у вказані змінні вказівник пересувається до відмітки “кінець рядка” (для текстових файлів), тобто значення між останім зчитаним і кінцем рядка ігноруються.
Введення раніше підготованих даних доцільно застосовувати для зчитування порівняно великих обсягів даних, які рідко змінюються при повторних виконаннях програми. Для занесення порівняно невеликої кількості часто змінюваних даних, а також для забезпечення діалогового режиму роботи ЕОМ використовується введення даних з клавіатури, а також константи (рідко змінювані дані). Для реалізації такого введення достатньо вказати ім’я зовнішнього файлу ‘con’ (консоль) в операторі під’єднання: Assign(f,’con’), або взагалі не вказувати ім’я файлової зміної в операторі вводу: Read(a,b,c). При виконанні такого оператора комп’ютер чекає, доки користувач набере відповідні значення (числового або символьного типів) або розділені пропусками декілька значень і тільки після натискання клавіши [Ввід] ([Enter]) ці значення будуть занесені у відповідні комірки пам’яті і робота програми відновиться.
Серйозною проблемою при організації введення даних є висока ймовірність помилкового скеровування значень у невідповідні комірки. Для зменшення ймовірності помилки рекомендується перед введенням з клавіатури виводити на екран повідомлення про кількість, тип та призначення даних, які вводятся.
Ще оперативнішим методом введення є введення одного символу, який не вимагає натиснення клавіши [Enter] після кожного значення, але дозволяє надавати значень тільки зміним типу char. Здійснюється ввід за допомогою функції Readkey (читай клавішу). Функція ReadKey розташована у модулі Crt, тому перед її використанням необхідно приєднати згаданий модуль до програми. Наприклад:
Program Keyread;
uses crt; {приєднуємо модуль Crt}
var a,b,c: char;
Begin
a:=Readkey;
b:=Readkey;
c:=Readkey;
END.
Ця програма не закінчится, доки користувач не натисне трьох клавіш. Якщо це були клавіші E, o, n- то змінні набудуть значень: a - ‘E’, b - ‘o’,c - ‘n’.
