Автор работы: Пользователь скрыл имя, 02 Декабря 2014 в 10:57, реферат
Формальды параметрлер деп процедура ішінде қолданылатын және процедураны әр шақырғанда әртүрлі бастапқы және соңғы мәнге ие болатын айнымалыларды атайды.
Программаның процедура бөліміндегі негізгі программаға қатысы жоқ айнымалы жергілікті айнымалы деп аталады. Олар процедурадан шығу кезінде жойылып кетеді. Жергілікті айнымалылар процедураның VAR бөлімінде сипатталуы тиіс.
Процедура
Процедураның жазылуының жалпы түрі
Процедураны шақыру операторының жазылу үлгісі
Функция
Функцияның жазылуының жалпы түрі
CRT модулі. Мәтіндік режимді басқару процедуралары мен функциялары
Функцияны шақыру операторының жазылу үлгісі
Мәтіндік режимдегі координата. Түстерді басқару
Дыбысты басқару процедуралары
Дыбыстық сигналды генерациялау үшін сипатталған процедуралар
Жоспар:
Процедура
Паскаль тілінде ішкі (көмекші) программаның 2 түрі бар: процедура және функция.
Процедураның стандарт түрлерімен Read, Readln, Write,Writeln енгізу-шығару процедураларымен, символдық айнымалыларды түрлендірудің Delete, Str,Insert,Val процедураларымен т.с.с біз бұрыннан таныспыз. Программалаушыға сонымен қатар, өзінің процедура және функция жасауына болады.
Процедура деп қандай да бір есепті шешуге арналған атауы бар программа бөлігін атайды.
Процедура программаның процедураны сипаттау бөлімінде көрсетіледі.
Процедураның жазылуының жалпы түрі:
PROCEDURE процедура аты (типтері сипатталған формальды параметрлер тізімі);
<сипаттау бөлімдері>
Begin
операторлар бөлімі
End;
Формальды параметрлер деп процедура ішінде қолданылатын және процедураны әр шақырғанда әртүрлі бастапқы және соңғы мәнге ие болатын айнымалыларды атайды.
Программаның процедура бөліміндегі негізгі программаға қатысы жоқ айнымалы жергілікті айнымалы деп аталады. Олар процедурадан шығу кезінде жойылып кетеді. Жергілікті айнымалылар процедураның VAR бөлімінде сипатталуы тиіс.
Негізгі программаның қажетті жерінде процедураны шақыру операторы орналасады.
Процедураны шақыру операторының жазылу үлгісі:
Процедура аты (нақты параметрлер тізімі);
Мысал47. АВСDЕ бесбұрышының қабырғалары АВ=m, BC=n, CD=r, DE=t, EA=q, диагоналдары AC=u, AD=v. Үшбұрыш ауданын табуға арналған GERON процедурасын қолданып, бесбұрыштың ауданын табыңдар.
Program Audan; {негізгі программа}
Var m, n, r, t, q, S1, S2, S3, Z:real;
Procedure GERON (a,b,c:real; Var S:real);
Var P:real; {P-жергілікті айнымалы}
begin {процедура басы}
P:= (a+b+c)/2;
S:=sqrt(P*(P-a)*(P-b)*(P-c))
end; {процедура соңы}
begin {негізгі программа басы}
readln(m, n, r, t, q, u, v);
GERON(m, n, u, S1);
GERON(r, u, v, S2);
GERON(t, q, v, S3);
Z:=S1+S2+S3;
Writeln(‘Бесбұрыштың ауданы’, Z)
end. {негізгі программаның соңы}
Көрсетілген мысалда P-жергілікті айнымалы m, n, r, t, q, u, v -нақты параметрлер, a, b, c -формальды параметрлер. GERON процедурасы негізгі программада 3 рет шақырылады.
Функция
Процедураны қолдана отырып бірнеше нәтиже алуға болады. Бір ғана функция мәнін есептейтін ішкі программаны Паскальда функция деп атайды.
Функцияның жазылуының жалпы түрі:
FUNCTION функция аты (формальды параметрлер аты:типі):нәтиженің типі;
begin
функция денесінің операторлары
end;
Функция нәтижесі функция атымен бірдей болуы керек.
Функцияны шақыру операторының жазылу үлгісі:
Нәтиже:=функция аты (нақты параметрлер);
Мысал48: Екі натурал санның ең үлкен ортақ бөлгішін табу функциясын қолданып (ЕҮОБ), 4 натурал санның ең үлкен ортақ бөлгішін табыңдар.
Program m1;
Var a, b, c, d, M1, M2, M:integer;
FUNCTION EYOB(x, y:integer):integer;
begin
While x<>y do
If x>y then x:=x-y then y:=y-x;
EYOB:=x {функция нәтижесі}
end;
begin
readln(a, b, c, d);
M1:=EYOB(a, b);
M2:=EYOB(c, d);
M:=EYOB(M1,M2);
Writeln(‘4 санның ЕҮОБ-і=’, M)
end.
Қарастырылған мысалда функцияның аты мен функция нәтижесінің аты бірдей (EYOB). х, у-формальды параметрлер, a, b, c, d-нақты параметрлер.
Мысал49. n!-ды табу функциясын қолданып, бастапқы 5 жұп натурал санның факториалдарын табыңдар.
Program m2;
Var i, n: integer; m:longint;
FUNCTION Fak (n:integer):longint;
var j:integer; p:longint;
begin p:=1;
for j:=1 to n do
p:=p*j;
Fak:=p; {функция нәтижесі}
end;
begin
i:=2;
while i<=10 do begin
m:=Fak (i); writeln(i, ‘!=’,m); i:=i+2;
end;end.
CRT модулі.
Мәтіндік режимді басқару
мен функциялары
CRT модулінде экранды, клавиатураны және дыбыстық динамиканы басқаратын процедуралар мен функциялар жинақталған. CRT- “электронды сәулелік түтікше” сөзінің ағылшыншасынан қысқартылып алынған. Бұл модульде жинақталған экранға шығару процедурасы мәтіндік жұмыс режиміне жатады. Мәтіндік режимде экран өрісі жолдар мен бағандарға бөлінген. Өрістің әр позициясына ASCII кодтар кестесінің бір ғана символын жазбаға болады. DOS негізінде жұмыс жасағанда қандай да бір белгілі мәтіндік режим орнатылады. Жаңа мәтіндік режимді орнату
TEXTMODE ( n ) процедурасы арқылы жүзеге асады.
Мұндағы бүтін санды n аргументі мәтіндік режимнің типін анықтайды. Оның мәндері кестеде көрсетілген.
Монитордың мәтіндік режимін орнатудың TEXTMODE процедурасының режим коды 3- кестеде көрсетілген.
Кесте 3. Мәтіндік режим түрлері Тұрақтының аты |
Мәні |
Монитор |
Адаптер |
BW40 |
0 |
40x25 ақ-қара |
CGA |
CO40 |
1 |
40х25 түрлі-түсті |
CGA |
BW80 |
2 |
80х25 ақ-қара |
CGA |
CO80 (С80) |
3 |
80х25 түрлі-түсті |
CGA |
Mono |
7 |
80х25 ақ-қара |
MDA HGC |
Font8x8 |
256 |
40-/50 line mode |
EGA/ VGA |
Орнатылған мәтіндік режим мәнін байт типті, LASTMODE айнымалысы арқылы алуға болады.
LASTMODE- ағымдық мәтіндік режимді анықтайтын айнымалы.
80 баған және 50 жолдан тұратын ұсақ шрифтылы экран қолдануға да болады.
С80+Font8х8=3+256=259
Жаңа мәтіндік режим орнатқан кезде экран тазарады, және курсор экранның сол жақ жоғарғы бұрышына орналасады.
Экранды тазарту үшін CRT модулінде анықталған ClrScr процедурасы қолданылады. (Clear Screen- экранды тазарту)
Келесі программа С80 тұрақтысы арқылы анықталған мәтіндік режим мен ұсақ шрифтылы режимнің айырмашылығын көрсетеді.
Мысал70.
Program pr1;
Uses CRT; {CRT- модулін іске қосу }
Var n: word;
{n- ағымдық мәтіндік режимді
i: byte;
begin
{кең қолданылатын мәтіндік режимді орнату}
TextMode(C80);
n:=LastMode;
{ағымдық мәтіндік режимді
for i:=1 to 10 do
Writeln(‘Informatika’); {10 рет сөз шығару}
Readkey; {кез-келген перне басылуын күту}
TextMode(C80+256); {ұсақ шрифтылы режимге өту}
for i:=1 to 10 do
Writeln(‘Информатика’);
Readkey;
TextMode(n) {C80 негізгі мәтіндік режимге көшу}
End.
Бұл программада қолданылған Readkey функциясы да CRT модулінде анықталған. Ол CRT модулінің клавиатураны басқару функциясы болып табылады және кез-келген перненің басылуын күту әрекетін атқарады. Бұл функцияның нәтижесі char типті болады.
Мысал71. Программа кез-келген перненің басылуын күтеді. Егер ENTER пернесі басылса «Дұрыс», әйтпесе «Қате» хабарламасын шығару қажет.
Var k: integer;
Begin
Writeln(‘Енгізу пернесін бас’);
k:= readkey;
if Ord(k)=13 then Writeln(‘Дұрыс’) else Writeln(‘Қате’)
end.
Ord- енгізілген символдың ASCII кодын табатын функция.
13- ENTER пернесінің коды.
Мәтіндік режимдегі координата. Түстерді басқару
Экранға мәтін шығару курсордың ағымдық позициясынан басталады. Жолдар мен бағандар нөмірленген. Курсор орналасқан баған нөмірін WhereX, ал жол нөмірін- WhereY функциясы арқылы алуға болады. Сонымен, Х және У сандар жұбы курсор координатасы болып табылады. Х осі горизонталь, ал У осі вертикаль бағытта орналасқан.
GotoXY(X, Y) процедурасы курсорды координатасы Х, У нүктеге орналастырады. Мәтіндік экранда символға және экран фонына әр түрлі түс орнатуға болады.
TextColor(түс) процедурасы арқылы символ түсі таңдалады.
TextBackground(түс) процедурасы экран фонының түсін орнатады.
Мәтіндік режимде символ және фон түсінің келесі тұрақтылары қолданылады (4-кесте).
Кесте 4. Түс кодтары Коды |
Түс |
Коды |
Түс |
0 |
black (қара) |
8 |
darkGray (күңгірт сұр) |
1 |
blue (көк) |
9 |
lightBlue (ашық көгілдір) |
2 |
green (жасыл) |
10 |
lightGreen (ашық жасыл) |
3 |
cyan (циан) |
11 |
lightCyan (ашық циан) |
4 |
red (қызыл) |
12 |
lightRed (ашық қызыл) |
5 |
magenta (күлгін көк) |
13 |
lightMagenta (ашық күлгін) |
6 |
brown (қоңыр) |
14 |
yellow (сары) |
7 |
lightGray (ашық сұр) |
15 |
white (ақ) |
Мысал72. Экран ортасына “Информатика ” сөзін шығарып, оны әртүрлі түске бояу программасы.
Uses Crt;
Var c: byte; {с- түс коды}
Begin clrscr;
For c:= 0 to 15 do
Begin
Textcolor( c );
GotoXY(40, 13);Write(‘Информатика’);
Delay(5000);
end;
End.
Delay(N) процедурасы экрандағы көріністі N миллисекунд ұстап тұруды жүзеге асырады. (delay- кідіріс). 1 мсек=1/1000 сек. N мәні 0 мен 65535 аралығындағы бүтін сандарды қабылдайды. Көрсетілген мысалда әр түске боялған сөз 5 секунд кідірістен кейін шығып тұрады. Бұл процедураның көптеген пайдалы жақтары бар. Мысалы, экранға көп мәліметтер шығаратын программаны орындатқан кезде нәтиженің бас жағындағы мәліметтер өте тез көрініп өтіп кетеді де, экранда оның соңғы экранға сиятын бөлігі ғана көрінеді. Сондықтан delay процедурасы арқылы нәтижені кідіріспен шығаруға болады. Ол программа нәтижесін асықпай қарап, талдауға септігін тигізеді.
Мысал73. 0-ден 255- ке дейінгі бүтін сандарды және оған сәйкес ASCII кодтар кестесіндегі символдарды экранға шығаратын программа.
Uses Crt;
Var i:integer;
Begin
Textcolor(4); {символға қызыл түс орнату}
For i:=0 to 255 do
Begin
Writeln(i, chr(i) );
Delay(10000);
end {10 секунд кідіріс орнату}
End.
Мысал74. Экранның жоғарғы жағын көк түсті жұлдызша символымен (*) безендіру программасы.
Uses Crt;
Var X,Y: byte;
Begin
X:=5; Y:=5; TextColor(1);
While X<= 75 do
Begin
GotoXY(X, Y); Write(‘*’);
X:=X+3;
End;
End.
Мысал75. Кездейсоқ сандар шығару функциясын қолданып, экранда “жұлдызды аспан” бейнесін жасау программасы.
Uses Crt;
Var i, Х, Y: byte;
Begin clrscr;
Randomize;
For i:= 1 to 500 do
Begin
X:=random(79)+1;
Y:= random(24)+1;
GotoXY(X, Y); Write(‘*’);
End
End.
Программа нәтижесінде экранға кездейсоқ координаталы ақ түсті 500 жұлдызша шығады.
Мысал76. Берілген сөзді экранның сол жағынан оң жағына қарай қозғалтатын программа.
Uses Crt;
Var X,Y:byte;
Begin
X:=10; Y:= 10;
While X<=80 do