![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Тема:
Структуровані типи даних.
Мета:
Навчитись складати програми з використанням операцій над множинами.
6.1. Теоретичні відомості
6.1.1. Операції з даними перелічувального типу
Перелічувальний тип задається програмістом шляхом перелічення за порядком всієї множини його значень. Всі ці значення новоствореного типу подаються їх іменами (ідентифікаторами), які є константами типу. Перелiчувальний тип задається виразом:
Type <Iм'я типу> = (Список констант iдентифiкаторiв);
Перелічувальний тип впорядковує набір своїх констант в порядку їх зростання, тому до цих велечин можна застосувати операції відношення =, <, >, якщо обидва компоненти належать до одного типу. Результатом такого відношення є логічна величина Тrue, якщо відношення справджується, тa False, якщо відношення не справджується.
Для аргументів перелічувального типу можливе застосування стандартних функцій знаходження попереднього та наступного елементів. При цьому вірні співвідношення:
Рred (Vi)=Vi-1, i=2,3,...,N; Succ (Vi)=Vi+1, i=1,2,...,N-1,
де Vi – i-й елемент списку констант перелічувального типу.
Функція Оrd для аргумента перелічувального типу видає число, що є порядковим номером даного аргумента. При цьому порядковий номер першого елемента дорівнює 0, тобто існують співвідношення:
Оrd(V1)=0; Оrd(Vi)=Оrd(Рred(Vi))+1; i=2,3,...,n.
Характерною особливістю даних перелiчувального типу в мові PASCAL є те, що вони не можуть беcпосередньо вводитися з клавiатури в програму та виводитися на дисплей. Для цього використовуються спецiальнi прийоми з використанням оператора CASE, як видно на прикладі реалізації виведення змінної типу Season:
Var Season: (Winter, Spring, Summer, Autumn);
Begin
................
Case Season of
Winter: Writeln("Winter");
Spring: Writeln("Spring");
Summer: Writeln("Summer");
Autumn: Writeln("Autumn")
end;
Введення даних перелічувального типу з клавіатури комп'ютера здійсню-ється за допомогою спеціальним чином організованих меню.
Приклад:
Дано
Type Course = (Nord,Ost,Suid,West);
Command = (Forwar, Left, Right, Back);
Корабель йшов спочатку курсом C1, а потім курс було змінено згідно наказу Rule. Визначити C2 – новий курс корабля.
Program Ship;
Var H, L: Byte;
Course: (Nord, Ost, Suid, West);
Rule: (Forwar, Left, Right, Back);
Begin
Write('Задайте курс: Північ=1 Схід=2 Південь=3 Захід=4 ');
Readln(L);
Write('Введiть команду: Назад=1 Вліво=2 Вправо=3 Вперед=4 ');
Readln(H);
Case L of
1: Course:=Nord;
2: Course:=Ost;
3: Course:=Suid;
4: Course:=West
end;
Case H of
1: Rule:=Back;
2: Rule:=Left;
3: Rule:=Right;
4: Rule:=Forwar
end;
Case Course of
Nord: Case Rule of
Back: Course:=Suid;
Left: Course:=West;
Right: Course:=Ost;
Forwar: Course:=Nord
end;
Ost: Case Rule of
Back: Course:=West;
Left: Course:=Nord;
Right: Course:=Suid;
Forwar: Course:=Ost
end;
Suid: Case Rule of
Back: Course:=Nord;
Left: Course:=Ost;
Right: Course:=West;
Forwar: Course:=Suid
end;
West: Case Rule of
Back: Course:=Ost;
Left: Course:=Suid;
Right: Course:=Nord;
Forwar: Course:=West
end;
end;
Case Course of
Ost: Writeln('Kорабель змiнив курс на Схід');
Suid: Writeln('Kорабель змiнив курс на Південь');
Nord: Writeln('Kорабель змiнив курс на Північ');
West: Writeln('Kорабель змiнив курс на Захід')
end;
END.
Дата публикования: 2014-11-04; Прочитано: 322 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!