- •Р.К. Ахмадулин технология программирования
- •Оглавление
- •§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
Вопросы для самопроверки
1. Опишите принцип работы условного оператора в короткой форме записи.
2. Опишите принцип работы условного оператора в длинной форме.
3. В каких случаях используется составной оператор?
4) Как записывается оператор Case на языке Паскаль?
5) Что означает запись на языке Паскаль Goto Next; ?
§8. Операторы цикла
Оператор цикла задает повторное выполнение определенных операторов. Различают циклы с постусловием, предусловием и со счетчиком.
Для изучения циклов воспользуемся следующим примером: необходимо посчитать сумму чисел от 1 до 100.
Циклы с заданным числом итераций
Первая конструкция, которая будет рассмотрена, называется циклом со счетчиком for. Можно также встретить такие названия, как цикл с параметром, с заданным числом итераций и др.
Оператор цикла со счетчиком вызывает повторяющееся выполнение оператора до тех пор, пока некоторому счетчику присваивается возрастающая (или убывающая) последовательность значений.
В цикле for всегда указывается:
имя переменной, в которой хранится число повторений цикла (счетчик, или управляющая переменная);
некоторое начальное значение для счетчика;
некоторое конечное значение для счетчика.
Записывается цикл for следующим образом:
FOR <счетчик> := <начальное значение> TO <конечное значение> DO <оператор>;
Пример: напечатать на экране 10 восклицательных знаков
for i:=1 to 10 do write(‘!’);
Счетчик всегда инициализируется начальным значением. На каждом шаге его значение увеличивается на единицу.
Оператор, который содержится в теле оператора for, выполняется фиксированное число раз: один раз для каждого целого значения в диапазоне между начальным и конечным.
Оператор цикла for выполняется до тех пор, пока счетчик не достигнет конечного значения.
Если начальное значение превышает конечное, то содержащийся в теле цикла for оператор не выполнятся ни разу.
В качестве счетчика может использоваться любая переменная порядкового типа: целого, символьного, логического. Тип начального и конечного значения должен быть совместим с типом счетчика.
Пример: что будет напечатано на экране после выполнения следующего оператора: for i:=0 to 9 do write(i);
Сначала переменной i присвоится начальное значение (0), после чего выполнится оператор, стоящий после do: на экране напечатается значение переменной i (т.е. 0).
Затем значение i увеличится на единицу и станет равным 1, после чего вновь выполнится оператор, следующий за do – рядом с ноликом напечатается 1. Таким образом, на экране уже напечатано 01.
Увеличение на единицу значения управляющей переменной i и выполнение оператора, стоящего после do, будет продолжаться до тех пор, пока не будет достигнуто конечное значение, т.е. 9. В итоге на экране будет напечатана последовательность 0123456789.
Пример: что будет напечатано на экране после выполнения следующих операторов:
s:=0;
for i:=1 to 3 do s:=s+i;
writeln(s);
Рассмотрим, как будут изменяться значения переменных на каждом шаге.
Шаг |
i |
s |
Комментарий |
1 |
|
0 |
1-ый оператор: записываем 0 в переменную s |
2 |
1 |
0+1=1 |
В i записываем начальное значение, выполняем оператор, следующий за do: складываем текущие значения переменных s и i, результат помещаем в s. |
3 |
1+1=2 |
1+2=3 |
Увеличиваем значение управляющей переменной и вновь выполняем операцию суммирования |
4 |
2+1=3 |
3+3=6 |
Т.к. управляющая переменная достигла конечного значения, то после выполнения данного шага цикл завершается. |
Следующий оператор – печать на экране значения переменной s. Как видно из таблицы, в s хранится 6, следовательно, на экране после выполнения данных операторов напечатается цифра 6.
В операторе цикла for вместо to может использоваться ключевое слово downto. В этом случае счетчику присваивается убывающая последовательность от начального до конечного значения.
Пример: напечатать на экране 10 восклицательных знаков
for i:=10 downto 1 do write(‘!’);
Основным недостатком цикла for является то, что он позволяет увеличивать или уменьшать счетчик лишь на 1. К его основным преимуществам относятся краткость и возможность использования символьного и перечислимого типов в диапазоне значений.
Пример: напечатать все символы латинского алфавита.
var c: char;
…
for c:=’a’ to ‘z’ do writela(c);
Пример: вычислить сумму чисел от 1 до 100.
var i, sum: integer;
…
sum:=0;
for i:=1 to 100 do sum:=sum+i;
Пример: вычислить факториал 5.
var i, f: integer;
…
f:=1;
for i:=1 to 5 do f:=f*i;