Смекни!
smekni.com

Програмування в середовищі Pascal (стр. 16 из 16)

Позначимо через kX і kY відношення меж зміни екранних і математичних координат уздовж осі X і У відповідно:

GetMaxX GetMaxY

kX kY (1)

X max X min , Y max Y min

де kX і kY – це коефіцієнти пропорційності (або масштабні множники). Тоді математичні координати крапки (X,Y) перетворюються в екранні

(Xэ,Yэ) таким чином:

XэX max X kX , Yэ Ymax Y kY (2)

Визначення коефіцієнтів kX і kY (1) винесемо в процедуру InitMat, а власне перетворення (2) – у функції EkrX(x)і EkrY(y). Помістимо ці підпрограми разом з необхідними змінними в окремий зовнішній модуль ModGr:

{-Інтерфейс математичних і екранних координат } unit ModGr; interface procedure InitMat; function EkrX(X: Real): Integer; function EkrY(У: Real): Integer;

var XMax, XMin, YMax, YMin, KX, KY : Real; X0, Y0: Integer; var Gd, Gm : Integer; implementation uses Graph,Crt;

{--- Процедура ініціалізації інтерфейсу------} procedure InitMat; begin

InitGraph(Gd, Gm, ''); {Ініціалізація графіки }

KX := GetMaxX / (XMax - XMin);

KY := GetMaxY / (YMax - YMin);

X0 := EkrX(0); Y0 := EkrY(0); end;

{---------- Інтерфейс по координаті X ----------} function EkrX; begin

EkrX := Round((X - XMin) * KX) end;

{----------- Інтерфейс по координаті У ---------} function EkrY; begin

EkrY := Round((YMax - У) * KY) end; end.

Слід нагадати, що зовнішній модуль компілюється в окремий файл. На магнітному диску буде освічений файл ModGr.tpu, який можна використовувати в будь-якій програмі, помістивши у неї оператор USES ModGr;

Тепер можемо писати конкретні програми.

Приклад 6a. Побудувати графік довільної функції y=f(x). Область визначення функції (інтервал зміни X) задавати у діалозі.

{------ Програма малювання графіка функції ------} program LAB6a; uses Graph, ModGr, Crt; var Gd, Gm : Integer;

Xn, Xk, h, x, у : Real;

{----------------- Функція ----------------------} function F(X : Real) : Real; begin

F :=cos(2 * x * x); end;

{------------ Процедура табуляції ---------------} procedure TabFunc( Xn, Xk, h: real); var X, У : Real; begin X := Xn;

YMax := 0; YMin :=0; while X<= Xk do begin

У := F(X); if У > YMax then YMax := У; if У < YMin then YMin := У;

X := X + h end;

XMin := Xn; if XMin > 0 then XMin := 0; XMax := Xk; if XMax < 0 then XMax := 0; end;

{---------------Основна програма ----------------} begin

WriteLn('Введите Xn, Xk, h'); ReadLn(Xn, Xk, h);

TabFunc(Xn, Xk, h);

InitMat;

Line(X0, 0, X0, GetMaxY);

Line(0, Y0, GetMaxX, Y0); X := Xn; while X<= Xk do begin

У := F(X);

PutPixel(EkrX(X), EkrY(Y), 7+128); X := X + h end;

ReadKey;

CloseGraph; { Відключення графіки } end.

Приклад 6b. У масив А вводиться значення деякого показника, наприклад об'єм випуску продукції. Вивести на екран гістограму (східчастий графік), що відображає значення показників.

{------ Програма виведення гістограми -----------} program LAB6b; uses Graph, ModGr, Crt; type mas=ARRAY[1..30] real; var x1, x2, у : Real; i, n, s, с : integer;

А: mas;

St : string[8];

{--------- Процедура введення ------------------} procedure VVOD( var А:mas; n: integer); begin

writeln('Введіть', n:3,' показника'); for i:=1 to n do read(А[i]); writeln; end;

{---------Визначення меж матем. координат--------} procedure pr1(А:mas; n:integer); begin Ymin:=0; Ymax:=0;

for i:=1 to n do begin if А[i] > Ymax then Ymax:=A[i]; if А[i] < Ymin then Ymin:=A[i]; end;

Ymax:=Ymax+(Ymax-Ymin)/20;

Xmin:=-1; Xmax:=n+1; end;

{--------------Основна програма -----------------} begin

WriteLn('Введите кількість показників <= 30');

ReadLn(n);

VVOD(A,n);

PR1(A,n);

InitMat;

Line(X0, 0, X0, GetMaxY); Line(0, Y0, GetMaxX, Y0); s:=0; c:=0;

SetTextJustify(CenterText,TopText); for i:=1 to n do begin x1 := i-1; x2 := i; у := А[i];

s:=s+1; c:=c+1; if s > 11 then s:=0; if з > 15 then с:=0;

SetFillStyle(s,c);

Bar(EkrX(x1), Y0, EkrX(x2), EkrY(y));

Rectangle(EkrX(x1), Y0, EkrX(x2), EkrY(y));

Str(у:4:1,St);

OutTextXY(EkrX((x1+x2)/2),EkrY(y)-10,St); end;

ReadKey;

CloseGraph; { Відключення графіки } end.

9.3 Варіанти завдання до лабораторної роботи 6

Побудувати графік функції

Y

Види функцій f1, f2, f3 задані в табл.15.

