- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •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.7.6. Передача в подпрограмму параметров-массивов и параметров-строк
Передача одиночных элементов массивов в подпрограмму не отличается от передачи переменных. При передаче всего массива необходимо предварительно определить его тип, поскольку он не является стандартным.
Пример: TYPE ATYPE=ARRAY[1..10] OF REAL;
PROCEDURE R(A: ATYPE);
Такое описание необходимо в связи с тем, что в списке формальных параметров могут использоваться только стандартные или ранее описанные типы.
Поэтому нельзя, например, объявить следующую процедуру:
PROCEDURE R(A: ARRAY[1..10] OF REAL);
Поскольку строка является фактически массивом символов, ее передача в подпрограмму осуществляется аналогичным образом.
Пример описания и передачи строковых переменных:
TYPE INTYPE = STRING[10];
ONTYPE = STRING[30];
FUNCTION R(A: INTYPE): ONTYPE;
2.7.7. Рекурсия
Рекурсия это способ организации вычислительного процесса, при котором подпрограмма в ходе выполнения своих операторов обращается сама к себе.
Пример. Пусть задано целое положительное число, вывести на экран дисплея цифры в обратном порядке.
PROGRAM REKURS;
VAR
N: INTEGER;
PROCEDURE REVERS(M:INTEGER);
BEGIN
WRITE(M MOD 10);
IF (M DIV 10)<>0 THEN REVERS(M DIV 10);
END;
BEGIN
READ(N);
REVERS(N);
END.
В ходе выполнения программы процедура рекурсивно обращается сама к себе и выводит на экран при каждом обращении очередную цифру.
Рекурсия может быть прямой или косвенной. В первом случае модуль подпрограммы содержит оператор вызова этой же подпрограммы. Во втором случае один модуль (например: А) вызывается из другого модуля (например: В), а модуль В – из А. Поскольку по правилам языка каждый идентификатор перед объявлением должен быть описан, то необходимо выполнить опережающее описание подпрограммы В. Для этого объявляется заголовок процедуры В, за которым следует служебные слово FORWARD. Теперь из процедуры А можно обращаться к процедуре В. Например:
PROCEDURE B(I:BYTE); FORWARD;
PROCEDURE A(J:BYTE);
BEGIN
...
B(J);
END;
PROCEDURE B; {параметры опущены}
BEGIN
...
A(I);
END.
Формальные параметры при повторной записи заголовка опускаются.
2.8. Типы в Турбо Паскале
Любые данные (константы, переменные, значения функций или выражений) характеризуются своими типами. Тип определяет множество значений, которые может иметь тот или иной объект, операции, применимые к нему, а также формат внутреннего представления.
Турбо Паскаль является языком с развитой системой типизации. Любые данные до их использования должны быть предварительно объявлены.
Типы в Турбо Паскале делятся на простые, стрктурированные, процедурные, указатели и строки. В свою очередь простые типы включают порядковые и вещественные данные, а структурированные делятся на массивы, записи, множества и файлы.
Порядковые типы как стандартные, так и введенные программистом отлича- ются тем, что каждый из них содержит конечное число возможных значений. Эти значения можно определенным образом упорядочить или перенумеровать. Для таких типов для каждой пары элементов можно всегда определить, какой из них предшествует другому. Для порядковых типов определены следующие три функции:
ORD(X) возвращает порядковый номер значения выражения X;
PRED(X) возвращает значение, предшествующее х в его типе, т.е.
ORD(PRED(X)) = ORD(X) - 1;
SUCC(X) определяет следующее по порядку за X значение:
ORD(SUCC(X)) = ORD(X) + 1.
К вещественным типам указанные функции применить нельзя, количество возможных значений вещественных типов настолько велико, что сопоставить с каждым из них число (его номер) невозможно.