{можно вызвать подпрограмму, указывая другие значения параметров}
End.
В результате выполнения этой программы на экране появится следующая строка:
****************************************
5 Программа вычисляющая НОК, содержащая подпрограмму- функцию, для вычисления НОД
Program n1;
Const c:array[1..5] of integer=(36,54,72,18,15);
Var x,y:integer;
Function NOD(a,b:integer):integer; {заголовок функции}
begin
While a<>b do
If a>b then a:=a-b
else b:=b-a;
NOD:=a; {результат функции присваивается ее имени}
end; {конец описания функции}
Begin {начало главной программы}
x:=c[1];
for i:=2 to 5 do
begin
y:=c[i];
x:=x*y div NOD (x,y) {вызов функции}
end;
write(‘HOK=’,x);
End. {конец главной программы}
6 Программа написана на языке программирования Qbasic.Программа позволяет ввести два числа, затем сравнивает сумму этих чисел и их произведение. Большее из них выводин на экран.
DECLARE FUNCTION MAX2A!(a!, b!)
REM По заданным вещественным значениям x и y вычислить
REM U =max(X+Y, X*Y)
INPUT ”Введите два числа” ,X,Y
a= X+Y: b= X*Y: U= MAX2A(a,b)’Обращение к функции
PRINT “U=”; U
END
FUNCTION MAX2A(a,b)’Объявление функции
IF a>b THEN S=a ELSE S=b
MAX2A=S
END FUNCTION
7 Программа написана на языке Qbasic.Решает ту же задачу что и предыдущая, но объявление этой функции выглядит иначе
DEF MAX2A(a,b)’Объявление функции
IF a>b THEN S=a ELSE S=b
MAX2A=S
END DEF
REM U=max(X+Y,X*Y)
INPUT ” Введите два числа”,X,Y
a=X+Y: b=X*Y: U=MAX2A(a,b)’ Обращение к функции
PRINT ”U=”;U
END
8 Программа написана на языке Qbasic.Программа решает ту же задачу что и прдидущая, но используется подпрограмма– процедура.
DECLARE SUB MAXim(r1!, r2!, RES!)
REM Начало подпрограммы
INPUT “ Введите два числа“,X,Y
MAXim X+Y, X*Y,U ‘Обращение к подпрограмме
PRINT “U =”;U
END
SUB MAXim (r1,r2,RES)’Объявление процедуры
IF r1>r2 THEN RES = r1 ELSE RES = r2
END SUB
Теоретические вопросы
– Дайте определение функции.
– Дайте определение процедуры.
– Сформулируйте правила описания процедуры (функции) на языке программирования Turbo Pascal, на языке QBasic.
– Сформулируйте правила обращения к процедуре (функции) для этих языков программирования.
– Сформулируйте основные отличия процедур от функций.
– Какие переменные называются локальными (глобальными)?
– Какие переменные называются формальными, а какие фактическими?
– Какие переменные называются параметры – значения, какие параметры – переменные?
Повторение
Задача1
Перед вами программа, вычисления с+d и c*d с использованием подпрограммы
Program 1;
Var
a, b, ml, ad :real;
procedure MA(c,d:real; var ad, ml:real);
begin
ad:=c +d;
ml:=c*d;
end;
Begin
a:=2;
b:=5;
Ma(a,b,ad,ml);
End.
Задача2;
DEF MA(a,b)’Объявление подпрограммы
MA = (a+b)/2
END DEF
REM Среднее арифметическое двух чиселX и Y
INPUT “Введите два числа” , X,Y
S = MA(X,Y)’Обращение к подпрограмме
PRINT “Среднее арифметическое двух чисел “;X;Y;S
END
Задания:
1 Определите на каком языке программирования написана первая программа, вторая программа.
2 Какая подпрограмма использована в первой задаче, а во второй.
3 Укажите описание процедуры(функции) в подпрограмме
4 Укажите обращение к процедуре (функции) в программе.
5 Перечислите формальные переменныею
6 Перечислите фактические переменные.
7 Как передается значение функции в подпрограмму?
8 Как передается результат выполнения процедуры в программу?
9 Перечислите параметры-переменные.
10 Перечислите параметры-значения.
11 Перечислите локальные переменные.
12 Перечислите глобальные переменные.
Задачи для самостоятельной работы
Вариант1
Задача1
На языке Turbo Pascal разработайте программу, позволяющую вывести на экран следующее изображение, использовав подпрограмму для изображения отдельной фигуры:
1
1 1 1
2
2 2 2
3
3 3 3
Задача2
На языке Turbo Pascal разработайте программу, которая возвращает удвоенное значение большего из двух чисел (использовать подпрограмму, которая возвращает большее из двух целых чисел).
Задача3
Разработать программу, решающую ту же задачу на языке Qbasic.
Задача4
Разработайте программу на языке Qbasic, в которой используется подпрограмма, меняющая значения двух переменных местами.
Задача5
Разработать программу, которая заменяет стандартную функцию UpCase(преобразование строчных букв в прописные).На языке Turbo Pascal.
Задача6
Вычислите значение выражения: |x+3|/|z+1|+|y*3|/|z+3|, не используя стандартную функцию mod.
Решение задач к 1 варианту
Задача1
program n1;
procedure ris(n,m:integer;x:char);
var
i:integer;
begin
for i:=1 to n do
write(' ');
write (' ',x,' ');
writeln ;
for i:=1 to m do
write(' ');
write ( x, x, x);
writeln;
end;
Begin
ris(1,1,'1');
ris(5,5,'2');
ris(9,9,'3');
End.
Задача2
Program n2;
Var
u,y,m,n:integer;
function max(a,b:integer):integer;
begin
if a>b then
max:=a
else max:=b;
end;
Begin
Writeln(‘введите 2 натуральных числа’);
Readln(u,y);
n:=max(u.y);
m:=n*2;
writeln(‘удвоенное значение большего числа(’,n,’)’равняется’,m);
End.
Задача 3
DECLARE FUNCTION MAX2A!(A!,B!)
REM U=2*MAX(X,Y);
INPUT ”ВВЕДИТЕ ДВА ЧИСЛА ”,X,Y
U=2*MAX2(X,Y)
PRINT”УДВОЕННОЕ ЗНАЧЕНИЕ БОЛЬШЕГО ЧИСЛА”;U
END
FUNCTION MAX2(A,B)’ОБЪЯВЛЕНИЕ ФУНКЦИИ
IF A>B THEN S=A ELSE S=B
MAX2=S
END FUNCTION
Задача4
DECLARE SUB PER1(A!,B!)
REМ НАЧАЛО ПРОГРАММЫ
INPUT ”ВВЕДИТЕ ДВА ЧИСЛА ”,X,Y
PRINT “X1=”;X;”Y1=”Y:
PER X,Y
PRINT ”X1=”;X;”Y1=”Y;
END
SUB PER(A,B)’ОБЪЯВЛЕНИЕ ПРОЦЕДУРЫ
N=A
A=B
B=N
END SUB
Задача5
program n5;
function UpCase(st:string):string;
var
i:integer;
begin
for i:=0 to length(st) do
begin
case st[i] of
'a'..'z':UpCase[i]:=chr(ord(st[i])-32);
'а'..'п':UpCase[i]:=chr(ord(st[i])-32);
'р'..'я':UpCase[i]:=chr(ord(st[i])-80);
else
UpCase[i]:=st[i];
end;
end;
begin
writeln(UpCase(‘masha’));
end.
Задача 6
Program n6;
var
x,y,z,s:real;
function modul(k:real):real;
begin
if k>=0 then modul:=k;
if k<0 then modul:=-k;
end;
Begin
writeln('Введите x,y,z');
readln(x,y,z);
s:=modul(x+3)/modul(z)+modul(y*3)/(modul(z)+3);
writeln('s=',s:3:2);
End.
Вариант2
Задача1
Разработайте программу, позволяющую вывести на экран следующее изображение, использовав подпрограмму для изображения отдельной фигуры:
111
111
222
222
333
333
Задача2
Разработать программу, в которой используется подпрограмма для определения меньшего из двух чисел.(ТР)
Задача3
Разработать программу, решающую ту же задачу на языке Qbasic.
Задача4
Разработайте программу, которая возвращает введенные значения с противоположными знаками. На языке Qbasic.
Задача5
Разработайте программу, которая выводит на экран слово: ‘четное’–если введенное число четное и ‘не четное’ в противном случае.(не используя функцию odd)
Задача6
Вычислить значение выражения: х!+у!+z!+v!, где x, y, z, v – натуральные числа.
Решения задач 2 варианта
Задача1
Program n1;
procedure ris(n,m:integer;x:char);
var
i:integer;
begin
for i:=1 to n do
write(' ');
write(x,x,x);
writeln;
for i:= 1 to m do
write(' ');
write(x,x,x);
writeln;
end;
Begin
ris(1,1,'1');
ris(5,5,'2');
ris(9,9,'3');
End.
Задача2
Program n2;
var
u,y,m,n:integer;
function min(a,b:integer):integer;
begin
if a>b then min:=b;
if a<b then min:=a;
end;
Begin
writeln('Введите два различных числа ');
readln(u,y);
n:=min(u,y);
m:=n*2;
writeln('удвоенное значение меньшего числа(',n,’)=’,m);
end.
Задача3
DECLARE FUNCTION MIN2! (A!, B!)
REM U=2*MIN(X,Y)
INPUT "Введите два числа", X, Y
U = 2 * MIN2(X, Y)'
PRINT "удвоенное значение меньшего= "; U
END
FUNCTION MIN2 (A, B) 'объявление подпрограммы
IF A > B THEN S = B ELSE S = A
MIN2 = S
END FUNCTION
Задача4
DECLARE SUB ZNAK (X!)
DECLARE SUB ZNAK!(A!,B!)
REM
INPUT "введите число X1 ", X
ZNAK X
PRINT "число, противоположное X1= "; X;
END
SUB ZNAK (X) 'объявление процедуры
IF X > 0 THEN ZNAK = -X
ELSE ZNAK = X
END SUB
Задача5
Program n5;
var
y,x,z:integer;
function dva(x:integer):integer;
begin
if frac(x/2)=0 then dva:=1
else dva:=-1;
end;
Begin
writeln('введите число');
readln(y);
x:=y;
z:=dva(x);
if z=1 then writeln('четное')
else writeln('не четное');
end.
Задача6
Program n6;
var
x,y,z,v,a:integer;
function fact(n:integer):integer;
var f,i:integer;
begin
f:=1;
for i:=2 to n do
f:=f*i;
fact:=f;
end;
Begin
writeln('введите значения x,y,z,v ');
readln(x,y,z,v);
a:=fact(x)+fact(y)+fact(z)+fact(v);
writeln('значение выражения=',a);
End.
Вариант3
Задача1
Разработайте программу, позволяющую вывести на экран следующее изображение, использовав подпрограмму для изображения отдельной фигуры:
1111
1 1
1111
2222
2 2
2222
3333
3 3
3333
Задача2
Вариант4
Задача1
Разработайте программу, позволяющую вывести на экран следующее изображение, использовав подпрограмму для изображения отдельной фигуры:
3
333
3
2
222 1
2 111
1
Вариант5
Задача1
Разработайте программу, позволяющую вывести на экран следующее
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.