- •Методические указания по выполнению лабораторной работы «Разработка алгоритмов для структурного программирования и их реализация. Алгоритмы ветвления и выбора» учебной дисциплины «Информатика»
- •Введение
- •1. Основные понятия теории алгоритмов
- •2. Управляющие операторы языка pascal
- •2.1. Оператор условной передачи управления
- •3. Реализация разветвляющихся алгоритмов в mathcad
- •4. Порядок выполнения лабораторной работы «Разработка алгоритмов для структурного программирования и их реализация. Часть 1: ветвление»
- •4.1. Пример 1.
- •4.2. Пример 2
- •5. Оператор выбора
- •6. Порядок выполнения лабораторной работы «Разработка алгоритмов для структурного программирования и их реализация. Часть 2: выбор»
- •7 .Вопросы для проверки
- •Форма отчета
- •9. Литература
- •Приложение (варианты заданий)
- •Оглавление
2. Управляющие операторы языка pascal
Программы, содержащие в разделе операторов только операторы ввода-вывода и операторы присваивания, выполняются последовательно – оператор за оператором. Такие программы называются линейными, они реализуют линейный процесс вычислений. Для организации разветвленных и циклических процессов вычислений используют управляющие операторы языка, определяющие последовательность выполнения операторов программы. В данной лабораторной работе рассмотрим управляющие операторы языка PASCAL такие как «оператор условной передачи управления» и «оператор выбора».
2.1. Оператор условной передачи управления
Оператор условной передачи управления (рис. 6) используют для программирования ветвлений, т.е. ситуаций, когда возникает необходимость при выполнении условия реализовывать одни действия, а при нарушении – другие. Условие записывают в виде логического выражения, в зависимости от результата которого осуществляется выбор одной из ветвей: если результат «True», то выполняется оператор, следующий за служебным словом Then, иначе – оператор, следующий за служебным словом Else.
В каждой ветви допускается запись одного оператора (в том числе и другого If) или составного оператора.
Рис. 6. Синтаксическая диаграмма <Оператор условной передачи управления>
Составным оператором называют последовательность операторов, заключенную в операторные скобки Begin … End . Операторы последовательности отделяют друг от друга точкой с запятой «;». Перед End точку с запятой можно не ставить. Перед Else точка с запятой не ставится, так как продолжается запись условного оператора.
Из синтаксической диаграммы (БНФ) видно, что допускается не использование ветви Else, например:
If x>2 Then y:=12.45 Else y:=-123*x/454;
If a>b then Writeln(‘a>b);
3. Реализация разветвляющихся алгоритмов в mathcad
MATHCAD – физико-математический пакет для решения прикладных задач, удобный в работе и простой по освоению [4, 5]. Графическая среда MATHCAD позволяет записывать математические формулы в привычном виде, результаты вычислений могут быть представлены как численно, так и аналитически (в виде формул).
С помощью панели «Programming (программирование)» в MATHCAD можно реализовать вычисления и по разветвляющимся алгоритмам. Для создания программной строки понадобится команда «Add Line», для осуществления выбора по условию – команда «if» и команда «otherwise» в остальных случаях (рис.7). График неэлементарной функции f(x) построен с помощью панели «Graph (Графики)».
Рис. 7. Программирование разветвляющихся алгоритмов в MATHCAD
4. Порядок выполнения лабораторной работы «Разработка алгоритмов для структурного программирования и их реализация. Часть 1: ветвление»
4.1. Пример 1.
Этап 1. Постановка задачи 1. Разработать алгоритм, спецификацию, тестовый пример и программу, которая вычисляла бы значение функции:
.
Этап 2. Анализ. Программа должна начинаться с ввода значений аргумента. Затем, в зависимости от того, в какой интервал попадает введенное значение, вычисляется значение функции по одному из заданных выражений.
Этап 3. Проектирование и определение спецификаций.
Расчет тестовых примеров выполняем в MATHCAD (тесты должны быть определены таким образом, чтобы проверить все ветви программы, рис.8). Результаты расчетов занесены в табл. 1.
Рис. 8. Расчет тестовых примеров
Разветвляющийся алгоритм представлен на рис. 9. Спецификация к алгоритму – в табл. 2.
Рис. 9. Алгоритм решения задачи 1.
Таблица 1.
Тестовые примеры для задачи 1.
Номер теста |
х |
Результат у |
1 |
-1 (x<0) |
1 |
2 |
25 (x>8) |
5 |
3 |
7 |
4 |
Таблица 2.
Спецификация к алгоритму на рис. 8.
№ |
Наименование |
Обозначение в алгоритме |
Обозначение в программе |
Ед. изм. |
Статус переменной |
Тип |
1 |
Аргумент функции |
х |
х |
- |
Входная |
Веществ. |
2 |
Значение функции |
у |
у |
- |
Выходная |
Веществ. |
Этап 4. Реализация. Разрабатываем программу:
Program Lini; {Заголовок с именем программы}
Uses Crt; {Будет использована процедура из этой библиотеки процедур}
Var x, y:real; {Описание переменных не целого типа}
Begin {Начало программных действий}
ClrScr; {Процедура очистки экрана}
Writeln(‘Введите значение аргумента х= ’);
Readln(х); {Ввод с клавиатура значения}
If x<0 Then y:=Abs(x) Else
If x>8 Then y:=Sqtr(x) Else
у:=4; {Условные операторы и вычисления по формуле}
Writeln(‘y(’,x:4:1,’)=’,y:6:1); {Вывод значения с комментариями}
Readln; {Пустой оператор для просмотра результатов}
End. {Конец действий программы}
Результат тестирования программы:
y(-1.0)= 1.0
y(25.0)= 5.0
y(7.0)= 4.0
Сверяем полученные результаты с тестовым примером.
Вывод: результаты работы программы на алгоритмическом языке PASCAL совпадают с тестовыми (контрольными) примерами.
