Мегаобучалка Главная | О нас | Обратная связь


Организация подпрограмм на Бейсике



2015-12-13 1379 Обсуждений (0)
Организация подпрограмм на Бейсике 0.00 из 5.00 0 оценок




Подпрограммы в языках программирования служат для реализации вспомогательных алгоритмов. Использование подпрограмм необходимо при создании больших и сложных программ для того, чтобы упростить их чтение, понимание и внесение изменений.

В качестве примера программ использования подпрограмм рассмотрим задачу рисования графиков функций на экране ЭВМ.

Задача построения графика функции у = f (x) на экране ЭВМ предполагает расчет и вывод последовательности точек с координатами (xk, yk), где xk = f (xk). Расчет должен производиться на некотором заданном отрезке [a, b] с шагом h = (b - a) / n между точками, где п - это заданное число разбиений.

В качестве конкретного начального примера рассмотрим построение на экране ЭВМ графиков функций у = х2.

Представленные ниже алгоритм и программа состоят из трех частей: первая часть строит график на экране, вторая вычисляет значения функций, третья организует ввод данных - параметров графика (области определения [a, b], числа разбиений п и области значений функций [c, d]).

АЛГ «ГРАФИКИ ФУНКЦИЙ» НАЧ ВВОД ДАННЫХ ГРАФИКА     UM: = 255; YM: = 191 h: = (b - a) / n от к = 0 до n цикл х: = a + h * k ВЫЧИСЛЕНИЕ: У = f(x) u: = (x - a) * um / (b - a) y: = (d - y) * vm / (d - c) ТОЧКА (u, v), ЗЕЛЕНАЯ КЦИКЛ КОН 10 ¢ графики функций   20 GOSUB 400 ¢ ввод данных 30 C1 = 2 ¢ цвет графика 40 ¢ графика 50 UM = 255: VM = 191 ¢ размеры экрана 60 H = (B - A) / N 70 FOR K = 0 TO N 80 X = A + N * K 90 GOSUB 200 ¢ y = f(x) 100 U = (X - A) * UM / (B - A) 110 V = (D - Y) * VM / (D - C) 120 PSET (U, V), C1 130 NEXT 140 END

 

Основная часть алгоритма и программы, как видно из их описаний, организуют ввод данных, а затем осуществляют в цикле от k = 0 до n вычисление координат точек графика некоторой функции y = f(x) и вывод их на экран. Конкретный вид функций в этой части программы и алгоритма не определяется. Описание способа вычисления значений функции выделяется во вспомогательный алгоритм. В программе на Бейсике появляется соответствующая подпрограмма:

 

АЛГ «ВЫЧИСЛЕНИЕ: y = f(x)» АРГ Х: ВЕЩ РЕЗ У: ВЕЩ НАЧ У: = Х2 КОН 200 ¢ ВЫЧИСЛЕНИЕ ФУНКЦИЙ   210 Y = X * X 230 RETURN

 

В данном примере строится график функции у = х2. На экране ЭВМ мы должны увидеть фрагмент параболы появится на экране, зависит от исходных данных, ввод которых выделен в отдельный вспомогательный алгоритм и соответствующую подпрограмму:

 

АЛГ «ВВОД ДАННЫХ» РЕЗ a, b, c, d: ВЕЩ, n: ЦЕЛ НАЧ ВЫВОД ПАРАМЕТРЫ ГРАФИКА ЗАПРОС СЛЕВА: а =, а ЗАПРОС СПРАВА: b =, b ЗАПРОС СНИЗУ: c =, c ЗАПРОС СВЕРХУ: d =, d ЗАПРОС n =, n КОН 400 ¢ ввод данных     410 PRINT «параметры графика» 420 INPUT «слева: а =»; А 430 INPUT «справа: b =»; B 440 INPUT «снизу: c =»; C 450 INPUT «сверху: d =»; D 460 INPUT«n =»; N 470 RETURN

 

