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

Содержание

Слайд 2

Файлы

Файл – это область на диске, имеющая имя.

Файлы

только текст без оформления, не содержат

Файлы Файл – это область на диске, имеющая имя. Файлы только текст
управляющих символов (с кодами < 32)

ACSII (1 байт на символ)
UNICODE (2 байта на символ)

*.txt, *.log,
*.htm, *.html

могут содержать любые символы кодовой таблицы

*.doc, *.exe,
*.bmp, *.jpg,
*.wav, *.mp3,
*.avi, *.mpg

Текстовые

Двоичные

Папки (каталоги)

Слайд 3

Принцип сэндвича

I этап. открыть файл :
связать переменную f с файлом
открыть файл (сделать

Принцип сэндвича I этап. открыть файл : связать переменную f с файлом
его активным, приготовить к работе)

assign(f, 'qq.txt');

reset(f); {для чтения}

rewrite(f); {для записи}

II этап: работа с файлом

Переменная типа «текстовый файл»: var f: text;

III этап: закрыть файл

close(f);

read ( f, n ); { ввести значение n }

write ( f, n ); { записать значение n }
writeln ( f, n );{c переходом на нов.строку }

Слайд 4

Работа с файлами

Особенности:
имя файла упоминается только в команде assign, обращение к файлу

Работа с файлами Особенности: имя файла упоминается только в команде assign, обращение
идет через файловую переменную
файл, который открывается на чтение, должен существовать
если файл, который открывается на запись, существует, старое содержимое уничтожается
данные записываются в файл в текстовом виде
при завершении программы все файлы закрываются автоматически
после закрытия файла переменную f можно использовать еще раз для работы с другим файлом

Слайд 5

Последовательный доступ

при открытии файла курсор устанавливается в начало
чтение выполняется с той позиции,

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

12 5 45 67 56●

конец файла
(end of file, EOF)

12 5 45 67 56●

assign ( f, 'qq.txt' );
reset ( f );

read ( f, x );

Слайд 6

чтение до конца строки
как вернуться назад?

Последовательный доступ

