Входные и выходные данные паскаль

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

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

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

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

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

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

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

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

(буду писать так, чтобы было легко понять и запомнить, не научно)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если у Вас появилась ошибка типа:

Ошибка ввода/вывода 2: Не удается найти указанный файл (для ABC Pascal)

exited with exitcode=2 (для Free Pascal),

создайте в папке где сохранена ваша программа файл input.txt и введите в него число.

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

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

Блог содержит уроки для подготовки школьников к олимпиадам по информатике

Страницы

Уроки 39, 40 Чтение и запись данных в файл на Паскаль.

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

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

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

Для организации ввода данных из файла надо:

2. Открыть файл для чтения:
reset(input);

3. При работе нужно понимать и помнить отличия процедуры read, от readln. Если в файле данные записаны в одной строке, через пробел, то мы пользуемся все время процедурой read столько раз, сколько чисел нужно прочитать.
Если же строк несколько, то когда доходим до символа стоящего в конце строки, используем readln. В результате чего будет считано последнее число строки и курсор переместится на новую.
read(a); readln(a);

Например, указан следующий формат ввода:

Для организации вывода данных в файл надо:

2. Открыть файл для записи:
rewrite(output);

3.Для вывода используем операторы write и writeln также, как и было до сих пор.

Задание 1. Перенаправление. Прочитайте число n из файла input.txt и выведите его в файл output.txt

Входные данные:
В единственной строке входного файла input.txt записано число.
Выходные данные:
В единственную строку выходного файла output.txt нужно вывести в точности то же число, которое задано во входном файле.

Program z1;
var a:longint;
Begin
assign(input,’input.txt’);
reset(input);
read(a);
close(input);
assign (output,’output.txt’);
rewrite(output);
writeln(a);
close(output);
End.

Экспериментальный раздел

Наберите программу в среде программирования Free Pascal, запустите ее на исполнение. У Вас может появится ошибка типа:
exited with exitcode=2 (для Free Pascal), если файла input.txt нет.

Создайте в папке, где сохранена ваша программа файл input.txt и введите в него число.

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

Создание входного файла
Нажать F3, в открывшемся окне диалога Открыть файл написать имя входного файла (например, input.txt).
Если файл не существовал, среда Паскаля откроет пустое окошко с нужным именем. Ввести данные.
Не забыть нажать F2 — сохранить изменения.

Открытие входного и выходного файлов
Переместить курсор на строку в одиноч­ных кавычках, содержащую имя файла, например ‘input.txt’ в операторе assign.
Нажать Ctrl+Enter.
После изменения входных данных не забыть сохра­нить файл — F2.

Переход между окнами входных, выходных данных и текстом программы осуществляется нажатием клавиши F6.

Задание 2. Сумма двух чисел. Даны числа А и В (0

Входные данные:
В первой строке входного файла содержится единственное число А, (0 Тесты Посмотреть решение

Задание 3. Перепутал строки. Даны два числа А и В(0

Входные данные:
Первая строка входного файла содержит число А.
Вторая строка входного файла содержит число В.
(0 Тесты Посмотреть решение

Во второй строке входного файла содержатся N чисел через пробел — элементы массива

Выходные данные:
Первая строка — количество отрицательных элементов массива

Задание 6. Имеются два текстовых файла, состоящие из одной строки. Переписать строку первого файла во второй, а строку второго файла — в первый. Использовать вспомогательный файл.


Program z6;
var s,t:string;
Begin
assign(input,’t1.txt’);
reset(input);
read(s);
close(input);

assign(input,’t2.txt’);
reset(input);
read(t);
close(input);

assign (output,’t.txt’);
rewrite(output);
writeln(s);
close(output);

Задачи для самостоятельного решения

1. Создайте текстовый файл на диске, заполненный N целыми числами, записанными через пробел.
а) Выведите на экран сумму этих чисел, среднее арифметическое и произведение;
б) то же вывести в файл в отдельные строки.

2. Дан файл, заполненный целыми числами через пробел. Вывести в новый файл все:
а) четные числа;
б) числа, делящиеся на 3 и не делящиеся на 7.

3. Имеется текстовый файл, состоящий из n строк, записанных в столбик. Переписать его строки в другой файл. Порядок строк во втором файле должен:
а) совпадать с порядком строк в заданном файле;
б) быть обратным по отношению к порядку строк в заданном файле.

4. Имеется текстовый файл, состоящий из n строк, записанных в столбик. Все четные строки этого файла записать во второй файл, а нечетные — в третий файл. Порядок следования строк сохраняется.

Входными данными являются записи: номер продукции (n) , переходящий остаток продукции на начало года (e1) , приход продукции (e2) , расход (e3) , цена за 1 шт (e4) . При завершении ввода данных и выборе соответствующего пункта меню программы, программа выдаст пользователю итоговые данные в виде таблицы.

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

  • · Остаток на конец года (st) ;
  • · Итого (itog) ;

Файл с текстом программы (kurs. pas) имеет размер, равный 12,5 Kb; Исполняемый файл (kurs. exe) имеет размер 33,3 Kb;

В программе используются следующие переменные:

Bas — запись.

type bas=record n: integer; e1, e2, e3: integer; e4: real; end; Где: n — номер продукции; e1 — переходящий остаток продукции на начало года ; e2 — приход продукции; e3 — расход; e4 — цена за 1 шт.

menu2 — метка, используется для работы с главным меню программы;

C: char, используется для работы оператора readkay (читает символ с клавиатуры без эхоповтора на экране) ;

O: real используется для редактирования записей.

ww, l, nn, q, i, gd, gm: integer; ww-используется для вывода шапки таблицы (координата по Y) .

l-используется для работы с меню и для удаления записи nn, q- используется в программе для создание новых записей i-счетчик gd, gm — для графики: gd — определяет тип графического драйвера, gm — переменная, задающая режим работы графического адаптера;

pp, qq, n, mm: integer; — переменные для добавления новой записи;

f, f2: file of bas; — файлы a, b: bas; a, b — переменные, содержащие записи типа Bas.

Переменная b используется для удаления записей.

st: real; st — для вычисления суммы в таблице

procedure view(w: integer) ; — процедура вывода таблицы, где w-координата по Х; var

itog: real; -для вычисления итогового значения сумма в таблице; Procedure menu; — процедура вывода меню; Procedure zast; — процедура вывода графической заставки var xm, ym: integer; xm, ym-координаты для вывода граф. объектов

size: integer; saucer: pointer;

k, kk: integer; size, saucer, k, kk-для движения Procedure error; — процедура вывода сообщения об ошибке Procedure exitt; — процедура выхода из программы

Оцените статью
Добавить комментарий