• В объявлении массива указывают две его характеристики: диапазон индексов и тип элементов.
• Индекс элемента может быть задан числом или выражением порядкового типа.
• Указание неверного индекса порождает ошибки либо при компиляции, либо при выполнении программы.
• Ввод массива из текстового файла и вывод в него возможен только поэлементно, для чего организуют цикл.
А) Массив A и переменная C объявлены так:
var A : array [’a’..’z’] of integer;
C: char;
Допустимо ли такое объявление массива и почему? Сколько элементов содержит массив? Какие из указанных ниже операторов будут (или могут) вызывать ошибки нарушения диапазонов?
A[’s’]:= 10;
A[’R’]:= 10;
C:=’d’; A[C]:= 10;
Readln(C); A[C]:= 10;
Проверьте свои решения на практике.
Глава 40
Пристрелка на знакомых мишенях

Итак, из арсенала Паскаля мы извлекли ещё одно мощное оружие – массивы. Опробуем его на знакомых мишенях, – некоторые наши программы можно улучшить, например, программу «вопрос-ответ» или полицейскую базу данных.
В 16-й главе мы смастерили шуточную программку, невпопад отвечающую на вопросы пользователей. Жаль только, что ответы намертво вбиты в саму программу. Скоро пользователям надоест смеяться над одним и тем же, и они забросят игрушку. Так пусть ваши приятели сами сочиняют смешные ответы и помещают их в текстовый файл, и тогда программа при запуске будет загружать их оттуда.
Прежде всего, подумаем над размещением вводимых из файла строк, где поселить их? «В массиве строк», – скажете, и будете правы. А сколько элементов запасти в этом массиве? Чем больше, тем лучше? Некоторые компиляторы накладывают ограничение на размер массива, но сотню строк они позволят, и этого пока достаточно. Итак, для хранения ответов объявим массив из 100 строковых переменных.
Перейдем к процедуре ввода этих строк. Техника ввода массива рассмотрена в предыдущей главе. Но теперь надо ещё и подсчитать введенные строки, иначе в дальнейшем мы не всегда сможем правильно индексировать массив, — ведь фактическое количество строк в файле может быть и меньше ста. С этой целью объявим переменную Fact, в которой и сделаем нужный нам подсчёт.
Обсудив эти моменты, обратимся к программе «P_40_1».
{ P_40_1 – Программа "вопрос-ответ" с применением массива }
const CAnswers = 100; { размер массива с ответами }
{ объявление типа для массива ответов }
type TAnswers = array[1..CAnswers] of string;
var Answers : TAnswers; { объявление массива ответов }