Подпрограммы 33 Функции, определяемые пользователем 34 Работа со строковыми типами данных 36 Оператор line input 36
Вид материала | Справочник |
СодержаниеGOSUB номер строки или метка Функции, определяемые пользователем |
- Любая программа для обработки данных должна выполнять три основных функции: ввод новых, 298.05kb.
- Лекция 11. Расчеты на листе Excel, 115.64kb.
- Отчет по дисциплине «методы оптимизации и принятия решения» на тему «лабараторная работа, 20.52kb.
- Отчет по дисциплине «методы оптимизации и принятия решения» на тему «лабараторная работа, 20.92kb.
- Программа дисциплины Базы данных Семестры, 12.06kb.
- Expression Line Complex 5 Линия diamond 7 special fx line 17 spa line коллекция, 5511.84kb.
- Паспорт подпрограммы наименование подпрограммы основание для разработки подпрограммы, 277.86kb.
- Новый способ архивирования данных передаем фильм с помощью sms, 198.04kb.
- С. Д. Кузнецов. Основы современных баз данных, 460.72kb.
- Уроки №5-6 тема: " Программирование ветвящихся алгоритмов. Оператор выбора, 58.01kb.
Подпрограммы
Подпрограммой называется участок программы, оформленный определенным образом, к которому можно обращаться из разных точек программы любое число раз. При этом подпрограмма может решать каждый раз одну и ту же задачу с разными значениями исходных данных. Использование подпрограмм позволяет существенно уменьшить объем рабочей программы. Деление программы на подпрограммы делает программу более понятной.
Обращение к подпрограмме осуществляется с помощью команды
GOSUB номер строки или метка
По этой команде управление передается подпрограмме - блоку команд, первая из которых помечена номером строки или меткой. Последней выполняемой командой подпрограммы является RETURN. По этой команде управление передается в основную программу на оператор, стоящий за оператором GOSUB.
Если нарушено согласование операторов RETURN и GOSUB, то выводится сообщение об ошибке “RETURN without GOSUB”.
Подпрограммы располагаются в конце основной программы и отделяются от основной программы оператором END.
Пример 1. Написать подпрограмму вывода подчеркивания информации. Длина черты переменная.
N=5
GOSUB A ‘вызов подпрограммы для вывода знака подчеркивания 5 раз
N=30
GOSUB A ‘вызов подпрограммы для вывода знака подчеркивания 30 раз
END
A: FOR I=1 TO N ‘подпрограмма вывода знака подчеркивания
PRINT ”_“;
NEXT I
RETURN ‘оператор возврата в основную программу
Пример 2. Вычислить функцию: C = m!n!/(m-n)!
1 INPUT “Введите m>n”;m,n
IF M<=N THEN 1 ‘проверка входных данных
R=M
GOSUB A ‘вызов подпрограммы для вычисления m!
R1=F : R=N
GOSUB A ‘вызов подпрограммы для вычисления n!
R2=F : R=M-N
GOSUB A ‘вызов подпрограммы для вычисления (m-n)!
C=(R1+R2)/F : PRINT “C=”;C
END
A: F=1 ‘подпрограмма вычисления факториала
FOR I=2 TO R
F=F*I
NEXT I
RETURN ‘оператор возврата в основную программу
Для самостоятельного решения
Составить программу расчета заработной платы по формуле: оклад * количество дней * 1.4-подоходный налог. Расчет заработной платы оформить в подпрограмме.
Функции, определяемые пользователем
Помимо стандартных числовых функций (sin, cos и т.д.) или символьных функций пользователь может определить и свои собственные. Иногда при решении задач возникает необходимость вычисления одного и того же выражения при различных значениях величин, входящих в это выражение. Вот тогда и применяются функции, определяемые пользователем.
Формат:
DEF FN <имя функции>(<список формальных параметров>)=<выражение>
Обращение к функции пользователя осуществляется
FN <имя функции>(<список фактических параметров>)
Имя определяемой функции должно быть уникально: оно не может повторять имя другой процедуры, переменной или функции.
Формальные параметры резервируют место в памяти для фактических параметров, которые должны быть определены к моменту выполнения функции. Параметры могут быть любого типа. Примеры определения функции:
DEF FNKT(X)=COS(X)/SIN(X)
DEF FNP(A,B)=A/B*100
X,A,B – формальные параметры
Между формальными и фактическими параметрами и их типами существует однозначное позиционное соответствие слева направо. Примеры обращения:
FNKT(X)
FNP(C,D)
X,C,D - фактические параметры
Имена формальных и фактических параметров могут не совпадать.
С помощью оператора DEF FN можно описать более сложную функцию, занимающую несколько строк
Формат:
DEF FN <имя функции>(<список аргументов>)
<блок команд>
FN<имя функции>=<выражение>
END DEF
В строке FN<имя функции>=записывается выражение, значение которого функция возвращает.
Пример1. Отрезки заданы координатами концов. Сравнить эти отрезки.
DEF FNL(x1,x2,y1,y2)=SQR((x1-x2)2+(y1-y2)2) ‘функция нахождения длины отрезка
INPUT “введите координаты первого отрезка”,x1,x2,y1,y2
L1=FNL(x1,x2,y1,y2)
INPUT “введите координаты второго отрезка”,x1,x2,y1,y2
L2=FNL(x1,x2,y1,y2)
IF L1>L2 THEN
? “длина первого отрезка больше”
ELSEIF L2>L1 THEN
? “длина второго отрезка больше
ELSE
? “отрезки равны”
END IF
Пример 2. Вычислить сложное выражение, используя определяемую функцию для вычисления повторяющейся в нем части.
K=(1+m2)/cos(1-m)–5*(c+d2)/cos(c-d)+tg(x+y2)/cos(x-y)
DEF FNT(a,b)=abs((a+b2)/cos(a-b))
INPUT “Введите 5 значений”,m,c,d,x,y
K=FNT(1,m)-5*sqr(FNT(c,d))+tan(FNT(x,y))
? “K=”;K
Пример 3. Вычислить сумму N членов ряда. Факториал вычислять с помощью функции пользователя.
S=1!/4!+4!/5!+9!/6!+16!/7!+…+(n2)!/(n+3)!
DEF FNFACT(M)
P=1
FOR I=1 TO M
P=P*I
NEXT I
FNFACT=P
END DEF
INPUT “Введите n”;N
S=0
FOR J=1 TO N
S=S+FNFACT(J2)/FNFACT(J+3)
NEXT J
? “S=”;S
Задание:
1. Вычислить сложное выражение, используя определяемую функцию для вычисления повторяющейся в нем части.
C=(d+e)/tg(de)+(x+y)/tg(xy)-(z+t)/tg(zt)
2. Вычислить функцию: C = m!n!/(m-n)!. Для вычисления факториала использовать определяемую функцию.
Практическое занятие с использованием подпрограмм и функций пользователя
1 вариант
- Дан массив с оценками учащихся. Найти средний балл учащихся. Подсчитать количество 5 и 4. Заполнение массива, подсчет среднего балла и подсчет количества оценок оформить отдельными подпрограммами.
- Задана матрица W(5,6). Отрицательные элементы матрицы заменить на 0. измененный массив вывести на экран. Обработку элементов массива оформить в подпрограмме.
2 вариант
- Дан одномерный массив со значениями веса кур на птицефабрике. Найти средний вес кур. Найти вес самой тяжелой курицы. Заполнение массива, подсчет среднего веса и нахождение веса самой тяжелой курицы оформить отдельными подпрограммами.
- Найти произведение элементов массива R(7,5) в строках с четными номерами. Обработку элементов массива оформить в подпрограмме.