ЭВМ, как видно из этого алгоритма, запросит числа a, b - концы отрезка [a, b], c и d - нижние и верхние границы области значения функции, а также n - число точек графика, которые ЭВМ нарисует на экране. Для рассмотрения графика функции на другом отрезке или получения на графике большого числа точек необходим запуск программы с новыми исходными данными.

Главная особенность этого алгоритма - возможность его применения для построения графиков любых функций в любой части их области определения. Выделение вычисления значений функции в отдельную подпрограмму значительно упрощает замену функции. Для построения графика функции, например y = x sin x, необходимо будет заменить подпрограмму на новую:

АЛГ «ВЫЧИСЛЕНИЕ: y = f(x) АРГ Х: ВЕЩ РЕЗ У: ВЕЩ НАЧ У: = Х * SIN X КОН 200 ¢ вычисление функции   210 Y = X * SIN (X) 230 RETURN

Вызов подпрограмм в зыке Бейсик реализуется оператором GOSUB <номер>, где <номер> указывает начало подпрограммы. Например, оператор GOSUB 200 означает переход к подпрограмме, начинающейся с 200-го оператора.

Правила выполнения подпрограмм можно проиллюстрировать следующей схемой:

50 . . . . . . . . . 60 GOSUB 200 70 <оператор> 200 ¢ подпрограмма . . . . . . . . . . . . . . . . . . 280 RETURN

 

Вычисление оператора GOSUB состоит в переходе к выполнению первого оператора подпрограммы, а ее завершении оператор RETURN осуществляет переход к выполнению оператора, следующего за оператором GOSUB в основной программе.

Описание подпрограммы должно начинаться с ее названия - названия решаемой подзадачи или реализуемой функции. Концом подпрограммы в Бейсике должен быть оператор возврата из подпрограммы RETURN (RETURN - возврат).

Аргументы и результаты вспомогательных алгоритмов в подпрограммах называются параметрами. Передачу параметров-аргументов вспомогательных алгоритмов в подпрограммах на Бейсике оформляются в следующем виде:

 

<ПОДЗАДАЧА> (x1 = a, x2 = b) 100 X1 = A: X2 = B 110 GOSUB 600: ¢ подзадача

 

где х1, х2 - аргументы вспомогательного алгоритма. Аналогично на языке Бейсик приходится оформлять и передачу результатов выполнения вспомогательных алгоритмов, если таковы есть.

Примером составления и использования подпрограмм с выделенными параметрами-аргументами могут служить программы построения изображений зданий. В этих программах и алгоритмах вспомогательные алгоритмы и подпрограммы вычерчивают на экране отдельные блоки - стены, окна, двери, крыши и т. п. Роль параметров-аргументов в этих подпрограммах и вспомогательных алгоритмах играют геометрические размеры этих блоков.

Изображение двухэтажного дома на экране ЭВМ в соответствии с ранее составленным алгоритмом построит следующая программа на Бейсике:

 

АЛГ «ДВУХЭТАЖНЫЙ ДОМ» НАЧ L1: = 60; H1: = 5 ОТ К = 1 ДО 3 ЦИКЛ СТЕНА С ОКНОМ (Х = L1 * K, Y = H1, L = L1, H = H1, C = ЗЕЛЕНЫЙ) СТЕНА С ОКНОМ (X = L1 * K, Y = 2 * H1, L = L1, H = H1, C = ЗЕЛЕНЫЙ) КЦИКЛ КРЫША (Х = L1, Y = H1, L = 3 * L1, H = H1, C = БЕЛЫЙ) КОН 10 ¢ двухэтажный дом 20 ¢ графика 30 L1 = 60: H1 = 50: C1 = 3: C2 = 4 40 FOR K = 1 TO 3 50 X = K * L1: Y = H1: L = L1: H = H1: C = C1 60 GOSUB 200 ¢ стена с окном 70 X = K * L1: Y = H1: L = L1:: H = H1: C = C1 80 GOSUB 200 ¢ стена с окном 90 NEXT K 100 X = L1: Y = H1: L = 3 * L1: C = C2 110 GOSUB 400 ¢ крыша 120 END

 

