Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Inform_Met_2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.56 Mб
Скачать

Массивы

Массив – упорядоченный набор однотипных значений – компонент массива. Тип компонент массива определяют тип массива. В Паскале массив рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое, так и на любую из его компонент по индексу.

Переменная с индексом – идентификатор компоненты массива. Формат записи:

<Имя массива> [< индекс >],

где индекс может быть выражением порядкового типа.

Описание массива определяет имя, размер массива и его тип. Описание обычно проводится в разделе объявления переменных. Возможно описание в разделе объявления типов и в разделе типизированных констант. Формат описания в разделе переменных:

Var <имя массива> :array[<тип индекса>] of <тип>

Чаще всего в качестве типа индекса используется интервальный целый тип.

Линейный (одномерный) массив – массив, у которого элементы – одноиндексные. В одномерных массивах хранятся значения линейных таблиц. Примеры описания одномерных массивов:

Var Shoes1 : array [0..15] of Real;

Shoes2 : array [0..25] of Char;

Ocean3 : array [‘A’..’Z’] of Integer;

Примеры описания многомерных массивов:

Var Shoes11 : array [0..15, 0..5] of Real;

Shoes22 : array [0..25, 0..5] of Char;

Ocean33 : array [‘A’..’Z’, 0..5] of Integer;

В примере с именем Ocean33 адресация к элементам целых данных будет осуществляться по букве и по цифре. Буквенно–цифровая индексация широко используется в электронных таблицах, таких как Microsoft Excel.

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

Применение файлов и организация ввода–вывода

Ввод данных с клавиатуры производится обращением к стандартным процедурам:

Read(<список ввода>) Readln(<список ввода>).

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

Вывод данных на экран производится обращением к стандартным процедурам:

Write(<список вывода>) Writeln(<список вывода>).

Если операторы ввода–вывода имеют окончание ln, то это означает, что после завершения операций ввода–вывода индикатор курсора перейдет на следующую строку, а если операторы ввода–вывода не имеют окончание ln, то индикатор курсора займет позицию, следующую за последним введенным элементом списка.

С целью перемещения индикатора курсора на следующую строку, для удобства ввода и форматирования данных, очень часто применяют операторы ввода–вывода без списка:

Writeln;

Readln.

Использование команд перемещения курсора из модуля Crt не рекомендуется так, как на большинстве современных персональных компьютеров этот модуль не работает. Внешнее проявление такой ошибки проявляется в появлении сообщения о делении на ноль:

Элементы списка вывода – константы, переменные, выражения, форматы вывода.

Ввод и вывод данных в Паскале может осуществляться не только с клавиатуры и на монитор, а и через файлы. Файл – это поименованная область памяти на внешнем носителе, предназначенная для хранения данных. Он может размещаться на гибких и жестких дисках.

Имя файла должно содержать до 8 разрешенных символов (для операционной системы типа MS–DOS). За именем, через точку, следует его расширение, имеющее до трех символов (формула 8.3 для коротких имен версий MS–DOS). Если файл находится не в одной и той же директории (папке) с рабочей директорией запущенной программы, то для обращения к файлу перед его именем необходимо указать путь к нему.

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

Обстоятельства, при которых прибегают к использованию файлов, условно можно разбить на три класса:

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

Для записи данных научно–технических измерений, обработка которых в реальном масштабе времени (то есть в процессе их получения) невозможна, с целью их последующего анализа при помощи различных программ обработки.

Для хранения баз данных.

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

Как и все переменные, файловая переменная объявляется в разделе описания переменных. Существует три типа файловых переменных:

Var

F1 : file of text; {Текстовый файл}

F2 : file of integer; {Типизированный файл целых чисел}

F3 : file; { нетипизированный файл}

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

После работы с файлом он, как правило, должен быть закрыт процедурой Close.

Assign(F, Name) – связь файловой переменной F с внешним файлом, имеющим имя Name. Name – переменная или константа типа String.

Reset(F) – открытие существующего файла.

Rewrite(F) – открытие нового файла. При существовании файла, его содержимое уничтожается новыми данными.

Close(F) – закрытие открытого файла.

Eoln(F) – логическая функция контроля конца строки (End of line).

Eof(F) – логическая функция контроля конца файла (End of file).

Пример программы по чтению данных с винчестера, расчету и их записи на дискету с одновременным выводом на экран монитора:

Program FileOut; {заголовок программы}

Var

X, Y, Pr : Real; {раздел объявления переменных}

FIn : Text;

FOut : Text;

Begin

Assign(FIn,’C:\My Documents\User\Economy\M_Benz\Nalog.dat’);

Assign(FOut,’A:\M_Benz\Result.dat’);

{связь файловых переменных с внешним файлом}

Проверьте, чтобы в приводе стояла дискета и на ней была создана папка M_Benz.

Проверьте, чтобы была создана папка ’M_Benz’ и файл ’Nalog.dat’ с соответствующим путем’C:\My Documents\User\Economy\M_Benz\Nalog.dat’.

В файл ’Nalog.dat’ поместите две любые цифры через пробел.

Reset(FIn); {открытие файла для чтения}

Writeln(‘Чтение данных X и Y ’); {вывод сообщений на экран}

ReadLn(FIn, X, Y); {чтение чисел из файла и

присваивание их значений переменным X и Y}

Pr:=X*Y; {вычисление произведения}

WriteLn(‘Произведение чисел X= ’, X, ‘ Y= ’, Y, ‘Равно ‘, Pr);

{вывод результата на экран}

Rewrite(FOut); {открытие файла для записи}

WriteLn(FOut, ‘Произведение чисел X= ’, X, ‘ Y= ’, Y, ‘Равно ‘, Pr);

{вывод результата на дискету}

Close(FIn); {закрытие файла FIn}

Close(FOut); {закрытие файла FOut}

End.

Результаты расчета можно посмотреть любым текстовым редактором из приведенных программных сред: Turbo Pascal, Microsoft Word и др.

Обратите внимание, что просмотр файлов из приложений производится по маске, характерной для данного приложения(*.pas – для Turbo Pascal, *.doc – для Microsoft Word). Поэтому, чтобы сделать видимыми остальные файлы необходимо маску на просмотр файлов в этих приложениях установить *.*.

Не забывайте, что при создании файлов в среде Turbo Pascal, кодовая страница файлов будет соответствовать кодовой странице MS–DOS и попытка просмотреть такие файлы в приложениях Windows, имеющих другую кодировку, приведет к некорректному отображению кирилличного текста.

Для приведения кодовых страниц в соответствие используйте настройки из Microsoft Word.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]