Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

_TPLab_My_Посібник

.pdf
Скачиваний:
20
Добавлен:
08.06.2015
Размер:
1.85 Mб
Скачать

1.З елементів стеку сформувати дві черги – одну з елементів стеку з непарними номерами, другу – з парними. Порядок елементів кожної черги повинен збігатись з порядком елементів у стеку.

2.Використовуючи стек, перевірити баланс круглих дужок в арифметичному виразі.

3.Використовуючи стек, перевірити баланс операторних дужок Begin…End в заданій програмі.

121

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

ЛАБОРАТОРНА РОБОТА № 14 Графіка в Turbo Pascal.

МЕТА РОБОТИ: Навчитись проектувати алгоритми та програми опрацювання даних з використанням процедур та функцій графічного режиму Turbo Pascal.

ЗАВДАННЯ:

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

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

1.Перед виконанням роботи необхідно пригадати:

логічну структуру програми на мові Turbo Pascal;

правила опису простих та структурованих типів даних;

правила запису виразів;

синтаксис основних операторів;

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

2.Перед виконанням цієї роботи необхідно вивчити:

правила ініціації графічного режиму;

синтаксис основних вбудованих функцій Turbo Pascal керування екраном в графічному режимі.

3.Перевірка правильності роботи програми здійснюється шляхом виведення на екран результатів роботи програми.

ВІДОМОСТІ З ТЕОРІЇ.

Використання основних функцій Turbo Pascal керування екраном в графічному режимі продемонструємо на прикладі наступної програми.

Програма № 1 Uses Graph;

Var Grd, GrM : integer; i, Radius : byte;

Begin

GrD := Detect;

{Ініціюємо графічний режим }