Для выполнения этой программы необходимы две подпрограммы. Первая из них рисует в заданном месте изображение стены с окном заданных размеров, а вторая - изображение крыши заданного размера в заданном месте:

АЛГ «СТЕНА С ОКНОМ» АРГ x, y, l, h :ВЕЩ, С: ЦЕЛ НАЧ РАМКА (x, y) - (x + l, y + h), c РАМКА (x+3 * l / 5, y + h / 4) - (x +4 * l / 5, y + h / 2), c КОН 200 ¢ стена с окном 210 ¢ арг: х, у, 1, h: вещ 220 ¢ с - цвет 230 LINE (X, Y) - (X + L, Y + H), C, B 240 LINE (X + 3 * L / 5, Y + H / 4) - (X + 4 * L / 5, Y + H / 2), C, B 250 RETURN

 

АЛГ «КРЫША» АРГ x, y, l, h: ВЕЩ, С: ЦЕЛ НАЧ ЛИНИЯ (x, y) - (x + l, y), c ЛИНИЯ (x, y) - (x + l / 2, y - h), c ЛИНИЯ (x + l / 2, y - h) - (xx + l, y), c КОН 400 ¢ крыша 410 ¢ арг: X, Y, L , H,: вещ 420 ¢ С - цвет крыши 430 LINE (X, Y) - (X + L, Y), C 440 LINE (X, Y) - (X + L / 2, Y - H), C 450 LINE (X + L / 2, Y - H) - (X + L, Y), C 460 RETURN

 

Работу с этой программой на ЭВМ можно начать с построения изображения крыши. Для этого необходимо ввести операторы 30, 100, 110, 120 - вызовы подпрограммы рисования крыши с соответствующими координатами, которые задаются в подпрограмме параметрами операторы 400-460 - операторы самой подпрограммы.

Далее можно ввести подпрограмму рисования стены с окном - операторы 200-250 - и операторы вызова этой подпрограммы 50 и 60, а также часть оператора 40 в таком виде: 40 К = 1. Затем после ввода и отладки обеих подпрограмм можно ввести полный вариант построения двухэтажного дома целиком. Для этого осталось ввести операторы 40, 70, 80 и 90.

Добавляя к этой программе новые подпрограммы рисования других блоков, или перестраивая программу, можно получать на экране ЭВМ изображения разнообразных домов, улиц и даже целых поселков. Существенным при этом является использование уже имеющихся вспомогательных алгоритмов и подпрограмм. В тоже время, усовершенствуя вспомогательные алгоритмы и подпрограммы, можно получать более красивые изображения и искать гармонию между отдельными частями здания и композицией в целом.

Вопросы и упражнения и задания для самопроверки

ВОПРОСЫ:

Как на Бейсике записывается вызов подпрограмм?

Как в языке Бейсик оформляются подпрограммы?

Каков механизм выполнения подпрограмм в языке Бейсик?

Как на Бейсике оформляется передача параметров-аргументов?

УПРАЖНЕНИЯ:

Составьте вспомогательный алгоритм и подпрограмму на языке Бейсик для вычисления функции:

а) у = х при х > 0, б) у = sin x при х ≥ 0,

0 при х ≤ 0; 0 при х < 0;

 

2. Составьте программу на Бейсике для построения:

а) трех домиков; б) трехсекционного дома;

ЗАДАНИЯ:

1. Составьте план ввода и испытаний программы рисования графика функции. Введите и отладьте программу по составленному плану. Проведите исследование функции - найдите по графику корни функции или ее максимумы и минимумы.

2. Составьте план ввода и испытаний программы построения изображения выбранного задания. Введите и отладьте составленную программу по выбранному плану.

 



2015-12-13 1379 Обсуждений (0)
Организация подпрограмм на Бейсике 0.00 из 5.00 0 оценок









Обсуждение в статье: Организация подпрограмм на Бейсике

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1379)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.011 сек.)