Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка_Pascal.doc
Скачиваний:
7
Добавлен:
13.11.2019
Размер:
5 Мб
Скачать
☆

2.3Приклад виконання завдання.

Задано вирази: Z(x,y)=arctg(xy)(x2y2+2) і W(x,y)= . Умова Р: x2y2 4 і x<1.

Скласти блок-схему алгоритму та програму, яка б обчислювала задані вирази для довільних x, y та виводила б повідомлення про виконання умови.

2.3.1Постановка задачі.

Проаналізуємо дані.

Константи: 2,4,-1  цілі числа; =3.141592  дійсне.

Вхідні дані: змінні x,y дійсні.

Вихідні дані: змінні Z, W дійсні; повідомлення: “Умова Р виконується” та “Умова Р не виконується”.

Для спрощення виразів і зменшення кількості математичних операцій впровадимо такі змінні: a:=xy; b:=a2, тоді Z:=arctg(a)(b+2); W:= ; умова Р: b4 і 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

дійсна

xy

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’.