InitGraph (GrD, GrM, 'z:\bp\bgi\');

{Наступний оператор нарисує точку червоного кольору (Red) у центрі екрану. Функція GetMaxX повертає значення горизонтального розміру екрану, а GetMaxY – вертикального. За допомогою цілого ділення div на 2 - одержимо координати центру екрану. }

PutPixel (GetMaxX div 2, GetMaxY div 2, Red);

Rectangle (0, 0, GetMaxX, GetMaxY);

{ прямокутна рамка максимального розміру }

Line (100, 50, 250, 150);

{ рисуємо лінію }

LineTo (50, 50);

{ рисуємо ще одну лінію }

{ Зверніть увагу на те, що оператор Line не перемістив невидимий курсор з початкових координат (0,0). Але після виконання оператора LineTo (50, 50) курсор перемістився в точку з координатами

(50,50). Як це перевірити? }

Bar (300,150,550,300); {зафарбований прямокутник}

{ Два наступні оператори намалюють прямокутний стовпець в проекції: }

Bar3D(10,300,30,150, 10, TopOn);

Bar3D(50,300,70,150, 10, TopOn);

{Тепер нарисуємо такі ж самі, але зміщені вправо i без верхівки}

Bar3D(110,300,130,150, 10, TopOff);

Bar3D(150,300,170,150, 10, TopOff);

122

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

{Оператор Cirle (X,Y,R) рисує коло з координатами X,Y і радіусом R }

Circle (300, 100, 20);

{Оператор Ellipse (X,Y, Fi1, Fi2, XRadius, YRadius) рисує еліпс, розташований у координатах X,Y, що починається з кута Fi1 i закінчується Fi2, а також має радіуси XRadius, YRadius }

Ellipse (400,

100,

0,

360, 30, 50);

Ellipse (400,

100,

0,

180, 50, 30);

{ Оператор Arc (X,Y, Fi1, Fi2, Radius) рисує дугу з центром в точці (X,Y) з кута Fi1 до кута Fi2 і радіусом Radius. Нарисуємо декілька дуг з одним центром }

For Radius := 1 To 6 Do Arc(100, 400, 0, 90, Radius * 10);

{ Оператор PieSlice (X, Y, Fi1, Fi2, Radius) має параметри, аналогічні оператору Arc, але рисує сектор

}

PieSlice(200, 400, 0, 140, 40);

{ Оператор Sector (X, Y, Fi1, Fh2, XRadius, YRadius) рисує зафарбований еліпсоїдальний сектор }

Sector(400, 450, 0, 170, 30, 100);

Readln;

CloseGraph;

{закриття графічного i повернення в текстовий режим }

End.

КОНТРОЛЬНІ ЗАПИТАННЯ.

1.Як працюють графічні оператори InitGraph, Detect, CloseGraph, Line, LineTo, Rectangle, MoveTo, Bar, Bar3D, Circle, Ellipse, Arc, PieSlice, Sector?

2.Які координати екрану монітора можуть існувати в графічних режимах комп`ютера?

3.Які кольори можна використовувати в графічному режимі?

4.Які проблеми виникають при побудові графіків на екрані комп’ютера?

5.Для чого потрібно знати мінімальне значення функції?

6.Що таке масштабний коефіцієнт i для чого він потрібен?

7.Чому, якщо не вжити спеціальних заходів, графіки будуються у перевернутому вигляді?

8.Які оператори забезпечують виведення на екран текстової інформації в графічному режимі?

ЗАВДАННЯ 1:

1.Вивести на екран веселку, що складається з півкіл червоного, жовтого та синього кольорів на білому тлі.

2.Нарисувати на екрані прапор України на щоглі (співвідношення сторін 2:3)

3.Вивести на екран еліпс зі співвідношенням сторін 2:4 синього кольору та вписати в нього коло жовтого кольору.

4.Вивести на екран прапор Угорщини (співвідношення сторін 2:3, складається з горизонтальних рівних за розміром смуг червоного, білого та зеленого кольорів)

5.Вивести на екран прапор Франції (співвідношення сторін 2:3, складається з трьох вертикальних рівних за розміром смуг синього, білого та червоного кольорів)

6.Вивести на екран 2 кола з радіусами та центрами, що вводить користувач. Якщо кола перетинаються, спільну область зафарбувати.

7.Вивести на екран довільний прямокутник, розмір сторін, положення на екрані та колір якого генеруються автоматично. Прямокутник не повинен виходити за межі екрану.

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

123

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

9.Вивести на екран правильний n-кутник щоразу нового кольору, де n=3,4,6 – вводить користувач.

10.Вивести на екран 2 квадрати з розміром сторони 50 точок. Квадрати не повинні виходити за межі екрану і перетинатися.

ЗАВДАННЯ ДЛЯ САМОСТІЙНОГО ВИКОНАННЯ.

Завдання 2. Побудова графіку функції.

1.Визначте крок зміни аргументу функції Y=F(X) (табл.1) відповідно до початкових та кінцевих його значень та режиму обраного графічного екрану (y Вашому випадку — це 640 точок по горизонталі та

480– по вертикалі).

2.Протабулюйте функцію і сформуйте масив значень функції з кількістю елементів, що відповідає розміру екрану по горизонталі.

3.Знайдіть мінімальне та максимальне значення функції.

4.Визначте масштабний коефіцієнт по вертикалі, який має дорівнювати 480/(MAX-MIN).

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

6.Побудуйте осі координат (процедури Line (...) або LineTo(...) ).

7.Зробіть підписи до графіку (Процедури OutText(...) або OutTextXY(...) ).

Таблиця 1.

Функція

Інтервал

1

Y log

2

(x2

2x 3)

-3; 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

Y 2x e 3x

 

 

 

 

 

-2; 2.2

3

Y 4 cos(x)/(1 x2)

-2 ; 2

 

Y

 

cos(x)/

 

 

 

 

 

 

 

 

4

 

 

 

 

x 1

0; 2

 

 

 

 

 

 

 

 

 

 

 

 

 

5

Y ((2x 1)/(x2 x 1))3

-5; 0

6

Y 4/(x2 x 1)

-4; 0.5

7

Y

 

(x 3)/(x 4)

 

 

-4; 3

 

 

 

 

 

 

 

 

 

 

 

8

Y (1 x2)/(x 2,1)

-4;-2.2

9

Y cos((1 x2)/(1 x2))

-3; 1

0

Y cos(log

2

x)

0.1; 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

Y cos(2x)+ sin(x5)

-6; 0

12

Y 2x sin( x/4)-cos(x)

-2 ; 2

13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y 3 x2 x +x3-x2

-5; 0

 

14

Y

 

(sin(x)

 

sin(x))/2

-2 ; 2

 

 

 

 

 

 

15

Y (5x2

32)/(1 x2 x3)

-5; 3

16

Y ex sin(x)+√x7

- ; /2

17

Y 2x e 3x + x17

-2; 2,5

18

Y tg(x) 2x- cos(2x+1)

- /3; 2 /3

19

Y x2 x4+ ctg(x7-1)

-3; 5

20

Y sin(3 sin(x)) + tg(xcos(x3))

- ;

124

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

ДОДАТКИ

Додаток 1.

Основні графічні символи, що застосовуються при проектуванні блок-схем алгоритмів

Назва блоку

Графічне позначення

Дії, що

 

 

блоку

виконуються

 

 

 

 

 

 

 

 

 

 

 

Початок, кінець,

Початок -

 

 

 

 

 

 

переривання

зупинка

 

 

 

 

 

 

процесу чи обробки

 

 

 

 

 

 

 

виконання програми

 

 

 

 

 

 

 

Виконання операцій,

 

 

 

 

 

 

 

в результаті якої

 

 

 

 

 

 

 

Процес

 

 

 

 

 

 

змінюється

 

 

 

 

 

 

 

значення, форма чи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

представлення даних

Модифікація

 

 

 

 

 

Виконання операцій,

(заголовок

 

 

 

 

 

 

що змінюють

циклу

із

 

 

 

 

 

команди, групи

заданим

 

 

 

 

 

 

команд, або

числом

 

 

 

 

 

 

програму

повторень)

 

 

 

 

 

 

 

Визначений

 

 

 

 

 

Використання

процес

 

 

 

 

 

 

раніше створених,

 

 

 

 

 

 

(підпрограма)

 

 

 

 

 

або окремо

 

 

 

 

 

 

 

написаних

 

 

 

 

 

 

 

 

 

 

 

 

 

 

алгоритмів програм

 

 

 

 

 

 

 

Вибір напрямку

 

 

 

 

 

 

 

виконання

Рішення

 

 

 

 

 

 

алгоритму в

 

 

 

 

 

 

 

залежності від

 

 

 

 

 

 

 

деяких змінних умов

Введення

 

Перетворення даних

виведення

 

у форму, придатну

даних

 

для опрацювання

 

 

(введення), чи

 

 

відображення

 

 

результатів обробки

 

 

(виведення)

З'єднувач

 

Розрив лінії потоку

сторінковий

 

інформації

 

 

 

З'єднувач

 

Розрив лінії потоку

міжсторінко-

 

між сторінками

вий

 

 

 

 

 

Додаток 2.

Зразок файлу автозавантаження драйвера KEYRUS та IDE Turbo Pascal

125

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

1.Дистрибутив Borland Pascal for Windows розмістити на логічному диску, на якому буде здійснюватись установка програми (наприклад – D).

2.Запустити інсталятор (Install), який запропонує установити BPW в каталог D:\BP.

3.В цьому ж каталозі розмістити папку драйвера KEYRUS.

4.В Блокноті створити наступний файл:

@echo off

D:\BP\KEYRUS\keyrus.com /keyboard=On interfase=On /scan=29e /alt=29e /lat=29e /rusalt=on /beep=on /color=red, 0 /save

D:\BP\BIN\turbo.exe

5.Зберегти текстовий файл з розширенням .bat (наприклад BPDos.bat) на робочому столі.

6.Перемикання з латини на кирилицю та навпаки здійснюється клавішею RightShift (правий Shift).

Додаток 3.

ЗРАЗКИ ВКАЗІВОК ШЛЯХІВ ДО ПАПОК

ВIDE Turbo Pascal.

1.В діалоговому вікні Options → Directories… прописуємо шлях до папки, в якій будуть зберігатись відкомпільовані (з розширенням .exe) файли користувача – TP_PROGI, та шлях до папки, в якій будуть розміщені модулі Turbo Pascal – UNITS.

2. В діалоговому вікні File → Change dir… прописуємо шлях до папки, в якій будуть зберігатись файли текстів програм (з розширенням .pas).

126

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

3. В діалоговому вікні Options здійснимо запис зроблених змін у файл Turbo.TP

Додаток 4.

ЗРАЗОК ОРГАНІЗАЦІЇ ДРУЖНЬОГО ІНТЕРФЕЙСУ КОРИСТУВАЧА. Program lab2;

Uses CRT; (*підключення модуля керування екраном *)

(* в текстовому режимі

*)

Label 777; (* мітка для оператора переходу GoTo

*)

Var dilene,dilnik,ostacha: integer;

 

(*ostacha – залишок від ділення dilene на dilnik *) oznaka: char; (* ознака продовження (Y) роботи *)

Begin

ClrScr; (* очистка екрану *) Writeln (' Лабораторна робота №2'); Writeln (' Завдання №1, варіант №1');

Writeln (' Роботу виконав ст.гр.1М Петренко П. '); Writeln ('Програма цілочислового ділення ');

777: Writeln ('Введіть ділене - ціле число з діапазону -32768..32767'); Write ('Ділене = ');

Readln(dilene);

Writeln ('Введіть дільник - ціле число з діапазону –32768..32767'); Write ('Дільник = ');

Readln(dilnik);

If ABS(dilene)<ABS(dilnik)

Then Writeln (' Модуль діленого менший модуля дільника ')

Else Begin

ostacha:= dilene mod dilnik;

If ostacha=0 Then Writeln (' Число ',dilene,'ділиться націло на ',dilnik)

Else Writeln (' Залишок від ділення ', dilene ,' на ',dilnik,' рівний

',ostacha)

End;

Writeln (' Програма роботу закінчила ');

Writeln (' Для продовження роботи з початку введіть Y'); Writeln (' Для завершення роботи введіть N');

Read (oznaka);

If oznaka='Y' Then GoTo 777

End.

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

Додаток 5.

ЗРАЗОК ТАБЛИЦІ СПЕЦИФІКАЦІЇ ЗМІННИХ

№ Сутність Ідентифікатор Тип та діапазон Об’єм

127

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

 

(семантика)

 

допустимих

пам’яті,

 

змінної

 

значень

байт

1

Ділене

Dilene

Integer:

2

 

 

 

32768..32767

 

 

 

 

2

Дільник

Dilnik

Integer:

2

 

 

 

32768..32767

 

 

 

 

3

Остача

Ostacha

Integer:

2

 

 

 

32768..32767

 

 

 

 

4

Символ

Oznaka

Char: 'Y', 'N'

1

Додаток 6.

ЗРАЗОК ТАБЛИЦІ СПЕЦИФІКАЦІЇ ПРОЦЕДУР І ФУНКЦІЙ

В програмі використовується стандартна функція цілочислового ділення MOD, яка повертає остачу (ціле число) від ділення цілих чисел. Також використовується стандартна функція ABS(х), яка повертає модуль числа х.

 

Призначення

Ім’я

 

 

Тип

 

Результат,

 

 

 

 

 

 

 

 

 

 

аргументів

 

 

тип

 

 

 

1

 

Цілочислове

MOD

 

Цілий

Остача від

 

 

 

 

 

ділення

 

 

 

 

 

 

 

 

ділення,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цілий

 

 

 

2

 

Модуль

 

 

ABS

 

Цілий або

Модуль

 

 

 

 

 

 

 

 

 

 

дійсний

аргументу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

того ж типу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Додаток 7.

 

ОСНОВНІ СТАНДАРТНІ ФУНКЦІЇ Turbo Pascal

Ідентифікатор

 

Призначення

 

 

Тип

 

 

Тип

 

 

 

функції

 

 

 

 

 

 

 

аргументу

результату

 

 

Abs(X)

 

Обчислення

 

 

 

Real

 

 

Real

 

 

 

 

 

 

абсолютного

 

 

 

Integer

 

 

Integer

 

 

 

 

 

 

значення Х

 

 

 

 

 

 

 

 

 

 

Arctan(X)

 

Обчислення

 

 

 

Real

 

 

Real

 

 

 

 

 

 

арктангенса Х

 

 

Integer

 

 

Real

 

 

Sin(X)

 

Обчислення

 

 

 

Real

 

 

Real

 

 

 

 

 

 

синуса Х

 

 

 

Integer

 

 

Real

 

 

Cos(X)

 

Обчислення

 

 

 

Real

 

 

Real

 

 

 

 

 

 

косинуса Х

 

 

 

Integer

 

 

Real

 

 

Exp(X)

 

Обчислення

 

 

 

Real

 

 

Real

 

 

 

 

 

 

експоненти

 

 

 

Integer

 

 

Real

 

 

Ln(X)

 

ln Х

 

 

 

 

 

Real

 

 

Real

 

 

 

 

 

 

 

 

 

 

 

 

Integer

 

 

Real

 

 

Sqr(X)

 

Обчислення Х2

 

 

Real

 

 

Real

 

 

 

 

 

 

 

 

 

 

 

 

Integer

 

 

Integer

 

 

 

 

 

 

 

 

 

 

 

 

 

Sqrt(X)

 

Обчислення √Х

 

 

Real

 

 

Real

 

 

 

 

 

 

 

 

 

 

 

Integer

 

 

Real

 

 

Trunc(X)

 

Визначення

 

 

 

Real

 

 

Integer

 

 

 

 

 

 

цілої частини Х

 

 

Integer

 

 

Integer

 

 

Round(X)

 

Округлення Х в

 

 

Real

 

 

Integer

 

 

 

 

 

 

сторону

 

 

 

Integer

 

 

Integer

 

 

 

 

 

 

найближчого

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цілого

 

 

 

 

 

 

 

 

 

 

Odd(X)

 

True, якщо Х -

 

 

Integer

 

 

Boolean

 

 

128

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

 

непарне False,

 

 

 

якщо Х - парне

 

 

Succ(X)

а) х+1

Integer

Integer

 

б) наступний

Char

Char

 

символ після Х

 

 

 

у впорядкованій

 

 

 

множині

 

 

 

символів

 

 

Pred(X)

а) Х -1

Integer

Integer

 

б) попередній

Char

Char

 

до Х символ у

 

 

 

впорядкованій

 

 

 

множині

 

 

 

символів

 

 

Ord(S)

порядковий

Char

Integer

 

номер символу

 

 

 

S у

 

 

 

впорядкованій

 

 

 

множині

 

 

 

символів

 

 

Chr(I)

визначає

Integer

Char

 

символ під

 

 

 

номером I у

 

 

 

впорядкованій

 

 

 

множині

 

 

 

символів

 

 

Література.

1.IEEE Std 1074-1995. IEEE Standard for Developing Software Life Cycle Processes (ANSI).

2.ДСТУ 2938-94. Системи оброблення інформації. Основні поняття. Терміни та визначення. – К. : Вид-во Держстандарт України, 1995. – 32 с.

3.ДСТУ 2940-94. Системи оброблення інформації. Керування процесами оброблення даних. Терміни та визначення. – К. : Вид-во Держстандарт України, 1995. – 32 с.

4.ДСТУ 2941-94. Системи оброблення інформації. Розроблення систем. Терміни та визначення. - К.: Вид-во Держстандарт України, 1995.-19 с.

5.ДСТУ 3918-1999 (ISO/IEC 12207:1995). Інформаційні технології. Процеси життєвого циклу програмного забезпечення. – К. : Вид-во Держстандарт України, 2000. – 57с.

6.ДСТУ ISO/IEC TR 15504-1-7-2002. Інформаційні технології. Оцінювання процесів життєвого циклу програмних засобів. – К. : Вид-во Держстандарт України, 2003

7.Ахо А.В., Хопкрофт Д.Е., Ульман Д.Д. Структуры данных и алгоритмы. : Пер. с англ. : Уч. пос.–М.:

Вильямс, 2000.–384 с.

8.Вирт Н. Алгоритмы и структуры данных. – М.: Мир, 1989. – 360 с.: ил.

9.Грин Д., Кнут Д. Математические методы анализа алгоритмов. – М.: Мир, 1987. – 120 с.

10.Гудзь Р. В., Ярошко С. А. Використання динамічних структур даних у програмах на Borland Pascal: Тексти лекцій. – Львів: Ред.-вид. відділ ОЦ ЛНУ ім. І. Франка, 2000. – 49 c.

11.Дал У., Дейкстра Э., Хорр С. Структурное программирование. Пер. с англ. - М. : Мир, 1975 – 247 с.

12.Дейкстра Э. Дисциплина программирования. Пер. с англ.– М.: Мир, 1978 – 275 с.

13.Кнут Д. Искусство программирования. 3-е изд. – М.: «Вильямс», 2006. – Т.1-3.

14.Кормен Т. и др., Алгоритмы: построение и анализ, 2-е изд.: Пер. с англ. – М.: Вильямс, 2005. – 1296

с.

15.Левитин А.В. Алгоритмы: введение в разработку и анализ. : Пер. с англ. — М. : Вильямс, 2006. —

576с. : ил.

129

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)

16.Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Учебник для вузов. –

СПб.: Питер, 2007. – 393 с.: ил.

17.Трохименко В.В. Конспект лекцій з математичної логіки та теорії алгоритмів. – Вінниця, 2007. – 85

с.

18.Фаронов В.В. Турбо Паскаль. – СПб.: БХВ – Петербург, 2004. – 1056 с.

130

Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/)