(описан массив d целых чисел с индексами black, white. Любой элемент массива может принимать значения от 11 до 20).

Блок заданий 1.

Задание 1.

Описать регулярный тип, объединяющий в себе массивы, значениями элементов которых являются целые числа, а индексы – логические компоненты.

type C = array [false.. true] of byte;

Задание 2.

Описать массив, состоящий из 9 элементов, значениями элементов которого являются вещественные числа.

а) type

m = array [1 .. 9] of real;

var

mas: m;

б) var mas: array [1 .. 9] of real;

в) type

m = array [0 .. 8] of real;

var

mas: m;

г) var mas: array [0 .. 8] of real;

Задание 3.

Имеются описания:

type

a = array [0 .. 25] of integer;

b = 0 .. 4;

var

c, d: a;

e: array [b] of real;

1)  Сколько массивов описано? (Назвать их имена)

Ответ: три: c, d, e

2)  Для каждого массива указать:

а) сколько в нём элементов;

с d e

26 26 5

б) какие значения могут принимать его элементы?

Integer, integer, real

в) как указать первый и последний элементы каждого из массивов?

c [0] d[0] e[0]

c [25] d[25] e[4]

Задание 4.

Найти и объяснить ошибки в следующих описаниях:

а) const m = 100;

type

M = array [0 .. n] of m;

var

a: m;

б) type

a = array [‘2’ .. ‘8’] of real;

var

a: mas;

Задание 5.

Что можно сказать по следующему описанию:

type

mas = array [‘d’ .. ‘f’] of real;

mas1 = array [1 .. 7] of char;

var

a, b: mas;

c: mas1;

Классификация задач.

Объединим в группы задачи, обладающие одновременно схожими условиями и принципами решения. В основу классификации положим признак, явно видимый из условия задачи и существенно влияющий на её решение.

НЕ нашли? Не то? Что вы ищете?

Ранее мы отмечали, что каждая величина в алгоритме имеет 4 основных атрибута:

1.  Имя величины.

2.  Тип величины.

3.  Значение величины.

4.  Вид величины. Вид величины характеризует её использование в алгоритме, т. е. отражает роль содержащейся в данной величине информации. По виду все величины в алгоритмах делятся на входные (аргументы), выходные (результаты) и промежуточные.

В качестве такого признака рассмотрим информационную роль массива в алгоритме, т. е. вид массива.

Массив может быть:

-  результатом алгоритма (заполнение);

-  аргументом (обработка);

-  аргументом-результатом (модификация).

Видим, что обработка включает слишком большой класс задач (задач обработки), решаемых разными методами. Среди задач обработки можно выделить две большие группы:

-  задачи анализа;

-  задачи поиска.

В задачах анализа требуется просмотреть весь массив и определить какие-то его характеристики. В задачах поиска требуется найти в массиве элемент, обладающий нужным свойством, причём просматривать весь массив для этого не обязательно. Многие задачи модификации не требуют освоения специальных приёмов и сводятся к комбинации задач анализа и задач заполнения (например, задача о корректировке – элементы меньше 100 заменить на 100). Реальный интерес представляют задачи перестановки, в которых необходимо переставить элементы заданного массива в соответствии с какими-то требованиями.

Окончательно получили следующие группы:

1.  Задачи заполнения (массив является результатом выполнения программы).

2.  Задачи анализа (массив задан и надо найти какие-то его характеристики). В задачах анализа просмотр ведётся во всём массиве, т. к. элементы, обладающие нужным свойством могут находиться в любом месте массива или вовсе отсутствовать.

3.  Задачи поиска – основной вопрос поиска – где в массиве находится элемент, обладающий нужным свойством. В задачах поиска критерий должен быть абсолютным.

4.  Задачи перестановки.

Важное замечание.

