Разделы презентаций


Информатика и программирование

Содержание

4 Программирование алгоритмов обработки сложных данных 20ФайлыПри обработке больших массивов информации данные хранятся не в ОП, а во внешней памяти в виде физических файлов.Под физическим

Слайды и текст этой презентации

Слайд 1Информатика и программирование
Лебедева Т.Ф.
КЕМЕРОВСКИЙ ИНСТИТУТ (филиал)
РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ ТОРГОВО-ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА

ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Информатика и программированиеЛебедева Т.Ф.КЕМЕРОВСКИЙ ИНСТИТУТ (филиал)РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ ТОРГОВО-ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Слайд 24 Программирование алгоритмов обработки сложных данных

20
Файлы
При обработке больших массивов информации данные хранятся не

в ОП, а во внешней памяти в виде физических файлов.
Под физическим файлом понимаем поименованный набор данных на диске либо логическое устройство – потенциальный источник или приемник информации.
Характеристики физического файла:
Имя
Содержит компоненты одного типа
Размер не ограничен, определяется размером памяти на диске

Для работы с файлами в программе на Паскале необходимо:
Объявить переменную файлового типа в разделе VAR;
Связать ее с физическим файлом на диске;
Открыть файл для записи или чтения;
Выполнить необходимую обработку данных из файла;
Закрыть файл.


4 Программирование алгоритмов обработки сложных данных       20ФайлыПри обработке больших массивов информации

Слайд 3 4 Программирование алгоритмов обработки сложных данных

21















В Паскале можно использовать 3 типа файлов:
Текстовые

F: text;
Типизированные F: file of < тип >;
Не типизированные F: file;
Не типизированные файлы используются только для высокоскоростного копирования файлов из ОП во внешнюю память и обратно. Для них не указывается тип компонентов.


файл


ОП

read

write

4 Программирование алгоритмов обработки сложных данных    21В Паскале можно использовать 3 типа файлов:Текстовые

Слайд 4 4 Программирование алгоритмов обработки сложных данных 22
1 Объявление

файлов
Выполняется в разделах TYPE или VAR
Примеры:
Type prod =

record
code: word;
name: string;
cost: real
end;
text80 = file of string[80];
Var f1: file of char;
f2: text;
f3: file;
f4: text80;
f5: file of prod;
4 Программирование алгоритмов обработки сложных данных  221 Объявление файловВыполняется в разделах TYPE или VARПримеры:Type

Слайд 5 4 Программирование алгоритмов обработки сложных данных

23

Логические устройства – стандартные аппаратные устройства персонального компьютера (клавиатура, экран

монитора, принтер, каналы ввода-вывода) определяются в Паскале специальными именами, приведенными в таблице.













Стандартный модуль Printer, входящий в библиотеку Turbo.tpl , позволяет объявить имя файловой переменной LST и связать ее с устройством LPT1. это дает возможность использовать файл LST для печати результатов.

4 Программирование алгоритмов обработки сложных данных    23Логические устройства – стандартные аппаратные устройства персонального

Слайд 6 4 Программирование алгоритмов обработки сложных данных

24

program zr;
Uses printer;
begin
write(LST ,‘Привет!’);
end.
Все операции по связыванию

файла LST с принтером и открытию файла выполняет модуль PRINTER.
2 Связывание файловой переменной с физическим файлом
Assign (F, Str) – сопоставляет файловой переменной F файл на диске, спецификация которого задана в строковой переменной Str.
Примеры: Assign (F1, ‘C:\student\pr.dat”) ;
Assign (F2, ‘PRN’);
Assign (F3, ‘CON’);
write( ‘введите имя файла’); readln(name_f);
Assign (F4, name_f);
4 Программирование алгоритмов обработки сложных данных    24program zr; Uses printer;begin write(LST ,‘Привет!’); end.Все

Слайд 7 4 Программирование алгоритмов обработки сложных данных 25
3

Открытие файлов
После связи файловой переменной с физическим файлом файл может

быть открыт только для чтения, только для записи, для чтения и дозаписи (в случае типизированных файлов).
Процедурами открытия или инициализации reset(f), rewrite(f), append(f) файл или логическое устройство подготавливается к выполнению нужного действия.
Reset (F); – открывает существующий файл для чтения данных. Файловый курсор устанавливается на начало файла. Чтение данных из файла осуществляется процедурами read, readln.
Только для типизированных файлов reset может использоваться и для дозаписи в файл, что позволяет дополнять и корректировать типизированные файлы.
При попытке открыть процедурой reset несуществующий файл или инициировать чтение из логического устройства вывода данных (например, PRN) возникает ошибка периода исполнения.
4 Программирование алгоритмов обработки сложных данных   253 Открытие файловПосле связи файловой переменной с физическим

Слайд 8 4 Программирование алгоритмов обработки сложных данных