10 Питання для контролю

1 Алгоритм. Поняття алгоритму. Способи опису алгоритму.

2 Блок-схема. Основні елементи блок-схеми.

3 Середовище програмування Turbo Pascal.

4 Збереження й завантаження програм у середовищі Turbo Pascal.

5 Робота із фрагментами тексту в середовищі Turbo Pascal.

6 Створення Pascal-програм у середовищі Delphi у режимі консолі.

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

8 Коментар. Використання коментарів у програмі.

9 Види даних.

10 Типи даних.

11 Прості й структуровані дані.

12 Константи. Опис констант.

13 Змінні. Опис змінних.

14 Стандартні функції.

15 Вирази.

16 Арифметичні вирази.

17 Логічні вирази. Відношення.

18 Структура програми.

19 Запис операторів в Pascal.

20 Складений оператор.

21 Підпрограма. Види підпрограм. Структура підпрограми.

22 Процедури.

23 Функції.

24 Формальні й фактичні параметри.

25 Види формальних параметрів. Способи передачі значень параметрів у підпрограму.

26 Стандартні функції.

27 Модулі. Призначення й використання.

28 Структура модуля.

29 Стандартні модулі.

30 Оператор присвоювання.

31 Оператор вводу даних.

32 Оператор виводу даних.

33 Розгалуження програми. Умовний оператор.

34 Оператор вибору варіанта.

35 Цикл. Елементи циклу.

36 Оператор циклу зпопередньою перевіркою умови WHILE.

37 Оператор циклу з наступною перевіркою умови REPEAT.

38 Відмінність операторів WHILE та REPEAT.

39 Цикл із лічильником.

40 Табулювання функції.

41 Пошук экстремумів функції методом перебору.

42 Масиви. Визначення й обробка масивів.

43 Знаходження найменшого й найбільшого елементів масиву.

44 Сортування масивів.

45 Селективна обробка масивів.

46 Двовимірні масиви. Визначення й обробка.

47 Вкладені цикли.

48 Селективна обробка двовимірних масивів.

49 Файл. Поняття файлу.

50 Файлові змінні. Опис файлових змінних.

51 Робота з файлами.

52 Послідовна обробка файлів.

53 Процедури доступу до файлу для запису.

54 Процедури доступу до файлу для читання.

55 Визначення кінця файлу при його перегляді.

56 Записи. Призначення.

57 Визначення (опис) записів.

58 Вкладеність записів.

59 Доступ до полів запису.

60 Оператор доступу до полів запису Width.

СПИСОК ЛІТЕРАТУРИ, ЩО РЕКОМЕНДУЄТЬСЯ

1Новичков В.С. Паскаль: Учебное пособие /В.С.Новичков,

Н.И.Парфилова, А.Н.Пылькин. - М.: Высш. школа, 1990. - 223 с. 2Васюкова Н.Д. Практикум по основам программирования. Язык Паскаль/ Н.Д.Васюкова, В.В.Тюляева. - М.: Высш. школа, 1991. - 160 с.

3Белецкий Я. Турбо Паскаль с графикой для персональных компьютеров.

- М.: Машиностроение, 1991. - 320 с.

4Алексеев В.Е. Вычислительная техника и программирование: Практикум по программированию/ В.Е.Алексеев, А.С.Ваулин, Г.Б.Петрова.

- М.: Высш. школа, 1991. - 324 с.

5 Абрамов Г.В. Введение в язык Паскаль/Г.В.Абрамов, Н.П.Трифонов, Г.Н.Трифонова. - М.: Наука, 1988. - 320 с.

6 Семашко Г.Л. Программирование на языке Паскаль/ Г.Л.Семашко, А.И.Салтыков. - М.: Наука,1988. - 128 с.

7 Абрамов С.А. Начала программирования на языке

Паскаль/С.А.Абрамов, Е.В.Зима. - М.: Наука,1987. - 112 с.

8 Перминов О.Н. Язык программирования Паскаль. - М.: Радио и связь,

1989. - 128 с.

9Вальвачев А.Н. Программирование на языке Паскаль для персональных ЭВМ ЕС/ А.Н.Вальвачев, В.С. Крисевич. - Минск: Выш. шк., 1989. - 223 с. 10Сердюченко В.Я. Розробка алгоритмів та програмування мовою TURBO-PASCAL. – Харкiв: Парiтет, 1995. – 352 c.

11Форсайт Р. Паскаль для всех / пер. с англ. М.В. Сергиевского, А.В.

Шалашова под ред. Ю.И. Тончеева. – М.: Машиностроение, 1986. – 288 с.

Навчальне видання

ФОКІН Анатолій Григорович ГЕТЬМАН Ірина Анатоліївна

ПРОГРАМУВАННЯ В СЕРЕДОВИЩІ PASCAL

Навчальний посібник

для студентів вищих навчальних закладів

Редактор І.І.Дьякова

Верстка О.П.Ордіна

34/2006. Підп. до друку Формат 60х84/16.

Папір офсетний. Ум. друк. арк. Обл.-вид. арк.

Тираж прим. Зам. №

Видавець і виготівник

«Донбаська державна машинобудівна академія» 84313, м. Краматорськ, вул. Шкадінова, 72

Свідоцтво про внесення суб’єкта видавничої справи до державного реєстру серії ДК № 1633 від 24.12.2003 р.