- •1. Двоичная система счисления.
- •2. Восьмеричная система счисления.
- •3. Шестнадцатеричная система счисления.
- •4. Сложение и вычитание в 2, 8 и 16 c/c.
- •2. Вещественные числа (числа с плавающей запятой).
- •3. Логические данные.
- •2. Зарезервированные слова.
- •X a8 alpha Massiv z52d9 eps Res_52_a ___75
- •6. Метка.
- •2. Целые типы данных.
- •4. Вещественные типы.
- •1. Раздел описания меток.
- •2. Раздел описания констант.
- •3. Раздел описания типов.
- •4. Раздел описания переменных.
- •6. Раздел операторов.
- •7. Последовательность разделов.
- •1. Формульно-словесный способ.
- •2. Блок-схемный способ.
- •Ввод - вывод одномерного массива
- •2. Ввод массива из текстового файла.
- •3. Вывод одномерного массива на экран.
- •Примеры обработки одномерных массивов
- •1. Параметр цикла должен быть ординального типа.
- •2. Параметр должен быть описан в том же блоке, где находится сам оператор цикла.
- •5. В теле цикла параметр не должен изменяться.
- •6. Начальное и конечное значения параметра цикла вычисляются только один раз, до начала цикла.
- •7. При нормальном завершении цикла значение его параметра считается неопределенным.
- •Контроль ординальных переменных
- •Вставка элемента в упорядоченный массив
- •Удаление элементов из массива
- •«Школьный» алгоритм сортировки
- •Группировка массива методом прямой выборки
- •Группировка массива методом прямого обмена
- •Var c : array[1..10,1..15,1..8] of real.
- •1. Ввод элементов матрицы с клавиатуры.
- •2. Ввод матрицы из текстового файла.
- •3. Вывод матрицы на экран.
- •Тождественные и совместимые типы
- •Обработка в процедуре одномерных массивов с различными именами типов
- •Обработка в процедуре матриц с различными именами типов
- •Var s : string[V],
- •Процедуры и функции для обработки строк
- •Определение битовой структуры поля памяти
- •Процедуры и функции для файлов любого типа
- •Var p : pointer;
- •1. Формирование стека из текстового файла.
- •7. Определение значения и местоположения максимального элемента в стеке.
- •8. Удаление из стека максимального элемента.
- •9. Добавление элемента в упорядоченный стек.
- •2. Добавление нового элемента в очередь.
- •3. Удаление элемента из очереди.
- •6. Удаление произвольного элемента из очереди.
- •7. Добавление нового элемента в произвольное место очереди.
- •1. Формирование дека.
- •Var sin : integer;
- •Процедура заполнения FillChar
- •Процедура перемещения данных move
- •Управление экраном в текстовом режиме
- •Сохранение и восстановление экрана
- •Interface
- •Implementation
- •Процедуры управления текстовым режимом экрана
- •Intr(n:byte; Var Reg:Registers),
- •If KeyPressed then
- •Автоматическая оптимизация программ
- •1. Свертывание констант.
- •2. Слияние констант.
- •3. Вычисление по короткой схеме.
- •4. Удаление неиспользуемого кода.
- •If false then
- •5. Эффективная компоновка.
- •Оверлейная структура программы
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Использование сопроцессора
Interface
Uses Crt;
Procedure Proc1;
Implementation
Procedure Proc1;
Begin
Writeln('Работает модуль Unit1');
End { Proc1 };
End.
{O+,F+}
Unit Unit2;
Interface
Uses Crt;
Procedure Proc2;
Implementation
Procedure Proc2;
Begin
Writeln('Работает модуль Unit2');
End { Proc2 };
End.
Так как при компиляции оверлейной программы создаются два файла - с расширением exe и с расширением ovr, то компиляция такой программы должна осуществляться на диск, а не в память.
Оверлейные модули не должны содержать секции инициализации (в том числе и пустые): при старте программы вначале выполняются секции инициализации всех модулей, что возможно лишь в случае нахождения этих модулей в памяти. Если это условие не выполнено, то после запуска программы происходит ее прерывание с выдачей сообщения "Runtime Error 208: Overlay manager not installed" (Не установлена подсистема управления оверлеями).
Использование сопроцессора
В сопроцессоре аппаратно реализуется выполнение операций с плавающей запятой, при его наличии в ПЭВМ можно значительно увеличить скорость вычислений и повысить их точность. Для использования сопроцессора программа в самом начале должна иметь директиву компилятора {$N+}:
Сопроцессор предоставляет возможность использовать дополнительные типы вещественных данных. Полный список вещественных типов:
Длина, байт |
Название типа |
Количество значащих цифр |
Диапазон деся- тичного порядка |
4 6 8 10 8 |
Single Real Double Extended Comp |
7 .. 8 11 .. 12 15 .. 16 19 .. 20 19 .. 20 |
-45 .. +38 -39 .. +38 -324 .. +308 -4951 .. +4932 -263 - 1 .. 263 - 1 |
Введем следующие обозначения для составных частей вещественных типов данных:
s - знак числа;
u - мантисса;
r - характеристика.
Тогда машинное представление вещественных типов имеет вид:
а) Тип single.
-
1
8
23
s r u
Здесь 1,8,23 - количество бит, отводимых соответственно для знака, характеристики и мантиссы числа.
б) Тип real.
-
1
39
8
s u r
в) Тип double.
-
1
11
52
s r u
г) Тип extended.
-
1
15
64
s r u
д) Тип comp.
-
1
63
s u
Тип comp - это фактически длинное целое число, но в программе оно рассматривается как вещественное число с нулевым порядком и мантиссой, в которой записывается только целая часть числа. Обычно тип comp используется в бухгалтерских расчетах.
Тип real по структуре отличается от типов single, double, extended: в real мантисса находится перед характеристикой, в остальных типах - после характеристики.
Непосредственно в сопроцессоре операции выполняются только для типа extended. Остальные вещественные типы при обращении к сопроцессору преобразуются в тип extended, при получении результата от сопроцессора производится обратное преобразование. Преобразования для типов single и double выполняются просто, так как последовательность составных частей числа здесь одинакова. Для типа real необходимо переставить местами мантиссу и характеристику, что требует дополнительного машинного времени.
Турбо Паскаль позволяет работать также в режиме эмуляции сопроцессора. В этом случае операции над вещественными числами при отсутствии сопроцессора выполняются программным путем.
Для включения режима эмуляции перед заголовком основной программы нужно поставить директиву компилятора {$E+}.
Директива {$N+, E+} означает, что программа работает с сопроцессором, если он имеется, и в режиме эмуляции при его отсутствии. Наличие в машине сопроцессора определяется автоматически.
Следует отметить, что тип real оптимизирован для работы без сопроцессора. При наличии сопроцессора дополнительное машинное время, затрачиваемое на перестановку мантиссы и порядка числа, сводит на нет преимущества сопроцессора; при этом время выполнения операций для типа real может в 2-3 раза превышать время выполнения операций для других вещественных типов. Поэтому при использовании сопроцессора, а современные компьютеры практически всегда обеспечивают аппаратную обработку чисел с плавающей запятой, рекомендуется применять лишь типы single, double, extended .
Если в разработанной программе везде объявлен тип real, то для перехода, например, к типу double достаточно в начале программы установить глобальное объявление
Type real = double .
Сопроцессор содержит внутренний стек вычислений, имеющий максимальную глубину восемь уровней. Доступ к переменной, находящейся в стеке сопроцессора, осуществляется значительно быстрее, чем доступ к переменной, находящейся в оперативной памяти. Поэтому для достижения максимальной производительности стек сопроцессора используется для хранения промежуточных результатов вычислений и для передачи параметров процедурам и функциям.
Если для вычисления в сопроцессоре длинного выражения требуется запомнить свыше восьми промежуточных результатов, то возникает переполнение его стека. Такая же ситуация имеет место, когда при обращении к процедуре или функции требуется передать свыше восьми параметров-значений (без слова Var) типов single, double, extended или comp. При переполнении стека сопроцессора сообщение об ошибке не генерируется, но результат вычислений будет неправильным. Для исключения такой ситуации длинные арифметические выражения следует разделить на части, а в заголовках соответствующих процедур или функций часть параметров-значений преобразовать в параметры-переменные или параметры-константы, добавив к ним соответственно слово Var или слово Const.
Л И Т Е Р А Т У Р А
Джонс Ж., Харроу К. Решение задач в системе Турбо Паскаль. М.: Финансы и статистика, 1991. - 720 c.
Поляков Д.Б., Круглов И.Ю. Программирование в среде Турбо Паскаль. М.: Изд-во МАИ, 1992. - 576 c.
Немнюгин С.А. Turbo Pascal. – СПб: «Питер», 2001. – 496 с.
Немнюгин С.А. Turbo Pascal: практикум. – СПб: «Питер», 2001. – 256 с.
Турбо Паскаль 7.0. - К.: Изд.группа BHV, 1996. - 448 c.
Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. - М.: "Нолидж", 1997. - 616 c.
Фаронов В.В. Турбо Паскаль 7.0. Практика программирования. - М.: "Нолидж", 1997. - 432 c.
Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0. - К.: ВЕК+, М.: Бином Универсал, 1998. - 496 с.
Милов А.В. Основы программирования в задачах и примерах. – Харьков: Фолио, 2002. – 397 с.
Программирование на языке Паскаль: задачник / под ред. Усковой О.Ф. – СПб.: Питер, 2003. – 336 с.
Ускова О.Ф. и др. Программирование алгоритмов обработки данных. – СПб.: БХВ-Петербург, 2003. – 192 с.
Вирт Н. Алгоритмы и структуры данных. – М.: мир, 1989. – 360 с.
Фигурнов В.Э. IBM PC для пользователя. - M.: Финансы и статистика, 1994. - 368 c.
Богумирский Б. Эффективная работа на IBM PC. - СПб: Питер, 1995. - 688 c.