- •Информатика и Программирование
- •Понятие процедуры и функции в Паскале. Их назначение, применение, варианты размещения в программе
- •Сравнительный анализ возможностей процедуры и функции. Возможности преобразования процедуры в функцию и наоборот
- •Понятие рекурсии. Рекурсивные процедуры и функции, их применение, достоинства и недостатки
- •Запись как тип данных. Работа с записями: описание записи, оператор присоединения, запись с вариантами. Использование записей
- •Статическая и динамическая память. Общие сведения об управлении динамической памятью с помощью стандартных процедур и функций (GetMem, FreeMem; New, Dispose)
- •1. Автоматически по завершении всей программы.
- •2. С помощью стандартной процедуры dispose.
- •3. С помощью стандартной процедуры frеемеm.
- •4. С помощью стандартных процедур маrk и release.
- •Динамические структуры данных. Динамические массивы (одномерные и двумерные), работа с ними
- •Динамические структуры данных. Списки. Основные виды списков. Действия со списками
- •Inf1 : integer; { первое информационное поле }
- •Inf2 : string; { второе информационное поле }
- •Однонаправленные (линейные) списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •Двунаправленные, симметричные списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •Inf1 : integer; { первое информационное поле }
- •Inf2 : string; { второе информационное поле }
- •Кольцевые, циклические списки. Описание, создание, просмотр списка, добавление и удаление элементов
- •Inf1 : integer; { первое информационное поле }
- •Inf2 : string; { второе информационное поле }
- •Бинарное дерево. Основные определения и понятия. Бинарный поиск по дереву. Формирование бинарного дерева этим методом
- •Бинарное дерево. Основные операции с бинарными деревьями. Способы обхода бинарного дерева. Варианты поиска по бинарному дереву
- •Рекурсия при работе со списками и деревьями. Очередь, стек, дек как формы работы со списком, действия над ними
- •Тестирование. Понятие и цель тестирования. Правильное и неправильное определение тестирования. Основные определения. Тестирование методом «чёрного ящика». Тестирование методом «белого ящика»
- •Отладка. Общие принципы, методы отладки. Взаимосвязь процессов тестирования и отладки, использование автоматических средств отладки
- •Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Отличие объектно-ориентированного подхода от модульного при разработке программ
- •Основные отличия языка Object Pascal (Delphi) от Turbo Pascal. Динамические массивы в Delphi: описание, особенности, применение
- •Структура модулей в Delphi. Интерфейсная, исполняемая части, инициирующая и завершающая части. Процедуры и функции: особенности в Delphi
- •Работа с файлами и папками в Delphi: стандартные процедуры и функции, дополнительные возможности по сравнению с Паскалем, окна диалогов работы с файлами
- •Определение термина «сертификация», виды сертификации. Организационная система сертификации
- •Основные функции органа по сертификации
- •Правовые основы сертификации в Российской Федерации. Требования, предъявляемые к испытательным лабораториям
- •Значение метрологии программных средств для повышения их качества и конкурентоспособности
- •Качество программного средства и его оценка. Показатели качества программных средств
- •Надёжность программных средств и её оценка. Модели надёжности
- •Проблемы, цели и задачи технико-экономического анализа разработки программных средств. Показатели технико-экономического анализа
- •Оценка экономической эффективности программных средств
- •Сертификация, метрология и научно-технический прогресс
-
Запись как тип данных. Работа с записями: описание записи, оператор присоединения, запись с вариантами. Использование записей
Запись – это структура данных, состоящая из фиксированного числа компонент, называемых полями. Каждое поле имеет свой идентификатор и тип. К компонентам записи возможен прямой доступ и они могут выборочно обновляться. Идентификатор в самой записи должен быть уникальным. Для обращения к отдельным полям записи указываются составные имена: имя записи, после которого ставится точка и записывается идентификатор поля. Запись можно передавать в качестве параметра процедуры или функции, но значением функции запись быть не может.
В общем виде описание типа для записи можно представить:
TYPE <идентификатор типа>= RECORD
<идентификатор 11>[,< идентификатор 12>,…]: <тип 1>;
< идентификатор 21>[,< идентификатор 22>,…]: <тип 2>;
. . .
END;
Например,
TYPE TA= RECORD
P1 : REAL;
P2 : CHAR;
P3 : BYTE
END;
VAR A: ARRAY[1..10] OF TA;
Здесь описан одномерный массив, каждый элемент которого представляет собой запись, имеющую структуру типа TA.
Запись может объявляться и непосредственно в разделе описания переменных.
VAR C : RECORD
P1 : REAL;
P2 : CHAR;
P3 : BYTE
END;
При обращении к компонентам записи используются составные имена. Для сокращения имен и повышения удобства работы с записями применяется оператор присоединения WITH.
WITH <идентификатор переменной типа RECORD> DO < оператор >;
Тогда в операторе при ссылке на компоненты записи имя переменной можно опускать.
Состав и структура записи могут динамически меняться в зависимости от значения какого-либо из своих полей, называемого полем- признаком.
В общем виде описание записи с вариантами выглядит так:
TYPE <идентификатор типа >= RECORD
<идентификатор поля 1>:<тип 1>;
<идентификатор поля 2>:<тип 2>;
. . .
CASE <селектор>:<тип селектора> OF
<метка варианта 1>:(<поле варианта 11>:<тип 11> [;<поле вар-та
12>:<тип 12>;<поле варианта 13>:<тип 13>;. . .]);
END;
Метки варианта должны иметь такой же тип, как у селектора.
Если какой-либо метке варианта не соответствуют поля, то записываются пустые круглые скобки.
Пример:
Пусть требуется описать запись следующей структуры. В каждой записи имеются поля, содержащие табельный номер и фамилию. В зависимости от того, кому принадлежит запись, состав остальных полей может быть разным:
- для студентов поля: номер группы и специальность;
- для преподавателей: институт, кафедра, стаж работы;
- для сотрудников дополнительных полей нет.
Описание соответствующей записи структуры данных:
TYPE TZ=RECORD
TN:BYTE;
FIO:STRING;
CASE N:CHAR OF
‘P’: ( IN:BYTE; KAF:STRING; ST:BYTE );
‘S’: ( NG:BYTE; SP:INTEGER );
‘A’: ( )
END;
VAR Z:TZ;
-
Файлы в Паскале. Понятие физического и логического файла, соотношение между ними. Типы файлов и их описание, стандартные процедуры и функции для работы с файлами. Общие характеристики методов доступа к файлам
При обработке на компьютере информация может храниться на внешних носителях в виде файлов.
Файл на носителе – это поименованная совокупность логически связанных между собой данных (записей), имеющая определенную организацию и общее назначение.
Физическая запись – это совокупность данных, передаваемых в прямом или обратном направлении при одном обращении к внешнему носителю (т.е. минимальная единица обмена данными между внешней и оперативной памятью. С физическими записями - блоками работает операционная система). Физическая запись состоит из логических записей.
Логическая запись – единица данных, используемая в операторах чтения и записи файлов, порция информации, обрабатываемая в программе «за один раз». Логические записи объединяются в физическую запись для уменьшения числа обращений к внешнему устройству.
Для обращения к записям файла на внешнем носителе используется понятие логического файла.
Логический файл или файл в программе – это совокупность данных, состоящая из логических записей, объединенных общим назначением.
В данный момент времени возможен доступ через данный логический файл только к одному физическому файлу.
Число записей в файле произвольно.
В каждый момент времени доступна только одна запись.
Длиной файла называют количество записанных компонентов. Файл, не содержащий записей, называется пустым.
Стандартные средства обеспечения взаимодействия между логическим и физическим файлом:
1) установление связи между физическим и логическим файлами ASSIGN (…), где указывается имя файла в программе и имя файла на внешнем носителе (без контроля существования файла);
2) обеспечение физической возможности обмена информацией между файлами, открытие файла для чтения информации из него RESET (…) или для записи в него REWRITE (…). При этом осуществляется контроль наличия физического файла;
3) прекращение, отмена возможности физического обмена информацией между файлами, закрытие файла CLOSE (…). Связь между файлами при этом не разрывается (т.е. ASSIGN действует).
При работе с файлами необходимо придерживаться следующих общих правил:
- каждый файл в программе (переменная файлового типа) должен быть объявлен в разделе VAR. Не допускается использование таких переменных в выражениях и операторах присваивания. Тип компонентов файла может быть любым, кроме файлового.
- каждый файл в программе должен быть закреплен за конкретным файлом на носителе процедурой ASSIGN;
- открытие существующего файла для чтения, корректировки или дозаписи производится процедурой RESET, открытие создаваемого файла для записи – процедурой REWRITE;
- по окончании работы с файлом он должен быть закрыт процедурой CLOSE.
Процедуры и функции для работы с файлами.
ASSIGN (имя_файла_в_программе, имя_файла_на_носителе) – процедура устанавливает связь между файловой переменной (имя_файла_в_программе) и файлом на носителе. Здесь:
имя_файла_в_программе - это файловая переменная, т.е. идентификатор, объявленный в программе как переменная файлового типа.
имя_файла_на_носителе – текстовое выражение, содержащее имя файла или имя логического устройства. Перед именем файла на носителе может быть указан полный путь к файлу – имя диска, имена каталогов вышестоящих уровней, имя текущего каталога. Это единственное место в программе, где используется имя физического файла на носителе. Во всех остальных местах используется имя логического файла, имя файла в программе.
RESET (имя_файла_в_программе) – процедура открытия существующего файла
-
для чтения при последовательном доступе и
-
для чтения и записи при прямом доступе.
Указатель файла при этом устанавливается на первую запись (с 0 номером). Если файл с таким именем не существует, то происходит аварийное завершение программы.
REWRITE (имя_файла_в_программе) – процедура открытия создаваемого файла для записи. Если файл с таким именем не существовал, то он создается и начинается заполнение файла. Если файл с таким именем уже существовал, то он стирается, и заполнение файла начинается заново. Указатель файла устанавливается на первую запись (запись – она же компонент файла).
READ (имя_файла_в_программе, имя_переменной) – процедура чтения очередного компонента файла в переменную, тип которой должен совпадать с типом компонентов файла.
READLN (имя_файла_в_программе, имя_переменной) применяется для чтения записей из текстового файла.
WRITE (имя_файла_в_программе, имя_переменной
[,имя_переменной…] );
– процедура записи содержимого переменных в файл согласно положению указателя. Указатель автоматически сдвигается на число записанных компонентов.
WRITELN (имя_файла_в_программе, имя_переменной) – применяется для записи компонента в текстовый файл.
SEEK (имя_файла_в_программе, номер_компонента) – процедура установки текущего указателя для чтения или записи требуемого компонента файла.
CLOSE (имя_файла_в_программе) – процедура закрытия файла. Обязательно должна использоваться после окончания работы с файлом, в особенности после создания файла, иначе может произойти потеря данных, находящихся в последнем буфере. В одной программе файл может быть открыт и закрыт несколько раз с разными назначениями.
FILEPOS (имя_файла_в_программе) – функция определения номера текущей записи файла.
FILESIZE (имя_файла_в_программе) – функция определения общего количества записей файла.
EOF (имя_файла_в_программе) – функция определения признака конца файла (End Of File). Получает значение TRUE при чтении последней записи файла.
EOLN (имя_файла_в_программе) – функция обнаружения конца строки в текстовом файле (End Of Line). Имеет значение TRUE, если найден конец строки.
IORESULT – функция возврата условного признака последней операции ввода-вывода. Если операция завершилась успешно, функция возвращает нуль. Функция становится доступной только при отключенном автоконтроле ошибок ввода-вывода. Директива компилятора {$I-} отключает, а {$I+} – включает автоконтроль ошибок. Если автоконтроль отключен и операция ввода-вывода привела к возникновению ошибки, все последующие обращения к вводу-выводу блокируются, пока не будет вызвана функция IORESULT. Функция, как правило, применяется для контроля существования файла, с которым предстоит работать.
ERASE (имя_файла_в_программе) – процедура уничтожения файла. Открытый файл прежде должен быть закрыт (используется модуль DOS).
RENAME (старое_ имя_файла_на_носителе, новое_имя_файла_на_носителе) – процедура для переименования файла. Используется после закрытия файла (используется модуль DOS).
В системе программирования Паскаль различаются 3 вида файлов:
-
файлы с типом записей (типизированные файлы);
Type
Rec = record
Inf1 : integer;
Inf2 : string [20];
End;
Var
Zap : rec; { компонент файла – место в ОП для одной записи файла }
F1 : file of rec; { файл со структурой компонента вида REC }
-
текстовые файлы со строками неопределенной длины;
VAR F2 : TEXT;
-
файлы без типа для передачи данных блоками записей.
VAR F3 : FILE;