Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
56
Добавлен:
07.02.2016
Размер:
116.22 Кб
Скачать

Var s,I:integer;

begin

for i:=low(b) to high(b) do readln(b[i]);

s:=0;

for i:=low(b) to high(b) do

if b[i] mod 2=0 then s:=s+b[i];

writeln('s=',s);

end;

procedure wrmas(var b:array of integer); { процедура виконує виведення одновимірного масиву }

Var I:integer;

begin

for i:=low(b) to high(b) do write(b[i]:4);

end;

begin

mas(a);

wrmas(a);

end.

Масив дає можливість розв’язувати дуже багато різноманітних задач. Розглянемо наступну задачу:

Приклад 4.11. [7] Вивести на екран всі подання n-цифрових двійкових чисел.

Для розвязку задачі використаємо проміжний масив A[n], в якому будуть знаходитися кожне подання двійкового числа. Також скористаємося рекурсивним методом. Кожного разу будемо викликати ту ж підпрограму, зменшуючи розмір масиву, який переглядається (змінна k)від значення n до значення 0. Отримуємо таку програму.

type mas= array [1..10] of integer;

var a:mas;

n,i,j,x:integer;

procedure wiwod(b:mas;f:integer);

{процедура виведення масиву}

Var I:integer;

begin

for i:=1 to n do write(b[i]:4); writeln;;

end;

procedure binary(k,n:word);

{рекурсивна процедура отримання подання двійкового числа}

Var I:word;

begin

if k=0 then wiwod(a,n)

else begin

a[k]:=0; binary(k-1,n);

a[k]:=1; binary(k-1,n);

end;

end;

begin

writeln(‘введіть розмірність двійкових чисел’);

readln(n);

binary(n,n);

end.

Масиви символів.

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

var y, x: array [1..10] of char;

або

var y, x: packed array [1..10] of char;

Як і для будь-якого масиву, довжина такого рядка не може змінюватися. Заданим таким чином рядкам можна присвоювати значення - рядок символів. Але при цьому довжина рядка, що присвоюється, повинна бути рівною розміру масиву. Якщо рядок менше, його доповнюють пропусками, наприклад:

x:='hjkl;iopui';

y:='asdfcert';

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

if x<y then writeln(‘x<y’) else writeln(‘x>y’);

На екран в результаті буде виведено x>y.

Крім цього для масиву символів можна використовувати такі стандартні функції, як length(x) та copy(x,n,m), процедура val. Більш докладно про ці функції та процедури поговоримо у наступному розділі.

Такі рядки не можна вводити за допомогою стандартної процедури read. Якщо потрібно в режимі діалогу ввести рядок, треба організувати цикл:

for i:=1 to 10 do read(x[i]);

При введенні рядка в циклі відбувається посимвольне зчитування. Виводити на друк масиви символів можна цілком:

writeln(x);

Контрольні запитання.

  1. Що називають структурованими даними? Для чого вони використовуються?

  2. Які структуровані типи Ви знаєте?

  3. Що називають масивом?

  4. Що таке розмірність масиву?

  5. Що таке розмір масиву?

  6. Який масив називають одномірним? Який масив називають двомірним?

  7. Чи може масив бути n розмірним?

  8. Як масив описується у мові Pascal?

  9. Який тип індексів масиву можна використовувати в мові Pascal?

  10. Що таке базовий тип?

  11. Чи може масив мати дійсний тип індексів? А базовий тип?

Тести для підсумкового контролю.

1. Які записи можна розглядати як звертання до змінної з індексами

а)x148 б)x[148] в)x(148) г)m[-4] д)x[3*a] е)x[-2a]

  1. Які описи одномірного масиву дозволено:

а) a: array [-1..5] of real;

б) a: array [‘a’..’k’] of real;

в) a: array [-1,5] of real;

г) a: array [-1.4..5] of real;

3. Які типи змінних не дозволено використовувати як елементи масиву:

а) дійсний тип

б) масиви

в) файли

г) записи

д) рядки

4. Вказати, що буде виведено на екрані після виконання наступних операторів:

for i:=1 to 10 do

a[i]:=1;

writeln(i,’,’,a[i]);

4. Вказати, що буде виведено на екрані після виконання наступної програми:

const a: array [1..10] of integer=(1,2,3,4,5,6,5,4,3,2);

var i:integer;

begin

writeln(i,’,’,a[i]);

end.

а) 0,10 б) 10,2 в) 0, 0 г)помилка

  1. Який з приведених фрагментів програм для виведення масиву помилкова:

а) begin

writeln(a[i]);

end;

б) begin

for i:=i to 10 do

writeln(a[i]);

end;

в) begin

for i:=i to 10 do

write (a[i]);

end;

г) begin

writeln(i,’,’a[10]);

end;

  1. Що буде виведено на екран в результаті виконання наступних операторів:

const a: array [1..10] of integer=(1,2,3,4,5,6,5,4,3,2);

var i, max: integer;

begin

max:=0;

for i:=1 to 10 do

if a[i]>max then a[i]:=max; writeln(i, ’,’, max);

end.

  1. Що буде виведено на екран після виконання наступних операторів:

a[1]:=1;

for i:=2 to 5 do a[i]:=2*a[i-1]; writeln(a[i]);

  1. Що буде виведено на екран в результаті виконання операторів:

const a: array [1..10] of integer=(1,2,3,4,5,6,5,4,3,2);

var i, j :integer;

begin

for i:=1 to 9 do

for j:=i+1 to 10 do

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

for i:=1 to 10 do

write(a[i],’,’);

end.

а)1,2,2,3,3,4,4,5,5,6

б)1,2,2,2,2,2,2,2,2,2

в)2,2,3,4,5,4,6,5,1,2

г)2,3,4,5,6,5,4,3,2,1

  1. Вибрати алгоритм, за яким можна знайти мінімальний елемент масиву:

а) min: = a[1];

for i:=1 to 10 do

if a[i] <a[1] then min: = a[i];

б) for i:=1 to 10 do

if a[i] <min then min: = a[i];

в) for i:=1 to 10 do

if a[i] <a[1] then a[i]:= min;

г) min: = a[1];

for i:=1 to 10 do

if a[i] <min then min: = a[i];

Соседние файлы в папке конспект лекцій 1 паск