К?мекші ба?дарламалар К?мекші ба?дарламалар ж?не оларды? ??рылымы (9-сынып)
КӨМЕКШІ БАҒДАРЛАМАЛАР.
КӨМЕКШІ БАҒДАРЛАМАЛАР ЖӘНЕ ОЛАРДЫҢ ҚҰРЫЛЫМЫ.
Программалау барысында көптеген бір типті есептеулерге бірнеше бір-біріне ұқсас программа фрагменттерін қайта-қайта жазуға тура келеді. Осындай да артық жұмыс жасамай, барлық есептеулерді бір ғана фрагмент ішінде орныдау үшін, көмекші программалар-процедуралар мен функциялар қолданылады. Мысалы программа орындалу барысында бірнеше рет ұқсас есептеулер кездессе, онда есептеу блогын бір ақ рет көмекші программаға жазып қойып, программаның кез-келген нүктесінен көмекші программаны шақырып, осы блок арқылы есептуді шығаруға болады.
Сонымен көмекші прграммалар деп программаның орындалу барысында бірнеше рет шақырылып орындалып тұратын операторлар блогын тұратын көмекші бөлігін айтады.
Көмекші прграммалар стандартты және пайдаланушылар көмекші программалары болып екіге бөлінеді. Стандартты функциялар мен процедуралар Turbo Pascal тілінің құрамында тұрақты системалық атпен аталып орындалады. Оларға арнаулы USES пайдаланушылар библиотекасында орналасқан – SYSTEM, CRT, GRAPH, GRAPH3, OVERLAY, PRINTER, TURBO3, TURBO VISION модульдерінің барлық функциялары мен процедуралары жатады.
SYSTEM модулінің процедуралары мен функциялары Turbo Pascal программасымен бірге автоматты түрде іске қосылады, сондықтан оны пайдаланушылар бөлімінде көрсетпесе де болады.
SYSTEM модулінің өзге модульдердің процедуралары мен функцияларын қолдану үшін программаның басында міндетті түрде олардың аттарын USES пайдаланушылар бөлімінде көрсетіп кету керек, мысалы:
PROGRAM KOMEK;
USES Graph, Crt;
// Graph, Crt модульдеріндегі стандартты процедуралар мен функцияларды программада пайдалану үшін ашу.
Стандартты функциялар мен процедуралар көбісі бұдан бұрынғы бөлімдерде программалар құруда пайдаланылады, мысалы:
Abs(X);//Х-тің абсолют шамасын есептеу функциясы
Sin(X);//Х-тің синусын есептеу функциясы
Random(X);//0-ден Х-ке дейін кездейсоқ сан шығару
Delay(X); //программаның орындалуын Х мс уақытқа тоқтау
Clrscr; //экранды тазалау процедурасы
Halt;// программаның орындалуын тоқтату прроцедурасы....т.б.
Падаланушылар көмекші программалары деп программалаушының өзі құрып, аты да өзіне ыңғайлы бір идендификаиормен белгіленетін процедуралар мен функциялар атайды. Олар программаның VAR бөлімінен кейін PROCEDURE немесе FUNCTION қызметші сөздерімен басталып құрылады:
Көмекші программа құрылымы:
көмекші программа қызметші сөзі көмекші программа тақырыбы;
көмекші программада кездесетін идентификаторларды сипаттау бөлімдері;
көмекші программа денесі.
Көмекші программалардың жазылу тәртібі де негізгі программа сияқты бірнеше бөлімдерден тұруы мүмкін, мысалы:
А) көмекші программа аты, параметрлері жазылатын тақырыбы;
Ә)тұрақтылар бөлімі;
Б)типтер бөлімі;
В)айнымалылар бөлімі;
Г)операторлардан тұратын прграмма денесі.
Көмекші программаның аты идентификатормен белгіленеді. программала бірнеше процедура немесе функция болуы мүмкін. Сол сияқты, көмекші программаның да өзінің көмекші программасы болуы мүмкін. Оларды ішкі программалар деп атайды. Негізгі программада сипатталған идендификаторларды көмекші программаның ішінде де сол сипатталған типпен қолдануға болады. Олармен белгіленген айнымалылар глобальды деп аталады. Ал көмекші программада сипатталған идендификаторды тек өзінің ішкі программасында ғана қолдануға болады. Ол айнымалыларды локальды (жергілікті) деп атайды.
Көмекші программа өздігінен орындалмайды, оның орындалуы үшін негізгі программада көмекші программаның аты мен параметрлерін жазып шакқырады, ол жерді көмекші программаны шақыру нүктесі деп атайды.
Көмекші программалардың орындалу саны шақыру нүктелерінің санына байланысты болады. Егер негізгі программада бірде-бір шақыру нүктсеі болмаса, онда көмекші программа орныдалмайды. Программа орныдалу барысында алдымен негізгі программа орындалады да, керек-кезде көмекші прорамма шақырылады. Көмекші программаны шақыру нәтижесінде негізі программа уақытша тоқтайды да, басқару көмекші программаға барады. Көмекші программа денесі, негізі программадан алған деректерді толық өңдеп, орындалғаннан кейін, басқаруды шақыру нүктесіне өңделген жаңа деректермен бірег қайтарып береді де, негізгі программа орындалуын әрі қарай жалғастырады.
Негізгі программадан деректер қабылдау және көмекші программадан өңделіп жаңарған деректерді негізгі программаға қайтару көмекші программалар параметрлері көмегімен атқарылады. Процедура мен функциялардың нақты және формальды параметрлері болады. Программа орындалу барысында есептелген параметрлер нақты деп, ал көмекші программалардың тақырыбында көрсетілетін параметрлер формальды деп аталады.
Нақты және формальды параметрлердің типі, саны, реттілігі сәйкес болуы тиіс. Олар бірдей белгіленуі мүмкін. Нақты параметрлер тұрақтылардан, айнымалылардан және өрнектерден тұруы мүмкін. Кей жағдайларда көмекші программада формальды параметрлерін көрсетпесе болады.
Процедуралар.
Процедура деп белгілі бір идендификатормен аталып, сол атпен программаның кез-келген жерінен шақырып, белгілі бір есептеулерді орындауға болатын программаның тәуелсіз бөлігін айтады. Процедураның құрылымы программа құрылымына ұқсас келеді.
Процедураның құрылымы:
(тақырыбы:)
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*N/2
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*N/2
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*B/2; 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*N/2
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*B/2
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*B/2
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 K>I 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 K>I 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.
Массив элементтерін ендіру, шығару процедурасын құру мысалдары.
А) массив элементтерінің қосындысын мен көбейтіндісін табу:
PROGRAM Massiv 1;
CONST N=5;
Type Mas =Array[1…N] Of Integer;
VAR A,B:Mas; S,P,K: Integer;
PROCEDURE Inp (N:Integer; Var X: Mas);
Begin For K:=1 To N Do Read (X[K]); End;
PROCEDURE Out (N: Integer; VAR X: Mas; VAR S,P:Integer);
BEGIN S:=0; P:=1;
For K:=1 To N Do Begin S:=S+X[K];
P:=P*X[K] End End;
BEGIN Inp (N,A); Out (N,A,S,P);(негізгі программа)
Writeln (‘қосындысы=’,S); Writeln (‘Көбейтінді’,P);
Inp (N,B); Out (N,B,S,P); (‘қосындысы=’,S);
Writeln (‘Көбейтінді’,P);
Readln END.
ә) массив элементтерінің қосындысын мен көбейтіндісін табу процедурасын параметрсіз құру:
PROGRAM Massiv 2;
CONST N=5;
VAR X,A,B:Array; [1…N] Of Integer; S,P,K: Integer;
PROCEDURE InpBegin For K:=1 To N Do Read (X[K]); Writeln End;
PROCEDURE Out
BEGIN S:=0; P:=1; For K:=1 To N
Begin S:=S+X[K]; P:=P*X[K] End End;
BEGIN Inp Out;(негізгі программа)
Writeln (‘қосындысы=’,S); Writeln (‘Көбейтінді’,P);
Inp; Out;
Writeln (‘қосындысы=’,S); (‘Көбейтінді’,P);
Readln END
Б) массив элементерінің қосындысын табу программасын парольмен ашылатындай етіп құру
PROGRAM Proce 11;
LABEL 1;
VAR N:Longint; K:Integer;
PROCEDURE Parol;
Begin Writeln(‘пароль дұрыс емес қайтадан еңгізіңіз:’);
Readln(N); If K=3 Then Halt; K:=K+1; End;
PROCEDURE Mas;
CONST A: Array[1..5] Of Integer=(15,150,-80,50,60);
VAR S:Integer;
Begin S:=0;
For K:=1 To 5 Do S:=S+A[K];
Writeln (‘S=’, S) End;
BEGIN K:=1;(негізгі программа)
Writeln (‘пароль еңгізіңіз:’); Readln (N);
1:IF N < > 123456 Then Begin Parol; Goto 1 End;
Mas; Readln END.
Футбол чемпионатына қатысқан 12 команданың алған ұпайлары бойынша, алғагқы 3 және соңғы 5 орын алған командалар тізімін шығару поцедурасын құру.
PROGRAM Futboll;
USES Crt;
TYPE M=Array[1..12] Of Integer; N=Array [1..12] Of String;
VAR K,I,P:Integer; A:N; B:M;
PROCEDURE Engiz ( VAR B:M; VAR A:N);
Begin For K:=1 To 12 Do Begin Writeln (K’,команданың аты:’);
Readln (A[K]); Writeln (‘Оның алған ұпайы:’); Readln (B[K]) End;
End;
PROCEDURE Kemu (B:M; VAR A:N);
VAR Max,F:Integer; M:String;
BEGIN For K:=1 To 11 Do Begin
Max:=B[12]; F:=12; M:=A[12];
For I:=12 Downto K Do
If B[I] > Max Then Begin F:=I; Max:= B[I]; M:=A[I]; End;
B[F]:= B[K]; B[K]:=Max; A[F]:=A=[K]; A[K]:=M; End;
Writeln; End;
PROCEDURE Autsaider(B:M; VAR A:N);
Begin Kemu (B,A); Writeln;
Writeln (‘Артта қалған командалар:’);
For K:=8 To 12 Do Write (A[K]:7); End;
PROCEDURE Juldeger (B:M; A:N);
Begin Writeln;Writeln (‘Жүлдегер командалар:’);
For K:1 To 3 Do Write(A[K]:7); End;
BEGIN Clsrcr; Engiz(B,A);(негізгі программа)
Autsaider (B,A); Juldeger (B,A); Readln; END
Космос кораблі Күн системасындағы тоғыз планетаның бірінен шығып барлық планеталарды айналып қайтып келуі тиіс. Жанар майды үнемдеу үшін ол әр жолы арақашықтығы ең аз деген қашықтықта орналасқан планетаға баруы тиіс. Космос кораблінің ең тиімді маршруты мен оның барлық жүрген жолын анықтау программасы.
PROGRAM Planeta;
USES Crt;
VAR M:Set Of 1..10;
A:Array[1..10] Of Integer;
B:Array[1..10,1..10] Of Integer;
N,X,C,D,K,I,Y,Min: Integer;
PROCEDURE Inp;
Begin For K:=1 To N Do
For I:= To K Do Begin Read(B[I,K]);
B[I,K]:= B[I,K]; End; End;
PROCEDURE Out;
Begin For K:=1 To N Do Begin
For I:= To K Do Begin Read(B[I,K]:4);
Write; End; End;
Begin Clrscr;(негізгі программа)
Write(‘Матрица өлшемін егіз:’); Readln (N);
Inp; Out;
Write (‘Қай планетадан шықты, номерін енгіз:’); Readln (X);
If=[X]; A[1]:=X; C:=x; D:=0;
For I:=1 To N-1 Do Begin Min:=Maxint; Y:=1;
For K:=1 To N Do
If (B[X,K]) <Min) And Not (K In M) And (B[X,K]) < >0) Then
Begin Min:=B[X,K]; Y:=K; End;
D:=D+Min; M:=M+[Y];
A[I+1]:=Y; X:=Y End;
Writeln (‘корабльдің барлық жүрген жолы:’D+B[C,X]);
Write(‘Корабльдің ең тиімді маршруты:’);
For K:=1 To N Do Write (A[K]:4); Write (‘ ‘,C);
Readln End.
«Жүргізушілерге картотека жазу» программасын
процедуралар қолданып құру.
PROGRAM Dosye;
TYPE Dos=RECORD A:Char; Integer; C,D,E:String; End;
VAR X:Array[1..10] Of Dos; B,K,I:Integer;
Procedure Inp;
Begin Writeln (K, ‘машина туралы деректерді еңгіз’);
With X [K] Do Begin
Write (‘Қаласы:’); Readln(A);
Write (‘машина нөмірі:’); Readln(В);
Write (‘Сериясы:’); Readln(С);
Write (‘Фамилиясы, аты:’); Readln(D);
Write (‘Адрес:’); Readln(Е); End; End;
Procedure Out(I:Integer);
Begin Writeln (‘Бұл нөиерімен мынадай машиналар бар:’);
With X [K] Do Begin
Writeln (‘Қаласы:’,A);
Writeln (‘машина нөмірі:’,В);
Writeln (‘Сериясы:’,С);
Writeln (‘Фамилиясы, аты:’,D);
Writeln (‘Адрес:’,Е); End; End;
BEGIN
For k:=1 To 3 Do Inp;
Write (‘Көрнекті машина нөмірін енгіз:’); Readln(B);
For K:=1 To 3 Do If X [k].B=B Then Out(k);
Readln END.
ФУНКЦИЯЛАР.
Функциялардың атқаратын қызметі мен жұмыс принциптері процедураларға ұқсайды. Функциялардың процедуралардан негізінен екі айырмашылықтар бар:
Функциялар өрнек операндалары ретінде қолданыла береді;
Функция шақыру нүктесіне бір ғана өзінің атына меншіктелген скалярлық шаманы қайтарады. Процедуралар шақыру нүктесіндегі бірнеше идендификаторға жаңа мәндер қайтарып бере алса, ал функциялар бір шақыру нәтижесінде бір ғана идендификаторға жаңа мән бере алады.
Функциялар құрылымы:
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 A>0 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 N>0(оң сан ендіру циклі)
S:=Fact(N);
Writeln (‘Fac=,’S); Readl End.
Екі санның және төрт санның кішісін
табу функциялары
PROGRAM Minsan;
VAR A,B,C,D:Real;
FUNCTION Min (K,I:Real):Real;
Begin If K>I 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 Y<10 Then S:=Y;
If (Y>10) And (Y<100) Then S:=Y Mod 10*10+Y Div 10;
If (Y>=100) And (Y>1000)
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 A<B Then Min:=A Else Min:=B; End;
FUNCTION Max (A,B:Integer):Integer;
Begin If A<B Then Max:=A Else Max:=B End;
Begin Readln (A,B);
X:=Min (A,B); Y:=Max(A,B); K:=1;
While X<>Y 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; T: Komanda;
PROCEDURE Inp (Var T: Komanda; VAR A,B,C: Mas);
Begin (4 массивті элементтерін енгізу:)
For K:=1 To 5 Do
Begin Readl (T[K]);
Readln (A[K], B[K], C[K]) End; End;
FUNCTION Sumball (N:Integer; T:Komanda; A,B,C: Mas): Integer;
Begin (балдарының қосындысын есептеу)
Sumball:= A[K]*50+ B[K]*30+ C[K]*20; End;
PROCEDURE Reiting;
VAR Max, F:Integer; M:String;
Begin For K:=1 To 5 Do
R[K]:=Sumball(K,T,A,B,C); (рейтингтерін R массивіне меншіктеу)
For K:=1 To 4 Do Begin
Max:= R[5]; F:=5; M:=T[5]; (рейтингтерінің кемуі бойынша реттеу)
For I:=5 Downto K Do
If R[I]> Max Then Begin
F:=I; Max:=R[I]; M:=T[I] End;
R[F]:=R[K]; R[K]:=Max; T[K]; T[K]:=M End;
Writeln (‘Европаның ең мықты клубы:’, T[1]);
Writeln (‘Клубтардың рейтингтері:’); (нәтижелер шығару)
For K:=1 To 5 Do While (T[K]:7, R[K]:4); End;
BEGIN Inp (T,A,B,C); Reiting(негізгі программа)
Readln END.
2түрі:
PROGRAM Kubok2;
Type Mas=Array[1..5] Of Integer;
Komanda =Array [1..5] Of String; (массивтерді сипаттау)
VAR K,N,I:Integer;A,B,C,R:Mas; T: Komanda;
PROCEDURE Inp (Var T: Komanda; VAR A,B,C: Mas);
Begin For K:=1 To 5 Do (4 массивті элементтерін енгізу:)
Begin Readl (T[K]); Readln (A[K], B[K], C[K]) End; End;
FUNCTION Sumball (N:Integer; T:Komanda; A,B,C: Mas): Integer;
Begin (балдарының қосындысын есептеу)
Sumball:= A[K]*50+ B[K]*30+ C[K]*20; End;
PROCEDURE Retteu;
VAR Max, F:Integer; M:String;
Begin (рейттинг бойынша реттеу)
For K:=1 To 4 Do Begin Max:= R[5]; F:=5; M:=T[5];
For I:=5 Downto K Do
If R[I]> Max Then Begin F:=I; Max:=R[I]; M:=T[I] End;
R[F]:=R[K]; R[K]:=Max; T[K]; T[K]:=M End;
PRCEDURE Reiting;
Begin (командалардың рейтингін R массивіне меншіктеу)
For K:=1 To 5 Do R[K]:=Sumball (K,T,A,B,C); Retteu; End;
Procedure Out;
Begin Writeln (‘европаның ең мықты клубы:’,T[1]); (нәтижелер шығару)Writeln (‘Клубтардың рейтингтері:’);
For K:=1 To 5 Do While (T[K]:7, R[K]:4); End;
BEGIN Inp (T,A,B,C); Reiting Out;(негізгі программа)
Readln END.