close ( f );
reset (

чтение до конца строки как вернуться назад? Последовательный доступ close ( f
f ); { начать с начала }

readln ( f, x );

12 5 45¤ 36 67¤ 56●

конец строки
(end of line, EOL)

Слайд 7

Пример

Задача: в файле input.txt записаны числа (в столбик), сколько их – неизвестно.

Пример Задача: в файле input.txt записаны числа (в столбик), сколько их –
Записать в файл output.txt их сумму.
Алгоритм:
Открыть файл input.txt для чтения.
S := 0;
Если чисел не осталось, перейти к шагу 7.
Прочитать очередное число в переменную x.
S := S + x;
Перейти к шагу 3.
Закрыть файл input.txt.
Открыть файл output.txt для записи.
Записать в файл значение S.
Закрыть файл output.txt.

цикл с условием «пока есть данные»

Слайд 8

Программа

program qq;
var s, x: integer;
f: text;
begin
assign(f, 'input.txt');
reset(f);
s

Программа program qq; var s, x: integer; f: text; begin assign(f, 'input.txt');
:= 0;
close(f);
end.

while not eof(f) do begin
readln(f, x);
s := s + x;
end;

f: text;

eof(f)

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

assign(f, 'output.txt');
rewrite(f);
writeln(f, 'Сумма чисел ', s);
close(f);

запись результата в файл output.txt

Слайд 9

Задания

В файле input.txt записаны числа, сколько их – неизвестно.

«8»: Найти среднее

Задания В файле input.txt записаны числа, сколько их – неизвестно. «8»: Найти
арифметическое всех чисел и записать его в файл output.txt.
«10»: Найти минимальное и максимальное числа и записать их в файл output.txt.

Слайд 10

Обработка массивов

Задача: в файле input.txt записаны числа (в столбик), сколько их –

Обработка массивов Задача: в файле input.txt записаны числа (в столбик), сколько их
неизвестно, но не более 100. Переставить их в порядке возрастания и записать в файл output.txt.
Проблемы:
для сортировки надо удерживать в памяти все числа сразу (массив);
сколько чисел – неизвестно.
Решение:
выделяем в памяти массив из 100 элементов;
записываем прочитанные числа в массив и считаем их в переменной N;
сортируем первые N элементов массива;
записываем их в файл.

Слайд 11

Чтение данных в массив

var A: array[1..100] of integer;
f: text;

function ReadArray:

Чтение данных в массив var A: array[1..100] of integer; f: text; function
integer;
var i: integer;
begin
assign(f, 'input.txt');
reset(f);
i := 0;
close(f);
ReadArray := i;
end;

Глобальные переменные:

Функция: ввод массива, возвращает число элементов

while (not eof(f)) and (i < 100) do begin
i := i + 1;
readln(f, A[i]);
end;

ReadArray := i;

цикл заканчивается, если достигнут конец файла или прочитали 100 чисел

Слайд 12

Программа

program qq;
var A: array[1..100] of integer;
f: text; N, i: integer;
Begin
N

Программа program qq; var A: array[1..100] of integer; f: text; N, i:
:= ReadArray;
{ сортировка первых N элементов }
end.

function ReadArray: integer;
...
end;

assign(f, 'output.txt');
rewrite(f);
for i:=1 to N do
writeln(f, A[i]);
close(f);

вывод отсортированного массива в файл

Слайд 13

Задания

В файле input.txt записаны числа (в столбик), известно, что их не более

Задания В файле input.txt записаны числа (в столбик), известно, что их не
100.

«8»: Отсортировать массив по убыванию последней цифры и записать его в файл output.txt.
«10»: Отсортировать массив по возрастанию суммы цифр и записать его в файл output.txt.

Слайд 14

Обработка текстовых данных

Задача: в файле input.txt записаны строки, в которых есть слово-паразит

Обработка текстовых данных Задача: в файле input.txt записаны строки, в которых есть
«короче». Очистить текст от мусора и записать в файл output.txt.
Файл input.txt :
Мама, короче, мыла, короче, раму.
Декан, короче, пропил, короче, бутан.
А роза, короче, упала на лапу, короче, Азора.
Каждый, короче, охотник желает, короче, знать, где ...
Результат - файл output.txt :
Мама мыла раму.
Декан пропил бутан.
А роза упала на лапу Азора.
Каждый охотник желает знать, где сидит фазан.

Слайд 15

Обработка текстовых данных

Алгоритм:
Прочитать строку из файла (readln).
Удалить все сочетания ",

Обработка текстовых данных Алгоритм: Прочитать строку из файла (readln). Удалить все сочетания
короче," (Pos, Delete).
Записать строку в другой файл.
Перейти к шагу 1.
Обработка строки s:
Особенность:
надо одновременно держать открытыми два файла (один в режиме чтения, второй – в режиме записи).

пока не кончились данные

repeat
i := Pos(', короче,', s);
if i <> 0 then Delete(s, i, 9);
until i = 0;

искать «, короче,»

удалить 9 символов

Слайд 16

Работа с двумя файлами одновременно

program qq;
var s: string;
i: integer;

Работа с двумя файлами одновременно program qq; var s: string; i: integer;

fIn, fOut: text;
begin
assign(fIn, 'input.txt');
reset(fIn);
assign(fOut, 'output.txt');
rewrite(fOut);
{ обработать файл }
close(fIn);
close(fOut);
end.

fIn, fOut: text;

файловые переменные

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

открыть файл для записи

Слайд 17

Полный цикл обработки файла

while not eof(fIn) do begin
readln(fIn, s);

Полный цикл обработки файла while not eof(fIn) do begin readln(fIn, s); writeln(fOut,

writeln(fOut, s);
end;

repeat
i := Pos(', короче,', s);
if i <> 0 then
Delete(s, i, 9);
until i = 0;

пока не достигнут конец файла

обработка строки

запись «очищенной» строки

Слайд 18

Задания

В файле input.txt записаны строки, сколько их – неизвестно.

«4»: Заменить все

Задания В файле input.txt записаны строки, сколько их – неизвестно. «4»: Заменить
слова «короче» на «в общем» и записать результат в файл output.txt.
«5»: Вывести в файл output.txt только те строки, в которых больше 5 слов (слова могут быть разделены несколькими пробелами).
Имя файла: Программирование-на-языке-Паскаль.pptx
Количество просмотров: 197
Количество скачиваний: 0