КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
PROGRAM lead_year ;VAR rik: 1001.,9999; sign: boolean; BEGIN write (‘Який рік бажаєте перевірити ?’); Readln (rik); sign:=false; IF (rik MOD 4=0) AND (rik MOD 100<>0) THEN sign:=true; IF rik MOD 400=0 THEN sign:=true; IF sign THEN writeln (rik:4,’-високосний рік’) ELSE writeln (rik:4,’-нe високосний рік’) END. Булева змінна sign (ознака) набуває значення true лише тоді, коли рік є високосним. Змінна rik — обмеженого типу; нижня межа — 1001, верхня 9999. Якщо буде введено рік не з цього проміжку, то виконання програми буде перервано і видано повідомлення про помилку. 2. Записати програму, яка виводить на екран дисплея текст правил дорожнього руху, які вказують на сигнали світлофора, PROGRAM driding_regulations; TYPE light_signal =(red, yellow,green); VAR signal: light_signal; BEGIN FOR signal:=red TO green DO CASE signal OF red: BEGIN write (‘Червоний сигнал в тому’); writeln (‘ числі мигагочий, або’); wri te (‘два по черзі мигаючих’); writeln(‘червоний сигнали’); writein('забороняють рух.’) END; yellow:BEGIN write(‘Жовтий круглий сигнал’); writeln (' забороняє рух і'); write(‘попереджує про наступну’); writeln (‘зміну сигналів. Жовтий’); write (‘мигаючий сигнал дозволяє’); writeln(‘рух і інформує про’); write(‘наявність нерeгульованого’); writeln('перехрестя або пішоходного’); writeln(‘переходу’) END; green:BEGIN write(‘Зелений крулий сигнал’); writeln(‘дозволяє рух. Зелений’); write(‘мигаючий сигнал дозволяє’); writeln('рух і інформує, що час'); write(‘йoro дії закінчусться і '); writeln(‘швидко буде ввімкнено'); writeln(‘заборонний сигнал.’) END END END. 2.8. Складені типи даних. Масиви Прості типи даних, які розглядалися весь час, називають також скалярними або неструктурованими типами. Простий тип задає тільки одне значення. У мові Паскаль можна означати і складені (структуровані) типи, які можуть задавати сукупність значень. Складені типи утворюються з одного або кількох раніше означених типів, які є його складовими. До складених типів належать такі типи: масив, запис, множина, файл. Масив утворюється з фіксованого числа компонентів одного типу. Тип компонентів називають ще базовим типом масиву. Число компонентів масиву визначається при його описі. При визначенні масиву задається і тип компонентів, і тип індексів. Означення типу для масиву має вигляд TYPE ім'я типу = ARRAY [t1] OF t2; де t1 – тип індексу, t2—тип компонентів. Тип індексу може бути простим перелічувальним або обмеженим. Для позначення компонентів масиву використовується ім'я змінної-масиву і індекси, які однозначно визначають даний елемент. Індексним виразом може бути будь-який вираз, значення якого належить діапазону, що визначається типом індексу. Якщо ж значення індексного виразу виходить із заданого діапазону, то при виконанні програми видається повідомлення про помилку.Приклад TYPE vector = ARRAY [1..5] OF real; VAR vl, v2 : vector; Тут vector — ім'я нового типу; тип індексу — обмежений тип 1..5, тип компонентів (базовий тип) — тип real. Змінні vl І v2 мають тип vector. Отже, це одновимірні масиви, які містять по 5 компонентів vl[l], vl[2], ..., vl[5] і v2[l], v2[2], ..., v2[5]. Кожен компонент є змінною з індексом 1 має тип real. Означення типу у наведеному прикладі можна задати і так: TYPE index = 1..5; vector = ARRAY [index] OF real; Як і раніше, тип даних можна задати безпосередньо в розділі опису змінних. Так, VAR vl, v2: ARRAY [1..5] OF real; Приклад TYPE coordinaty = (x,y,z); vector = ARRAY [coordinata] OF real; VAR v: vector; t: coordinata; Тут тип індекса — перелічувальний. Змінна v типу vector має три компоненти v[x], v[y], v[z]. При такому означенні індексу і опису змінних можна записати, наприклад, такі оператори: modul: = О FOR t:= х ТО z DO modul: = modul + sqr (v[t]); Зазначимо, що єдиними операціями над масивами є операції присвоювання і перевірки на рівність. Опис табличних величин алгоритмічної мови легко реалізується мовою Паскаль. Зокрема, опису тип мас ім'я [nп : nк] (тип — службове слово, яке вказує тип: дійсн, ціл, літ і т.п.; nп, nк — початковий і кінцевий порядкові номери елементів) алгоритмічної мови відповідає такий опис в розділі VAR: ім'я: ARRAY [nп : nк] OF тип В останньому опису для задання типу слід використати відповідні імена типу мови Паскаль. Іноді описувати масиви мовою Паскаль навіть простіше, ніж алгоритмічною мовою. Це пов'язано з більш широкими можливостями при виборі типу індексів. Тип компонентів t2 може бути довільним типом даних. Зокрема, він може бути також масивом. Наприклад, означення TYPE mas = ARRAY [al..a2] OF ARRAY [bl..b2] OF t; задає двовимірний (якщо t простий тип) масив mas. Тоді опис VAR m, m1 : mas; вказує, що m і ml мають тип mas, тобто є двовимірними масивами (матрицями). Запис m[і] [j] означає j-й компонент (типу t) i-го компонента масиву m. Для означення двовимірних масивів користуються скороченою формулою TYPE mas = ARRAY [а1..a2, b1..b2] OF t; Скорочені позначення використовують також для запису змінних з індексами: m[і, j] рівносильно m [і] [j]. Аналогічно вводяться n-вимірні (n > 2) масиви. Компоненти такого масиву визначаються заданням n індексних виразів. Приклади 1. Записати програму підрахунку кількості всіх букв латинського алфавіту, що входять у задану послідовність символів, кінець якої позначається крапкою. Виділимо масив quantity [‘A’..’Z’] (quantity — кількість), елементи якого дорівнюватимуть кількості входжень відповідної букви: quantity [‘A’] дорівнює кількості входжень букви A, quantity ['B'] —букви В, ..., quantity ['Z'] — букви Z. Звичайно, можна було б замість індексів взяти цілі числа, встановивши відповідність між буквами i числами (наприклад, А—1, В—2,..., Z—26). Проте, використаний в програмі спосіб вибору iндексів більш природний.
|