
- •Министерство образования российской федерации
- •Содержание
- •Алгоритмизация вычислительных процессов.
- •Основные определения и понятия.
- •Средства изображения алгоритмов.
- •Базовые канонические структуры алгоритмов.
- •1)Следование
- •2) Развилка
- •3)Повторение
- •Вопросы к главе 1.
- •Введение в Турбо Паскаль.
- •Общая характеристика языка Паскаль.
- •Основные понятия языка Турбо Паскаль.
- •Алфавит языка.
- •Элементарные конструкции.
- •Типы данных.
- •Операторы языка Паскаль.
- •Оператор присваивания.
- •Оператор перехода. Пустой оператор. Составной оператор.
- •Условный оператор.
- •Оператор выбора.
- •Операторы цикла.
- •Var X: real; {аргумент }
- •If not fl then Writeln(‘ нет чисел на 3‘);
- •Вопросы к главе 2.
- •Структурированные типы данных.
- •Свойства множеств.
- •Операции над множествами.
- •If fl then writeln('идентификатор')
- •Описание записи (record).
- •Оператор присоединения.
- •Запись с вариантами.
- •Вопросы к главе 3.
- •Использование подпрограмм в Турбо Паскале.
- •Структура программы на языке Паскаль.
- •Описание и вызов процедур.
- •Описание функции.
- •Формальные и фактические параметры.
- •Параметры-значения.
- •Параметры-переменные.
- •Var r:tvect; {результат - вектор}
- •Var k:byte); {длина полученного вектора}
- •Параметры-константы.
- •Параметры-процедуры и параметры-функции.
- •Область действия имен.
- •Процедуры и функции без параметров.
- •Рекурсивные процедуры и функции.
- •Предварительно-определенные процедуры.
- •Модули.
- •Вопросы к главе 4.
- •Стандартные процедуры и функции.
- •Математические функции.
- •Функции округления и преобразования типов.
- •Функции порядкового типа.
- •Процедуры порядкового типа.
- •Строковые функции.
- •Строковые процедуры.
- •Прочие процедуры и функции.
- •Процедуры ввода данных.
- •Процедуры вывода данных.
- •Особенности вывода вещественных значений.
- •Вопросы к главе 5.
- •Работа с файлами.
- •Общие сведения о файлах.
- •Процедуры и функции для работы с файлами.
- •Особенности обработки типизированных файлов.
- •Особенности обработки текстовых файлов.
- •Файлы без типа.
- •Проектирование программ по структурам данных
- •Работа с файлами при обработке экономической информации
- •Постановка задачи.
- •Проектирование программы.
- •Кодирование программы.
- •Вопросы к главе 6.
- •Динамическая память.
- •Указатель.
- •Стандартные процедуры размещения и освобождения динамической памяти.
- •Стандартные функции обработки динамической памяти.
- •Примеры и задачи.
- •Работа с динамическими массивами.
- •Организация списков.
- •Задачи включения элемента в линейный однонаправленный список без головного элемента.
- •Формирование пустого списка.
- •Формирование очередного элемента списка.
- •Подсчет числа элементов списка.
- •Вставка элемента в начало списка.
- •Включение элемента в конец списка.
- •Включение в середину (после I-ого элемента).
- •Задачи на удаление элементов из линейного однонаправленного списка без головного элемента.
- •Удаление элемента из начала списка.
- •Удаление элемента из конца списка.
- •Удаление элемента из середины списка (I-ого элемента).
- •Удаление всего списка с освобождением памяти.
- •Задачи на замену элементов в линейном однонаправленном списке без головного элемента.
- •Стеки, деки, очереди.
- •Использование рекурсии при работе со списками.
- •Бинарные деревья.
- •Действия с бинарными деревьями.
- •Построение бинарного дерева.
- •Решение задач работы с бинарным деревом.
- •Вопросы к главе 7.
- •Основные принципы структурного программирования.
- •Понятие жизненного цикла программного продукта
- •Основные принципы структурной методологии.
- •Структурное кодирование.
- •Модульное программирование.
- •Вопросы к главе 8.
- •Список литературы
Особенности обработки типизированных файлов.
Файл с типом (типизированный файл) состоит из последовательности записей одинаковой длины и одинакового внутреннего формата. Записи следуют непрерывно друг за другом. Первые 4 байта первого сектора файла содержат количество и длину записи. К файлам с такой организацией можно обращаться последовательно и выборочно (с прямым доступом).
При последовательном доступе записи располагаются на внешнем носителе последовательно в порядке их поступления, т.е. чтение или запись I+1 компоненты возможно только послеI–ой компоненты.
При прямом доступе предполагается, что данные располагаются в определенных областях, имеющих последовательные номера, начиная с нуля. Вычисляя значение указателя, фиксирующего номер записи, можно обеспечить прямой доступ к нужной записи, используя процедуру позиционирования SEEK.
Общий вид описания типизированного файла:
TYPE < идентификатор типа >= FILE OF < тип компонент >;
Например,
TYPE T = FILE OF REAL;
VAR F: T;
VAR F: FILE OF REAL;
TYPE ST= RECORD
A: STRING[10];
B: INTEGER;
C: REAL;
D: BYTE
END;
VAR DAN: FILE OF ST;
В первом варианте тип файла описан в разделе описания типов, а затем в разделе описания переменных файловая переменная получает этот тип, во втором варианте тип предварительно не описывается. В третьем варианте предварительно описывается тип записи файла, а в разделе описания переменных этот тип используется для указания типа отдельной записи.
Процедуры чтения и записи для файлов с типом READиWRITE. Кроме того, используются процедуры и функцииASSIGN, RESET, REWRITE, SEEK, CLOSE,FILEPOS, FILESIZE, EOF. ПроцедураTRUNCATE обрезает файл на заданной файловой позиции.
Пусть требуется создать файл из записей, данные которых вводятся с клавиатуры. После создания файла содержимое файла вывести на экран.
Структура записи файла следующая:
фамилия;
табельный номер;
заработная плата.
type tz=record
fio:string[10];
tn:integer;
zp:real
end;
var zap:tz;
fout:file of tz;
fl:boolean;
name:string;
begin
repeat
writeln('имя файла ');
readln(name);
assign (fout,name);
{$i-} reset(fout); {$i+}
if ioresult=0 then
begin
writeln('файл ',name,' уже есть');
close(fout);
fl:=false
end
else
begin
rewrite(fout);
fl:=true
end
until fl;
with zap do
repeat
writeln('ввод fio,tn,zp');
readln(input,fio,tn,zp);
write(fout,zap);
until eof(input);
close(fout);
reset(fout);
with zap do
repeat
read(fout,zap);
writeln(fio:15,tn:9,zp:8:2);
until eof(fout);
close(fout)
end.
В начале программы выполняется ввод имени файла до тех пор, пока не будет введено имя несуществующего файла, т.к. в противном случае старый файл будет уничтожен и данные будут утеряны. После ввода нового имени флаг FL становится равным TRUE и цикл ввода имени файла прекращается. После этого начинается непосредственно цикл ввода данных с клавиатуры из файла INPUT . Признак конца ввода Ctrl+Z. Стандартное имя файла ввода с клавиатуры INPUT можно опустить и в операторе чтения из файла readln, и в функции проверки конца ввода eof. После создания файла и ввода всех данных файл закрывается процедурой close. Затем созданный файл открывается для чтения, данные из него читаются и выводятся на экран в виде таблицы.
Файл может расширяться путем включения последующих элементов за последним существующим элементом файла. Для этого используется процедура позиционирования:
SEEK(<имя файла>, FILESIZE(<имя файла>)).
В следующей программе, используя прямой доступ к записям файла, созданного в предыдущей программе, требуется подсчитать сумму зарплаты рабочих, чьи табельные номера вводятся с клавиатуры (предполагается, что при создании файла были использованы табельные номера в интервале 101-999 и запись с номером 101 занимает первое место в файле, за ней следует запись с табельным номером 102 и т.д.).
type tz=record
fio:string[10];
tn:integer;
zp:real
end;
var zap:tz;
fout:file of tz;
tn1,tn2,n:integer;
s:real;
name:string;
begin
writeln('имя файла ');
readln(name);
assign (fout,name);
reset(fout);
s:=0;
repeat
readln(tn2);
tn1:=tn2-101; {формирование указателя записи}
seek(fout,tn1);
read(fout,zap);
s:=s+zap.zp;
until eof;
writeln(‘s= ‘,s);
close(fout)
end.
В этой программе процесс обработки заканчивается, когда прекращается ввод табельных номеров, подлежащих обработке, т.е. Ctrl+Zдля файла ввода с клавиатуры.