русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


IF sign


Дата додавання: 2014-11-28; переглядів: 848.


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ндексів більш природний.

PROGRAM text;

CONST stopcode=’.’ {символ кінця послідовності };

VAR symbol:char;

quantity:ARRAY[‘A’..’Z’] OF integer;

BEGIN

{ присвоєння елементам масиву quantity нульових значень}

FOR symbol:= ‘A’ TO ‘Z’ DO

quantity[symbol]:=0;

writeln (‘введіть послідовність символів,’);

writeln (‘відмітивши її кінець символом’, stopcode);

REPEAT

read(symbol);

{ враховуємо тільки букви }

IF (symbol >=’A’) AND (symbol<=’Z’)

THEN quantity[symbol]:=quflintity[symbol]+l

UNTIL symbol=stopcode;

writeln;

FOR symbol:=’A’ TO ‘Z’ DO

writeln (‘кількість вxоджeнь букви’, symbol, ‘ – ‘,quantity[symbol])

END.

Тут індекси масиву quantity належать до обмеженого типу (базовим для якого є стандартний тип char), а компоненти — до стандартного ти­пу integer.

2. Скласти програму множення двох прямокутних матриць А та В.

Добуток матриць А i В позначимо через С, де (i=1,2,…m; j=1,2,…l).

Вважатимемо, що елементи матриць А і В вводяться по рядках. Для конкретності покладемо т = 4, п = 3. l == 2.

PROGRAM multtply_matrix;

CONST m=4; n=3; l=2;

VAR i: 1..m; j: 1..l;

k: 1..n;

s: integer;

a: ARRAY [1..m, 1..n] OF integer;

b: ARRAY [1..n, 1..l] OF integer;

c: ARRAY [1..m, 1..l] OF integer;

BEGIN

writeln(‘Введіть елементи матриці а');

FOR і:=1 TO m DO

BEGIN

FOR k:=l TO n DO

read(a[i,k]);

writeln

END;

writeln(‘Введіть, елементи матриці b');

FOR k:=1 TO n DO

BEGIN

FOR J:=1 TO l DO

read (b[k,j];

writeln

END;

{множення матриць}

writeln (‘добуток a*b’);

FOR i:=l TO m DO

BEGIN

FOR j:=l TO l DO

BEGIN

s:=0;

FOR k:=l TO n DO

s:=s+a[i,k]*[k,j];

c[i,j]:=s; write (s,’ ‘)

END;

writeln

END

END.

 

 

2.9. Масиви символів. Тип даних string.


<== попередня лекція | наступна лекція ==>
Прості нестандартні типи даних | Стандартні функції і оператори для роботи з рядками


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн