Как написать программу паскаль в ворде
Для участия в олимпиаде по информатике вы должны уметь работать с текстовыми файлами (считывать и записывать информацию). На олимпиадах, начиная с областных, они используются для ввода и вывода данных. Лучше всего попробовать работать с файлами до того, как Вы пойдете на олимпиаду.
На этом уроке мы рассмотрим, как используются текстовые файлы для ввода и вывода данных в программе на языке Паскаль.
Текстовые файлы – это файлы, содержащие символы, разделенные на строки. Причем в конце каждой строки стоит символ конца строки.
Общая последовательность действий при работе с файлами в языке программирования Паскаль:
- описать переменную файлового типа;
- связать ее с конкретным физическим файлом процедурой Assign;
- открыть файл для чтения процедурой ReSet или для записи процедурой ReWrite;
- выполнить чтение или запись информации;
- по окончании работы с файлом закрыть файл процедурой Close.
Описание переменной файлового типа
С текстовым файлом на диске в программе должна быть связана файловая переменная, которая описывается с указанием стандартного типа Text:
Связь переменной файлового типа с конкретным внешним файлом
Для установления связи между файловой переменной и именем файла, присваиваемого операционной системой, имеется стандартная процедура Assign.
Assign (<имя файловой переменной >, <имя внешнего файла>);
Чтение из файла
Под чтением из файла понимается ввод данных из внешнего файла, находящегося на диске, в оперативную память. Данные входного файла становятся доступными программе.
Для чтения файла в программе необходимо выполнить следующие действия:
Открыть файл для чтения:
Reset (<имя файловой переменной >);
Прочитать данные файла в программу с помощью процедуры Read или Readln .
Процедура Read последовательно считывает все элементы строки:
Read(<имя файловой переменной >,<элемент>)
Процедура Readln – считывает элемент из текущей строки и переходит на следующую строку (независимо от того, достигнут конец строки или нет):
Readln(<имя файловой переменной >,<элемент>)
Если не указывать второй параметр, то произойдет переход в начало следующей строки без ввода данных:
Readln (<имя файловой переменной>)
Закрытие файла
После завершения работы с файлом, его нужно закрыть и «освободить» файловую переменную . Это делается с помощью процедуры Сlose.
Общий вид оператора:
Close(<имя файловой переменной >)
Общая форма чтения файла имеет вид:
Reset(<имя файловой переменной >);
Read(<имя файловой переменной >, <элемент>);
Close(<имя файловой переменной >);
Многоточием отмечено наличие других операторов в программе.
Признак конца файла
Так как, по определению, число элементов файла не задается заранее, то в языке Паскаль введена логическая функция Eof() для определения признака конца файла.
Общий вид функции:
Для определения конца файла используется оператор цикла, например, (пока не достигнут конец файла …):
While Not EOF (<имя файловой переменной >) Do …
Запись в файл
Под записью файла понимается вывод результатов программы из оперативной памяти на диск, т.е. создание нового файла на внешнем устройстве.
Для записи файла в программе необходимо выполнить следующие действия:
Открыть файл для записи с помощью процедуры Rewrite:
rewrite (<имя файловой переменной>);
Записать данные в файл спомощью процедур Write или Writeln.
Процедура Write производит запись поэлементно в текущую строку:
Write (<имя файловой переменной >, <элемент>) ;
Процедура WriteLn записывает элемент и переводит указатель в начало следующей строки:
Writeln (<имя файловой переменной >,<элемент>);
Если не указывать второй параметр процедуры, то в конце данной строки ставится признак конца файла и текущий указатель перемещается на начало следующей строки:
WriteLn(<имя файловой переменной >);
После завершения работы с файлом его закрытие обязательно.
Общая форма записи файла имеет вид:
ReWrite(<имя файловой переменной >);
Write(<имя файловой переменной >,<элемент>) ;
Close(<имя файловой переменной >);
Логическая функция Eoln()
Таким образом, для анализа конкретных символов строк файла можно применить вложенный цикл типа:
Пример. Дан текстовый файл, содержащий только целые числа, в каждой строке может быть несколько чисел, которые разделяются пробелами. Вывести на экран все числа с учетом разбиения на строки и подсчитать количество элементов в каждой строке.
Пусть в файле содержится следующая информация:
-32 16 0 8 7
4 5 9 13 11 -5 -8
6 -8 0 12
1 2
-1 -2 -4
-1 -2 4
Этот файл можно создать в среде Паскаль следующим образом:
- Создать новый файл (команда Файл-Новый).
- Записать все числа в строке через пробелы.
- Сохранить его, например, как ‘primer1.dat’.
Для этого в диалоговом окне сохранения файла в списке Тип файла выбрать Все файлы. В поле Имя файла ввести полное имя файла (имя с расширением).
Программа будет иметь следующий вид:
На этом уроке было рассмотрено, как использовать текстовые файлы для ввода и вывода данных в программе на языке Паскаль.
На следующем уроке Вы узнаете, как использовать тип данных Bulean для представления данных логического типа.
Следующий урок: Логический тип данных
Урок понравился? Отзывы и замечания можно оставить в форме для комментариев, расположенной в нижней части страницы.
Межпредметные связи: связь с алгеброй, геометрией: раздел процедуры, функции.
- персональный компьютер,
- проектор + большой экран,
- карточки для учеников,
- указка,
- раздаточный материал с заданиями на урок,
- интерфейс среды программирования Turbo Pascal, наличие в ПК пакет Microsoft Office 2007, а именно текстовый редактор Microsoft Word.
Требования для усвоения учебного материала:
- Базовые алгоритмические структуры;
- Особенности среды Turbo Pascal;
- Особенности работы в текстовом редакторе Microsoft Word;
- Должны уметь составлять математические уравнения(в соответствии с учебной программой): на следование, на ветвление.
- Составлять программы на Turbo Pascal;
- Работать в текстовом редакторе;
- Копировать, создавать, сохранять, обрабатывать и т.д. информацию по условиям задания на ПК и на любом носителе;
- Чётко комментировать выполненную работу.
Приветствие. Проверка присутствующих. Постановка цели. Формирование мотивации к изучению темы.
Переходим к изучению темы;
Повторение базовых алгоритмических структур: беседа по вопросам;
а) Что такое базовая алгоритмическая структура?
б) Что такое базовая алгоритмическая структура следование и ветвление?
1. Теперь мы должны закрепить умение пользоваться текстовым редактором Microsoft Word в среде Turbo Pascal;
Перед этим, каждый ученик получает карточку с указанием алгоритма выполнения задания:
Алгоритма выполнения задания:
Составление, сохранения программы на языке Turbo Pascal и
Сохранения с помощью в текстового редактора Microsoft Word в среде Turbo Pascal.
Каждый в своей тетради или сразу на компьютере.
а) На следование.
После составления уравнения, учащиеся приступают к составлению программ с помощью персонального компьютера.
Составить программы на языке Turbo Pascal, обязательно получить ответ и зафиксировать в тетради, сохранить в среде Turbo Pascal.
Открыть сохранённые программы с помощью текстового редактора Microsoft Word в среде Turbo Pascal
Скопировать программы в свою папку, именной текстовый редактор, который находиться в вашей папке и обработать программы в текстовом редакторе следуя указаниям учителя.
Приступаем к новой теме.
Учитель объясняет, показывает и демонстрирует всё на своём компьютере и весь процесс отражается с помощью проектора на экране.
Алгоритм работы учителя для объяснения новой темы,
1. Создать на рабочем столе папку с именем "математический", в ней создать текстовый документ:
Microsoft Word с именем "программы"
2. Составить программу на решения уравнения, на языке Турбо Паскаль, на следование, и сохранить под названием "следование" в среде Турбо Паскаль:
3. Составить программу для решения системы уравнения с заданной функцией у (на языке Турбо Паскаль) на ветвление и сохранить под названием "ветвление" Турбо Паскаль:
4. Открыть сохранённые программы, т.е "следование" и "ветвление", в среде Турбо Паскаль с помощью текстового редактора Microsoft Word, и по очереди обе программы скопировать в текстовый документ "программы" в виде текста, который создали в папке "математический", на рабочем столе, после того, как скопировали обе программы прокомментировать, т.е приписать условия и выводы, ответ к задачам и сохранить.
Образец уже выполненного учителем задания и скопированного из среды Turbo Pascal и обработанные программы в текстовом редакторе Microsoft Word .
ПРИМЕР НА ВЕТВЛЕНИЕ.
Написать программу, на языке ПАСКАЛЬ вычисления значения функции х(е) для заданного е.
Пример означает: если вместо е подставить 6 или меньше 6 то х будет находиться по первому уравнению т.е. x=|23e|+d иначе (больше 6),
по второму уравнению
program | rt; | |
var х,е | ,d,n:real; | |
begin | ||
write( | 'vvesti e' | ); readln(e); |
write( | 'vvesti d, | n ' ); readln(d,n); |
if e<=6 then x:= | abs(23*e)+d else | |
x: = | =sqrt (e*n) | - 5*e; |
writeln('x=',x:3 | :1); readln(x); | |
end. |
После окончания программы, нажимаем Ctrl+F9 и выдаётся 1.вариант
Если: ввести е=4 - вводим значение 4<6,
Ввести d,n - произвольные значения, т.е. d=5, n=5
после введения значений, компьютер выдаёт результат:
х = 97.0 2. вариант.
Если: ввести е=10 - т.е.10>б, а значения d и n те же, то получим результат:
Пример на следование.
Составить программу на решение уравнения:
program rt; | |
var a,n,k,c,b,x:real; | |
begin | |
write('vvesti a,n,k, | c,b') ; |
readln(a,n,k,c,b); | |
x:=sqrt(3*k-b*c)+abs | (n+k*a); |
writeln('x= ! , x:4:2); | readln(x); |
end. |
После окончания программы, нажимаем
Ctrl+F9 и выдаётся Ввести a,n,k,c,b Вводим значения а=2
И выдаётся результат: х =12.73
- На рабочем столе своего компьютера найти папку с программой Turbo Pascal
- Открыть и составить программу на решение составленных раннее уравнений.
- Программ должно быть две: на следование и на ветвление.
- После составления программ, найти ответ , убедиться в правильности своей программы, т.е. компьютер должен выдать ответ, после того как введёте значение для переменных, которые есть в вашем примере.
- После выполнения задания, программы нужно сохранить под разным именем в папке Turbo Pascal
- Найти приложение в виде значка "листа бумаги" или "дискеты" с названием ваших программ.
- С помощью мыши открыть каждую из них по очереди:
- Нажать правую кнопку мыши и в открывшейся пиктограмме выбрать и нажать "открыть с помощью", снова выходит меню и из которого выбираем открыть с помощью "Microsoft Word".
Результат: открываем те же программы, которые выполнили на языке Паскаль только уже с помощью текстового редактора Microsoft Word. Теперь программа, как бы превратилась в текст, так как она открыта с помощью текстового редактора; это дает возможность приписать комментарии к программе, что не возможно было сделать в программе Turbo Pascal.
Теперь данные программы объединить и сделать так, чтобы обе программы были в одном текстовом редакторе Microsoft Word.
Образец уже выполненного учеником задания и скопированного из среды Turbo Pascal и обработанной программы в текстовом редакторе Microsoft Word .
Пример на ветвление.
Написать программу вычисления значения функции х(е) для заданного е.
Пример означает если вместо е подставить 6 или меньше 6, то х будет находиться по первому уравнению, т.е. х = |23*e|+d, иначе если будет больше 6 - по второму уравнению х= e*n - 5*e
write('vvesti e'); readln(e);
write('vvesti d,n'); readln(d,n);
if e<=6 then x:=abs(23*e)+d else x:=sqrt(e*n)-5*e;
writeln( , x= , ,x:3:1); readln(x);
Результат, т.е. от веет выданный компьютером После окончания программы, нажимаем Ctrl+F9 и выдаётся ответ на наше уравнение:
1 вариант ответа
Если ввести е=4, то значение 4<6 и автоматически е находиться с помощью первого уравнения х = |23*e|+d
А вместо переменных d, n подставим, допустим, значение 5, то после введения значений, компьютер выдаёт результат: х = 97.0
2 вариант ответа.
Если: ввести е=10 - т.е.10>6, и автоматически е находиться с помощью второго уравнения
а значения d и n тот же, т.е. число 5:
После введения значений, компьютер выдаёт результат: x = - 42.9
Пример на следование.
Составить программу на решение уравнения:
program rt; var a,n,k,c,b,x:real; begin
write('vvesti а,п,к,с,Ь'); readln(a,n,k,c,b);
После окончания программы, нажимаем Ctrl+F9 и выдаётся
Ввести значения переменных a,n,k,c,b
Вводим значения переменных а=2, n=3, к=4, с=3 Ь=3
И выдаётся результат: х =12.73
Учитель проверяет как запись на носителе, так и распечатку. Работы (распечатка) остаётся у учителя.
- Что нового мы сегодня узнали?
- Как открывается с помощью текстового редактора Microsoft Word программа, выполненная на языке Turbo Pascal и сохранённая в среде Turbo Pascal.
- Как выполняется копирование и обработка этих программ в текстовом редакторе Microsoft Word?
Вывод урока: цель урока выполнена, учитель ставит оценки в дневники и в классный журнал.
Для связи файла в коде программы и действительного файла на внешнем носителе используется процедура ASSIGN :
Текстовые файлы в паскале: процедуры работы
Возможные расширения файлов:
*.txt, *.log,
*.htm, *.html
Метод работы с текстовым файлом в Паскале предусматривает лишь последовательный доступ к каждой строке файла. Это означает, что начинать всегда возможно только с первой строки, затем проходя по каждой строке, дойти постепенно до необходимой. Т.е. можно сказать, что чтение (или запись) из файла (в файл) ведутся байт за байтом от начала к концу.
Предусмотрены два режима работы: режим для записи в файл информации и для чтения ее из файла. Одновременная запись и чтение запрещены.
Открытие файла
Допустим, мы в программе описали переменную для работы с текстовым файлом:
Рассмотрим дальнейшую последовательность работы с ним, и рассмотрим процедуры, необходимые для работы с текстовым файлом в Паскале:
процедура открытия существующего файла для чтения при последовательном доступе:
процедура открытия создаваемого файла для записи в него информации; если файл с таким именем уже существует, то информация в нем стирается:
процедура добавления в конец:
- При открытии курсор устанавливается в начало файла.
Чтение из файла
Read (f, список переменных); ReadLn (f, список переменных);
Отличие ReadLn от Read в том, что при использовании readln после прочтения данных пропускаются все оставшиеся символы в данной строке, включая метку конца строки.
- чтение осуществляется с той позиции, где в данный момент стоит курсор;
- после чтения курсор сдвигается к первому непрочитанному символу.
close ( f ); reset ( f );
Запись в текстовый файл
Write (f, список переменных); WriteLn (f, список переменных);
Процедуры работы с файлом и закрытие файла
Нахождение конца файла:
Логическая функция, возвращающая True, если достигнут конец файла.
Нахождение конца строки:
Логическая функция, возвращающая True, если достигнут конец строки.
Удалить файл в Паскале
Переименование файла в Паскале
rename(переменная_файла,'новое имя файла');
Закрытие:
Важно: Таким образом, работа с файлом осуществляется через три основных шага:Рассмотрим пример работы с файлами в паскале:
Пример 1: В файле text.txt записаны строки. Вывести первую и третью из них на экран.(предварительно создать text.txt с тремя строками)
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.
Пример 2: Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символов не учитывать).* Из задачника М. Э. Абрамян (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.
Пример 3:Считать из файла input.txt числа (числа записаны в столбик). Затем записать их произведение в файл output.txt
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.
pascal file text2. Даны целые положительные числа N и K. Создать текстовый файл и записать в него N строк, каждая из которых состоит из K символов «*» (звездочка).* Из задачника М. Э. Абрамян (Text1)
pascal file text3. Дана строка S и текстовый файл. Добавить строку S в конец файла.* Из задачника М. Э. Абрамян (Text5)
Пример 4: Дана строка S и текстовый файл. Добавить строку S в начало файла.* Из задачника М. Э. Абрамян (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.
pascal file text4. Дано целое число K и текстовый файл. В данном файле вставить пустую строку перед строкой с номером K . Если строки с таким номером нет, то оставить файл без изменений.Для решения задачи можно использовать дополнительный временный файл.
* Из задачника М. Э. Абрамян (Text9)
Пример 5: Дано целое число K и текстовый файл. Удалить из файла строку с номером K . Если строки с таким номером нет, то оставить файл без изменений.* Из задачника М. Э. Абрамян (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.
Пример 6: Дан текстовый файл F1 с набором нулей и единиц. Необходимо заменить все вхождения сочетаний 101 на 000 . Скорректированные записи поместить в файл F2 .var f1,f2: text; pole:string; pz:integer; begin assign(f1,'1.txt'); assign(f2,'2.txt'); reset(f1); rewrite(f2); while not eof(f1) do begin readln(f1, pole); while pos('101',pole)<>0 do begin pz:=pos('101',pole); delete(pole,pz,3); insert('000',pole,pz); end; writeln(f2,pole) end; close(f1); close(f2); end.
Работа с данными из файла как с массивом
- для сортировки необходим массив, для того чтобы одновременно работать со всеми числами;
- неизвестно общее количество чисел.
- объявляем массив для 100 элементов;
- открываем файл на чтение, просчитываем количество чисел, заполняя массив, сохраняем количество в N;
- сортируем N элементов массива;
- записываем результат в файл.
* Из задачника М. Э. Абрамян (Text16)
А теперь вернемся к олимпиадному заданию по Паскалю, частично решенному на одном из предыдущих заданиях:
p.in | p.out |
---|---|
3 hello earth | khoor hduwk |
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 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 n:=n+3; if n=123 then n:=97; if n=124 then n:=98; if n=125 then n:=99; a:=chr(n); s1:=s1+a; end; writeln(s1); writeln(f_out,s1); close(f_in); close(f_out) end.
полное решение var s, s1: string; i, j, a, n, k, b: integer; begin n := 97; s1 := ''; readln(s); readln(k); for i := 1 to length(s) do begin if s[i] <> ' ' then begin a := ord(s[i]); if a > 122 - k then for j :=123 - k to 122 do begin b:=122-j; if a = j then begin a := n+k-b-1; inc(n); end; end else a := a + k; s1 := s1 + chr(a) end else s1 := s1 + ' ' end; writeln(s1)end. --> pascal file text7. Пять делителей.Имя входного файла: z3.in
Имя выходного файла: z3.out
Все предыдущие примеры программ на этом сайте выводили данные непосредственно на экран компьютера. Но данные можно выводить в файлы на внешние носители.
Рассмотрим пример программы на PascalABC, которая считывает исходные данные из внешнего файла. Считает сумму и произведение. Записывает результат тоже во внешний файл.
Но прежде немного справочной информации.
Текстовые файлы Паскаль
В Паскале для связи программы с файлом служит файловая переменная, которая обязательно должна быть указана в разделе описаний VAR.
Текстовые файлы являются файлами с последовательным доступом. В любой момент времени доступна только одна запись файла. Другие записи становятся доступными лишь в результате последовательного продвижения по файлу.
Чтобы программа смогла различать записи данных в текстовом файле, их разделяют пробелами. Например, 20 30 45 озеро.
Перед использованием файловой переменной она должна быть связана с внешним файлом с помощью вызова процедуры Аssign.
Имя внешнего файла при необходимости должно содержать абсолютный путь доступа к этому файлу, включая имя дисковода. При этом имя внешнего файла – строковая величина, т.е. должна быть заключена в апострофы. В нашем примере путь к файлу относительный.
Наши файлы расположены в рабочем каталоге PascalABC (C:\PABCWork).
Когда связь с внешним файлом установлена, для подготовки ее к операции ввода или вывода файловая переменная должна быть “открыта”. Существующий файл можно открыть с помощью процедуры Reset, а новый файл можно создать и открыть с помощью процедуры Rewrite. Текстовые файлы, открытые с помощью процедуры Reset доступны только по чтению, а текстовые файлы, открытые с помощью процедуры Rewrite, доступны только по записи.
Читайте также: