- •Р.К. Ахмадулин технология программирования
- •Оглавление
- •§1. Основные понятия
- •Основные символы языка Паскаль
- •Элементарные конструкции языка Паскаль
- •Примеры записи чисел и выражений на языке Паскаль
- •Вопросы для самопроверки
- •§2. Типы данных
- •Целые типы
- •Вещественные типы
- •Символьный тип
- •Логический тип
- •Скалярные типы, определяемые пользователем
- •Вопросы для самопроверки
- •§3. Операции и выражения
- •Приоритет операций и отношений в выражениях
- •Стандартные (встроенные) функции
- •Вопросы для самопроверки
- •§4. Структура программы
- •Комментарии
- •Директивы компилятора
- •Оформление исходного текста
- •Вопросы для самопроверки
- •§5. Переменные и константы. Оператор присваивания
- •Понятие константы
- •Понятие переменной
- •Оператор присваивания
- •Совместимость типов данных
- •Понятие типизированной константы
- •Вопросы для самопроверки
- •§6. Процедуры ввода и вывода
- •Процедуры вывода
- •Форматированный вывод
- •Процедуры ввода
- •Вопросы для самопроверки
- •§7. Условный оператор и оператор выбора. Оператор перехода
- •Условный оператор if
- •Понятие составного оператора
- •Оператор выбора
- •Оператор перехода
- •Вопросы для самопроверки
- •§8. Операторы цикла
- •Циклы с заданным числом итераций
- •Циклы с предусловием
- •Циклы с постусловием
- •Вопросы для самопроверки
- •§9. Пример использования циклов
- •Вычисление факториала
- •Вычисление суммы по заданной формуле
- •Вычисление суммы по формуле с заданной точностью
- •Вычисление максимального элемента последовательности
- •Вычисление длины последовательности элементов
- •Вопросы для самопроверки
- •§10. Массивы
- •Описание массива
- •Обращение к элементам массива
- •Многомерные массивы
- •Допустимые операции с массивами
- •Инициализация массива
- •Вопросы для самопроверки
- •§11. Алгоритмы сортировки
- •Сортировка выбором
- •Сортировка вставкой
- •Пузырьковая сортировка
- •Улучшенные сортировки
- •Вопросы для самопроверки
- •§12. Строковый тип
- •Описание строковых переменных
- •Операции над строками
- •Процедуры и функции для работы со строками
- •Вопросы для самопроверки
- •§13. Записи
- •Объявление записи
- •Обращение к записям
- •Оператор присоединения with
- •Записи с вариантами
- •Инициализация записи
- •Вопросы для самопроверки
- •§14. Множества
- •Описание множеств
- •Операции над множествами
- •Пример использования множеств
- •Множества как типизированная константы
- •Вопросы для самопроверки
- •§15. Процедуры и функции
- •Понятие процедуры и функции
- •Структура процедуры
- •Структура функции
- •Формальные параметры
- •Глобальные и локальные объекты
- •Вопросы для самопроверки
- •§16. Модули
- •Понятие модуля
- •Стандартные модули в Турбо Паскаль
- •Подключение модулей
- •Структура модуля
- •Вопросы для самопроверки
- •§17. Файлы
- •Понятие файла
- •Процедуры и функции для работы с файлами
- •Понятие буфера ввода-вывода
- •Вопросы для самопроверки
- •§18. Типизированные файлы
- •Описание типизированных файлов
- •Операции над типизированными файлами
- •Последовательный и прямой доступ
- •Вопросы для самопроверки
- •§20. Текстовые файлы
- •Описание типизированных файлов
- •Чтение и запись
- •Конец строки и конец файла
- •Дополнительные процедуры для работы с текстовыми файлами
- •Файлы Input и Output
- •Вопросы для самопроверки
- •§21. Ссылки и указатели
- •Понятие указателя
- •Описание указателей
- •Операции с указателями
- •Выделение и освобождение динамической памяти
- •Вопросы для самопроверки
- •Рекомендуемая литература
- •Технология программирования
- •625000, Тюмень, ул. Володарского, 38
- •625039, Тюмень, ул. Киевская, 52
Понятие типизированной константы
Типизированная константа представляет собой переменную с заданным начальным значением. Другими словами, типизированная константа:
имеет стартовое значение, как и любые другие константы;
может в процессе выполнения программы поменять свое значение с помощью оператора присваивания, как и любые другие переменные.
В отличие от обычных констант, типизированную нельзя использовать для определения других констант и типов данных.
Описываются типизированные константы в разделе описания констант. Пишут имя константы, далее символ двоеточие «:» и тип данных и лишь затем знак «=» и ее значение. Запись заканчивается символом «;».
Пример:
const
x: real = 0.001;
n: integer = 10;
В программе типизированные константы могут использоваться так же, как и любые другие переменные.
Пример:
x := 10 * n;
n := trunc (x);
Вопросы для самопроверки
1. Что такое константа в языке Паскаль?
2. Чем отличается переменная от константы?
3. Как записывается оператор присваивания?
4. Если x – переменная типа Integer, то будет ли корректной запись на языке Паскаль «x:=6/3»?
5. Чем отличаются типизированные константы от обычных констант? От переменных?
§6. Процедуры ввода и вывода
Любой алгоритм должен быть результативным. Другими словами, программа должна сообщать пользователю результат своей работы. Более того, алгоритм должен уметь решать однотипные задачи с различными исходными данными. Для этого в программе должен быть предусмотрен ввод исходных данных пользователем.
Для решения указанных задач в языке программирования Паскаль можно воспользоваться специальными процедурами ввода и вывода. При этом используется специальное понятие консоль, обозначающее клавиатуру при вводе и монитор при выводе.
Процедуры вывода
Процедуры вывода предназначены для вывода результатов работы программы на экран.
Существуют две процедуры вывода: Write и WriteLn.
Возможны следующие способы записи указанных процедур:
Write (A1, A2, …, AK);
Writeln (A1, A2, …, AK);
Writeln;
Первый из этих операторов реализует вывод значений А1, А2, …, АК в одну строку экрана, начиная с текущей позиции курсора. Второй оператор реализует вывод значений А1, А2, …, АК и переводит курсор к началу следующей строки. Третий оператор реализует лишь переход к началу следующей строки.
Значения, составляющие список вывода, могут относиться к целому, вещественному, символьному или булевскому типам. В качестве элемента списка вывода могут также использоваться выражения и строки.
Пример: Что будет напечатано на экране?
write(1, 2);
writeln(3, 4);
writeln;
write(5, 6);
write(7, 8);
writeln;
writeln(9, 10);
writeln(11, 12);
В результате выполнения перечисленных операторов на экране будет напечатано:
1234
5678
910
1112
Пример: Что будет напечатано на экране?
writeln (‘1+2+3=’, 1+2+3, ‘!!!’)
На экране будет напечатано:
1+2+3=6!!!
Форматированный вывод
Процедуры вывода Write и Writeln позволяют задать ширину поля вывода для каждого элемента. В этом случае элемент списка вывода имеет вид А:N, где А – выражение или строка, N – выражение либо константа целого типа.
Пример: Напечатать значение переменной x на трех позициях:
writeln (x:3);
Если выводимое значение занимает в поле вывода меньше позиций, чем N, то перед этим значением располагаются пробелы. Если выводимое значение не помещается в ширину поля N, то для этого значения будет отведено необходимое количество позиций.
Пример:
var k: integer;
…
k:=10;
writeln (k:3); {будет напечатано _10}
k:=1000;
writeln (k:3); {будет напечатано 1000 – все равно на 4-ёх позициях}
Для величин вещественного типа элемент списка вывода может иметь вид А:N:М, где А – переменная или выражение вещественного типа, N – ширина поля вывода (вместе с дробной частью и десятичной точкой), М – число цифр дробной части выводимого значения. N и М – выражения или константы целого типа. В этом случае вещественные значения выводятся в форме десятичного числа с фиксированной точкой.
Пример:
var x: real;
…
x:=10.5;
writeln(x:6:2); {будет напечатано _10.50}
Если в дробной части больше цифр, чем M, то при выводе на экран осуществляется округление до заданной цифры. Обратите внимание: округление осуществляется лишь при выводе, а значение самой выводимой переменной остается неизменным.
Пример:
var x: real;
…
x:=10.5;
writeln(x:6:2); {будет напечатано _10.50}
Использование форматированного вывода является очень удобным при разработке «реальных» программ, т.к. конечным пользователям всегда удобно видеть результаты в том виде, в котором он и привык его видеть.
Пример:
Экономисту будет понятен результат «Итого 145,15 руб.»,
и вряд ли он поймет результат «1.45150000E+2».