Студопедия

КАТЕГОРИИ:

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


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.

Стандартні функції і оператори для роботи з рядками

Масиви символів. Рядки символів у мові Паскаль вико­ристовуються як масиви. Рядки, що містять один символ, є константами стандартного типу char. Рядок, що містить п (п > 1) символів, вважається константою типу, який означається як упакований масив:

PACKED ARRAY [1..n] OF char

При цьому кожен символ є компонентом масиву. Служ­бове слово PACKED вказує на те, що при розміщенні ком­понентів масиву в пам'яті ЕОМ більш економічно використовується пам'ять. Компоненти масиву запам'ятовуються в послідовно розміщених комірках пам'яті, причому для звичайних (неупакованих) масивів кожен з них займає поле в одне слово. Кількість байтів, які відводяться під сло­во, залежить від типу ЕОМ. Так, в деяких ЕОМ під слово відводиться чотири байти. В упакованих масивах в одному слові міститься кілька символів. Зокрема, під один символ може відводиться один байт пам'яті.

Рядкова змінна — це упакований масив символів.

Приклади опису рядкових змінних:

VAR line : PACKED ARRAY [k..l] OF char;

x: PACKED ARRAY [1..12] OF char;

У програмі таким змінним можна присвоїти значення — рядок символів. Наприклад,

х:= 'мова Паскаль'

Довжина рядка не може змінюватися в процесі виконан­ня програми. Тому будь-яке значення, яке присвоюється рядковій змінній, повинно містити ту кількість символів, яка вказана при опису змінної. Інакше виконання програми переривається i видається повідомлення про помилку. Наприклад, щоб помістити в х більш короткий рядок, тре­ба доповнити рядок пропусками до 12 символів:

х:= 'Мова Бейсік ‘

Дозволяється використовувати i неупакованi масиви символів.

Наприклад,

VAR у : ARRAY [1..12] OF char;

Проте неупакований масив у в оперативній пам'яті займатиме більше місця, ніж упакований масив х.

Властивості рядків випливають з властивостей масивів. Рядки одного того самого типу можуть фігурувати в операторах присвоювання. До них можна застосовувати операції відношення =,<>,<,< =. >. > = (тут рядки роз­глядаються як масиви літер і тому компоненти операцій відношення повинні мати однакову довжину).

Результати операцій відношення залежать від того, як впорядковані символи. Правила впорядкування різні для різних ЕОМ. Проте в усіх випадках справедливі такі спів­відношення:

‘A’ < ‘B’ <...< ‘Y’ < ‘Z’

‘0’ < ‘1’ < … < ‘8’ < '9’

Порівняння рядків відбувається так: спочатку порів­нюються перші зліва символи; якщо вони однакові, то по­рівнюються наступні символи і т. д. Наприклад, відношен­ня 'BASIC’ < ‘PASCAL’, '25' > '200’, — істинні, а відношення ‘ ABC’= ‘ABC’ — хибне.

Зауважимо, що стандартна процедура read не дає змоги автоматично читати рядки з вхідного файла. Якщо треба читати символьні рядки, то це виконується в циклі, посимвольно. Виводити ж на друк символьні змінні можна ціл­ком (а не лише покомпонентно).

Наприклад,

writeln (line);

writeln (x)

Упаковані масиви можна використовувати в програмі так само, як і неупаковані, але їх іноді не дозволяється пе­редавати процедурі чи функції як параметри-змінні. Програма з упакованими масивами працює повільніше (плата за економію пам'яті). Це пояснюється тим, що компоненти упакованого масиву вибираються повільніше, ніж компо­ненти неупакованого масиву. В деяких випадках швидко­дію програми можна збільшити, скопіювавши упакований масив в неупакований перед його використанням. Якщо, наприклад, описано два масиви

VAR а: ARRAY [m..n] OF char;

pa : PACKED ARRAY [k..l] OF char;


Поделиться:

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





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