26
Rewrite(f); - открывает новый файл для записи данных

или инициирует логическое устройство вывода.
Новый дисковый файл подготавливается к приему данных и его файловый курсор устанавливается в начало файла.
Запись данных в файл осуществляется процедурами write, writeln.
При выполнении этой процедуры уничтожается старый файл с тем же именем, если он существовал. При этом никаких сообщений об ошибках не выдается.
Append(f) ; - открывает ранее созданный текстовый файл для его дополнения новыми записями. При этом курсор устанавливается в конец файла.
Любой программе без объявления, инициализации файловой переменной
и открытия доступны два файла со стандартными файловыми переменными:
INPUT - чтение со стандартного устройства ввода;
OUTPUT - вывод на стандартное устройство вывода.
Это текстовые файлы, используемые для выполнения элементарных
операций ввода-вывода.
4 Закрытие файлов
Close(f); - закрывает файл и обеспечивает сохранность записей в файле, но не разрывается связь файловой переменной и физического файла, установленную процедурой Assign (F, Str).
Поэтому один файл в программе можно многократно открывать и закрывать.

4 Программирование алгоритмов обработки сложных данных      26Rewrite(f); - открывает новый файл

Слайд 9 4 Программирование алгоритмов обработки сложных данных

27
5 Стандартные процедуры и функции обслуживания файлов.
Для взаимодействия с

файловой системой MS DOS в Pascal определены стандартные процедуры и функции, которые применимы к файлам любых типов.
Процедура ReName(Var f; name:string) - осуществляет переименование файла, определенного файловой переменной f. Новое имя файла задается параметром name. Если в процессе работы программы требуется переименовать файл, открытый для чтения или записи, необходимо предварительно закрыть этот файл процедурой Close. При совпадении нового имени файла с каким-либо уже существующим выдается сообщение об ошибке.
Процедура Erase(Var f) - осуществляет удаление созданного или находящегося в процессе формирования файла. Перед уничтожением файл должен быть закрыт, так как разрешается удалять только закрытые файлы.


4 Программирование алгоритмов обработки сложных данных    275 Стандартные процедуры и функции обслуживания файлов.

Слайд 10 4 Программирование алгоритмов обработки сложных данных

28
3. Процедура Truncate(Var f) - обрезает файл, оставляя

компоненты до того, на который ссылается указатель файла (кроме текстовых файлов).
4. Процедура ChDir(path:string) - изменяет текущий каталог: назначает текущим каталог, указанный параметром path.
5. Функция GetDir(drive:word: Var dir:string) - возвращает имя текущего каталога на указанном устройстве, где устройство drive: 0 – устройство по умолчанию; 1 - диск А; 2 - диск В и т.д.
6. Процедура MkDir(dir:string) - создает новый каталог. Строка dir определяет путь и новое имя.
7. Процедура RmDir (dir: string) - удаляет каталог с указанным именем. Каталог должен быть пустым.
4 Программирование алгоритмов обработки сложных данных      283. Процедура Truncate(Var f) -

Слайд 114 Программирование алгоритмов обработки сложных данных

29
8. Функция EOF(Var f):boolean - определяет конец файла. Размер