Существует различие между регулярными типами в языке Pascal и массивами в некоторых других языках программирования, заключающееся в том, что в Pascal количество элементов массива всегда должно быть фиксировано, т. е. определено при трансляции программы. Это считается недостатком языка, т. к. не во всех программах можно заранее предсказать необходимый размер массива. Поэтому в программах, обрабатывающих массивы, помимо использования предварительно определённых констант для определения размера массива,

const n = 150;

type a = array [1 .. n] of word;

var b: a;

иногда используют приём, позволяющий имитировать работу с массивами переменной длины, который заключается в следующем: в разделе описания предварительно определяют возможное максимальное значение размера массива, затем в программе запрашивают текущее значение размера и используют это значение далее при заполнении и обработки массива. Например:

type mas = array [1 .. 100] of word;

var a: mas; i, n: byte;

begin

witeln (‘введите количество элементов массива’);

readln (n);

……………….

Задачи заполнения.

Выделим несколько способов заполнения массивов.

Задачи заполнения

«Ручное» заполнение

В диалоге с пользователем

Заполнение по правилу

С использованием датчика случайных чисел

При описании массива

1.  «Ручное» заполнение с использованием оператора присваивания – самый трудоёмкий, самый не оптимальный.

A [1]: = -8

A [2]: = 15

A [3]: = …

………….

2.  Заполнение массива в диалоге с пользователем: в цикле используются операторы (процедуры ввода и вывода Read и Writeln).

for i: = 1 to n do

begin

writeln (‘введите’, i, ‘элемент массива’);

readln (A [i]);

end;

3.  Формирование массива, значения элементов которого подчинены какому-то правилу.

Сформировать числовой массив, элементы которого равны значению индекса.

for i: = 1 to n do

A [i]: = i;

4.  Заполнение массива с использованием датчика случайных чисел. Сформировать числовой массив, элементы которого могут принимать значения из диапазона от 0 до m.

for i: = 1 to n do

A [i]: = random (m);

5.  Задание значений при описании (жёстко). Удобно использовать при отладке и тестировании программы.

const

n = 8;

a: array [1 … n] of byte = (2, 2, 3, 4, 5, 2, 7, 6);

или

const

a: array [1 … 10] of byte = (3, 2, 15, 7, 4, 8, 12, 0, 9, 10);

Замечание.

На блок-схеме изображать цикл с параметром «for» можно двумя способами:

for i: = in to ik do <оператор>;

Способ 1. (Аналог цикла с предусловием while)

Способ 2.

 

Блок заданий № 2.

Задание 1.

Имеются описания массивов:

const m = 52;

t = 1 .. m;

type mas = array [0 .. m] of real;

mas1 = array [t] of 0 .. 52;

var a: mas1;

b, c: mas;

d: array [-3 .. 3] of integer;

1)  Сколько массивов описано? (Назвать имена).

2)  Для каждого массива указать:

а) сколько в нём элементов;

б) какие значения могут принимать элементы;

в) как в программе обратиться к первому и последнему элементу.

Задание 2.

Указать ошибки в описаниях:

а) const m = 100;

type

vord = array [1 .. m] of byte;

var digit: array [0 .. 3] of;

a: vord;

б) type

ab: array [1 .. n] of

char;

var

ba = ab;

ac = array [10 .. 1002] of real;

Задание 3.

Описать регулярный тип, объединяющий в себе массивы, элементами которого являются вещественные числа, а индексы – строчные буквы латинского алфавита.

Задание 4.

а) Описать массив ваших оценок за I полугодие.

б) Описать массив, элементами которого является среднесуточная температура за декабрь 2002 года.

в) Описать массив, элементами которого является первый столбец кодовой таблицы символов ASCII кодов

Задание 5.

Выбрать правильные операторы, если массив имеет следующее описание:

var

M: array [1 .. 4] of integer;

а) M [4]: = M [1]/5;

б) M: = M [1] + 3;

в) M2: = 2;

г) M [2]: = M [5] + 2;

Задание 6.

Описать массив, чтобы приведённые операторы были верными:

x: = 25;

A [3]: = sqrt (x);

For i: = 1 to 7 do

Writeln (A [i]);

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7