Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторки по информатике.doc
Скачиваний:
18
Добавлен:
06.11.2018
Размер:
9.06 Mб
Скачать

1.9.5. Вопросы для самопроверки

1. Какие циклы называются сложными?

2. Как записывается оператор считывания блока данных?

3. Как записывается оператор форматированного вывода данных?

4. Сколько ячеек памяти ПЭВМ отводится по оператору DIM A( 80,2 )?

5. Как строятся подпрограммы вычисления суммы и произведений ряда чисел?

6. Построить блок-схему формирования двумерного массива.

Лабораторная работа № 1.10 ( C:\USER\GROUP\NOF\lab 10.bas)

Программирование сложных программ с использованием подпрограмм

1.10.1. Цель работы. Получение практических навыков алгоритмизации и программирования сложных программ с использованием операторов-функций (функций пользователя ) и подпрограмм.

1.10.2. Справочный материал. Подпрограммы (функции пользователя) используются при многократных вычислениях в программе по одной и той же формуле. Для этого формула определяется с помощью оператор-функции DEF, например, для расчета квадратного трехчлена 3x2+2x+2 в точках X1,X2,...,Xn тело оператора-функции будет иметь вид:

DEF FNF( X ) = 2 * X + 3 * X2 +2 . (1.10.1)

Обращение к данной оператор-функции может иметь вид:

Yi = FNF( Xi ) , где i = 1,2,...,n . (1.10.2)

Следует отметить, что в описании оператор-функции (1.10.1) параметр Х является формальным параметром, а в выражении (1.10.2) - фактическим, так как компоненты Xi должны быть заданы в виде чисел. Запись букв FN перед именем функции F(X) в определении оператор-функции (1.10.1) и обращении к ней (1.10.2) - обязательна.

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

. (1.10.3)

Тело оператор-функции для этого случая может иметь вид:

10 DEF FNF( X,M,N )

20 P = 1

30 FOR I = M TO N (1.10.4)

40 P = P * X( I ) : NEXT I

50 FNF = P

60 END DEF

и, соответственно, обращение к этой оператор-функции записывается следующим образом:

70 P = FNF( X,M,N ) (1.10.5)

При этом отметим, что перед обращением к оператор-функции ( 1.10.5) должны быть заданы фактические параметры X, M и N.

Подпрограммой в алгоритмическом языке БЭЙСИК является специальным образом оформленная группа операторов, к которой можно обращаться с целью ее выполнения из разных мест, т.е. в виде подпрограмм оформляются повторяющиеся последовательности операторов. Подпрограмма имеет существенные отличия от “обычного” участка программы. Для обращения к ней используется оператор, имеющий вид:

GOSUB N, (1.10.6)

где N - номер строки подпрограммы, с которой она должна начать выполняться. Тело подпрограммы заканчивается оператором RETURN, который возвращает выполнение программы к тому месту, откуда произошел вызов подпрограммы.

Выполнение подпрограммы осуществляется следующим образом. По оператору GOSUB запоминается место в основной программе, из которого вызывается подпрограмма (оператор, следующий за оператором GOSUB). Управление передается оператору с номером строки, указанным в GOSUB N. Выход из подпрограммы и передача управления оператору, следующему за оператором GOSUB, происходит по оператору RETURN. Подпрограммы могут быть вложенными, т. е. из одной подпрограммы можно вызвать другую.

1.10.3. Пример. Подготовить и организовать вычисление на ПЭВМ значений функции Y :

Y = (1.10.7)

c использованием подпрограмм и оператор-функций. Значения элементов массива Хi приводятся в приведенной ниже табличной форме, при этом параметр а в выражении (1.10.7) имеет значения 5; 4; 3.

X1

X2

X3

X4

X5

X6

X7

X8

X9

X10

X11

X12

X13

X14

X15

1

2,1

- 3

- 4,1

1,7

1,8

1,9

14,2

- 5

-4,3

11,2

10,8

10,4

3,1

- 3,1

Алгоритм решения задачи вычисления Y, основанный на использовании подпрограммы, тело которой записано в 100 - 140 строках, реализованный на алгоритмическом языке БЭЙСИК, приводится ниже:

10 DIM X( 12 )

20 INPUT “Введите А=“; А

30 FOR I = 1 TO 12