файла при его создании не фиксируется. Поэтому в процессе работы требуется проверка достижения конца файла. Функция принимает значение TRUE, если указатель стоит в конце файла (после последней записи). При этом, если производится чтение, то это означает, что файл исчерпан, а если идет запись, то новая запись дописывается в конец файла. Функция принимает значение FALSE, если конец файла еще не достигнут.
Примечание, Функция EOF по-разному работает с дисковыми файлами и логическими устройствами. Для логического устройства невозможно предвидеть, каким будет результат чтения очередного символа. Поэтому при работе с логическим устройством функция EOF возвращает TRUE, если последним символом был маркер конца файла, а при чтении с диска - если следующим считываемым символом будет маркер конца файла. Физически это выражается в том, что при выполнении функции EOF запрашивается ввод информации с клавиатуры.
В качестве маркера конца файла используется символ ASCII с кодом 26 (#26). При работе с клавиатурой этот код формируется при вводе комбинации CTRL-Z. Считается, что признак конца файла физически присутствует в файле, однако, как правило, такой символ в конце дискового файла отсутствует, и конец файла в системе определяется другим способом.
9. Функция IOResult(Var f): word - возвращает код правильности выполнения
операций ввода/вывода. Если ошибок не зафиксировано, то функция возвращает 0. Информация об ошибках может быть получена и обработана
в режиме компилятора {$I-}- отключение контроля ошибок ввода/вывода.
4 Программирование алгоритмов обработки сложных данных      298. Функция EOF(Var f):boolean - определяет

Слайд 124 Программирование алгоритмов обработки сложных данных

30
Текстовые файлы
Текстовый файл - это файл, компонентами которого являются символьные
строки

переменной длины, заканчивающиеся специальным маркером конца строки
Строка 1 Строка 2 Строка 3




Указатель файла Маркеры конца строки
Маркер конца файла
Рис. 1 - Структура текстового файла
Примечание, Маркер конца строки - это последовательность из двух специальных символов по таблице ASCII «#13, #10». Символ с кодом 13 интерпретируется в компьютере как команда установки курсора в начало строки, а символ с кодом 10 - как команда перехода на следующую строку. Такая комбинация кодов вводится при нажатии клавиши ENTER.


4 Программирование алгоритмов обработки сложных данных     30Текстовые файлыТекстовый файл - это файл, компонентами

Слайд 13 4 Программирование алгоритмов обработки сложных данных

31

Текстовый файл можно открыть для записи, чтения и

добавления записей в конец.
Файл, открытый для записи, не может использоваться для чтения и наоборот. При открытии файла для добавления процедурой Append система проверяет, не был ли файл открыт для чтения или записи, и если такое открытие имело место, то производится сначала закрытие файла, а затем уже открытие для добавления.
Текстовые файлы используют для хранения и обработки текстовой информации: символов, строк, символьных массивов.
Логические и числовые данные при записи в текстовые файлы должны преобразовываться в символьные строки.
Следует иметь в виду, что при необходимости текстовый файл может быть создан или прочитан любым текстовым редактором, в том числе и текстовым редактором, входящим в состав среды Turbo Pascal.
4 Программирование алгоритмов обработки сложных данных      31Текстовый файл можно открыть для

Слайд 14 4 Программирование алгоритмов обработки сложных данных

32
Для работы с текстовыми файлами используют специальные процедуры

и функции.
1. Функция EOLn( [Var f]): boolean - возвращает TRUE, если во входном
текстовом файле достигнут маркер конца строки; при отсутствии файловой переменной проверяется стандартный файл INPUT, который обычно связан с клавиатурой.
Примечание, Функция EOLn, как и EOF, по-разному работает с дисковыми файлами и логическими устройствами. Для логического устройства невозможно предвидеть, каким будет результат чтения очередного символа. Поэтому при работе с логическим устройством функция EOLN возвращает TRUE, если последним считанным символом был символ #13. При работе с диском функция EOLN возвращает TRUE, если следующим считанным символом будет символ #13.
2. Процедура Read( [Var f:text;] vl, v2,... vn) - обеспечивает ввод символов, строк и чисел. Список ввода представляет собой последовательность из одной или более переменных типа CHAR, STRFNG, а также любого целого и вещественного типа. При отсутствии файловой переменной ввод осуществляется из стандартного файла INPUT. При вводе значений переменных типа CHAR выполняется чтение одного символа из файла, считанное значение присваивается очередной переменной из списка ввода. Символы вводятся подряд, а не через пробел, как числа. Если перед выполнением чтения указатель файла достиг конца очередной строки, то результатом чтения будет символ #13, а если был достигнут конец файла, то - символ #26.
4 Программирование алгоритмов обработки сложных данных      32Для работы с текстовыми файлами

Слайд 15 4 Программирование алгоритмов обработки сложных данных

33

При вводе переменных типа STRING количество считанных процедурой

и помещенных в строку символов равно максимальной длине строки, если раньше не встретились маркеры конца строки или конца файла, которые в строку не включаются. Символы, выходящие за размер максимальной длины строки, отбрасываются. Новое обращение к процедуре Read вернет пустую строку. Процедура Read не в состоянии читать последовательность строк, так как первая строка будет прочитана правильно, а все последующие окажутся пустыми.
При вводе числовых данных процедура Read пропускает все пробелы,
знаки табуляции и маркеры до первого значащего символа и читает строку до пробела, знака табуляции или маркера. Полученная подстрока преобразуется из символьного во внутреннее представление в соответствии с типом значения и присваивается следующей переменной из списка. Если нарушен формат, то фиксируется ошибка ввода-вывода. Если достигнут маркер конца файла, то переменной присваивается значение О, причем никаких сообщений в этом случае не выдается.
Ввод логических констант процедурами Read и ReadLn не предусмотрен.
3. Процедура ReadLn( [Var f;] vl,v2, ,..,vn ) - также обеспечивает ввод символов, строк и чисел. Процедура использует те же правила ввода, что и процедура Read, но после чтения последней переменной оставшаяся часть строки до маркера конца строки пропускается, так что следующее обращение к ReadLn или Read начнется с первого символа новой строки. Процедура может быть вызвана без указания списка ввода, что приведет к пропуску
всех символов текущей строки до маркера конца строки.
Процедуры Read и ReadLn могут использоваться без указания файловой переменной. Тогда операция чтения осуществляется из стандартного файла INPUT. Использование процедуры ReadLn без параметров после процедуры Read приведет к очистке буфера ввода. Применение этой же процедуры без предшествующей ей процедуры Read переводит программу в состояние ввода, т.е. выполнение программы приостанавливается до нажатия клавиши ENTER, что может использоваться для организации паузы на время просмотра содержимого экрана.
4 Программирование алгоритмов обработки сложных данных      33При вводе переменных типа STRING

Слайд 16 4 Программирование алгоритмов обработки сложных данных

34
 
4. Процедура Write( [Var f;] v7,v2, ...,vn )

- обеспечивает вывод данных
в текстовый файл или передачу их на логическое устройство. Список вывода - последовательность из одного или более выражений типа CHAR,
STRING, BOOLEAN, а также целого или вещественного типов. При выводе
числовых значений последние преобразуются в символьное представление. При отсутствии файловой переменной вывод осуществляется в стандартный файл OUTPUT, который обычно назначен на экран. Любой параметр из списка вывода может иметь формат:
<параметр> [: <целое1> [: < целое2> ]],
5. Процедура WriteLn( [Var f;] vl,v2, ...,vn ) обеспечивает вывод информации в текстовый файл или ее передачу на логическое устройство вывода. При отсутствии файловой переменной вывод осуществляется в стандартный файл OUTPUT, который обычно связан с дисплеем.
Процедура полностью идентична процедуре Write, за исключением того,
что выводимая строка символов завершается символами #13 и #10. При
вызове WriteLn допускается опускать список вывода, в этом случае в файл передается маркер конца строки (при выводе на экран это приведет к переводу курсора в начало следующей строки).
4 Программирование алгоритмов обработки сложных данных      34 4. Процедура Write( [Var f;]

Слайд 17 4 Программирование алгоритмов обработки сложных данных

35
 
6. Процедура открытия файла для дополнения
append(f : Тext)

– процедура открывает существующий файл для присоединения. Если файл уже открыт, то он сначала закрывается, а затем открывается заново. Текущий указатель устанавливается на конец файла.
Рассмотрим несколько примеров
Пример 1 Считать и вывести на экран числовой массив из файла, созданного ранее посредством текстового редактора
Program TextFile1;
Const n=100;
Var f: text;
m:array[1..n] of real;
i : byte;
Begin
assign(f, ‘C:\STUDENT\PI104\Primer1' );
reset(f);{Открыть файл c файловой пер. f на чтение }
i:=1;
while Not Eof(f) and ( i <= n) Do
begin
read(f, m[i]); {Cчитываем из f в переменную m[i]}
writeln( m[i] :6:2);
Inc(i);
end;
close(t);{Закрытие файла Primer1}
End.



4 Программирование алгоритмов обработки сложных данных      35 6. Процедура открытия файла для

Слайд 18 4 Программирование алгоритмов обработки сложных данных

36
Пример2 Дан текстовый файл с программой на языке

Паскаль, причем каждый оператор – в одной строке. Проверить правильность расстановки круглых скобок

 










































Program TextFile2;
Var
f : Тext; ch: char;
Put: string; k1, k2, n: integer; l,p: boolean;
Begin
n := 0; {Обнуляем счетчик строк}
Put := ‘C:\STUDENT\Pi104\Primer2.pas'; {Полный путь до файла }
assign(t, Put);
reset(f); {Открываем файл для чтения}
l:= true;
while Not Eof(f) do {Пока нет конца файла выполнить...}
begin
inc(n); k1:= 0; k2:= 0; {Обнуляем счетчики скобок}
p:= false;
while Not EoLn(f) do {Пока нет конца строки выполнить...}
begin
read(f, ch); {Считываем cимвол}
if ch = '(' {Если встретилась открытая скобка,}
then Inc(k1); {то счетчик увеличиваем на 1}
if ch = ')’ then if k1>k2 then Inc(k2) else p:= true ; { ‘)’ раньше ‘(‘ }
end;
if ( k1<>k2 ) or p then begin writeln(‘ошибка в строке ’, n); l:= false end;
readln(f); {переходим на следующую строку}
end;
If l then writeln(‘скобки расставлены правильно’);
Close(f); readln;
End.

4 Программирование алгоритмов обработки сложных данных      36Пример2 Дан текстовый файл с

Слайд 19 4 Программирование алгоритмов обработки сложных данных

37
 



































Пример 3 Дан текстовый файл, переписать его в

новый файл, исключив пробелы
Program TextFile3;
Var
f, t: text;
Put1, Put2,: string;
s : char;
Begin
Put1 := ‘C:\STUDENT\PI104\Primer1‘ ; {Путь до файла Primer на диске}
assign(f, Put1 );
reset(f); {Открыть файл c файловой пер. f на чтение }
Put2 :=‘C:\STUDENT\PI104\Primer2' '; {Путь где будет создан новый файл}
assign(t, Put2);
rewrite(t); { Открыть файл c файловой пер. t на создание и запись }
while Not Eof(f) Do
begin
while Not Eoln(f) do
begin
read(f, s); {Cчитывать из f в переменную s}
if s<>‘ ‘ then write(t, s) ; { Записывать в t значение s}
end;
readln(f); {Переходим к чтению следующей строки файла f}
writeln(t);{Переходим к записи следующей строки файла t}
end;
close(t); {Закрытие файла Primer1}
close(f); {Закрытие файла Primer2}
End.
4 Программирование алгоритмов обработки сложных данных      37 Пример 3 Дан текстовый файл,

Слайд 20 4 Программирование алгоритмов обработки сложных данных

37
 



































Пример 3 Дан текстовый файл, переписать его в

новый файл, исключив пробелы
Program TextFile3;
Var
f, t: text;
Put1, Put2,: string;
s : char;
Begin
Put1 := ‘C:\STUDENT\PI104\Primer1‘ ;{Путь до файла Primer на диске}
assign(f, Put1 );
reset(f);{Открыть файл c файловой пер. f на чтение }
Put2 :=‘C:\STUDENT\PI104\Primer2' ;{Путь где будет создан новый файл}
assign(t, Put2);
rewrite(t);{ Открыть файл c файловой пер. t на создание и запись }
while Not Eof(f) Do
begin
while Not Eoln(f) do
begin
read(f, s); {Cчитывать из f в переменную s}
if s<>‘ ‘ then write(t, s);{ Записывать в t значение s}
end;
readln(f); {Переходим к чтению следующей строки файла f}
writeln(t);{Переходим к записи следующей строки файла t}
end;
close(t);{Закрытие файла Primer1}
close(f);{Закрытие файла Primer2}
End.
4 Программирование алгоритмов обработки сложных данных      37 Пример 3 Дан текстовый файл,

Слайд 21 4 Программирование алгоритмов обработки сложных данных

27

 























Типизированные файлы
Типизированный файл - это файл, все компоненты

которого одного типа, заданного при объявлении файловой переменной (рис.). Компоненты файла хранятся на диске во внутреннем (двоичном) формате и нумеруются с 0. Если посмотреть такой файл любым текстовым редактором, то можно распознать только символьную информацию, на месте же чисел в файле будут располагаться пробелы или символы псевдографики.

Указатель файла компоненты Маркер конца файла


4 Программирование алгоритмов обработки сложных данных      27 Типизированные файлыТипизированный файл - это

Слайд 22 4 Программирование алгоритмов обработки сложных данных

28
 










































Для работы с типизированными файлами используют специальные процедуры

и функции.
1. Процедура Read(Var f; с1, с2, ...,сп) - осуществляет чтение очередных
компонентов типизированного файла. Список переменных ввода содержит
одну или несколько переменных того же типа, что и компоненты файла, разделенных запятыми. Если файл исчерпан, обращение к процедуре вызывает ошибку ввода-вывода.
2. Процедура Write(Var f; c1, с2 …cn) - осуществляет запись данных в
типизированный файл. Список вывода содержит одно или более выражений
того же типа, что и компоненты файла, разделенных запятыми.

3. Процедура Seek(Var f; numcomp: word) - осуществляет установку
указателя файла на компонент файла с номером numcomp.

4. Функция FileSize(Var f):longint - возвращает количество компонент
файла, указанного файловой переменной. Может использоваться для установки на конец файла совместно с Seek():
Seek(f, filesize(f));
5. Функция FilePos(Var f):longint - возвращает порядковый номер компонента,
который будет обрабатываться следующей операцией ввода-вывода.
4 Программирование алгоритмов обработки сложных данных      28 Для работы с типизированными файлами

Слайд 23 4 Программирование алгоритмов обработки сложных данных

29
 










































Типизированный файл – это последовательность элементов одного типа.

А раз так, то при последовательном обращении к файлу текущий указатель переходит от элемента к элементу. Если есть необходимость нарушения последовательной записи или чтения из файла, положение текущего указателя, может быть изменено процедурой
Seek (МуFilе, n) , где n – требуемое положение указателя.
Нумерация элементов типизированного файла начинается с нуля.
Поэтому, чтобы обратиться к третьму элементу, нужно записать Seek (МуFilе, 2).
Seek (МуFilе, 0) – устанавливает указатель в начальной позиции
(на первый элемент).
Просмотрите фрагмент программы, в которой посредством процедуры reset производится попытка открытия файла. Если эта попытка не увенчалась успехом, то на экран будет выведено сообщение об ошибке.
{$I-} {отключение контроля ввода/вывода}
assign (F,'C:\student\pi093\pr.dat');
Reset(F); {открытие файла для чтения}
if IOResult(F) < > 0 then writeln ('Ошибка при открытии файла');
{$I+} {включение контроля ввода/вывода}
В своих программах рекомендуется применять функцию IOResult.

.
4 Программирование алгоритмов обработки сложных данных      29 Типизированный файл – это последовательность

Слайд 24 4 Программирование алгоритмов обработки сложных данных

30
 










































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

файла стоит в
его начале и указывает на первый компонент, имеющий номер 0. После каждого чтения или записи указатель сдвигается к следующему компоненту файла.
Поскольку длина каждой компоненты файла строго постоянна, помимо
последовательного возможно осуществление прямого доступа к компонентам
файла. По той же причине, если требуется изменить компонент файла, то
не обязательно переписывать компоненты в другой файл, а достаточно установить указатель файла на изменяемый компонент и записать новый компонент на место старого.
Добавление компонентов в конец файла выполняется в режиме чтения (Reset).
Для этого указатель файла устанавливается на его конец. После чего все выводимые компоненты дописываются в конец файла.
Добавление компонентов в середину или начало файла может выполняться
следующим образом: определяем место, в которое должны быть добавлены
элементы, все последующие компоненты переписываем во временный
файл, вставляем новые компоненты и, наконец, дописываем в файл компоненты, переписанные во временный файл.
Удаление компонент обычно требует перезаписи файла.
4 Программирование алгоритмов обработки сложных данных      30 После открытия файла для чтения

Слайд 25 4 Программирование алгоритмов обработки сложных данных

31
 









































Пример 1. Разработать программу, создающую файл, компонентами
которого являются

символы, введенные с клавиатуры. Затем эта программа должна изменять символы, записанные в файл
Program ex;
Var f :file of char;
ch, i: char; j:longint;
name : string[8];
Begin
WriteLn(‘Введите имя файла: ‘); ReadLn(name);
{ открытие файла и создание}
Assign(f, name+’.dat’); {связываем файл с файловой переменной}
ReWrite(f); {открываем файл для записи (создаем)}
WriteLn(‘Вводите символы или ‘$’ (признак конца)');
{занесение записей в файл}
while ch < > ‘$’ do {пока не введено ‘$’ с клавиатуры}
begin
ReadLn(ch); {вводим символ с клавиатуры}
Write(f,Ch); {записываем символ в файл}
end;
WriteLn;
4 Программирование алгоритмов обработки сложных данных      31 Пример 1. Разработать программу, создающую

Слайд 26 4 Программирование алгоритмов обработки сложных данных

32
 









































{последовательное чтение записей из файла}
ReSet(f); {открываем файл для

чтения}
while not EOF(f) do {пока не достигнут конец файла}
begin
Read(f,ch); {читаем символ из файла}
Write(ch,' '); {выводим символ на экран}
end; WriteLn;
{изменение записей в файле}
ReSet(f); {открываем файл для чтения и изменения}
while not EOF(f) do {пока не достигнут конец файла}
begin
Read(f,i); {читаем символ из файла}
Write(i,' '); {выводим символ на экран}
i:=chr(ord(i)+10); {изменяем символ}
WriteLn(i); {выводим на экран измененный символ}
Seek(f, FilePos(f)-1); {возвращаемся на один компонент}
Write( f,i ); {перезаписываем символ}
end;
WriteLn;
Close(f); {закрываем файл}
end.
4 Программирование алгоритмов обработки сложных данных      32 {последовательное чтение записей из файла}ReSet(f);

Слайд 27 4 Программирование алгоритмов обработки сложных данных

33
 









































Пример 2. Составить программу, которая переписывает существующий файл,

заменяя все латинские буквы на заглавные.
Рrogram Writing;
Var FileName : string; {строка, содержащая имя файла}
FVar : file of char; Index : integer; Letter : char;
Begin
write('Enter filename: '); readln (FileName); {ввод имени файла}
assign (FVar,FileName); {связь имени файла и переменной}
{$I-} {отключен контроль ввода/вывода}
reset (FVar); {открытие файла для чтения и записи}
{$I+} {включен контроль ввода/вывода}
if IOResult(Fvar) <> 0 then {выход, если файл не открыт}
begin writeln ('Не открыт файл ', FileName); Halt end;
while not EOF (FVar) do {цикл до конца файла}
begin
read (FVar, Letter); {чтение символа из файла}
Letter:=Upcase(Letter); {преобразование букв}
Seek(Fvar, FilePos(FVar)-1); {перемещение указателя назад на 1 позицию}
write(FVar, Letter); {запись преобразованной буквы}
end; {конец цикла}
close(FVar) {закрыть файл} End.
4 Программирование алгоритмов обработки сложных данных      33 Пример 2. Составить программу, которая

Слайд 28 4 Программирование алгоритмов обработки сложных данных

33
 









































Пример 3. Разработать программу, которая создает файл, содержащий
список

фамилий и дат рождения. Осуществить поиск в этом файле даты
рождения по заданной фамилии.
Program ex1;
Type fam = record {тип запись «сведения о сотрудниках»}
ff:string[20]; {фамилия}
year:word; {год рождения}
month:1..12; {месяц рождения}
day:1..31 {день рождения}
end;
Var f:file of fam; {файловая переменная «файл сотрудников»}
fb: fam; п , i: integer; fff: string; key:boolean;
Begin
Assign(f,‘a.dat'); {связываем файловую переменную с файлом}
ReWrite(f); {открываем файл для записи}
WriteLn(‘Введите данные или CTRL-Z’);
while not EOF do {цикл, пока не введено CTRL-Z}
begin
ReadLn(fb.ff); ReadLn(b.year, fb.month, fb.day); {вводим данные по полям}
Write(f,fb); {заносим запись в файл как один компонент}
end;
Close(f); {закрываем файл}
4 Программирование алгоритмов обработки сложных данных      33 Пример 3. Разработать программу, которая

Слайд 29 4 Программирование алгоритмов обработки сложных данных

34

 











































WriteLn(‘Введите фамилию');
Readln(fff);
key;=false; {устанавливаем признак «запись не найдена»}
ReSet(f); {открываем файл для чтения}
while (not EOF(f)) and (not key) do {пока не обнаружен конец
файла и не найдена запись}
begin
Read(f, fb); {читаем запись из файла}
if fb.ff = fff then {если фамилии совпадают, то}
begin {выводим данные}
WriteLn(‘Дата: ‘, fb.year,f b. Month:3, fb. Day:3);
key:=true; {устанавливаем признак «запись найдена»}
end;
end;
If not key then {если признак не установлен} WriteLn('Hem данных ‘) ;
Close(f); {закрываем файл}
Readln;
end.

4 Программирование алгоритмов обработки сложных данных      34

Слайд 30 5 Модульный принцип построения программ

35

 











































Программы, написанные Вами и оформленные в виде готовых к употреблению процедур и функций, можно применять в других программах. Основная концепция такого подхода заключается в объединении своих процедур и функций в собственные библиотеки, которые могут подключаться к разрабатываемым программным продуктам.
Таким образом мы подошли к понятию модуля Unit. До сих пор Вы имели дело с встроенными модулями. Теперь Вы научитесь подключать к программе библиотеки, которые были созданы Вами.
Использование модулей считается прогрессивным подходом в программировании, т.к. модуль компилируется независимо от программы, а поэтому время компиляции для больших программ может существенно сократиться, что очень важно при отладке программ.
Модуль (Unit) – программная единица, текст которой компилируется независимо. Модуль включает в себя определения констант, типов данных, переменных, процедур и функций, доступных для использования в вызывающих программах. Однако внутренняя структура модуля скрыта от пользователя.
Подключение модулей к основной программе происходит в предложении
Uses …

5     Модульный принцип построения программ

Слайд 31 5 Модульный принцип построения программ

36

 











































Стандартные модули Паскаля
SYSTEM – подключается к любой программе автоматически без предложения Uses и содержит стандартные функции, процедуры, типы данных.
DOS – библиотека организации взаимодействия с операционной системой
MS DOS - содержит описание процедур и функций, обеспечивающих
обращение к функциям операционной системы..
PRINTER – делает доступным вывод текстов на матричный принтер.
OVERLAY – для организации памяти с перекрытиями.
TURBO3, GRAPH3 – предназначены для версии 3 и выделены в отдельные файлы с расширением tpu, тогда как остальные модули входят в библиотеку TURBO.TPL.
Поставляемые вместе с описанными модули ТигЬоЗ, Printer, Graph3,
Overlay устарели и практически не используются.
CRT – содержит константы, функции, процедуры, типы данных для управления текстовым режимом монитора, клавиатурой, динамиком.
GRAPH - содержит константы, функции, процедуры, типы данных для управления графическим режимом монитора.


5     Модульный принцип построения программ

Слайд 32 5 Модульный принцип построения программ

37

 











































Модуль можно разделить на несколько разделов:
заголовок,
интерфейсная часть,
реализационная часть,
инициализационная часть.

Unit <Имя модуля>; {Заголовок модуля}
Interface {Интерфейсная часть}
Uses<список подключаемых модулей>;
Const<описания констант, определенных в данном модуле и доступных для других модулей>;
Type<описания типов, определенных в данном модуле и доступных для других модулей>;
Var<описания переменных, определенных в данном модуле и доступных для других модулей>;
Procedure<Заголовки процедур, определенных в данном модуле и доступных для других модулей>;
Function<Заголовки функций, определенных в данном модуле и доступных для других модулей>;

5     Модульный принцип построения программ

Слайд 33 5 Модульный принцип построения программ

38

 










































Implementatoin {Реализационная часть}
Uses<список подключаемых модулей>;
Const<описания констант, определенных в данном модуле и недоступных для других модулей>;
Type<описания типов, определенных в данном модуле и недоступных для других модулей>;
Var<описания переменных, определенных в данном модуле и недоступных для других модулей>;
Procedure<реализация процедур, определенных в данном модуле и доступных для других модулей>;
Function<реализация функций, определенных в данном модуле и доступных для других модулей>;
Procedure<реализация процедур, определенных в данном модуле и недоступных для других модулей>;
Function<реализация функций, определенных в данном модуле и недоступных для других модулей>;
{Инициализационная часть}
Begin<Слово Begin необходимо, если имеются операторы в следующей части программы>
<часть модуля, исполняемая при его подключении (необязательна)>
End.

5     Модульный принцип построения программ

Слайд 34 5 Модульный принцип построения программ

37

 











































Заголовок модуля
Заголовок модуля мало чем отличается от заголовка программы. В модуле вместо зарезервированного слова Program используется слово Unit. Здесь же могут присутствовать директивы компилятору, дающие общие установки для всего модуля. При выборе имени модуля необходимо учитывать одну особенность: имя модуля должно совпадать с именем дискового файла, в котором он хранится, а значит имя модуля не может состоять более чем из 8 символов. А также не забывайте, что имя не должно совпадать с именами объектов (процедур, функций и др.).
Интерфейсная часть
В этой части описываются все константы, типы данных и переменных, процедуры и функции, доступные в этом модуле для использования внешними программами.
Интерфейсная часть модуля несет всю информацию, необходимую для использования процедур и функций, определенных в модуле.
Указав в операторе Uses имена уже существующих готовых модулей, можно сделать их доступными для использования. Аналогично здесь описываются доступные извне и необходимые для описанных процедур и функций определения типов данных, констант и переменных.
Все процедуры и функции, доступные для общего пользования и определенные в данном модуле, должны быть описаны в интерфейсной части только своей строкой-заголовком с указанием типов параметров. Сам текст программы этих процедур и функций находится (с дубликатом их заголовка) в реализационной части.
Примечание. Интерфейсная часть может быть пуста.

5     Модульный принцип построения программ

Слайд 35 5 Модульный принцип построения программ

38

 











































Пример 1
Unit cmplx;
interface
type comp=record
re,im: real
end;
procedure addc(x,y: comp; var z: comp);
procedure mulc(x,y: comp; var z: comp);
……………………………………………………….

Теперь, если в основной программе включить предложение
Uses cmplx;
то станут доступными тип comp и процедуры addc, mulc


5     Модульный принцип построения программ

Слайд 36 5 Модульный принцип построения программ

39

 










































Реализационная часть
Реализационная часть – это часть, в которой определяются процедуры и функции. Точно так же, как и внутри обычной программы, Вы можете определить здесь глобальные (для модуля) переменные, типы данных и константы наряду с определением процедур и функций. Определенные здесь типы данных и структуры данных недоступны извне и могут использоваться для своих нужд только программами, входящими в реализационную часть.
Реализационная часть также может быть пустой.
Продолжение примера 1
………………………………………………
Implementation
procedure addc;
begin
z.re:= x.re + y.re;
z.im:= x.im + y.im;
end;
procedure mulc;
………………………….
end;
end. {в этом модуле нет инициализационной части}
Инициализационная часть
Инициализационная часть представляет собой основной блок модуля. Приведенные в ней операторы выполняются первыми, т.е. они выполняются перед операторами основного блока главной программы, в которую включен данный модуль.

5     Модульный принцип построения программ

Слайд 37 5 Модульный принцип построения программ

40

 












































Пример 2
Unit FileText;
interface
procedure print(s: string); {только заголовок}
Implementation
var f: text;
procedure print;
begin
writeln(f, s);
end;
begin {начало инициализационной части}
assign(f, name);
rewrite(f);
end.

5     Модульный принцип построения программ

Слайд 38 5 Модульный принцип построения программ

41

 










































Пример 3 Разработать модуль, содержащий подпрограмму суммирования элементов массива.
Разбиваем текст программы примера 3 на две части: подпрограмму
размещаем в модуле, а тестирующую программу оставляем в качестве основной программы. Так как все структурные типы параметров должны быть предварительно объявлены, описываем тип массива в модуле.
{Модуль должен размещаться в файле Summa.pas}
Unit Summa;
Interface {объявление внешних ресурсов}
Туре mas=array[1..10] of integer;
Function summ(b:mas;n:integer):integer;
Implementation
Function sum; {описание функции}
Var s: integer; i: integer;
begin s:=0;
for i: = 1 to n do s: = s+b[i];
sum:=s;
end;
End.

5     Модульный принцип построения программ

Слайд 39Вопросы?

Вопросы?

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика