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

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

Запись TYPEbukva =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;

c :matritsa;

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

Здесь мы создали два новых типа с именами Vector и matritsa. Очевидно, переменные cиdописаны одинаково. Обратите внимание, что вместоtypematritsa =array[1.. 8]ofVector

можно записать typematritsa =array[1..8] of array[1..10] of Integer

или type matritsa = array[1..8,1..10] of Integer .

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

писать procedurep(a: array[1..10] of Integer) неправильно,

а писать procedurep(a: Vector) правильно.

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

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

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

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

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

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

while true do .......

repeat ........... until false

Решим конкретный пример на этот тип.

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

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

CONSTZachet :array[1..6]ofInteger = (1,1,0,1,1,1);VARc,i :Integer;BEGINc:=0; {c - счетчик зачетов}fori:=1to6doifzachet[i] = 1thenc:=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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]