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

2. Обмежений тип

Цей тип також розглянемо на прикладі. Нехай у деякій змінний потрібно зберігати поточне число, тобто номер дня в місяці. У Турбо Паскале можна задати тип DaysInMonth = 1..31;. Змінні і константи цього типу можуть приймати тільки такі значення, якщо спробувати задати що-небудь інше, то компілятор видасть помилку. Як границі можуть вживатися і від’ємні числа, наприклад

Temperature= - 60..50;

Як базовий тип (тобто тип, з якого вибирається діапазон значень) можуть використовуватися майже всі порядкові типи, тобто ті, котрі зберігаються у виді цілих чисел. До порядкових типів відносяться: усі цілі типи (byte, integer, і т.п.), char, boolean, перераховані типи й обмежені типи. Як базовий тип не можна використовувати лише сам обмежений тип (важко представити, як це можна зробити). З урахуванням цього правила припустимі такі оголошення типів:

type SmallLatin = 'а'..'z'; {малі латинські букви}

MyBoolean = True..False; {хоча це і безглуздо}

Holidays = Sat..Sun; {вихідні}

Не можна як базовий тип ужити який-небудь дійсний тип, наступне оголошення приведе до помилки:

type Wrong = -1.25..1.25;

Помітимо, що функції Ord, Succ і Pred можуть застосовуватися до будь-яких порядкових типів, і, зокрема, до обмеженого.

Масиви

1. Поняття масиву. Одномірні масиви

Масиви є представниками структурованих типів даних, тобто таких, змінні яких складаються з більш простих елементів відповідно до визначеного порядку. Для масивів характерно те, що вони є сукупністю деякого числа однакових елементів. У найпростішому випадку ці елементи можуть бути занумеровані натуральними числами з деякого діапазону. Розглянемо приклад такої змінної в Турбо Паскале:

var a: array [1..10] of real;

Змінна a складається з десяти елементів типу real, можна записувати і зчитувати значення з неї, користаючись записом a[<номер елементу>].

Приклад 1. Пошук найбільшого числа серед елементів масиву.

program FindMaximumInArray;

var a: array[1..10] of real;

i,max: integer;

begin

for i:=1 to 10 do begin

write('Введіть елемент номер ',i,' -> ');

readln(a[i]);

end;

max:=a[1];

for i:=2 to 10 do

if a[i]>max then max:=a[i];

writeln('Максимум дорівнює ',max);

readln;

end.

Як тип елементів масиву можна використовувати всі типи, відомі нам на даний момент (до них відносяться всі числові, символьний, рядковий і логічний типи).

Нумерувати елементи масивів можна не тільки від одиниці, але і від будь-якого цілого числа. Узагалі для індексів масивів підходить будь-який порядковий тип, тобто такий, котрий у пам'яті машини представляється цілим числом. Єдине обмеження полягає в тому, що розмір масиву не повинний перевищувати 64 Кб. Розглянемо деякі приклади оголошення масивів.

var Numbers: array [0..1000] of integer;

Names: array [1..10] of string;

Crit: array[shortint] of boolean;

CountAll: array[char] of integer;

Count: array['a'..'z'] of integer;

У наступному прикладі показане для чого може знадобитися останній тип.

Приклад 2. Підрахунок кількості різних букв у рядку.

program CountLetters;

var s: string;

count: array['a'..'z'] of byte;

ch: char;

i: byte;

begin

write('Уведіть рядок > ');

readln(s);

for i:=1 to length(s) do

if(s[i]>='a')and(s[i]<='z')then inc(count[s[i]]);

writeln('Кількість різних букв у рядку: ');

for ch:='a' to 'z' do

if count[ch]<>0 then

writeln(ch,': ',count[ch]);

readln;

end.