Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
все лабы.doc
Скачиваний:
9
Добавлен:
05.11.2018
Размер:
1.86 Mб
Скачать

Лабораторна робота 4 нестандартні й обмежені типи даних. Оператор варіанта

Мета роботи: виробити практичні навички в написанні та налагодженні програм на розгалужений циклічний процес, застосовуючи оператори циклу з параметром і вибору варіанта.

Нестандартні типи даних

У Паскаль-програму можна ввести змінні якого-небудь типу, що не співпадає зі стандартним. Такий тип задається перерахуванням значень, яких може набувати змінна. Загальна форма завдання перелічуваного типу така:

type T = (A1, A2, ..., AN);

Тут Т - позначення нового типу; A1,A2,...,AN - визначають константи нового типу даних. Послідовність значень, що складає перелічуваний тип, упорядкована.

Наприклад, новий скалярний тип color можна визначити в такий спосіб:

type color = (red, green, white, blue);

Для значень перелічуваних типів визначені такі стандартні функції:

- succ - одержання наступного значення даного типу;

- pred - одержання попереднього значення даного типу;

- ord - одержання порядкового номера даного типу (нумерація з нуля).

Обмежені типи даних

Відрізок значень будь-якого скалярного типу (крім типу real) може бути визначений як обмежений тип.

Загальний вид - type T = min..max;

Тут Т - ідентифікатор типу; min, max - ліва і права межі діапазону. Тип min і max задає множину, яка визначає базовий тип перемінної.

Наприклад:

type den = 1..31;

god = 1900..2000;

var x: den; g:god; c:1..12;

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

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

Загальний вид –

case N of

M1: P1;

........

Mn: Pn

else P

end;

Тут N - селектор; М1,М2,...,Мn - мітки; Р1,Р2,..., Рn,Р - оператори. Селектор і мітки мають бути одного скалярного типу.

Наприклад:

case K of

1 : y:=10;

2..5 : Y:=2*x+5;

6..9 : Y:=sqrt(x)+x;

else Y:= sqr(x)

end;

Оператор циклу for

«Цикл - до» має вид

for I:=N1 to N2 do P;

Тут I – параметр циклу; N1,N2 - початкове і кінцеве значення параметру циклу; Р - оператор (простий чи складний). I,N1,N2 мають бути одного скалярного типу, але не real. Якщо це цілі змінні, то крок дорівнює одиниці.

Наприклад: for M:=5 to 20 do Y:=Y+M;

Цикл за убутним значенням параметра I від N2 до N1 має вид

for I:=N2 downto N1 do P;

Приклади виконання завдання лабораторної роботи

Приклад 10. Визначити сезон (зима, весна, літо, осінь), на який припадає кожний із дванадцяти місяців.

Програма розв’язання даного прикладу має вид:

program pr10;

uses crt;

type cezon=(z,w,l,o);

mec=(j,f,m,a,ma,i,il,aw,c,ok,n,d);

var k:mec; s:cezon; p:char;

Begin clrscr;

FOR K:=J TO D DO

CASE K OF

J,F,D:BEGIN S:=Z; WRITELN(' ':10,'ЗИМА'); END;

M,A,MA:BEGIN S:=W; WRITELN(' ':20,'ВЕСНА'); END;

I,IL,AW:BEGIN S:=L; WRITELN(' ':30,'ЛІТО'); END;

C,OK,N:BEGIN S:=O; WRITELN(' ':40,'ОСІНЬ'); END;

end;

p:=readkey

End.

Приклад 11. Для цілих значень аргументу обчислити таблицю значень функції

де Х1 - множина елементів інтервалу [0,8];

Х2 - множина непарних елементів інтервалу [9,15];

Х3 - інші числа інтервалу [-5,15].

Програма обчислення таблиці значень функції z має вид:

program pr11;

uses crt;

type arg = -5..15;

var x:arg; z:real; p:char;

begin

clrscr;

for x:=-5 to 15 do

begin

case x of

0..8: z:=pi*sqr(x)*x*(pi+sin(x));

9,11,13,15: z:=sqr(ln(2*x+8))

else z:=2*cos(x+pi/4); end;

writeln(' ':20,' x=',x:3,' ':8,' z=',z:9:3);

end;

p:=readkey

end.