Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Turbo Pascal / Stud_1_1 / LecRus / MainPart.doc
Скачиваний:
117
Добавлен:
03.03.2016
Размер:
5.03 Mб
Скачать

Ввод - вывод одномерного массива

Ввод и вывод массива, в том числе ввод с клавиатуры и вывод на экран, можно осуществить только по-элементно.

  1. Ввод массива с клавиатуры.

Const Nmax = 500;

Type Ar = array[1..Nmax] of real;

Var i, { параметр цикла }

n : word; { текущий размер массива }

X : Ar; { массив }

Begin

Read(n); Writeln('n= ',n);

For i:=1 to n do

Read(x[i]);

Каждой переменной, как простой, так и составной, при старте программы выделяется столько памяти, сколько определено описанием этой переменной в разделе Var. В данном случае массиву X выделяется память для размещения Nmax = 500 элементов (500  6 = 3000 байт). Это поле памяти может полностью или частично использоваться при работе программы. Очевидно, что при этом должно выполняться отношение nNmax, где n - текущий размер массива X.

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

Const Nmax = 500;

Type Ar = array[1..Nmax] of real;

Var i, { параметр цикла }

n : word; { кол-во элементов в массиве, }

X : Ar; { формируемый массив }

Begin

Writeln('Введите значение n ');

Read(n); Writeln('n= ',n);

For i:=1 to n do

Begin

Writeln('Введите значение элемента x[',i,'] ');

Read(x[i]);

End;

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

2. Ввод массива из текстового файла.

Файлы будут подробно рассмотрены несколько позже. Здесь же будут приведены лишь основные сведения, необходимые для организации ввода из текстового файла.

Текстовый файл, содержащий исходные данные, ничем не отличается от файла, содержащего текст Паскаль-программы. Формирование этих файлов производится одним и тем же способом. Если в такой файл записываются числовые данные, то здесь должны быть выполнены лишь два основных требования:

- числа должны иметь форму правильных констант;

  • разделителем между числами являются один или несколько пробелов.

При этом не имеет значения, сколько чисел записано в каждой строке текстового файла.

Предположим, что файл на диске имеет имя 'Mas.dat'. Программа ввода из этого файла может иметь вид:

Const Nmax = 500;

Type Ar = array[1..Nmax] of real;

Var i,n : word;

X : Ar;

F : text; { текстовый файл }

Begin

Assign(F,'Mas.dat');

Reset(F);

Read(F,n); Writeln('n= ',n);

For i:=1 to n do

Read(F,x[i]);

Close(F);

Здесь F - имя текстового файла, объявленное в разделе Var (внутреннее имя файла);

Assign - процедура, устанавливающая связь между внутренним именем F и именем файла на диске (внешним именем);

Reset, Close - процедуры открытия и закрытия файла.

По объявлению

Var F : text;

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

Внешнее имя файла формируется по правилам, принятым в операционной системе MS DOS.

В данном примере первым значением, которое вводится из файла F, является количество элементов n в массиве X.

В файле Mas.dat можно не размещать значение переменной n (количество элементов массива), возложив определение этого значения непосредственно на программу ввода.

Const Nmax = 500;

Type Ar = array[1..Nmax] of real;

Var i,n : word;

X : Ar;

F : text;

Begin

Assign(F,'Mas.dat');

Reset(F);

n:=0;

While not SeekEof(F) do

Begin

n:=n+1; Read(F,x[n]);

End;

Close(F);

В Турбо Паскале имеются две логические функции, выходным значением которых является true при достижении конца файла: Eof(F) и SeekEof(F) (eof - сокращение слов End Of File). Как будет показано позже при рассмотрении текстовых файлов, при вводе числовых массивов более предпочтительна функция SeekEof(F).

В приведенной выше программе цикл While работает до тех пор, пока не будет достигнут конец файла F.

Соседние файлы в папке LecRus