![](/user_photo/2706_HbeT2.jpg)
- •Р.К. Ахмадулин технология программирования
- •Оглавление
- •§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. Пользователь вводит 20 строк (маленькими буквами). Напечатать на экране в алфавитном порядке набор первых символов вводимых строк. Если в разных строках на первой позиции находится один и тот же символ, напечатать его один раз.
Пример:
program primer1;
type tchars = set of char;
var
s: string;
ch: tchars;
i: integer;
c: char;
begin
ch:=[];
for i:=1 to 20 do
begin
readln(s);
ch:=ch + [ s[1] ];
end;
for c:=’a’ to ‘z’ do
if c in ch then writeln(c);
end.
Задача №2. Пользователь вводит текст из 20 строк. Напечатать на экране все цифры (по одному разу), которые входят в текст.
Пример:
program primer2;
type
tdigits = set of ‘0’..’9’;
var
s: string;
dig: tdigits;
i, j: integer;
c: char;
begin
dig:=[];
for i:=1 to 20 do
begin
readln(s);
for j:=1 to length(s) do
if s[j] in [‘0’..’9’] then dig:=dig + [ s[j] ];
end;
for c:=’0’ to ‘9’ do
if c in dig then writeln(c);
end.
Множества как типизированная константы
Задать множество как типизированную константу можно следующим образом:
<имя_константы> : SET OF <тип_эл-тов> = [<список_эл-тов>];
Пример:
type
digits = set of '0'..'9';
const
odds: digits = ['1', '3', '5', '7', '9'];
vowels: set of 'a'..'z' = ['a', 'o', 'e', 'u', 'i'];
Отметим, что множество нельзя задать в виде нетипизированной константы.
Вопросы для самопроверки
1. Что такое множество?
2. Чем множества отличаются от массивов? От записей?
3. Какое максимальное количество элементов может включать в себя множество?
4. Какие операции допустимы над множествами?
5. Учитывает ли множество количество вхождений в него элементов? Порядок следования элементов?
§15. Процедуры и функции
Нередко случаются ситуации, когда одни и те же действия или вычисления необходимо выполнять многократно, но над разными данными.
Пример: в программе нужно сначала найти максимум из чисел a и b, затем – из x и y, и т.д.
При написании исходного кода программы в такой ситуации, конечно, можно несколько раз записать одни и те же операторы в разных местах. Однако можно поступить и по-другому.
Алгоритм решения задачи может быть спроектирован путем декомпозиции всей задачи на отдельные подзадачи. Такие подзадачи обычно реализуются в виде подпрограмм.
Подпрограмма – это последовательность операторов и описаний, которые определены и записаны только в одном месте программы, однако могут быть вызваны для выполнения из нескольких точек программы.
В языке программирования Паскаль существуют два типа таких подпрограмм – процедуры и функции.
Понятие процедуры и функции
Процедуры и функции – это именованные последовательности описаний и операторов (подпрограммы).
Основное различие между процедурами и функциями состоит в том, что функция возвращает некоторое значение и может использоваться в выражениях, в то время как процедура вызывается для выполнения какого-либо действия.
Пример:
x := sin(A); - здесь sin – это функция. Она возвращает значение.
writeln('Это проверка'); - здесь writeln – это процедура. Она выполняет действие (печать на экране), но результата не возвращает.
Можно сказать, что функции – это процедуры особого характера, результатом работы которых является некоторое значение. В то же время в некоторых других языках программирования процедуры реализуются в виде функций, которые не возвращают результат.
При использовании процедур или функций программа на языке Паскаль должна содержать:
а) объявление и описание процедуры или функции;
б) вызов процедуры или функции.
Если текст процедуры включается непосредственно в текст программы, то его необходимо поместить в разделе описания процедур и функций, до ключевого слова begin, означающего начало исходного кода самой программы (см. §4).
Для вызова процедуры или функции в тексте программы указывают имя подпрограммы, а также список фактических параметров (будут рассмотрены позже).
Вызов процедуры может быть записан отдельным оператором (например, writeln, readln).
Вызов же функции, в отличие от процедур, не может быть отдельным оператором, т.к. она всегда возвращает некоторое значение, которое необходимо куда-то сохранить или вывести (например, sin, sqr).
В программе можно использовать не только собственные процедуры и функции, но и уже готовые, хранящиеся в специализированных библиотеках (например, writeln, readln, sin, sqr). Для использования уже готовых процедур и функций нужно предварительно в разделе uses указать имя модуля (библиотеки), в котором они хранятся. Если используются готовые подпрограммы из разных модулей, то их имена перечисляются через запятую.
Пример: используем в программе процедуру ClrScr из модуля Crt, очищающую экран.
uses сrt;
…
begin
ClrScr;
…
end.