- •Міністерство освіти і науки, молоді та спорту України
- •Лабораторная работа №1. Разработка программы с линейным алгоритмом выполнения.
- •1.1. Цель работы
- •1.2. Задание на лабораторную работу
- •1.3. Требования к программе
- •1.4. Порядок выполнения работы
- •1.5. Правила работы с методическими указаниями
- •1.6. Разработка программы в интегрированной среде TurboPascal
- •1.6.1. Почему Pascal?
- •1.6.2. Порядок создания программы
- •Запуск интегрированной среды TurboPascal
- •Назначение пунктов меню TurboPascal
- •Подготовка нового текста программы
- •Описание клавиш редактирования текста
- •Сохранение текста программы в файл
- •Загрузка текста программы из файла
- •Запуск программы на выполнение
- •Просмотр результатов работы программы
- •Выход из среды Turbo Pascal
- •1.6.3. Использование помощи в среде TurboPascal
- •1.7. Сведения по структуре и операторам Pascal-программы
- •1.8. Пример действий по подготовке и выполнению программы
- •Пример работы описанной выше программы
- •1.9. Ошибки компиляции
- •1.10. Варианты заданий
- •1.11. Содержание отчета
- •7) Входные данные и результаты работы программы.
- •8) Ответы на контрольные вопросы.
- •9) Выводы по проделанной работе.
- •1.12. Контрольные вопросы
- •Лабораторная работа №2. Разработка программы с разветвленной структурой
- •2.6. Справочная информация по операторам ветвления языка Pascal
- •2.6.1. Оператор if
- •2.6.2. Константы
- •2.6.3. Оператор выбора case
- •2.6.4. Оператор goto
- •2.7. Пример программы с разветвленной структурой
- •2.8. Варианты заданий
- •2.9. Содержание отчета (см. Пункт 1.11)
- •2.10. Контрольные вопросы
- •Лабораторная работа №3. Разработка циклической программы с известным количеством повторений
- •3.5. Оператор цикла for
- •Возведение в степень
- •3.6. Тип данных «массив» – объявление и использование
- •3.7. Использование меню для объединения подзадач а и б.
- •3.8. Варианты заданий
- •3.9. Содержание отчета (см. П. 1.11)
- •3.10. Контрольные вопросы
- •Лабораторная работа №4. Разработка циклической программы с неизвестным количеством повторений
- •4.5. Оператор цикла repeat
- •4.6. Оператор цикла while
- •4.7. Варианты заданий
- •4.8. Содержание отчета (см. П. 1.11)
- •4.9. Контрольные вопросы
- •Лабораторная работа №5. Разработка программы с использованием процедур и функций
- •5.1. Цель работы
- •5.2. Задание на лабораторную работу
- •5.3. Требования к программе
- •5.4. Порядок выполнения работы
- •5.5. Программирование процедур и функций на языке Pascal
- •5.5.1 Объявление функции
- •5.5.2 Объявление процедуры
- •5.5.3 Передача аргументов в подпрограмму с использованием параметров-значений и параметров-переменных
- •5.5.4 Локальные и глобальные переменные и их область действия
- •5.5.5 Предварительное описание подпрограммы
- •5.5.6 Рекурсивный вызов подпрограммы
- •5.6. Варианты заданий
- •5.7. Содержание отчета (см. П. 1.11)
- •5.8. Контрольные вопросы
- •Лабораторная работа № 6. Обработка символов и строк на языкеPascal
- •6.5.2. Определение переменных строкового типа string. Операторы обработки строк
- •6.6. Пример программы
- •6.7. Варианты заданий
- •6.8. Содержание отчета (см. П. 1.11)
- •7.5.2. Операторы для работы с файлами в Pascal
- •7.6 Пример программы
- •7.7. Варианты заданий
- •7.8. Содержание отчета (см. П. 1.11)
- •7.9. Контрольные вопросы
- •Список литературы
- •Приложение. Титульный лист лабораторной работы Міністерство освіти і науки України Національний технічний університет України
- •Кафедра прикладної математики
5.5.5 Предварительное описание подпрограммы
Подпрограмму (допустим, A) можно вызвать не только из основной программы, но и из любой другой подпрограммы (допустим,B) при условии, что объявление подпрограммыAрасположено выше, чем объявление подпрограммыB. В действительности данное условие не всегда является выполнимым. Обычно ограничения связаны с обеспечением более наглядной логической структуры программы, например, требуется, чтобы вначале располагались все подпрограммы, ответственные за ввод данных, за ними следовали подпрограммы, обеспечивающие все необходимые вычисления, а подпрограммы вывода результатов на экран располагались после всех предыдущих. Как в таком случае из подпрограммы ввода данных вызвать подпрограмму для проведения вычислений (ведь она расположена ниже)? Для разрешения подобных ситуаций применяется предварительное описание подпрограммы. В языкеPascalдля предварительного описания подпрограммы вместо тела подпрограммы указывается ключевое слово «forward». Пример:
procedure ProcA(S: string); forward; {Предварительное описание }
procedure ProcB(S: string);
begin
ProcA(S);{Процедура ProcA объявлена выше, поэтому ошибки не будет}
end;
procedureProcA;{Параметры не обязательно указывать еще раз }
begin
Writeln(S);{Будет напечатана строка «Hello!»}
end;
begin{Начало основной программы}
ProcB('Hello!');{Вызываем процедуру ProcB с аргументом 'Hello!' }
end.
5.5.6 Рекурсивный вызов подпрограммы
Вызов некоторой подпрограммы из той же самой подпрограммы называется рекурсивным, а последовательность нескольких таких вызовов – рекурсией. При программировании рекурсии важно предусмотреть критерий, завершающий цепочку рекурсивных вызовов, в противном случае рекурсия может оказаться бесконечной (в реальности программа будет аварийно завершать свою работу с ошибкой «переполнение стека»). На практике рекурсия чаще всего используется для обработки элементов древообразных (ветвящихся) структур, в которых невозможно заранее предугадать глубину ветвления.
5.6. Варианты заданий
№ варианта |
Функция |
Начальное значение |
Шаг |
Конечное значение |
1 |
1 |
0,1 |
3 | |
2 |
2 |
0,2 |
4 | |
3 |
3 |
0,5 |
5 | |
4 |
4 |
0,1 |
6 | |
5 |
5 |
0,2 |
7 | |
6 |
6 |
0,5 |
8 | |
7 |
7 |
0,1 |
9 | |
8 |
8 |
0,2 |
10 | |
9 |
9 |
0,5 |
11 | |
10 |
10 |
0,1 |
12 | |
11 |
11 |
0,2 |
13 | |
12 |
12 |
0,5 |
14 | |
13 |
13 |
0,1 |
15 | |
14 |
14 |
0,2 |
16 | |
15 |
15 |
0,5 |
17 | |
16 |
16 |
0,1 |
18 | |
17 |
17 |
0,2 |
19 | |
18 |
18 |
0,5 |
20 | |
19 |
19 |
0,1 |
21 | |
20 |
20 |
0,5 |
22 |
5.7. Содержание отчета (см. П. 1.11)
5.8. Контрольные вопросы
1) Что называется подпрограммой?
2) Какова структура программы с подпрограммами?
3) Какова структура подпрограммы-процедуры?
4) Какова структура подпрограммы-функции?
5) В чем состоит различие и сходство процедур и функций?
6) Как осуществляется вызов процедур и функций?
7) Что называется параметром и каково его назначение?
8) Каково назначение формальных и фактических параметров и какова их взаимосвязь?
9) Опишите последовательность событий при вызове процедур или функций.
10) Для чего при отладке используется пошаговый режим с заходом в подпрограммы и как его осуществить?
11) В чем разница между способами передачи аргументов в подпрограмму «по значению» и «по ссылке»?
12) Чем отличаются локальные и глобальные переменные? Какова их область действия?