Язык программирования Паскаль Тема 3

  • doc
  • 29.11.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Язык программирования Паскаль Тема 3.doc

Тема: Чтение и запись данных в файл на Паскаль.

Для чего нам нужно уметь работать с файлами в Паскаль?

А для того, чтобы Вы могли начать самостоятельно решать задачи на портале и зарабатывать рейтинг.

Ранее мы рассмотрели ввод вывод данных в Паскаль. Ввод данных в этом случае осуществлялся вручную, с помощью клавиатуры и результат мы также смотрель сами в окне вывода. Для того чтобы Вам быть увереным в том, что программа написана правильно необходимо протестировать её.

Для того чтобы наша система автоматически тестировала Ваше решение необходимо, ввод и вывод данных осуществлять из текстовых файлов. 

Ввод мы будем осуществлять из файла input.txt

Вывод будем производить в файл output.txt

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

Для того, чтобы организовать ввод данных из файла нам надо:

1. Завести преременную типа текст и переменную в которую будем записывать прочитанное значение.

Var


  t:text;


  a:integer;


2. Связать эту текстовую переменную с файлом из которого будет производиться чтение. 

Begin


  assign(t,'input.txt');


3. Открыть файл для чтения.

reset(t);

4. Теперь можно читать данные. Тут нужно понимать и помнить отличия процедуры read,  от readln. Про что я? Если в файле данные записаны в одной строке, через пробел, то мы пользуемся все время процедурой read столько раз, сколько чисел нужно прочитать.

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

read(t,a);

 

Внимание! Для чтения из файла в скобках необходимо на первом месте указать ту текстовую переменную которую Вы связали с входным файлом,  затем список переменных для чтения.

Самой распространенной ошибкой является то что забывают ставить эту переменную (текстовую).

5. Как только мы прочитали все переменные необходимо закрыть файл.

close(t);


Внимание! Процедура close освобождает переменную t и мы можем её использовать в других целях, например для вывода данных. Если мы её не закрыли (нужно продолжать чтение), то для вывода необходимо будет завести еще одну текстовую переменную.

На этом ввод окончен.

Опишем процесс вывода результатов в текстовый файл.

1. Опять как и в случае со вводом, необзодимо связать текстовую переменную с выходным файлом. Только файл уже называется (для нашего портала) output.txt.

assign(t,'output.txt');


2. Затем необходимо создать или перезаписать файл output.txt

rewrite(t);


3. Выводим данные. Не забываем ставить файловую переменную в начале списка вывода.

write(t,'Вот число из файла input.txt ', a);


4. Как и в предидущем случае после вывода всех данных необходимо закрыть файл.

close(t);


Запишем программу целиком.

Program Vvod_Vivod;


  var


    a:longint;


    t:text;


Begin


  assign(t,'input.txt');


  reset(t);


  read(t,a);


  close(t);


  assign (t,'output.txt');


  rewrite(t);


  write(t,a);


  close(t);


End.


Практическое задание к уроку.

Ваша задача сейчас состоит в том, чтобы ввести программу в среде программирования Free Pascal (можно и в ABC Pascal) и запустить ее на исполнение. 

Если у Вас появилась ошибка типа: Ошибка ввода/вывода 2: Не удается найти указанный файл (для ABC Pascal) или exited with exitcode=2 (для Free Pascal), создайте в папке где сохранена ваша программа файл input.txt и введите в него число.

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

Для любознательных. 

Другие функции для работы с файлами в Паскале:

ФАЙЛЫ. ОПЕРАЦИИ НАД ФАЙЛАМИ в Паскале

ТИПЫ ФАЙЛОВ (ФАЙЛОВЫХ ПЕРЕМЕННЫХ)

1. текстовый                         var f: text;

2. типизированный           var f: file of <тип компонента>;

3. нетипизированный       var f: file;

Данные в типизированных и нетипизированных файлах хранятся в формате
внутримашинной обработки.

Текстовый файл на диске – это полная модель клавиатуры и экрана (input, output).

Текстовый файл печатиlst (модуль printer).

 ФУНКЦИИ для работы с файлами в Паскале

Функция

Назначение

Пример вызова

Значения

eof(file)

условие «конец файла»

if eof(f) then ...

[true; false]

eoln(file)

условие «конец строки»

if eoln(f) then ...

[true; false]

filepos(file)

получить номер позиции для обмена

if filepos(f) > 0 then ...

[0;n]

filesize(file)

получить размер файла [количество записей]

seek(f, filesize(f))

[0;n]

ioresult

номер ошибки ввода-вывода ({$I-})

if ioresult = 0 then ...

[0;n]

 ПРОЦЕДУРЫ для работы с файлами в Паскале

Процедура

Назначение

Пример вызова

Тип файла

assign(file, имя)

назначить файл для файловой переменной

assign(f, ’a: text’) assign(f, path)

Все файлы

close(file)

закрыть файл

close(f)

Все файлы

reset(file [,длина-з.])

открыть файл

reset(f)

Все файлы

rewrite(file [,длина-з.])

создать файл

rewrite(f, 1)

Все файлы

append(file)

открыть для добавления

append(f)

Text

read(file, данные)

ввод данных

read(f, mydata)

Все файлы

readln(file, данные)

ввод данных, пропуск конца строки

readln(f, a, b, c)

Text

write(file, данные)

вывод данных

write(f, mydata)

Все файлы

writeln(file, данные)

вывод данных, вывод конца строки

writeln(f, a:10:2)

Text

blockread(f, данные, n,

результат)

ввод блока из n записей,

результат = сколько передано

blockread(f, a, 50,p)

File

blockwrite(f, данные, n, результат)

вывод блока из n записей
результат = сколько передано

blockwrite(f, a,50,p)

File

seek(file, номер позиции)

установить номер позиции для обмена [0;n], n = число записей

seek(f, 0)

Кроме text

 

 


Скачано с www.znanio.ru