Учебно-методическое пособие. Алматы, 2017 ббк



бет67/106
Дата03.01.2022
өлшемі483.39 Kb.
#451845
түріУчебно-методическое пособие
1   ...   63   64   65   66   67   68   69   70   ...   106
УЧЕБНИКПаскаль(100217)

Задание

1. Куда будет записан массив Chislo, если в подпрограмме Exi в процедурах Write и Writeln не указывать первый параметр FileOut?

2. Что произойдет, если этот параметр не указывать только в процедуре Writeln?

2.8.4.Считывание данных из текстового файла.

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

Для этого воспользуемся файлом «MayFile1.in». Как и в случае записи информации в файл, в начале надо задать имя переменной, с которой мы будем связывать наш файл. Допустим, что имя этой переменой будет FileIn, затем мы должны описать его как текстовый файл. В связи с тем, что использовать эту переменную будем в процедуре ввода, ее так же можно описать как локальную переменную, в блоке описаний локальных переменных данной процедуры.

var


FileInt : text;
Далее мы должны дать указание программе, что переменная с именем FileIn имеющая тип "текстовый" обозначает наш реальный файл с именем 'mayFile1.in'. Для этого используется процедура assign(NameVar,NameFile).

Теперь надо открыть данный файл и указать, что из данного файла будут считываться данные. Для этого служит процедура reset(NameVar), здесь NameVar - также имя переменной которую вы задали для обозначения файла, в нашем случае NameVar - FileIn. Процедура reset(NameVar) - открывает файл для считывания и перемещает указатель к началу файла. Если такого файла нет, то появится сообщение об ошибке.

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

В файле «MayFile1.in», первое число означает количество чисел находящихся в файле. Поэтому, с начало считаем из файла значение переменной Kolichestvo, затем используя цикл с параметром считаем значения чисел находящихся в файле.

После считывания данных используя, уже известную процедуру, Close( ) файл надо закрыть.

Посмотрим, как будет выглядеть наша процедура считывания данных из файла:


procedure Init;

var


i : byte;

FileIn : text;

begin

assign (FileIn, ‘mayFile1.in’);



reset(FileIn);

readln(FileIn, Kolichestvo);

for i:=1 to Kolichestvo do

read (FileIn, Chislo [i]);

close(FileIn);

end;
Считывание данных из двухмерного массива, если известна его размерность, также не вызывает трудности. Приведем пример фрагмента программы считывания данных из файла «mayFile5.in»:


procedure Init;

var


i,j : byte;

{объявление имени переменной как текстового файла}

FileIn : text;

begin


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

assign (FileIn, ‘mayFile5.in’);

{открытие файла для чтения}

reset(FileIn);

{считывание размерности массива и перевод курсора на новую строку}

readln(FileIn, KolichestvoStrok,KolichestvoStolb);

{считывание элементов массива по строкам и столбцам}

for i:=1 to KolichestvoStrok do

for j:=1 to KolichestvoStolb do

read (FileIn, Chislo [i,j]);

{закрытие файла}

close(FileIn);

end;
Обратите внимание, что при считывании элементов массива использовалась процедура Read( ), без использования процедуры Readln( ). Это стало возможным потому, что при считывании элементов массива была известна его размерность. Если количество элементов (записей) находящихся в текстовом файле заранее неизвестно, то придется использовать цикл с нефиксированным количеством действий.



Достарыңызбен бөлісу:
1   ...   63   64   65   66   67   68   69   70   ...   106




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет