Fruitsekta.ru

Мир ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ввод и вывод из файла паскаль

Ввод-вывод данных в Pascal

Компьютерные программы обрабатывают (изменяют) различные данные. Программа получает данные, что-то делает с ними и выводит их в измененной форме или выводит другие данные.

Следовательно, любой язык программирования должен иметь инструменты как для ввода данных, так и их вывода. В Паскале ввод осуществляется с помощью процедур read() и readln() , а вывод — благодаря write() и writeln() . Процедуры, которые имеют окончание ln , после своего выполнения переводят указатель на новую строку.

Откуда или с помощью чего можно ввести данные в программу? Обычно это можно сделать с помощью клавиатуры или из файлов.

Куда можно вывести данные? На экран, в файл, на принтер и др.

Стандартным устройством ввода является клавиатура, а вывода — монитор. Стандартные — значит «работающие по-умолчанию»; т.е. если не указано ничего иного, то программа будет считывать данные с клавиатуры, а выводить их на монитор. Вместе клавиатуру и монитор называют консолью. Таким образом консоль представляет собой стандартное устройство ввода-вывода.

Вывод данных на экран. Форматированный вывод

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

Допустим, нам требуется отобразить на экране пару фраз. Если мы хотим, чтобы каждая из них начиналась с новой строки, то надо использовать writeln() , если нет – то write() .

Write() чаще используется, когда надо вывести для пользователя сообщение на экран, после чего получить данные, не переводя курсора на новую строку. Например, выводим на экран «Введи число: » и не переводим курсор на новую строку, а ждем ввода.

Еще один пример. В памяти компьютера хранятся данные. Из программы мы обращаемся к ним с помощью переменных num, fl и st. Вывести их значения на экран можно по-разному.

Во втором случае мы видим, что процедуры вывода (как write() так writeln() ) позволяют конструировать выводимую информацию из различных компонент (строк-констант и переменных).

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

Ввод данных с клавиатуры

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

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

В процедуры ввода можно передавать не один фактический параметр, а множество.

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

Существуют особенности ввода данных с помощью операторов read() и readln() . Если используются подряд несколько операторов read() , то вводимые данные можно разделять всеми допустимыми способами. При использовании нескольких вызовов readln() каждый последующий срабатывает только после нажатия Enter. Программа ниже иллюстрирует это. Комментарии поясняют последовательность возможных действий при вводе данных.

Файловый ввод-вывод данных в Pascal. 11-й класс

Класс: 11

Цели урока:

  • Образовательные: познакомить с понятием файл, текстовым типом данных, сформировать умения пользоваться средствами обработки файлов, сформировать умение решать задачи с использованием файлового ввода-вывода данных.
  • Развивающие: развивать познавательный интерес, творческую активность учащихся; развивать логическое мышление.
  • Воспитательные: воспитывать интерес к предмету, аккуратность, внимательность, дисциплинированность.

Тип урока: урок совершенствования знаний.

Класс: 11

Оборудование: ПК, программное обеспечение – среда программирования PascalABC, проектор, доска, презентация « Файловый ввод-вывод данных»

Виды работы: беседа, работа с опорным конспектом, работа за ПК.

Этапы урока:

  1. Организационный момент.
  2. Фронтальный опрос.
  3. Проверка домашнего задания
  4. Постановка цели урока.
  5. Изучение нового материала.
  6. Первичное закрепление изученного.
  7. Практическая работа на ПК
  8. Подведение итогов урока.
  9. Постановка домашнего задания.

Фронтальный опрос

  1. Из каких частей состоит программа?
  2. Что включает в себя раздел описания ?
  3. В разделе описания переменных какие типы данных мы описываем?
  4. С каких служебных слов начинается исполняемая часть?
  5. Как осуществляется ввод-вывод данных?
  6. Как работает команда присваивания?
  7. для чего предназначен условный оператор?
  8. Какие операторы используются в условном операторе?
  9. Какими логическими связками могут быть соединены простые условия?

Проверка домашнего задания: На доске записать домашние задачи – 2 чел, на компьютере проверить составленные программы – 2 чел. Остальные карточки.

Читать еще:  Техника безопасности при укладке волос

Постановка темы, целей и задач урока

До сегодняшнего момента мы с вами используя процедуры ввода-вывода вводили данные с клавиатуры. Конечно, программы, которые мы сейчас составляем очень просты, мы пока изучили только несколько операторов, команд, но если возникнет необходимость ввести большое количество исходных данных?, если появится необходимость вывести и сохранить данные для другой программы?, а если будет нужно пройти автоматизировано не три теста, как мы проходим в нашем электронном задачнике , а больше? Как же поступить в этом случае? Вот сегодня мы с вами и познакомимся с новым типом данных и с новыми процедурами работы с файлами. ИТАК:

Изучение нового материала

Тема урока: Файловый ввод-вывод данных. СЛАЙД 1

С понятием файла Вы знакомы еще с младших классов:
Файл- это область внешней памяти, предназначенная для хранения данных. Любой файл в Паскале имеет три характерные особенности: СЛАЙД 2
А) файла есть имя, что дает возможность программе работать сразу с несколькими файлами.
Б) файл содержит компоненты одного типа (файл строк, файл записей)
В) объем файла не оговаривается в программе , значит объем файла зависит только от внешнего устройства хранения этого файла

В Паскале по способу организации различают три типа файлов: СЛАЙД 3

  • Текстовые файлы
  • Типизированные файлы
  • Нетипизированные файлы

Типизированные файлы чаще всего используют для создания больших баз данные , так как в этих файлах используют четкой структуры записи и обработка данных может происходить с любого места записи в этом файле. Такой доступ к элементам файла называется прямым доступом.
Сегодня мы более подробно будем рассматривать текстовые файл, так как в основном автоматизированная проверка работы программы осуществляется вводом и выводом данных именно из текстовых файлов.
Текстовый файл представляет собой последовательность символов разбитую на строки. Каждая строка заканчивается маркером конца строки, или как мы привыкли нажатием кнопки Enter. Текстовые файлы являются файлами последовательного доступа , так как прежде чем начать обработку с нужного элемента надо последовательно пройти все ранее записанные элементы.
Для того чтобы мы могли работать с файлом:считать из него данные, изменить данные, записать результат мы должны проделать вот такой алгоритм: СЛАЙД 4

установить связь программы с файлом;
«открыть» файл для чтения или записи;
считать из файла или записать в файл;
закрыть файл.

В программе на Паскале текстовый файл представлен файловой переменной типа TEXT. СЛАЙД 5
Var : text;
Связь файловой переменной с именем файла на диске осуществляется с помощью оператора Assign(имя файловой переменной, имя файла на диске);
Имя файла на диске должно содержать полный путь для поиска данного файла. Если полный путь не указан, то программа будет искать файл в каталоге, где хранится программа.
Открытие файла для чтения выполняется процедурой Reset (имя файловой переменной), если на диске не будет файла с данным именем, то выполнение программы прервется; СЛАЙД 6
Открытие файла для записи осуществляется процедурой Rewrite (имя файловой переменной), если на диске нет такого файла, то он будет создан.
После открытия файлов, мы можем считывать данные и осуществлять вывод данных уже известными нами процедурами Read и Write. СЛАЙД 7
И после, что мы должны сделать – это закрыть и файл для чтения и файл для записи процедурой Close. СЛАЙД 8

Первичное закрепление изученного

Закрепим изученный материал составлением программа. Из задачника решаем задачу 1 по новой теме.

1. Даны три целых числа.
Определить, имеется ли среди них хотя бы
одна пара равных между собой чисел.
Формат входных данных
Входной файл содержит три целых числа через пробел.
Формат выходных данных
Выведите ‘YES’ если это так, и ‘NO’ в противном случае.

Вход
544 935 911
Выход
NO

1. Program vetvlenie;
Var
a,b,c:integer;
f,g: text;

begin
assign (f,’input.txt’);
reset (f);
readln (f,a,b,c);
close (f);

assign (g,’output.txt’);
rewrite (g);
if (a=b) or (b=c) or (c=a) then
writeln (g,’YES’)
else
writeln (g,’NO’);
close(g);

