
- •Урок № 1. Понятие алгоритма, его свойства. Способы представления алгоритмов.
- •1. Понятие алгоритма, его свойства.
- •3.Блок-схемы алгоритмов. Составление блок-схем. Графическое представления алгоритма в соответствии с госТом.
- •Урок № 2-3. Виды алгоритмов. Составление алгоритмов.
- •1. Виды алгоритмов.
- •2. Составление алгоритмов.
- •Урок № 4. Понятие системы программирования. Понятия языка программирования. Эволюция языков программирования.
- •Понятие системы программирования. Понятия языка программирования, уровни языков программирования.
- •2. Классификация языков программирования
- •3. Эволюция языков программирования.
- •Урок № 5. Технологический процесс создания программного продукта. Компиляция программы.
- •6. Анализ результатов решения задачи и повторение в случае необходимости выполнение этапов 2 — 5.
- •7. Сопровождение программы:
- •2.Компиляция программы.
- •Урок № 6. Особенности объектно-ориентированного программирования. Интерфейс среды Delphi.
- •1. Понятие ооп. Принципы ооп.
- •2. Среда Delphi. Главное окно.
- •Создание консольного приложения в Delphi.
- •4.Компиляция и выполнение проекта
- •Урок № 7 Структура программы: заголовок, описательная часть, исполнительная часть.
- •Урок № 8-9. Алфавит языка. Основные понятия.
- •1. Алфавит языка.
- •2. Основные понятия.
- •Урок № 10. Простые типы данных.
- •Понятие простых типов данных.
- •2. Целочисленные, литерные и логические типы данных.
- •3. Перечисляемые и интервальные типы.
- •4. Вещественные типы.
- •Урок № 11. Структурные типы данных: строки, массивы, множества.
- •2.Массивы.
- •3.Множества
- •Урок №12. Структурные типы данных: Записи, файлы, вариантные, классы памяти. Записи.
- •1. Записи.
- •2.Файлы
- •3.Вариантные типы
- •4.Указатели
- •Урок № 13. Выражения.
- •1.Арифметические выражения
- •3.Строковые выражения
- •4. Процедуры и функции. Действие процедуры и функции
- •2.Логические выражения
- •Урок № 14-15 (практическое занятие). Описание данных различных типов. Составление выражений.
- •1. Описать следующие переменные:
- •Урок № 16. Простые операторы: присваивания, перехода, пустой, вызова процедуры, ввода-вывода.
- •2. Инструкция Read, Readln.
- •2. Инструкция Write, Writeln.
- •Урок № 17. Управляющие структуры: составной оператор, условный оператор, оператор выбора.
- •1.Составной оператор
- •2.Условный оператор
- •3.Оператор выбора
- •Урок № 18. Операторы цикла: с параметром.
- •1. Операторы цикла.
- •2. Оператор цикла с параметром.
- •Урок № 19. Операторы цикла: с предусловием, с постусловием.
- •1.Оператор цикла с предусловием
- •2. Оператор цикла с постусловием
- •Урок № 20. Подпрограммы: основные понятия, объявление подпрограмм. Процедуры, описание процедуры. Функции, описание функции.
- •1. Основные понятия.
- •2. Описание процедур и функций.
- •Урок № 21. Формальные и фактические параметры. Вызов подпрограмм.
- •1.Формальные и фактические параметры.
- •2. Рекурсия и опережающее описание.
- •Понятие модуля, его структура.
- •4. Типы модулей в Delphi.
- •Урок № 22. Общие сведения ввода-выхода данных. Процедуры ввода-выхода данных.
- •1. Общие сведения о файлах. Способы описания файлов. Доступ к файлам.
- •2.Процедуры и функции для работы с файлами.
- •Урок № 23-24. Типы файлов: текстовые файлы, типизированные файлы, нетипизированные файлы.
- •1. Текстовые файлы.
- •Подпрограмма Описание
- •Типизированные файлы.
- •Подпрограмма Описание
- •3.Нетипизированные файлы
- •Урок № 25. Стандартные процедуры и функции при работе с файлами.
3.Нетипизированные файлы
Нетипизированные файлы объявляются как файловые переменные типа Fi1е
отличаются тем, что для них не указан тип компонентов. Отсутствие типа делает эти файлы, с одной стороны, совместимыми с любыми другими файлами, а с другой — позволяет организовать высокоскоростной обмен данными между диском и памятью.
При открытии нетипизированного файла процедурой Reset или Rewrite можно указать длину записи нетипизированного файла в байтах. Например, так:
var F: File;
begin
AssignFile(F, 'myfile.dat');
Reset(F, 512);
end:
Длина записи нетипизированного файла указывается вторым параметром при обращении к процедурам Reset или Rewrite, в качестве которого может использоваться выражение типа LongInt. Если длина записи не указана, она принимается равной 128 байтам.
Object Pascal не накладывает каких-либо ограничений на длину записи нетипизированного файла, за исключением требований положительности и ограничения на максимальную длину в 2 Гбайт (для Delphi 1 длина записи ограничивается 65 535 байтами). Для обеспечения максимальной скорости обмена данными рекомендуется задавать длину, которая была бы кратна длине физического сектора дискового носителя информации (512 байт). Однако операции обмена данными с дисковыми устройствами в среде Windows кэшируются, то есть осуществляются через промежуточный буфер памяти, поэтому обычно задают RecSize = 1, что позволяет обмениваться с файлом блоками любой длины, начиная с одного байта.
При работе с нетипизированными файлами могут применяться все процедуры и функции, доступные типизированным файлам, за исключением процедур Read и Write, которые заменяются соответственно высокоскоростными процедурами BlockRead и BlockWrite:
Procedure BlockRead(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]) ;
Procedure BlockWrite(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]) ;
Здесь Buf — буфер: имя переменной, которая будет участвовать в обмене данными с дисками; Count — количество записей, которые должны быть прочитаны или записаны за одно обращение к диску; AmtTransferred — необязательный параметр, содержащий при выходе из процедуры количество фактически обработанных записей.
После завершения процедуры указатель смещается на Count записей. Процедурами Seek, FilePos и FileSize можно обеспечить доступ к любой записи нетипизированного файла.
Урок № 25. Стандартные процедуры и функции при работе с файлами.
Чтение и запись - две самые распространенные операции, выполняемые при работе с файлами. Для их осуществления применяются специальные функции файлового ввода/вывода.
Итак, для выполнения операции чтения или записи необходимо произвести следующие действия:
1. Объявить файловую переменную необходимого типа.
2. При помощи функции AssignFile связать эту переменную с требуемым
файлом.
3. Открыть файл при помощи функций Append, Reset, Rewrite.
4. Выполнить операции чтения или записи. При этом, в зависимости от сложности задачи и структуры данных, может использоваться целый ряд вспомогательных функций.
5. Закрыть файл при помощи функции СloseFile.
Для контроля за текущей позицией в файле применяются две основные функции. Функция EOF(F) возвращает значение True, если достигнут конец файла. Функция EOLN(F) аналогично сигнализирует о достижении конца строки. Естественно, в качестве параметра в функции необходимо передавать файловую переменную.
Процедура Seek(var F; N: Longint); - обеспечивает смещение текущей позиции на N элементов. Размер одного элемента в байтах зависит от типа данных файла (от типизированной переменной).
Erase(f) - удаляет файл
FilePos(f) - возвращает текущую позицию чтения/записи в файл
Flush(f) - сбрасывает кэшированные файловые операции на диск
Rename(f, 'MyNewFileName.txt') - переименование файлов
Truncate(f) - файл обрезается до текущей позиции чтения/записи.
Пример 1. Дан текстовый файл с набором символов. Проверить, есть ли в файле сочетание символов «abcdef», входящих в строку.
Program Stroki;
label l1;
Var
t,K:string;
i,l:integer;
f:text;
Begin
assign(f,'c:\str.txt');
reset(f);
readln(f,t);
l:=0;
for i:=1 to length(t) do
begin
k:=copy(t,i,6);
if k='abcdef' then l:=1;
end;
if l=1 then writeln('sochetanie "abcdef" vhodit v stroky')
else write('sochetanie "abcdef" ne vhodit v stroky');
readln;
end.
Пример 2. Имеется файл, содержащий массив из 10 вещественных чисел. Найти и вывести на экран все отрицательные элементы и сумму их квадратов.
program pr1;
var
X:array[1..10] of real;
i:integer;
Summa:real;
f:text;
begin
Summa:=0;
assign(f,'c:\tyh\ins.txt');
reset(f);
i:=1;
while not eof(f) do
begin
readln(f,X[i]);
if x[i]<0 then
begin
Summa:=Summa+X[i]*X[i];
writeln('x[',i:2,']=',' ',X[i]:8:3, ' Summa= ',summa:8:3);
i:=i+1;
end;
end;
readln;
close(f);
end.
Пример 3. Дан файл с именем «shisla.txt», содержащий целые числа. Проверить, является ли файл упорядоченным (отсортированным).
program hhh;
var
f:text;
n,i,K:integer;
begin
assign(f,'shisla.txt');
reset(f);
readln(f,N);
K:=N;
while not eof(f) do
begin
readln(f,N);
if K>N then
begin
writeln('file ne uporyadochen');
exit;
end
else
K:=N;
end;
writeln('file uporyadochen');
readln;
close(f);
end.
Пример 4. Дан файл, содержащий данные о сотрудниках: фамилия, год, месяц и день рождения. Выбрать и записать в другой файл данные тех сотрудников, которые родились в год быка, а затем выбрать тех сотрудников, которые родились осенью.
program t2;
label l1;
type
sotryd1=record
fam:string[8];
godrog:integer;
mes:integer;
den:integer;
end;
var
f1,f:text;
sotryd:sotryd1;
i:integer;
begin
assign(f,'a:\ishod.txt');
reset(f);
assign(f1,'a:\vish.txt');
append(f1);
writeln(f1,'Список сотрудников, родившихся в год быка: ');
while not eof(f) do
begin
with sotryd do readln(f,fam,godrog,mes,den);
for i:=1 to 10 do
begin
if sotryd.godrog=1901+i*12 then
begin
writeln(f1,sotryd.fam,sotryd.godrog);
goto l1;
end;
l1: end;
end;
writeln(f1,'Список сотрудников, родившихся осенью');
reset(f);
while not eof(f) do
begin
with sotryd do readln(f,fam,godrog,mes,den);
if (sotryd.mes=9) or (sotryd.mes=10) or (sotryd.mes=11) then
writeln(f1,sotryd.fam,sotryd.mes);
end;
close(f);
close(f1);
end.
Пример 5. Составить программу для создания типизированного файла, содержащего информацию о студенте: имя, возвраст, является ли читателем городской библиотеки, № зачетки, группа.
program F_stud;
type
strud=record
name:string[8];
Age:integer;
Membbibl:boolean;
N_zachetki:integer;
Gruppa:string[4];
end;
var f:file of stud;
student:stud;
begin
AssignFile(f, 'c:\MyFile.rec');
Rewrite(f);
student.Name := 'Vitaly'; // или readln(student.name);
student.Age := 17; // или readln(student.Age);
student.Membbibl := True; // или readln(student.Membbibl);
student.N_zachetki := 12345; // или readln(student.N_zachetki);
student.gruppa := ‘2T2’; // или readln(student.gruppa);
Write(f, student);
Closefile(f);
End.