- •1.Технология программирования. Основные понятия и подходы 8
- •Технология программирования. Основные понятия и подходы
- •1.1. Технология программирования и основные этапы ее развития
- •1.2. Жизненный цикл и этапы разработки программного обеспечения
- •Контрольные вопросы
- •2.Разработкаструктуры программы и модульное программирование
- •2.1. Цель модульного программирования
- •2.2. Основные характеристики программного модуля
- •2.3. Методы разработки структуры программы
- •Контрольные вопросы
- •3.Тестирование и отладка программного средСтВа
- •3.1. Принципы и виды отладки программного средства
- •3.2. Заповеди отладки программного средства
- •3.3. Автономная отладка программного средства
- •3.3. Комплексная отладка программного средства
- •Контрольные вопросы
- •4. Обеспечение качества программного средства
- •4.1. Общая характеристика процесса обеспечения качества программного средства
- •4.2. Обеспечение легкости применения программного средства
- •4.3. Обеспечение эффективности программного средства
- •4.4. Обеспечение сопровождаемости программного средства
- •Контрольные вопросы
- •5. Документирование программных средств составление программной документации
- •5.1. Виды программных документов
- •5.2. Пояснительная записка
- •5.3. Руководство пользователя
- •5.4. Руководство системного программиста
- •5.5. Основные правила оформления программной документации
- •Контрольные вопросы
- •6. Объектный подход к разработке программных средств
- •6.1. Объекты и отношения в программировании. Сущность объектного подхода к разработке программных средств
- •6.2. Особенности объектного подхода к разработке внешнего описания программного средства
- •6.3. Особенности объектного подхода на этапе конструирования программного средства
- •Контрольные вопросы
- •7. Постановка и алгоритмизация задач
- •7.1. Понятие алгоритма
- •7.2. Способы описания алгоритмов
- •Условные обозначения блоков
- •7.3. Структурные схемы алгоритмов
- •Контрольные вопросы
- •8. Основы языка
- •8.1. Алфавит языка
- •8.2. Структура программы
- •Контрольные вопросы
- •9. Типы данных
- •9.1. Целые типы
- •9.2. Вещественные типы
- •9.3. Логический тип
- •9.4. Символьный тип
- •9.5. Выражения
- •Арифметические операции
- •Операция отрицания
- •Операции конъюнкция, дизъюнкция, «исключающее» или
- •Приоритет операций
- •9.6. Константы
- •9.7. Совместимость типов данных
- •Контрольные вопросы
- •10. Линейные алгоритмы
- •10.1. Пустой и составной операторы
- •10.2. Оператор присваивания
- •10.3. Простейший ввод и вывод
- •Контрольные вопросы
- •11. Разветвляющиеся алгоритмы
- •11.1. Оператор перехода
- •11.2. Условный оператор
- •11.3. Оператор выбора
- •Контрольные вопросы
- •12. Циклические алгоритмы
- •12.1. Циклы с параметром
- •12.2. Циклы с условием
- •Контрольные вопросы
- •13. Пользовательские типы данных
- •13.1. Перечисляемый тип
- •13.2. Тип - диапазон
- •13.3. Массивы
- •13.4. Записи
- •13.5. Множества
- •Контрольные вопросы
- •14. Работа со строками
- •Контрольные вопросы
- •15. Процедуры и функции
- •15.1. Параметры-значения
- •15.2. Параметры-переменные
- •15.3. Параметры-константы
- •15.4. Открытые параметры-массивы
- •15.5. Бестиповые параметры
- •15.6. Процедурные типы
- •15.7. Рекурсия
- •Контрольные вопросы
- •16. Типизированные константы
- •Контрольные вопросы
- •17. Модули
- •Interface
- •Implementation
- •Interface
- •18.2. Поиск с барьером
- •83.3. Двоичный (бинарный) поиск
- •Контрольные вопросы
- •19. Алгоритмы сортировки
- •19.1. Сортировка выбором
- •19.2.Сортировка обменом (методом «пузырька»)
- •19.3. Сортировка включением
- •Контрольные вопросы
- •20. Файлы
- •20.1. Текстовые файлы
- •20.2. Компонентные файлы
- •20.3. Бестиповые файлы
- •20.4. Последовательный и прямой доступ
- •Контрольные вопросы
- •21.Программирование с использованием динамической памяти
- •21.1. Указатели и операции над ними
- •21.2. Процедуры и функции, работающие с указателями
- •Контрольные вопросы
- •22. Модуль crt (основные возможности)
- •Контрольные вопросы
- •22. Модуль graph (основные возможности)
- •22.1. Базовые процедуры и функции
- •22.2. Экран и окно в графическом режиме
- •22.3. Вывод точки
- •22.4. Вывод линии
- •22.5. Построение прямоугольников
- •22.6. Построение многоугольников
- •22.7. Построение дуг и окружностей
- •22.8. Работа с текстом
- •Контрольные вопросы
- •Заключение
- •Библиографический список
20.2. Компонентные файлы
Компонентный или типизированный файл – это файл с объявленным типом его компонент. Компонентные файлы состоят из машинных представлений значений переменных, они хранят данные в том же виде, что и память ЭВМ.
Описание величин файлового типа имеет вид:
type m = file of T;
где m– имя файлового типа;Т– тип компоненты. Например:
typefio = string[20];spisok = file of fio;varstud, prep: spisok;
Здесь stud,prep– имена файлов, компонентами которых являются строки.
Описание файлов можно задавать в разделе описания переменных:
varfsimv: file of char;fr: file of real;
Компонентами файла могут быть все скалярные типы, а из структурированных – массивы, множества, записи. Практически во всех конкретных реализациях языка Паскаль конструкция «файл файлов» недопустима.
Все операции над компонентными файлами производятся с помощью стандартных процедур: reset,rewrite,read,write,close.
Для ввода–вывода используются процедуры:
read(f, x);write(f, x);
где f– имя логического файла;x– либо переменная, либо массив, либо строка, либо множество, либо запись с таким же описанием, какое имеет компонента файла.
Выполнение процедуры read(f,x) состоит в чтении с внешнего устройства одной компоненты файла и запись ее вx. Повторное применение процедурыread(f,x) обеспечит чтение следующей компоненты файла и запись ее вx.
Выполнение процедуры write(f,x) состоит в записиxна внешнее устройство как одной компоненты. Повторное применение этой процедуры обеспечит записьxкак следующей компоненты файла.
Для работы с компонентными файлами введена расширенная форма операторов ввода и вывода:
read(f, x1, x2,... xk)write(f, x1, x2,... xk)
Здесь f– компонентный файл, а переменныеx1,x2,...,xkдолжны иметь тот же тип, что и объявленный тип компонент файлаf.
20.3. Бестиповые файлы
Бестиповые файлы позволяют записывать на диск произвольные участки памяти ЭВМ и считывать их с диска в память. Операции обмена с бестиповыми файлами осуществляются с помощью процедур BlokReadиBlockWrite. Кроме того, вводится расширенная форма процедурresetиrewrite. В остальном принципы работы остаются такими же, как и с компонентными файлами.
Перед использованием логический файл
var f: file;
должен быть связан с физическим с помощью процедуры assign. Далее файл должен быть открыт для чтения или для записи процедуройresetилиrewrite, а после окончания работы закрыт процедуройclose.
При открытии файла длина буфера устанавливается по умолчанию в 128 байт. Турбо Паскаль позволяет изменить размер буфера ввода–вывода, для чего следует открывать файл расширенной записью процедур
reset(var f: file; BufSize: word);
или
rewrite(var f: file; BufSize: word);
Параметр BufSizeзадает число байтов, считываемых из файла или записываемых в него за одно обращение. Минимальное значениеBufSize– 1 байт, максимальное – 64 Кбайта.
Чтение данных из бестипового файла осуществляется процедурой
BlockRead( var f: file; var x; count: word; var QuantBlock: word);
Эта процедура осуществляет за одно обращение чтение в переменную X количества блоков, заданное параметром count, при этом длина блока равна длине буфера. Значениеcountне может быть меньше 1. За одно обращение нельзя прочесть больше, чем 64 Кбайтов.
Необязательный параметр QuantBlockвозвращает число блоков (буферов), прочитанных текущей операциейBlockRead. В случае успешного завершения операции чтенияQuantBlock=count, в случае аварийной ситуации параметрQuantBlockбудет содержать число удачно прочитанных блоков. Отсюда следует, что с помощью параметраQuantBlockможно контролировать правильность выполнения операции чтения.
Запись данных в бестиповой файл выполняется процедурой
BlockWrite( var f: file; var x; count: word; var QuantBlock: word);
которая осуществляет за одно обращение запись из переменной xколичества блоков, заданное параметромcount, при этом длина блока равна длине буфера.
Необязательный параметр QuantBlockвозвращает число блоков (буферов), записанных успешно текущей операциейBlockWrite.