Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
30.09.2018
Размер:
626 Кб
Скачать
☆

Примеры Процедура типа sub (subroutine)

Вычислим значение функции Y: X=17

Dim Y as Single

Sub p1

REM пример использования процедуры SUB

FOR X=1 TO 7

CALL SUM1(X) 

Debug.PRINT “X=”; X, “Y=”;Y

NEXT X

END Sub

SUB SUM1(а)

y=0

FOR K=0 TO 12

y = y + SQR(k+а^2)

NEXT K

END SUB

------------------------------------------------------------------------------------------

Подсчет интеграла (метод левых прямоугольников)

Sub integral(x)

B = 1.5 : A=0

H = (B-A)/1000

S=0

FOR t=A TO B STEP H

S = S + (EXP(t*x)*(1+SIN(t)))/((1+COS(t))*H

NEXT t

End Sub

Процедура типа function

Рассмотрим пример использования подпрограммы-функции.

Вычислим значение функции U: X=17

Вычисление сумм оформим в виде процедур-функций.

Sub P2

REM пример использования процедуры-функции

FOR X=1 TO 7

U = SUM1(X) + SUM2(X)

DEBUG.PRINT “X=”; X, “U=”;U

NEXT X

END SUB

FUNCTION SUM1(X)

S=0

FOR K=0 TO 5

S = S + SIN(X)/(1+k)

NEXT K

SUM1 = S

END FUNCTION

FUNCTION SUM2(X)

S=0

FOR K=0 TO 4

S = S + SQR(k*X)

NEXT K

SUM2 = S

END FUNCTION

Пример: Найти площадь многоугольника, разбив его на треугольники, площадь каждого из которых определить по формуле Герона.

Текст программы

FOR I=1 ТО 3

A=InputBox(“A=”)

B=InputBox(“B=”)

C=InputBox(“C=”)

CALL P1(A,B,C)

NEXT I

DEBUG.PRINT "CYMMA="; S

END

Текст процедуры

SUB P1(A,B,C)

P = (A+B+C)/2

S1= SQR(P*(P-A)*(P-B)*(P-C))

DEBUG.PRINT "S1=";S1

S = S+S1

END SUB

Здесь, P1 – имя процедуры; S – глобальная переменная (площадь многоугольника); P – полупериметр; S1 – площадь треугольника.

Процедура-функция FUNCTION - END FUNCTION

Применяется в выражениях для возвращения единственного значения.

Функция допускает рекурсию. Вызывается функция по имени со списком

фактических параметров.

Формат функции:

FUNCTION имя(список формальных параметров)

операторы

имя=выражение

END FUNCTION

Пример: Решить предыдущую задачу, используя функцию подсчета площади треугольника по формуле Герона.

Текст программы:

FOR I=1 TO 3

A=InputBox(“A=”)

B=InputBox(“B=”)

C=InputBox(“C=”)

S=S+ S1(A,B,C): DEBUG.PRINT S1(A,B,C)

NEXT I

DEBUG.PRINT "СУММА="; S

END

Текст функции:

FUNCTION S1(A,B,C)

P=(A+B+C)/2

S1=SQR(P*(P-A)*(P-B)*(P-C))

END FUNCTION

Приложение 5 МАССИВЫ

Массив — набор однотипных значений, имеющих одно имя. Массивы бывают: одномерными (векторы), двумерными (матрицы) и многомерными.

В одномерных массивах хранятся значения линейных таблиц. Каждая ячейка таблицы имеет свой номер (индекс). Индексы обозначаются целыми числами, например: 0,1,2,...; 1, 2,3, ...; -4,-3,-2, ...и т. д.

Для описания одномерного массива используется оператор DIM.

DIM Имя(Размерность).

DIM M%(5) - массив М используется для хранения целых чисел и содержит 6 ячеек (элементов) с индексами 0,1,2, 3,4, 5.

Массив M%

Значения

5

4

-6

12

0

-4

Индексы

0

1

2

3

4

5

DIM M(1 to 6) - массив М используется для хранения вещественных чисел и содержит 6 ячеек (элементов) с индексами 1,2, 3,4, 5,6. Массив М

Значения

5

4

-6

12

0

-4

Индексы

1

2

3

4

5

6

Обращение к i-той ячейке - M(i)

ВВОД ДАННЫХ В ОДНОМЕРНЫЙ МАССИВ

Для ввода данных в ячейки одномерного массива можно использовать циклы.

1 способ:

DIM M(l to5)

DEBUG.PRINT "Введите значения элементов массива М(1 to 5)"

FOR i=1 to 5

M(i)=INPUTBOX("Введите значение элемента")

NEXT i

2 способ:

DIM M%(1 to 5)

RANDOMIZE TIMER

FOR i=l to 5

M(i)=INT(rnd()*100)+1

NEXT i

Вводятся 5 случайных целых чисел от 0 до 100.

ВЫВОД ЗНАЧЕНИЙ ОДНОМЕРНОГО МАССИВА НА ЭКРАН

1 Способ (в одну строку):

DEBUG.PRINT "Массив M(1 to 5)"

FOR i=1 to 5

DEBUG.PRINT M(i);

NEXT i

DEBUG.PRINT

2 Способ (в столбец):

DEBUG.PRINT "Массив М(1 to 5)"

FOR i=l to 5

DEBUG.PRINT "M("; i; ")="; M(i)

NEXT i

ОБРАБОТКА ОДНОМЕРНОГО МАССИВА

' Нахождение максимального значения и его места в массиве

МАХ=М(1): К=1

FOR i=2 to 5

IF M(i)>MAX THEN MAX=M(i): K=i

NEXT i

DEBUG.PRINT "Максимальное значение ="; MAX

DEBUG.PRINT "Его индекс в массиве =; К

' Нахождение заданного значения в массиве и их количество

X=INPUTBOX("Введите искомое число")

FOR i=1 to 5

IF M(I) >X THEN K=K+1

NEXT i

DEBUG.PRINT "В данном массиве число"; X; "встречается"; К; "раз"

' Сортировка одномерного массива по возрастанию

FOR I=1 to 4

FOR I+1 to 5

IF M(j)<M(i) THEN SWAP M(i),M(j)

NEXT j

Next i

DEBUG.PRINT "Новый массив"

FOR i=1 to 5

DEBUG.PRINT M(i);

NEXT i

DEBUG.PRINT

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. О.Д. Мердина, Е.В. Стельмашонок Программирование в среде Microsoft Office 2000 Методические указания к лабораторным работам для студентов. –СПб. – Санкт-Петербург 2003.

  2. Под редакцией Н.В. Макаровой. Информатика. Учебник. М., Финансы и статистика, 2001.

  3. Биллиг В.A. VBA в Office 2000. Офисное программирова­ние. - М.: Издательско-торговый дом «Русская редакция», 1999.

  4. Гарнаев А.Ю. и др. Microsoft Office 2000: разработка при­ложений /Под общ. ред. Ф.А. Новикова.- СПб.:БХВ-Санкт-Петербург, 2000.

  5. Хорев В.Д. Самоучитель программирования на VBA в Microsoft Office- К.: Юниор, 2001.

  6. Харитонова И.А., Михеева В.Д. Microsoft Access 2000: раз­работка приложений.- СПб.:БХВ-Санкт-Петербург, 2001.

  7. Гарнаев А.Ю. Excel, VBA, Internet в экономике и финансах: разработка приложений / Под общ. ред. Ф.А. Новикова. -СПб.:БХВ-Санкт-Петербург, 2002.

  8. . Мердина О.Д.Стельмашонок Е.В. Проектирование WINDOWS - приложений на VISUAL BASIC .Учебное пособие. СПб,СПбГИЭУ,2001