- •Р.К. Ахмадулин технология программирования
- •Оглавление
- •§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
Понятие переменной
Переменными называют элементы программы, которые предназначены для хранения, коррекции и передачи данных внутри нее.
Основными отличиями переменных от констант являются следующие:
переменные, в отличие от констант, могут менять свое значение в процессе выполнения программы (самое важное отличие);
в отличие от констант, для переменных начальное значение не задается.
Все переменные, используемые в программе, должны быть предварительно описаны в разделе описания переменных.
Раздел описания переменных начинается с ключевого слова var. Далее следует имя переменной, знак «:» и указывается тип данных переменной (см. §2). Запись заканчивается символом «;». Если имеется несколько переменных одного типа, то их имена могут быть перечислены до двоеточия через запятую. Если требуется описать еще несколько переменных других типов, то слово var более не пишут.
Пример: ниже описаны 4 переменные 3-ех разных типов:
var
i: integer;
x,y: real;
c: char;
Тип данных указывается обязательно для всех переменных. Он определяет диапазон значений, которые может принимать переменная, множество допустимых к ней операторов, сколько байт для переменной необходимо выделить в памяти и т.п.
Пример: если Вы описали x как переменную типа integer, то в ней можно будет хранить целые числа в диапазоне –32768 до +32767. Если x содержит значение 32767, то, прибавив к ней 1, получим –32768. В памяти переменная x будет занимать 4 байта.
Требования к именам в языке Паскаль и к именам переменных в частности приводились в §1.
Переменные очень широко используются при разработке программ на языке Паскаль. В любой более-менее сложной программе используется множество различных переменных.
Переменные могут использоваться, например, для хранения результатов вычислений выражений.
Оператор присваивания
Ранее было рассмотрено понятие переменной и было отмечено, что она может менять свое значение в процессе выполнения программы. Для этого используется оператор присваивания.
Оператор представляет собой некоторый неделимый элемент программы, который позволяет выполнять некоторые определенные алгоритмические действия. Одним из простых операторов является оператор присваивания.
Оператор присваивания « := » заменяет текущее значение переменной новым значением, которое определяется выражением.
Записывается оператор присваивания следующим образом: сначала указывается имя переменной, далее – символ оператора присваивания, и справа от него – выражение. В процессе выполнения программы выражение вычисляется и его результат помещается в указанную переменную.
Пример: (для переменных, описанных выше)
i := 5;
x := 10/i;
y := sqr(x)+abs(2*i);
c := ’h’;
Совместимость типов данных
При выполнении операций требуется, чтобы типы операндов совпадали. Нельзя, например, сложить символ и вещественное число или передать функции, ожидающей целый аргумент, вещественное число. В то же время при выполнении различных операций различные типы данных могут быть взаимозаменяемыми.
Наиболее высоким уровнем соответствия типов является эквивалентность. Два типа T1 и T2 являются эквивалентными, если выполняется хотя бы один из следующих пунктов:
T1 и T2 совпадают;
T1 и T2 определены в одном объявлении типа;
T1 эквивалентен некоторому T3, который эквивалентен типу T2.
Далее следует понятие совместимости. Совместимость означает, что для переменных этих типов возможна операция присваивания, но во время этой операции присваиваемое значение может измениться (неявное преобразование типов данных). Два типа T1 и T2 будут совместимыми, если выполняется хотя бы один из следующих пунктов:
T1 и T2 эквивалентны;
T1 и T2 оба целочисленные или оба вещественные;
T1 и T2 являются подмножествами одного типа;
T1 является некоторым подмножеством T2;
T1 – строка, а T2 – символ;
T1 – это тип pointer, а T2 – типизированный указатель;
T1 и T2 – оба процедурные, с одинаковым количеством попарно эквивалентных параметров, а для функций – с эквивалентными типами результатов.
Чтобы никаких изменений присваиваемого значения не произошло, в записи оператора присваивания тип переменной и тип выражения должны быть совместимы по присваиванию. Для этого необходимо, чтобы было выполнено одно из следующих условий:
тип переменной и тип выражения эквивалентны, но не файлы;
тип переменной и тип выражения совместимы, причем тип выражения – некоторое подмножество типа переменной;
тип переменной – вещественный, а тип выражения – целый.
Пример:
var
a, b: integer;
x, y: real;
t1, t2: boolean;
…
a:=b; a:=7; a:=3*sqr(b); a:=round(x); {можно}
a:=x; a:=sqrt(9); a:=4/2; a:=t1; a:=3+4.0 {нельзя}
x:=y; x:=sqrt(9); x:=3.4*a; x:=a/b; {можно}
x:=a; x:=3; x:=4*a; x:=trunc(4.53); {можно}
t1:=t2; t1:=a>b; t1:=odd(a); {можно}
t1:=x; t1:=a; {нельзя}
Пример:
присвоить переменной a целую часть суммы x и y:
a:=trunc(x+y).
Пример:
присвоить переменной a количество десятков числа b:
a:=b mod 100 div 10;