Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


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 мають тип vec­tor. Отже, це одновимірні масиви, які містять по 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 — кількість), елемен­ти якого дорівнюватимуть кількості входжень відповідної букви: qu­antity [‘A’] дорівнює кількості входжень букви A, quantity ['B'] —бук­ви В, ..., quantity ['Z'] — букви Z.

Звичайно, можна було б замість індексів взяти цілі числа, встано­вивши відповідність між буквами i числами (наприклад, А—1, В—2,..., Z—26). Проте, використаний в програмі спосіб вибору iндексів більш природний.


Поделиться:

Дата добавления: 2015-08-05; просмотров: 60; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты