Процедуралар және функциялар



Мазмұны :
Кіріспе
1. Модульді бағдарламалау
1.1. Процедуралар мен функциялар
1.2. Модульдер

2. Массив
2.1. Ашық массивтер
2.2. Массивтердің параметрлері

3.Объект.бағытталған бағдарламалау
3.1. Visual Basic
3.2. Си++

Қорытынды
Қолданылған әдебиеттер тізімі
Қосымша

Мазмұны :
Кіріспе
1. Модульді бағдарламалау
1. Процедуралар мен функциялар
2. Модульдер

2. Массив
1. Ашық массивтер
2. Массивтердің параметрлері

3.Объект-бағытталған бағдарламалау
3.1. Visual Basic
3.2. Си++

Қорытынды
Қолданылған әдебиеттер тізімі
Қосымша

Кіріспе
Көлемі жағынан орташа болып келетін бағдарламаларды(бірнеше мың жолды
код) құрастырғанда құрылымды бағдарламалау қолданылады. Бағдарламаның
құрылымы шығарылып жатқан есептің құрылымын көрсету керек, сонда бағдарлама
мәтінінен есепті шығару алгоритмі түсінікті болады. Ол үшін қарапайым
операторлар жеткіліксіз, алгоритмнің нақты құрылымын дәлірек көрсететін
құралдар қажет.
Қандай да бір алгоритм бойынша жұмыс жасайтын және өзіне негізгі
бағдарламаның кез келген бөлігінен қатысуға болатын бағдарламаның жекелеме
бөлігін ішкі бағдарлама деп атайды. Ішкі бағдарламалар негізгі
бағдарламының ішіндегі кіретін және шығатын орындары бар тұйықталған бөлігі
болып табылады. Негізгі бағдарлама мен ішкі бағдарламадағы айнымалылар бір-
біріне бағынышты емес.
Ішкі бағдарламаның екі түрі болады – процедуралар және функциялар.
Олардың айырмашылығы: процедура белгілі бір операторлар тобын орындаса,
функция осыған қоса қандай да бір нәтижені есептеп, оны негізгі
бағдарламаға қайта жібереді. Бұл нәтиженің өзіне тән типі болады. Си++
бағдарламалау тілінде процедура деген ұғым жоқ, онда тек қана функция
қолданылады. Егер функция ешбір нәтиже есептемесе, онда ол ешқандай
(void) типін қайтарады.
Кез келген бағдарламада бірнеше процедура немесе функция қолданылуы
мүмкін. Процедура мен функция сипаттау бөлігінде айнымалылар бөлігінен
кейін жарияланады.

1.Модульді бағдарламалау
1.1.Процедуралар мен функциялар
Бағдарламаның орындалуы негізгі бағдарламаның операторларынан
басталады. Қажет жағдайда ішкі бағдарлама шақырылып, оның операторлары
орындалады. Содан соң басқару қайтадан негізгі бағдарламаға беріліп,
бағдарламаның орындалуы жалғасады.
Ішкі бағдарлама негізгі бағдарлама сияқты құрылады, яғни бағдарлама
атауынан, операторлар бөлігінен және аяқталуынан құрылады.
Параметрдің екі түрі болады: формальды және шын мәніндегі параметрлер.

Шын мәніндегі параметр деп процедураны шақырар кездегі негізгі
бағдарламадағы параметрлерді айтамыз. Ал формальды параметрлер ішкі
бағдарламаның атауынан кейін көрсетіледі.
Формальды параметрлер тізімінде айнымалылар аталып, олардың типтері
көрсетіледі.
Формальды параметрлерді екіге бөлуге болады:
1) параметр-аргументтер, яғни процедура үшін кіретін мәліметтер;
2) параметр-нәтижелер, осы параметр-нәтижелер арқылы процедураның
жұмысының нәтижесін негізгі бағдарламаға қайтарады.
Параметр-нәтижелер тізімдерінің алдында var сөзі жазылады. (Паскаль).
Процедура – белгілі ретпен іске асырылатын іс-әрекеттер жиыны, жалпы
бағдарламаның бір бөлігі.

Процедуралардың жалпы түрі:
Бейсик Паскаль Си++
Процедура SUB атауы(форм. procedure атауы (форм. void атауы(форм.
атауы параметрлер тізімі);параметрлер тізімі); параметрлер тізімі)
Денесі операторлар бөлігі begin {
операторлар бөлігі ; операторлар бөлігі
end; };
Аяқталуы END SUB жоқ жоқ

Паскаль тіліндегі мысал: бір санның факториалын табу.
procedure fact (k : integer; var a : integer);
var x : integer;
begin
a:=1;
for x:=1 to k do
begin
a:=x*a;
end;
end;

Мұндағы k – формальды параметр-аргумент, яғни негізгі бағдарламадан келген
сан. а – формальды параметр-нәтиже, яғни негізгі бағдарламадан келген
санның факториалы.
Паскаль тіліндегі процедураны негізгі бағдарламаның командалар
бөлігінен шақырылу командасын қарастырайық:
процедура аты (шын мәнінде берілген параметрлер тізімі);
Мысалы: fact(i,s);
Процедураның құрылымы:
(тақырыбы:)
PROCEDURE аты (формальды параметрлер типтері);
Сипаттамалар бөлімдері; (бұл бөлімдер болмауы да мүмкін)
BEGIN Операторлар; (процедура денесі)
END;
Программада процедураны пайдалану үшін процедураның атын нақты
параметрлермен бірге жазып шақырады, ол жерді процедураны шақыру
нүктесі деп атайды. Прграмма процедураның шақыруын оқыған заматта
процедураның орындалуы басталады. Мысалы прпограмма тақырыбы
төмендегідец болса:

PROCEDURE SUMMA (N,M,X:INTEGER);
Онда процедуранв програмада мынадай жолмен шақыруға болады.
Summa (19,A,50);
Жақшадағы 19 Ф 50-нақты параметрлер болып табылады. Нәтижеснде
процедурадағы формальды параметрлер мынадай мәндерге ие болады:
N=19, M=A, X=50.
Процедура шақыру процесінде формальды параметрлердің мәндері
нақты параметрлердің мәнін қабылдайды да, процедура денесіндегі
есептеулерде сол жаңа мәндер пайдаланады.
Процедураның параметрлері мәндік және айнымалы болып екіге
өлінеді. Мәндік (аргументтік) параметрлер тек қана нақты
параметрлердің мәнін өзіне қабылдайды да, қайтып оларға өзінің мәнін
бере алмайды. Процедураның бір орындалу барысында негізгі программаның
бірден бірнеше идендификаторлары жаңа мән қабылдай алады. Айнымалы
параметрлердің алдына VAR қызметші сөзі қойылып жазлады.
Мысалы:

PROCEDURE Misal (A,B:Integer; VAR X,Y: Longint);
Var S: Integer;
Begin S:=A+5*B;
X:Sqr(S); Y:Sqr(X); END;

Бұл процедураны программалық текстте төмендегідей жазып шақыруға
болады:
Misal (10,5,K,l);
Проограмма орындалу барысында Misal (10,5,K,l) шақыру идендификаторын
оқып, басқаруды Misal процедурасына жібереді де, төмендегідей
әрекеттер орындалады.
1.процедураның А, В, Х, Ү формальды параметрлері (10,5,K,l) нақьы
параметрледің мәнін қабылдайды:
А=10, В=5, Х=K, Ү=I,;
2.процедура денесіндегі операторлар орындалады;
S=10+5*5=35, X=35*35=1225,
Y=1225*1225=1500625;
3.VAR қызметші сөзінен кейінгі жазылған формальды Х және Ү
параметрлері процедураның орындалу барысында меншіктеген өздерінің
жаңа мәндерінің нақты К-мен І параметрлеріне бергеннен кейін, басқару
Misal (10,5,K,l) шақыру идендификаторынан кейін тұрған операторға
өтеді;
К=X=1225, I=Y=1500625
4. әрі қарай программаның есептеулерінде К және І айнымалылары жаңа
меншіктеген мәндерімен қатысады.

Процедура құру мысалдары.
Қатеттері бойынша үшбұрыштың ауданы мен
гипотенузасын табу процедурасын құру.
Дұрыс құралған процедура мысалдары:
А)
PROGRAM Proced 1;
VAR A, B, C, S: Real;
PROCEDURE Ushbur (M,N:Real; Var T, Q: Real);
Begin T:=M*N2
Q:=Sqrt (Sqr (M)+Sqr(N));END;
BEGIN Readln (A,B);
(негізгі программадан Ushbur процедурасын шақыру:)
Ushbur (A, B, S, C);
Writeln (‘gip=’,C:4:2); Writeln (‘aud=’, S:4:2);
Readln End.
Ә)
PROGRAM Proced 2;
VAR A, B, C, S: Real;
PROCEDURE Ushbur (M,N:Real; Var T:Real, Q: Real);
Begin T:=M*N2
Q:=Sqrt (Sqr (M)+Sqr(N));END;
BEGIN Readln (A,B);
Ushbur (A, B, S, C);
Writeln (‘gip=’,C:4:2);
Writeln (‘aud=’, S:4:2);
Readln End.
Б)
PROGRAM Proced 3;
VAR A, B, C, S: Real;
PROCEDURE Ushbur;
Begin
S:=A*B2; C:=Sqrt(SQRT(A)+SQRT(B)); END;
BEGIN Readln (A,B);
Writeln (‘gip=’,C:4:2);
Writeln (‘aud=’, S:4:2);
Readln End.
Дұрыс құралмаған процедура мысалдары:
А)
PROGRAM Proced 4;
VAR A, B, C, S: Real;
PROCEDURE Ushbur (M,N:Real; Var T, Q: Real);
Begin T:=M*N2
Q:=Sqrt (Sqr (M)+Sqr(N));END;
(бұл процедура S пен С –ға жаңа мән қайтармайды)
BEGIN Readln (A,B);
Writeln (‘gip=’,C:4:2);
Writeln (‘aud=’, S:4:2);
Readln End.
Ә)
PROGRAM Proced 5;
VAR A, B, C, S: Real;
PROCEDURE Ushbur(A,B:Real; Var S:Real, C: Real);
Begin S:=A*B2
C:=Sqrt(SQRT(A)+SQRT(B)); END;
(бұл процедура S-кежаңа мәе қайтарады, ал С –ға қайтармайды)
BEGIN Readln (A,B);
Ushbur (A, B, S, C);
Writeln (‘gip=’,C:4:2);
Writeln (‘aud=’, S:4:2);
Readln End.
Б)
PROGRAM Proced 6;
VAR A, B, C, S: Real;
PROCEDURE Ushbur (S,C:Real; Var A, B: Real);
Begin
S:=A*B2
C:=Sqrt (Sqr (A)+Sqr(B));END;
(бұл бұрышта параметрлер реттеліп жазылмаған)
BEGIN Readln (A,B);
Ushbur (A, B, S, C);
Writeln (‘gip=’,C:4:2);
Writeln (‘aud=’, S:4:2);
Readln End.
Екі санның үлкенін табатын процедура.
PROGRAM Maxsan;
Var A,B, Max: Real;
PROCEDURE Maxsim (K, I:Real; VAR S:Real); (Махім процедурасы)
Begin If KI Then S:=K
Else S:=I; End; (екі санды салыстырып үлкенді салыстыру)
BEGIN Write(‘2 сан енгіз:’); Readln(A,B); (негізгі программа)
Maxim(A,B,Max); Writeln(‘Max=’,Max:4:1); Readln End.

Екі санның үлкенін табатын процедураны қолданып,
берілген үш және төрт санның үлкенін табу программасы.
PROGRAM Maxsan2;
Var A,B,С,D, Max: Real;
PROCEDURE Maxsim (K, I:Real; VAR S:Real); (Махім процедурасы)
Begin If KI Then S:=K Else S:=I; End;
(екі санды салыстырып үлкенді салыстыру)
BEGIN Write(‘4 сан енгіз:’); Readln(A,B,С,D,); (негізгі программа)
Maxim(A,B,Max);
(процедураның орындалуы нәтижесінде Мах А және В Сандарының үлкенін
меншіктейді)
Maxim(Мах,С,Max);
(процедураның орындалуы нәтижесінде Мах А,В,С Сандарының үлкенін
меншіктейді)
Writeln(‘A,B,C сандарының:’,Max:4:1);
Maxim(Мах,D,Max);
(процедураның орындалуы нәтижесінде Мах А,В,С,D Сандарының үлкенін
меншіктейді)
Writeln(‘A,B,C,D сандарының:’,Max:4:1);
Readln End.

N-нен М-ге дейінгі бүтін сандарының қосындысын табу проедурасы.
PROGRAM Proc7;
Var N,M,K: Integer; S:Longint;
PROCEDURE Sum (N, M:Integer; VAR X:Longint); (сандардың енгізу
проуедурасы)
Begin X:=0; For K:= N To M Do X:=X+K; End;
BEGIN Readln (N,M);
Sum (N,M,S);
Writeln(‘SUM=’,S);
Readln END.

Бүтін Х санның бүтін Ү дәрежесін табу процедурасын құру.
PROGRAM Proc7;
Var X,Y: Integer; S:Longint;
PROCEDURE Inp (VAR A,B:Integer); (сандардың енгізу проуедурасы)
Begin Write(санды енгіз:); Readln (A);
Write (‘дәрежесін енгіз:’); Readln (B) End;
PROCEDURE Dar (A,B: Integer; VAR S: Longint);
VAR K: Byte;
Begin S:=1;
For K:=1 To B Do S:=S*A; End;
PROCEDURE Out (S:Longint); (нәтиже шығару процедурасы)
Begin Writeln (X,’ санның ‘, Y’, дәрежесі=’,S) End;
BEGIN Inp (X,Y); Dar (X,Y,S); Out(S);
Readln End.

N санның цифрларының санын шығару процедурасы
PROGRAM Proc8;
Var N:Longint;
PROCEDURE San; (Sаn проуедурасы)
Var K:Integer;
Begin K:=0
Repeat
K:=K+1; N:= N Div 10; Until N=0;
Writeln(‘N санының цифрларының саны=’,K) End;
Begin Readl (N); San;
Readln END. (негізгі программа)

N санының цифрларының жұп-тақтығынанытайтын процедурасын құру.
PROGRAM Proc9;
Var N: Integer; K,I:Longint;
PROCEDURE San (I:Longint); (san проуедурасы)
Begin K:=0;
Repeat K:=K+1;
I:=I Div 10; Until I=0; End;
PROCEDURE Dar (I: Integer; VAR S: Longint); (dar процедурасы)
VAR J: Ineger; (онның І дәрежесін есептеу)
Begin P:=1;
For J:=1 To I Do P:=P*10; End;
PROCEDURE Jup (N:Longint); (Jup процедурасы)
Var X,D:Longint;
Begin (санның цифрларының жұп-тақтығын анықтайтын цикл)
For I:=1 To K do Begin
Dar (K-I,D); (D идендифткаторы Dar поцедурасының орындалу
нәтижесінде 10-ның К-І дәрежесін меншіктейді)
X:=N Div D; (Х идендификаторы І=1 болғанда санның бірінші цифрін, І=2
болғанда 2-ші цифрын,... І=K болғанда Л цифрын меншіктейді )
Writeln (I’, цифр =’,x);
N;=N Mod D; ( келесі циклге қалатын санның шамасы)
If X Mod 2=0 ( цифрлардың жұп-тақтығын салыстыру)
Then Write(‘бұл цифр жұп’)
Else Write (‘бұл цифр тақ’);
BEGIN Readl (N); San (N); Jup (N); (негізгі программа)
Readln End.

Функция – басқа мәліметтер алу үшін анықталған мәліметтерге қолданылатын
компьютердің іс-әрекеті. Функцияның ерекшелігі – оның орындалуы барысында
бір ғана нәтиже шығады, ал кіру параметрлері бірнешеу болуы мүмкін. Нәтиже
функция атауымен белгіленіп, негізгі бағдарламаға беріледі.

Функциялардың жалпы түрі:
Бейсик Паскаль Си++
Функция FUNCTION атауы function атауы (форм. функция типі
атауы (форм. параметрлер параметрлер тізімі): атауы(форм.
тізімі); функция типі параметрлер тізімі)
Денесі операторлар бөлігі begin {
операторлар бөлігі ; операторлар бөлігі;
end; };
Аяқталуы END FUNCTION жоқ жоқ

Санның квадратын анықтайтын функцияның мысалдары:
Бейсик:
FUNCTION SQR % (X AS INTEGER)
SQR% = X*X
END FUNCTION

Паскаль:
function SQR (x : integer) : integer;
begin
SQR:= x*x;
end;

Си++:
int SQR (int x)
{
return x*x;
};

Паскаль тіліндегі функцияны негізгі бағдарламаның командалар бөлігінен
шақырылу командасын қарастырайық:
функция аты (шын мәнінде берілген параметрлер тізімі);
Мысалы: у:=SQR(x);
Функциялардың атқаратын қызметі мен жұмыс принциптері
процедураларға ұқсайды. Функциялардың процедуралардан негізінен екі
айырмашылықтар бар:
1. Функциялар өрнек операндалары ретінде қолданыла береді;
2. Функция шақыру нүктесіне бір ғана өзінің атына меншіктелген
скалярлық шаманы қайтарады. Процедуралар шақыру нүктесіндегі
бірнеше идендификаторға жаңа мәндер қайтарып бере алса, ал
функциялар бір шақыру нәтижесінде бір ғана идендификаторға
жаңа мән бере алады.
Функциялар құрылымы:
Functioon аты (Формалды параметрлер: Типтері):типі;
Сипаттамалар бөлімдері; (*бұл бөлімдер болмауы да мүмкін*)
BEGIN Операторлар бөлімі;
Аты:=(*функция жаңа мән меншіктейді*) (*функция денесі*)
END;
Функция құру мысалдары.
Екі (х1,ү1) және В(x2,y2) нүктелерінің координаталары бойынша ара
қашықтығын анықтау функциясын құру.
PROGRAM Func 1;
VAR X1,X2,Y1,Y2:Integer;
FUNCTION Ara: Real; (Қашықтық табу функциясы)
Begin Ara:=Sqrt (Sqr(X2-X1)+Sqr(Y2-Y1)) End;

Begin Readln (X1,X2,Y1,Y2); (негізгі программа)
Writeln (‘Екі нүктенің ара қашықтығы=’, Ara:4:1);
Readln END.

Нақты оң Х санының нақты Ү дәрежесін
табу функциясын құру
PROGRAM Func 1;
VAR X,Y:Real;
FUNCTION Dar (A,B:Real):Real; (дәрежесін табу функция)
Begin If A0 Then Dar:=Exp(Ln(A)*B)
Else Begin Writeln (‘ter’); Delay (30000); Halt End End;

Begin Readln (X,Y); (негізгі программа)
Writeln (‘dar=’,Dar(x,y):4:1); Readln END.

М-нен N –ге дейінгі бүтін сандар қосындысын табу функциясы
PROGRAM Func 3;
VAR A,B,P:Real;
FUNCTION Sum (M,N:Integer):Integer; (дәрежесін табу функция)
VAR S,K:Integer;
Begin S:=; For K:=M To N Do S:=S+K;
Sum:=S; End;
Begin Readln (A,B);
P:=Sum(A,B); Writeln (‘P=’,P); Readln END.

N санының факториал табу функцясы.
PROGRAM Func 2;
VAR N,P,K:Integer; S:Longint;
FUNCTION Fact(M:Integer):Longint;
Begin P:=1 For K:=2 To M Do P:=P*K;
Fact:=P; End;
BEGIN Repeat Readln(N); Unit N0 (оң сан ендіру циклі)
S:=Fact(N);
Writeln (‘Fac=,’S); Readl End.

Екі санның және төрт санның кішісін табу функциялары
PROGRAM Minsan;
VAR A,B,C,D:Real;
FUNCTION Min (K,I:Real):Real;
Begin If KI Then Min:=K Else Min:=I; End;
FUNCTION Min4(A,B,C,D:Real): Real;
Begin Min4:=Min (D, Min(C, Min(A,B))); End;

Begin Writeln (‘төрт сан енгіз’); Readln (A,B,C,D);
Writeln (‘Төрт санның кішісі=,’ Min4(A,B,C,D):4:2);
Readln End.

Кез-келген жолдық қатардың латын алфавитінің кіші әріптерін бас әріпке
айналдыру функциясын құру.
PROGRAM Kat3;
Var X:String; K:Byte;
FUNCTIION Basarip(A:String):String;
Begin For K:=1 To Length (A) Do A[K]:=Upcase(A[K]);
Basarip:=A End;
BEGIN Readln (X); X:=Basarip(X);
Writeln (‘Қатардың жаңа мәні X=’,X);
Readln End.

Х жолдың қатарында кездесетін а символдарын санап, оларды b
символымен ауыстыру функциясын құру.
PROGRAM Kat4;
Var X:String; K,N:Byte;
FUNCTIION Austyr(A:String):String;
Begin N:=0; For K:=1 To Length (A) Do If A[K]=’a’ Then
Begin N:=N+1; A[K]:=’b’ End; Austyr:=A End;
BEGIN Readln (X); X:=Austyr(X);
Writeln (‘Қатардың жаңа мәні X=’,X’, қатарда ‘, N, “a” Символы болды’);
Readln End.

2-ден 1000-ға дейін сол жағынан да, оң жағынан да оқығанда жай сандарды
анықтау функциясын құру.

PROGRAM Func5;
VAR X,N:Integer;

Function Jai(Y:Integer):String;
VAR D,I:Integer; T:String;
Begin T:=’Жай сан емес’; D:=0;
For I:=2 To Y Y-1 Do If Y Mod I=0 Then D:=D+1;
If D =0 Then T:=’Жай’; Jai:=T End;
FUNCTION Kery (Y:Integer):Integer;
VAR S:Integer;
Begin If Y10 Then S:=Y;
If (Y10) And (Y100) Then S:=Y Mod 10*10+Y Div 10;
If (Y=100) And (Y1000)
Then S:=Y Mod 10*100+Y Mod100 Div 10*10+Y Div 100;
Kery:=S; End;

Begin Writeln (‘Бұндай сандар:’); N:=2;

For X:=4 To 99 Do Begin
If Jai(X)=’Жай’ Then If Jai (Kery(X))=’Жай’
Then Begin Writeln(X); N:=N+1 End; End;
Writeln (N, ‘Жай сан бар’);
Readl End.

Тік төртбұрышты квадраттарға бөлу программасының
функциясы.
PROGRAM Kvadrat;
VAR A,B,D,K,X,Y:Integer;
Function Min(A,B:Integer):Integer;
Begin If AB Then Min:=A Else Min:=B; End;
FUNCTION Max (A,B:Integer):Integer;
Begin If AB Then Max:=A Else Max:=B End;
Begin Readln (A,B);
X:=Min (A,B); Y:=Max(A,B); K:=1;
While XY Do Begin K:=K+1;
D:=Y-X; Y:=Max(D,Y); X:=Min(D,X); End;
Writeln (‘Квадрат саны=’, K’);
Readl End.

Европаның ең ұздік футбол клубын анықтау, және экранға командаларды
рейтингісі (жинаған балдары)
бойынша реттеп шығаруда функция мен процедура қолдану.
Европаның ең үздік 5 футбол командасының Европа кубоктарында жеткен
табыстары берілген:
Т (Реал, Милан, Порту, Рома, Интер);
А(7,7,3,2,3);
В(3,2,5,4,5);
С(1,2,5,3,7);
Т массиві –футбол клубтары,
А,В,С массивтері –олардың жарыстарда жеңіп алған клубтарының саны
Командалар рейтингісі осы жарыстарда жеңіп алған кубоктар санына
байланысты есептеледі. әр кубокты бір рет иеленгені үшін командаға
мынадай балдар қосылады:
А-чемпиондар лигасының кубогын жеңіп алған үшін 50 балл,
В-кубок иелерінің кубогын жеңіп алған үшін 30 балл,
С-УЕФА кубогын жеңіп алған үшін 20 балл.

1түрі:
PROGRAM Kubok1;
Type Mas=Array[1..5] Of Integer;
Komanda =Array [1..5] Of String; (массивтерді сипаттау)
VAR K,N,I:Integer;
A,B,C,R:Mas; ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Функцияларды баяндау
Паскаль программасындағы функциялар мен процедуралар
Файлдарға қолданылатын функциялар мен процедуралар turbo pascal
Процедуралар мен функциялар
Турбо Паскаль тілінің динамикалы байланысатын кітапханалары
СИ тіліндегі символдық функциялар мен процедуралар
Алгоритмдік тіл және программалау тілі
Паскаль тілінің функцияларымен процедураларын қолдану
Турбо Паскальдағы Graph модулі
Паскаль тілінің түсініктері
Пәндер