- •Конспект лекций по информатике
- •Организация данных в эвм и основы программирования
- •1. Основные понятия языка программирования паскаль
- •1.1. Структурное программирование
- •1.2. Основные символы языка
- •1.3. Элементы языка
- •1.4. Интегрированная среда turbo pascal
- •1.5. Структура программы в turbo pascal
- •1.6. Определение типов
- •1.7. Операторы в программе
- •1.7.1. Операторные скобки
- •1.7.2. Операторы ввода
- •1.7.3. Оператор присваивания
- •1.7.4. Условный оператор
- •1.7.5. Пример простой программы
- •1.7.6. Оперетор безусловного перехода
- •1.8. Организация циклов
- •1.8.1. Использование операторов условного и безусловного перехода
- •1.8.2. Цикл с параметром
- •1.8.3. Цикл с предусловием - цикл while
- •1.8.4. Цикл с постусловием - цикл repeat
- •1.9. Оператор выбора варианта
- •1.10. Расположение операторов в программе
- •1.11. Концепция типов данных
- •2. Стандартные простые типы
- •2.1 Целый тип
- •2.1.1. Операции над данными целого типа:
- •2.2. Действительный тип
- •2.2.1. Операции над данными действительного типа:
- •2.3. Логический тип
- •Var p, q, r : Boolean;
- •2.3.1. Алгебра логики в Паскале
- •2.3.2. Законы алгебры логики в Паскале
- •2.4. Символьный тип
- •2.4.1. Символьные строковые константы
- •3. Нестандартные простые типы (определяемые пользователем)
- •3.1. Перечисляемый тип
- •3.2. Ограниченный тип (диапазон, интервал)
- •4. Процедуры и функции
- •4.1. Описание процедур
- •4.2. Стандартные процедуры
- •4.3. Описание функций
- •4.4. Стандартные функции
- •4.5. Итерация и рекурсия
- •4.6. Побочный эффект рекурсии
- •4.7. Предварительное описание (ссылки вперед)
- •5. Регулярные типы
- •5.1. Одномерный массив, или переменные с индексами
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •2. Сортировка выбором
- •3. Метод Шелла
- •4. Метод Хoopа
- •5.2. Многомерные массивы
- •5.3. Упакованные массивы
- •5.4. Строки
- •6. Множественные типы
- •6.1. Свойства множеств
- •6.2. Операции над множествами
- •7. Комбинированные типы
- •7.1. Описание записей и действия с ними
- •7.2. Оператор присоединения.
- •7.3. Записи с вариантами
- •8. Типизированная константа
- •8.1. Простая типизированная константа
- •8.2. Структурированная (сложная) типизированная константа
- •8.2.1. Типизированная константа массива
- •8.2.2. Типизированная константа записи
- •8.2.3. Типизированная константа множества.
- •9. Преобразование типов
- •9.1. Неявные преобразования типов
- •9.2. Использование стандартных функций для преобразования
- •9.3. Явные преобразования типов
- •9.5. Совместимость типов
- •10. Файловые типы
- •10.1. Определение файлового типа
- •10.2. Структура файла
- •10.3. Имя файла
- •10.4. Описание файлового типа
- •10.5. Файловая переменная
- •10.6. Операции над файлами
- •10.7. Типизированные файлы
- •10.8. Текстовые файлы
- •10.9. Нетипизированные файлы
- •10.10. Стандартные файлы inpuTиOutput
10.7. Типизированные файлы
Длина любого компонента типизированного файла строго постоянна, что даёт возможность доступа к каждому компоненту. Перед первым обращением к процедурам ввода – вывода указатель файла стоит в его начале и указывает на первый компонент с номером 0. После каждого чтения или записи указатель сдвигается к следующему компоненту файла. Если этих переменных в списке несколько, указатель будет смещаться после каждой операции обмена данными между переменными и дисковым файлом.
Такой способ доступа называется последовательным. В Турбо – Паскале имеется также возможность организациипрямогодоступа к компонентам типизированного файла (процедураSeck).
Существует ряд процедур и функций для работы с типизированными файлами.
Процедура Read(файловая переменная, список ввода).
Обеспечивает чтение очередных компонентов типизированного файла.
Здесь «список ввода» - содержит одну или более переменных такого же типа, что и компоненты файла.
10.8. Текстовые файлы
10.9. Нетипизированные файлы
Program PP71;
Type ZAP=Record
FIO:Array[1..10] of Char;
God:Integer
end;
FPK=File;
Var FIZAP:FPK;
A,B:ZAP;
J,I:Integer;
BeginAssign(FIZAP,'pp71.dat');
Rewrite(FIZAP, 12);
For J:=1 to 3 do
Begin Write('=>');
For I:=1 to 10 do Read(B.FIO[I]);
Readln(B.God);
BlockWrite(FIZAP,B,1)
end;
Close(FIZAP);
Reset(FIZAP, 12);
For J:=1 to 3 do
Begin BlockRead(FIZAP,A,1);
Writeln(J:2,'-ая запись ',A.FIO,A.God:5);
end
end.
Program PP74;
Type ZAP=Record
FIO:Array[1..10] of Char;
God:Integer
end;
FPK=File;
Var FIZAP:FPK;
A:ZAP;
I:Integer;
BeginAssign(FIZAP,'pp74.dat');
Rewrite(FIZAP, 12);
Repeat
Write('=>');
For I:=1 to 10 do Read(A.FIO[I]);
Readln(A.God);
BlockWrite(FIZAP,A,1);
Until A.FIO='**********';
Close(FIZAP);
Reset(FIZAP,12);
I:=1;
Repeat
BlockRead(FIZAP,A,1);
Writeln(I:2,'-ая запись ',A.FIO,A.God:5);
I:=I+1
Until A.FIO='**********'
end.
Program PP75;
Type ZAP=Record
FIO:Array[1..10] of Char;
God:Integer
end;
FPK=File;
Var FIZAP,RB:FPK;
A:ZAP;
I:Integer;
{-------------------------------------------------------------------------}
{ВВОД ИСХОДНЫХ ДАННЫХ В ФАЙЛ FIZAP}
BeginAssign(FIZAP,'C:\program\t-pas\pp75.dat');
Rewrite(FIZAP, 12);
Repeat
Write('=>');
For I:=1 to 10 do Read(A.FIO[I]);
Readln(A.God);
BlockWrite(FIZAP,A,1);
Until A.FIO='**********';
Close(FIZAP);
{------------------------------------------------------------------------}
{КОНТРОЛЬНЫЙ ВЫВОД СОДЕРЖИМОГО ОБРАБАТЫВАЕМОГО ФАЙЛА FIZAP}
Writeln;
Writeln('Обрабатываемый файл:');
Reset(FIZAP,12);
I:=1;
Repeat
BlockRead(FIZAP,A,1);
Writeln(I:2,'-ая запись ',A.FIO,A.God:5);
I:=I+1
Until A.FIO='**********';
Close(FIZAP);
{------------------------------------------------------------------------}
{ПЕРЕПИСЬ ИЗ ОБРАБАТЫВАЕМОГО ФАЙЛА FIZAP В РАБОЧИЙ ФАЙЛ RB ЛЮДЕЙ, }
{ РОДИВШИХСЯ НЕ РАНЕЕ 1970 ГОДА }
Reset(FIZAP,12);
Assign(RB,'C:\program\t-pas\ppr75.dat');
Rewrite(RB,12);
Repeat
BlockRead(FIZAP,A,1);
If A.God>=1970 then BlockWrite(RB,A,1)
Until A.FIO='**********';
Close(RB);
Close(FIZAP);
{------------------------------------------------------------------------}
{КОНТРОЛЬНЫЙ ВЫВОД СОДЕРЖИМОГО РАБОЧЕГО ФАЙЛА RB}
Writeln;
Writeln('Рабочий файл:');
Reset(RB,12);
I:=1;
Repeat
BlockRead(RB,A,1);
Writeln(I:2,'-ая запись ',A.FIO,A.God:5);
I:=I+1
Until A.FIO='**********';
Close(RB);
{------------------------------------------------------------------------}
{ПЕРЕПИСЬ ИЗ РАБОЧЕГО ФАЙЛА RB В ОБРАБАТЫВАЕМЫЙ ФАЙЛ FIZAP}
Reset(RB,12);
Rewrite(FIZAP,12);
Repeat
BlockRead(RB,A,1);
BlockWrite(FIZAP,A,1)
Until A.FIO='**********';
Close(RB);
Close(FIZAP);
{-------------------------------------------------------------------------}
{КОНТРОЛЬНЫЙ ВЫВОД СОДЕРЖИМОГО ОБРАБАТЫВАЕМОГО ФАЙЛА FIZAP}
Writeln;
Writeln('Обработанный файл:');
Reset(FIZAP,12);
I:=1;
Repeat
BlockRead(FIZAP,A,1);
Writeln(I:2,'-ая запись ',A.FIO,A.God:5);
I:=I+1
Until A.FIO='**********';
Close(FIZAP);
{------------------------------------------------------------------------}
Writeln('ok')
end.
Program z3;
type zap=record
nazv:array[1..15] of char;
cena:real
end;
tov=file;
var nov,star:tov;
b:zap;
i:integer;
begin
{----------------------------------------------------------------------}
{ОТКРЫТИЕ ФАЙЛА STAR НА ЗАПИСЬ}
assign(star,'c:\program\t-pas\star.dat');
rewrite(star,24);
{---------------------------------------------------------------------}
{ЗАПОЛНЕНИЕ ФАЙЛА STAR УПОРЯДОЧЕННЫМИ ПО НЕУБЫВАНИЮ ЦЕН ТОВАРОВ ЗАПИСЯМИ}
writeln('НАЗВАНИЕ ТОВАРА',' ЦЕНА(руб.)');
repeat
for i:=1 to 15 do read(b.nazv[i]);
readln(b.cena);
blockwrite(star,b,1)
until b.nazv='***************';
close(star);
{-----------------------------------------------------------------------}
{КОНТРОЛЬНЫЙ ВЫВОД СОДЕРЖИМОГО ФАЙЛА star}
writeln;
writeln('Обрабатываемый файл:');
reset(star,24);
repeat
blockread(star,b,1);
writeln(b.nazv:15,' ',b.cena:6:2)
until b.nazv='***************';
close(star); end.
{-----------------------------------------------------------------------}
{ВВОД С ТЕРМИНАЛА ПОЛЕЙ НОВОЙ ЗАПИСИ}
{-----------------------------------------------------------------------}
{ВСТАВКА НОВОЙ ЗАПИСИ}
{-----------------------------------------------------------------------}
{ПЕРЕПИСЬ ДАННЫХ ИЗ НОВОГО ФАЙЛА В СТАРЫЙ И ИХ ПЕЧАТЬ}
{----------------------------------------------------------------------}
{ЗАКРЫТИЕ ФАЙЛОВ}
{------------------------------------------------------------------------}
end.