- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •1. Среда программирования turbo pascal 7.0
- •1.1. Структура меню среды
- •1.2. Правила оформления программ
- •1.3. Команды редактора тп
- •Команды удаления и вставки
- •1.4. Компиляция и исправление синтаксических ошибок
- •2. Элементы языка pascal
- •2.1. Алфавит языка
- •2.2. Константы. Идентификаторы
- •2.3. Операторы
- •2.3.1. Оператор присваивания
- •2.3.2. Оператор безусловного перехода
- •Стандартные функции
- •2.3.3. Условный оператор if
- •2.3.4. Опеpатоp варианта case
- •2.3.5. Составной и пустой операторы
- •2.3.6. Операторы цикла
- •2.4. Процедуры прерываний
- •2.5. Типизированные константы
- •2.6. Структура программы
- •2.7. Подпрограммы
- •2.7.1. Определение процедур и функций
- •2.7.2. Вложенные подпрограммы
- •2.7.3. Вызов подпрограмм
- •2.7.4. Процедуры
- •2.7.5. Функции
- •2.7.6. Передача в подпрограмму параметров-массивов и параметров-строк
- •2.7.7. Рекурсия
- •2.8. Типы в Турбо Паскале
- •2.8.1. Целые типы
- •Классификация целых типов
- •Встроенные процедуры и функции для целых типов
- •2.8.2. Логический тип
- •2.8.3. Символьный тип
- •Служебные символы
- •2.8.4. Строковый тип
- •Встроенные функции и процедуры для обработки строк
- •Процедуры преобразования
- •2.8.5. Перечислимый тип
- •2.8.6. Ограниченный тип (диапазон)
- •2.8.7. Вещественные типы
- •Вещественные типы
- •Встроенные функции
- •2.8.8. Структурированные типы данных. Массивы
- •2.8.9. Множества
- •2.8.10. Записи
- •2.9. Изменение типа выражения
- •2.10. Процедурные типы
- •2.11. Файлы
- •Общие процедуры и функции для работы с файлами
- •2.11.1. Текстовые файлы
- •2.11.2. Типизированные файлы
- •2.11.3. Нетипизированные файлы
- •2.12. Указатели и динамическая память
- •2.13. Модули
- •2.14. Библиотека Турбо Паскаля
- •2.14.1. Модуль crt
- •2.14.2. Модуль graph
- •Var driver, Mode: integer переменные драйвера и режима.
- •Управление графическим режимом
- •Управление экраном, окном, страницей
- •Управление цветом и палитрой
- •Работа с точками
- •Работа с линиями
- •Построение фигур из линий
- •Построение криволинейных фигур
- •Работа с текстом
- •Обмен с памятью
- •2.15. Динамические структуры данных
- •2.15.1. Связанные динамические данные. Списки
- •Чтобы сослаться на двунаправленный кольцевой список как на единый программный объект, используется указатель, значением которого является ссылка на заглавное звено списка.
- •2.15.2 Очередь
- •2.15.3. Стек
- •3. Практическое программирование Этапы подготовки и решения задач на компьютере
- •Порядок выполнения лабораторных работ
- •Лабораторная работа 1 Основы программирования в среде Турбо Паскаля.
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Лабораторная работа 2 Программирование разветвленных алгоритмов. Операторы передачи управления
- •Лабораторная работа 3 Программирование циклических алгоритмов с заданным числом повторений
- •Лабораторная работа 4 Программирование циклических алгоритмов с предусловием
- •Лабораторная работа 5 Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результаты с полученными ранее.
- •Лабораторная работа 6 Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Лабораторная работа 7
- •Лабораторная работа 8 Программирование с использованием функций
- •Лабораторная работа 9 Программирование с использованием процедур
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Лабораторная работа 11 Файлы
- •Лабораторная работа 12 Записи
- •Лабораторная работа 13 Решение нелинейных уравнений
- •Задание (программа_13)
- •Лабораторная работа 14 Вычисление приближенного значения определенного интеграла
- •Лабораторная работа 15 Модульное программирование
- •Лабораторная работа 16 Графика
- •Библиографический список
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Зарезервированные слова Turbo Pascal 7.0
- •Приложение в
- •Кодировка символов в соответствии с кодами ascii
- •Приложение г
- •Альтернативная кодировка госТа для кодов 128...255
- •Клавиши с кодами из двух частей
- •Содержание
2.3.5. Составной и пустой операторы
Составной оператор используется в том случае, когда по правилам синтаксиса сложного оператора должен стоять только один оператор, а в алгоритме необходимо выполнить некоторую последовательность действий. Составной оператор объединяет эту последовательность в единый по синтаксису оператор путем заключения в операторные скобки begin и end:
ВEGIN
<оператор1>;
<оператор2>;
... ;
<операторN>
END;
Для составного оператора допускается любая глубина вложенности:
BEGIN
BEGIN
...
BEGIN
...
END;
...
END;
END.
Пустой оператор не выполняет никаких действий и может быть использован для передачи управления в конец составного оператора. Пустой оператор записывается в виде точки с запятой.
Пpимеpы пустых опеpатоpов:
1) ;; 2) <метка>: ;
2.3.6. Операторы цикла
Существует три разновидности операторов цикла:
1) счетный оператор цикла (оператор цикла с параметром);
2) оператор цикла с предусловием;
3) оператор цикла с постусловием.
Для любого оператора цикла вход в цикл возможен только через его начало, выход осуществляется как следствие естественного окончания цикла, так и путем выполнения оператора перехода GOTO или процедур выхода, содержащихся внутри цикла.
Счетный оператор цикла реализует циклический процесс с известным числом повторений и имеет две формы записи:
Первая форма позволяет наращивать параметр цикла на единицу:
FOR <параметр_цикла>:= <min_значение> TO <max_значение> DO <оператор>;
<Параметр_цикла> это переменная целого либо любого порядкового типа,
<min> и <max> значения это выражения, определяющие соответственно начальное и конечное значения параметра цикла. Их типы должны быть совместимыми для присваивания с параметром цикла.
Вторая форма позволяет уменьшать на единицу значение параметра цикла:
FOR <параметр цикла>:=<max значение> DOWNTO <min значение> DO <оператор>;
Пример. Вычислить Y=1+1/2+1/3+...+1/N.
Для реализации программы необходимо многократно произвести вычисления по формуле Y=Y+1/I при изменении параметра I от одного до N.
Реализация 1: Y:=0;
FOR I:=1 TO N DO Y=Y+1/I;
Реализация 2: Y:=0;
FOR I:=N DOWNTO 1 DO Y=Y+1/I;
Значение параметра цикла в теле цикла может не использоваться, а лишь выполнять функцию счетчика. Например, пусть необходимо вычислить Y=Xn. Тогда фрагмент тела программы запишется в следующем виде:
Y:=1;
FOR I:=1 TO N DO Y=Y*X;
Два других оператора цикла (с пpедусловием и постусловием) проверяют условия повторения или окончания цикла, но не изменяют значения параметра цикла. Они организуют выполнение цикла с неизвестным заранее числом повторений.
Оператор цикла с предусловием используется в случае, когда число повторений цикла заранее не известно и действия в цикле по условию могут ни разу не выполниться. Структура этого оператора имеет вид:
WHILE <условие> DO <оператор>;
где <условие> – это любое логическое выражение, истинность которого проверяется в начале каждой итерации (условие выполнения тела цикла), <оператор> – произвольный оператор языка, в том числе и составной.
Если условие истинно, то выполняется оператор, стоящий за ключевым словом DO, если условие ложно, то производится выход из цикла.
После выполнения <оператора> вновь вычисляется и анализируется <условие>, и вновь, в случае его истинности, выполняется <оператор>. Эти действия повторяются до тех пор, пока <условие> не станет ложным.
Пример. Вычислить Y=1+1/2+1/3+...+1/N. Фpагмент пpогpаммы с применением оператора WHILE может быть составлен в следующем виде
BEGIN
Y:=0; I:=1; WHILE I<= N DO begin Y:=Y+1/I; I:=I+1 end;
END.
Оператор цикла с постусловием производит проверку условия после выполнения операторов тела цикла, которые должны выполниться хотя бы один раз. Его стpуктуpа следующая:
REPEAT <оператор1>;
...
<операторN>
UNTIL <условие_выхода>;
При истинности значения логического выражения <условие_выхода> выполняется выход из цикла. В данном операторе ключевые слова REPEAT и UNTIL выполняют роль операторных скобок, поэтому точку с запятой перед словом UNTIL не ставят.
Пример фрагмента программной реализации вычисления значения Y=1+1/2+1/3+...+1/N при использовании оператора цикла с постусловием:
BEGIN
Y:=0; I:=1;
REPEAT Y:=Y+1/I;
I:=I+1
UNTIL I>N;
END.