Практическая работа на ПК

Сохраняем файл в папке 11 класс/Программирование под именем Demofile.pas
Создаем в папке входной файл – input.txt Выходной файл – output.txt
Самостоятельно: Задача №2, изменяем заранее созданную программу под файловый ввод-вывод.

2. Program geron;
var
a,b,c:integer;
s,p:real;
f,g:text;

begin
assign(f,’input.txt’);
reset(f);
readln(f,a,b,c);
close(f);
assign(g,’output.txt’);
rewrite(g);
if(a+b>c)and (a+c>b)and(b+c>a) and (a>0)and(b>0)and(c>0) then begin
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)* (p-b)* (p-c));
writeln (g,s:12:6);
end
else writeln(g,-1);
close(g);
end.

Итоги урока и домашнее задание

– Что нового вы узнали?
– Какие знания вам помогли усвоить материал урока?
– Что на ваш взгляд вам удалось освоить лучше, а что нет?
– Над чем вам необходимо поработать?

Домашнее задание: учить конспект. Задача №3 из задачника.

Используемая литература:

  1. Л.А.Татарникова. Основы алгоритмизации и программирование на языке Pascal, Томск – 2007
  2. Информатика. Базовый курс. 7-9 классы / И.Г.Семакин, Л.А.Залогова, С.В.Русаков, Л.В.Шестакова. – М.: БИНОМ. Лаборатория знаний, 2004
  3. Информатика. Задачник-практикум в 2т / Под ред. И.Г.Семакина, Е.К.Хеннера. – М.: БИНОМ. Лаборатория знаний, 2004.
  4. CD-диск. Вычислительная математика и программирование, 10-11 класс. Учебное пособие / Фальков А.И., Молодцова М.Г., Юсупова И.С. ГУ РЦ ЭМТО, 2004.
Читать еще:  Найти площадь круга паскаль

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Pascal: Занятие № 12 Часть1. Работа с файлами в паскале (текстовые файлы)

Работа с файлами в паскале

Виды файлов в зависимости от их описания и режимом работы

  1. текстовые (тип text) файлы со строками неопределенной длины;
  2. файлы с типом записей (двоичные или типизированные (file of) );
  3. файлы без типа для передачи данных блоками записей нетипизированные (file).

Описание файловых переменных:

Для связи файла в коде программы и действительного файла на внешнем носителе используется процедура ASSIGN :

где myfile — имя переменной (объявленной ранее в области var ), ассоциированной с файлом
c:text.txt — путь к реальному файлу
Первый аргумент процедуры assign в паскаль — переменная, второй – путь к файлу на диске.

Текстовые файлы в паскале: процедуры работы

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

Возможные расширения файлов:
*.txt, *.log,
*.htm, *.html

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

Предусмотрены два режима работы: режим для записи в файл информации и для чтения ее из файла. Одновременная запись и чтение запрещены.

Открытие файла

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

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

процедура открытия существующего файла для чтения при последовательном доступе:

процедура открытия создаваемого файла для записи в него информации; если файл с таким именем уже существует, то информация в нем стирается:

процедура добавления в конец:

  • При открытии курсор устанавливается в начало файла.

Чтение из файла

Read (f, список переменных); ReadLn (f, список переменных);

Отличие ReadLn от Read в том, что при использовании readln после прочтения данных пропускаются все оставшиеся символы в данной строке, включая метку конца строки.

  • чтение осуществляется с той позиции, где в данный момент стоит курсор;
  • после чтения курсор сдвигается к первому непрочитанному символу.

Для возврата в начало файла:

close ( f ); reset ( f );

Запись в текстовый файл

Write (f, список переменных); WriteLn (f, список переменных);

где f — файловая переменная, а второй параметр – выводимые из программы и вводимые в файл данные (в виде значений переменных или просто данные)

Процедуры работы с файлом и закрытие файла

Нахождение конца файла:

Логическая функция, возвращающая True, если достигнут конец файла.

Нахождение конца строки:

Логическая функция, возвращающая True, если достигнут конец строки.

