Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тurbo Pascal 7+.doc
Скачиваний:
12
Добавлен:
24.12.2018
Размер:
10.09 Mб
Скачать

12.6. Собственные типы данных

Паскаль дает возможность не только пользоваться стандартными типами данных, но и называть их по-другому, и даже создавать свои типы.

Запись

TYPE bukva = Char

означает: ТИП bukva "равен" (эквивалентен) типу Char, то есть мы просто придумали типу Char еще одно название -bukva. Теперь все равно, как записать:

VAR a,b :Char

или

VAR a,b :bukva.

Еще примеры:

TYPE Vector =array[1..10] of Integer;

matritsa =array[1..8] of Vector;

VAR a,b :Vector;

с :matritsa;

d :array[1..8] of Vector;

Здесь мы создали два новых типа с именами Vector и matritsa. Очевидно, переменные c и d описаны одинаково. Обратите внимание, что вместо

TYPE matritsa = array[1..8] of Vector

можно записать

TYPE matritsa=array[1..8] of array[1..10] of Integer

или

TYPE matritsa=array[1..8,1..10] of Integer.

Зачем нужны новые типы? Вот две из нескольких причин. Одна - наглядность и удобство. Другая - чисто грамматическая: Паскаль разрешает в определенных конструкциях записывать лишь имена типов, а не их определения. Например, когда мы изучим процедуры с параметрами, мы узнаем, что неправильно писать

PROCEDURE p (a: array[1..10] of Integer)

а правильно писать

PROCEDURE p(a: Vector)

12.7. Логический тип Boolean

B операторах if, while, repeat мы привыкли писать выражения вида a>b, i<=0, с='крот', 3>2, (a>b)AND(a>c) и т. п. Про каждое из этих выражений можно сказать, истинно оно в данный момент или ложно. Например, выражение 3>2 истинно всегда, а выражение i<=0 ложно в тот момент, когда i равно, скажем, двум. Такие выражения называются логическими выражениями.

Говорят, что логическое выражение 3>2 имеет значение "истина" (по-английски true - "тру"), а логическое выражение k=0 имеет значение "ложь" (по-английски false - "фолс").

Внутренняя идеология построения языка Паскаль требует определить новый тип переменных - логический тип Boolean. Запись VAR а :Вооlеаn означает, что переменная а может принимать всего два значения - true и false. Так, мы можем записать a:=false.

Слова true и false являются логическими константами, и их можно употреблять в логических выражениях или вместо них. Например: if a=true then... Конструкцию if(a>b)=false then... можно перевести "если неправда, что а больше b, то...".

Значения true и false удобно применять для организации бесконечных циклов:

while true do...

repeat... until false

Решим конкретную задачу на этот тип.

Задача. В группе 6 студентов. Сколько из них сдали зачет по физике?

Сначала напишем программу без использования типа Boolean. В ней единицей обозначен зачет, нулем - не зачет. Массив Zachet из шести элементов хранит информацию о зачете.

CONST Zachet :array[1..6] of Integer = (1,1,0,1,1,1);

VAR c,i :Integer;

BEGIN

c:=0; {с - счетчик зачетов}

for i:=1 to 6 do if zachet[i]=1 then c:=c+1;

WriteLn(c)

END.

Теперь напишем программу с использованием типа Boolean. В ней через true обозначен зачет, через false - не зачет.

CONST Zachet :array[1..6] of Boolean = (true, true, false, true, true, true);

VAR c,i :Integer;

BEGIN

c:=0;

for i:=1 to 6 do if zachet[i]=true then c:=c+1;

WriteLn(c)

END.

Отличие второй программы от первой в том, что выражение zachet[i] = true (зачет равен истине) выглядит естественнее и понятнее, чем zachet[i] = 1 (зачет равен единице - то есть колу?). В общем, чуть-чуть нагляднее.

Кстати, вполне правильно было бы написать и if zachet[i] then ... Ведь условием после слова if может стоять любое логическое выражение, имеющее значение true или false.