Удалить файл в Паскале

Переименование файла в Паскале

rename(переменная_файла,’новое имя файла’);

Закрытие:

Рассмотрим пример работы с файлами в паскале:

var filetext: text; a,b,c:string; begin assign(filetext,’c:text.txt’); reset(filetext); readln(filetext,a); readln(filetext,b); readln(filetext,c); close(filetext); writeln(a); writeln(c); end.

* Из задачника М. Э. Абрамян (Text4)

var F: Text; N,K:integer; Name:String; C:Char; begin Assign(F,’c:text.txt’); Reset(F); N:=0; K:=0; While not eof(F) do begin inc(N); While not eoln(f) do begin inc(K); Read(F,C); end; Readln(F); end; Close(F); Writeln(N,’ ‘,K); end.

var p, x: integer; f: text; begin assign(f, ‘input.txt’); reset(f); p := 1; while not eof(f) do begin readln(f, x); p := p * x; end; close(f); assign(f, ‘output.txt’); rewrite(f); writeln(f, ‘Произведение чисел ‘, p); close(f); end.

var filetext: text; a:string; i:integer; begin assign(filetext,’c:text.txt’); rewrite(filetext); for i:=1 to 10 do . reset(filetext); for i:=1 to 10 do begin . . end; close(filetext); end.

* Из задачника М. Э. Абрамян (Text1)

* Из задачника М. Э. Абрамян (Text5)

* Из задачника М. Э. Абрамян (Text7)

var F_in,F_out: Text; Name,S: String; begin Write(‘S: ‘); Readln(S); Assign(F_in,’c:text.txt’); Reset(F_in); Assign(F_out,’c:text1.txt’); Rewrite(F_out); Writeln(F_out,S); While not eof(F_in) do begin Readln(F_in,S); Writeln(F_out,S); end; Close(F_in); Close(F_out); Erase(F_in); Rename(F_out,’c:text.txt’); end.

* Из задачника М. Э. Абрамян (Text9)

* Из задачника М. Э. Абрамян (Text15)

var F_in,F_out: Text; Name,line: string; K,i:integer; begin Write(‘K: ‘); Readln(K); Assign(F_in,’c:text.txt’); Assign(F_out,’c:text1.txt’); Reset(F_in); Rewrite(F_out); i:=0; While not eof(F_in) do begin Readln(F_in,line); inc(i); if i<>K then Writeln(F_out,line); end; Close(F_in); Close(F_out); Erase(F_in); Rename(F_out,’c:text.txt’); end.

Работа с данными из файла как с массивом

  • для сортировки необходим массив, для того чтобы одновременно работать со всеми числами;
  • неизвестно общее количество чисел.
  • объявляем массив для 100 элементов;
  • открываем файл на чтение, просчитываем количество чисел, заполняя массив, сохраняем количество в N;
  • сортируем N элементов массива;
  • записываем результат в файл.
Читать еще:  Тип данных запись паскаль

* Из задачника М. Э. Абрамян (Text16)

А теперь вернемся к олимпиадному заданию по Паскалю, частично решенному на одном из предыдущих заданиях:

p.inp.out
3
hello earth
khoor hduwk

* желательно создать файлы и записать данные в исходный файл «вручную»
* программа решена для k=3, выполните программу для любых k (не превышающих 20 по модулю)

var a:char; i,n,k:byte; s,s1:string; f_in,f_out:text; begin Assign(F_in,’z:p.in’); Assign(F_out,’z:p.out’); Reset(F_in); Rewrite(F_out); s1:=»; readln(f_in,k); readln(f_in,s); for i:=1 to length(s) do begin n:=ord(s[i]); if n<>32 then <32 - пробел>n:=n+3; if . then . ; if . then . ; if . then . ; a:=chr(. ); s1:=. ; end; writeln(s1); writeln(f_out,s1); close(f_in); close(f_out) end.

var a:char; i,n,k:byte; s,s1:string; f_in,f_out:text; begin Assign(F_in,’z:p.in’); Assign(F_out,’z:p.out’); Reset(F_in); Rewrite(F_out); s1:=»; readln(f_in,k); readln(f_in,s); for i:=1 to length(s) do begin n:=ord(. ); if n<>32 then <32 - пробел>n:=n+3; if n=123 then n:=97; <â ASCII 123 - x, 97 - a>if n=124 then n:=98; <â ASCII 124 - y, 98 - b>if n=125 then n:=99; <â ASCII 125 - z, 99 - c>a:=chr(n); s1:=s1+a; end; writeln(s1); writeln(f_out,s1); close(f_in); close(f_out) end.

Найти сумму всех чисел от 1 до n, имеющих ровно 5 делителей.
Единица и само число входят в число его делителей.
Входные данные
В единственной строке входного файла z3.in записано одно натуральное число n(1

Posted in

Зачем нужен c:char и name:string во втором примере?

Язык паскаль онлайн

Работа с файлами паскаль – Ввод-вывод данных Pascal

    Browse: Home / Самоучитель паскаль онлайн / Работа с файлами паскаль – Ввод-вывод данных Pascal

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

Её суть заключается в том , чтобы компьютер , при проверке , брал значение переменных из входного файла input.txt ( обычно он называется именно так ). А результат работы программы выводился в выходной файл output.txt

Рассмотрим пример :

Нужно взять число из файла и записать квадрат этого числа в другой файл.

Объявляем три переменные . Переменную «a» для хранения числа из файла input.txt . Переменные «t1» и «t2» играют роль связки переменной с файлом , чтобы в последствии мы могли с ними работать . Тип переменных «t1» и «t2» записывается так — text.

Далее в программе мы связываем переменные «t1» и «t2» с файлами input.txt и output.txt.
Команда assign() отвечает за связку. Первый аргумент отвечает за имя переменной , а второй ( через запятую ) отвечает за имя файла.

Команды reset() и rewrite() отвечают за открытие файла для чтения и записи. Узнать больше о циклах здесь

Reset()

открывает наш файл для чтения , чтобы мы могли взять из файла какое либо значение , например значение 4. Чтобы открыть именно тот файл , который нам нужен следует написать имя переменной , к которой он привязан в аргументе . ( reset(t1) ).
Далее записываем в переменную «a» число из файла. Для этого нам понадобится привычная команда readln() , однако теперь мы передаем ей два аргумента . Первый аргумент это имя переменной , к которой привязан файл . Второй аргумент это имя переменной , в которую будет произведена запись.

После того как мы занесли в переменную «а» число , которое было в файле , следует закрыть файл командой close(). Аргумент обозначает какой именно файл нужно закрыть. ( close(t1) ).

Rewrite()

открывает файл для записи в него какой либо информации , однако при этом стирает всю информацию , которая была записана в нем до этого. Для того , чтобы прошлая информация осталась целой , а новая записывалась в конце файла : вместо команды rewrite следует использовать команду append(). Чтобы открыть именно тот файл , который нам нужен , следует записать имя переменной , к которой привязан файл в аргументе . ( rewrite(t2) ).
Далее записываем информацию в output.txt привычной командой writeln() . Но теперь она в аналогии с readln(t1,a) имеет два аргумента . Первый аргумент отвечает за имя переменной , к которой привязан файл , а второй аргумент за информацию которую будут записывать в файл . В нашем случае это квадрат переменной «a». Функция sqr() отвечает за квадрат аргумента.

После следует закрыть второй файл close(t2).

На заметку :

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

Прочие функции :

  • eof(t1) — Возвращает истинное значение , когда достигнут конец файла. Хорошим примером работы такой функции служит запись всех чисел в файле. Это осуществляется с помощью цикла while ( not eof(t1) ) do — дословно пока не конец файла t1 делай …
  • eoln(t1) — Работает аналогично функции eof(t1) , за исключение того , что оно возвращает истину тогда , когда достигнут конец строки , а не всего файла.
  • erase(t1) — Уничтожает файл привязанный к переменной t1.
  • rename(t1) — Меняет имя файла , к которому привязана переменная t1 . Перед применением следует закрывать файл командой close().
Ссылка на основную публикацию
Adblock
detector