Begin
<процедура денесi>
End;
Function <идентификатор>[(<формаль параметрлер тiзiмi>:<тип>)]:<нєтиже типi>;
Begin
<функция денесi>
End;
Мысалдар:
Procedure Swap (var x,y:real);
Procedure Stop;
Function Max (a,b: byte): byte;
Iшкi программа денесi.
А
В Бiрiнiњ iшiне бiрi енетiн
С iшкi программалар.
D
E
Параметрлер тiзiмiнiњ жазылу ‰лгiсi:
(<идентификатор1>:<параметр типi>; var <идентификатор2> [,<идентификатор3>] :<параметр типi>);
М±ндаѓы, идентификатор1 -парметр мєн, ал идентификатор2 немесе3- параметр айнымалылар болып табылады.
Параметр типiнiњ жазылу ‰лгiсi тµмендегi схемада берiлген:
типтiњ
идентификаторы
String
File
Мысалдар: Function MaxElem (A: Vector; n: byte): real;
Procedure Sum (A,B: Matrix; Var C: Matrix);
Procedure Move ( Var Sourse, Dest; n:word);
Формальды параметрлер типтерi идентификатормен белгiленуi керек. Сондыќтан, тµмендегi процедура таќырыбы д±рыс жазылмаѓан:
Procedure InCorrect ( var A: array [1..1.] of Gyte);
Д±рысы: type
MyArray= array [1..1.] of Gyte;
…
Procedure Correct ( var A: MyArray)
1. Параметр-мєндер. Параметр-мєндер - б±л параметрдi беру т‰рi болып табылады. Параметр-мєн процедураны ќолдану кезiнде негiзгi программадан немесе басќа процедурадан ќолданылатын процедураѓа берiледi де, осы процедураныњ орындалу нєтижесiнде керi ќайтарылмайды.
Мєнi бойынша беру ќолданылѓан процедура мысалын ќарастырайыќ:
Procedure SumSquare (x,y:real);
begin
x:=x*x;
y:=y*y;
writeln (| квадраттар ќосындысы =; x+y)
end;
Б±л процедураны шаќыру мысалы тµмендегiдей болады:
Var
A,B:real;
begin
A:=1,7;
B:=8.09;
SumSquare (A,B);
…
2. Параметр–айнымалылар.
Параметр-айнымалылар - б±л параметрдi алу т‰рi болып табылады. Параметр-айнымалы процедураны ќолдану кезiнде негiзгi программада ќолданылатын процедураныњ орындалу нєтижесiнде керi ќайтарылады.
Мысал ќарастырайыќ:
Procedure draft1 (x,y : real);
Var
Sum, Sub: real;
begin
Sum:=x*x+y*y;
Sub:=x*x-y*y
end;
Есептiњ шешiмi бола алмайды, себебi, Sum,Sub– локальды айнымалылар, олар процедура ж±мысынан кейiн жойылып кетедi.
Procedure Draft2( x,y: real; Sum,Sub: real);
begin
Sum:=x*x+y*y;
Sub:=x*x-y*y
end;
Егер осы процедураны шаќырсаќ, ќалай болады:
Var
A,B: real;
Sum AB, SubАВ: real;
begin
A:=1.7;
B:=8.09;
Draft2 (A,B, SumAB, SubАB);
Sum,Sub Draft2-де локальды айнымалылар, сондыќтан
SumAB жєне SubАВ айнымалыларымен мєндердi алу
ешнєрсе бермейдi. Б±л жерде процедура таќырыбында айнымалыларды сиппаттау бµлiмiн ќолдану ќажет.
Procedure SumSub(x,y: real; var Sum, Sub:real);
begin
Sum:=x*x+y*y;
Sub:=x*x-y*y
end;
Осы процедураны шаќыру мысалын ќарастырайыќ:
var
A,B: real;
SumAB, SumAB: real;
begin
A:=1.7;
B:=8.09;
Sum Sub (A,B, SumAB,SubAB);
мысал :
Procedure Swap(var x,y:byte);
Var
T:byte;
begin
T:=x;
X:=Y;
Y:=T;
end;
Процедураны шаќыру тµмендегiдей iске асырылады:
Swap(A,B).
Функцияныњ мєнiн есептеу, iшкi программаны аяќтау.
Function Max(A,B: integer): integer;
begin
if A>B then
Max:=A
else
Max:=B
end;
Мах функциясы былайша ќолданылуы м‰мкiн:
М:=Max(A-B,A+B)+2*Max(A*B,A mod B);
Турбо Паскаль iшкi программасыныњ орындалуын кез–келген жерiнен тоќтату (‰зу) м‰мкiндiгi бар (ол тiлдiњ стандарт т‰рiнде жоќ): ж‰йелiк процедура Exit-тiњ беретiн м‰мкiндiгi.
Ќолдану мысалы:
Procedure P( x,y: real; var Res: real);
begin
if x-y<0.0001 then Exit;
Res:=(x*x+y*y)/(x*x-y*y)
end;
Iшкi программаларды алдын-ала жєне сыртќы сипаттау мысалдары:
Procedure Jn(x,y: real);
begin
jk (1,2)
…
end;
procedure Jk (a,b: integer); трансляция кезiнде ќате аламыз.
begin
Jn (0.5,0.6)
…
end;
Procedure Jn(x,y: real); forwаrd;
Procedure Jk (a,b: integer); forwаrd;
Procedure Jn;
Begin
…
Jk (1,2)
…
end;
Procedure Jk;
Begin
…
Jn(0.5,0.6)
end;
Кµрсетiлген трансляциялыќ ќате типтердiњ сєйкессiздiгiне байланысты.
Тақырып. Рекурсивті ішкі программалар
Тақырып. Символдық және жолдық мәндер
Паскальда жолдық (string) тип пайдаланылады. Жол белгілі бір символдар тізбегі. Өрнектерде жол екі жағынан апострофқа алынып жазылады. Жолдық символдар саны 0-ден 255 дейінгі аралықта жатады. String типті айнымалыны тип бөлігінде сипаттау арқылы немесе бірден айнымалылар бөлігінде сипаттауға болады.
Жазылуы:
Type <типтің атауы>= string[жолдың ең үлкен ұзындығы]
Var<айнымалы>:<типтің атауы>;
Var<айнымалылар>: string[жолдың ең үлкен ұзындығы];
Символдыќ жолдар процедуралары жєне функциялары
Жолдыќ процедуралар параметрлерi ‰шiн стандарт емес синтаксис ќолданылады.
delete процедурасы.
Жазылу ‰лгiсi:
delete(var S: string; pos,Len: integer);
S символдыќ жолынан Len символды pos– символынан бастап жояды. Егер LenS ±зындыѓынан, онда ешнєрсе µзгермейдi, егер POS+ Len сиволдыќ жол ±зындыѓынан, онда ±зынныњ аяѓына дейiнгi барлыќ символдар жойылады.
2. insert процедурасы.
Жазылу ‰лгiсi:
insert (S: sting; varD: sting; pos: integer);
S ±зын D ±зынына POS – нµмiрлi символынан бастап ќояды.
Str процедурасы.
Жазылу ‰лгiсi:
Str( I:integer; var S:string);
Str (R: real; var S: string);
I немесе R– саннан жолѓа т‰рлендiредi жєне S – жолына жазады, R жєне I форматты т‰рде жазылады, яѓни write жєне writeln процедурасында.
Ескерту. Str процедурасы, программада write жєне writeln функциялары арќылы шаќырылатын функцияларѓа кiрмеуi керек.
Val процедурасы.
Жазылу ‰лгiсi:
Val (S: string; var R:real; var P: integer);
Val (S: string; var I,P: integer);
Val символдыќ жол айнымалысы S – тi санѓа т‰рлендiрудi бiлдiредi (типi I немесе R айнымалы типiне сєйкес болады). Егер S сиволдыќ жолында ќате жоќ болса, Р:=0 , єйтпесе R (немесе I) аныќталмаѓан, ал Р–ѓа бiрiншi ќате символдыњ нµмiрi меншiктеледi.
Concat функциясы.
Жазылу ‰лгiсi:
Concat (S1,S2,…Sn: string): string;
S1,…Sn жолдарынан конкатенация нєтижесiнде алынѓан жолды ќайтарады. Егер нєтиже ±зындыѓы 255–тен ‰лкен болса, онда орындау уаќытыныњ ќатесi болады.
Copy функциясы болады.
Жазылу ‰лгiсi:
Copy(S:string; Pos,Len:integer): string;
S символдыќ жолынан POS символынан бастап Lеn символдан т±ратын ±зынды ќайтарады.
Егер Pos S ±зындыѓынан ‰лкен болса, онда бос жол ќайтарылады. POS+Len S символдыќ жолыныњ ±зындыѓынан ‰лкен болса, онда S ±зындыѓына жататын символдар ѓана ќайтарылады.
7. length функциясы.
Жазылу ‰лгiсi:
length(S:string): integer;
S символдыќ жолыныњ ±зындыѓын ќайтарады.
Pos функциясы.
Жазылу ‰лгiсi:
Pos (Pattern, Soursе: string):integer;
Pattern ќай символдан бастап Sourse–ќа кiредi, сол символдыњ нµмiрiн ќайтарады.
Файлдармен ж±мыс iстеуге арналѓан функцияларды процедураларды жєне т.б. функциялармен функцияларды келесi таќырыптарда ќарастырамыз.
Тақырып. Массивтер
Массивтер.
Регуляр типтердi аныќтау ‰шiн:
массив элементтерiнiњ типтерiн;
элементтердiњ саны мен нµмiрлену т‰рiн;
сипаттама индекстiњ типiн кµрсету ќажет.
Регуляр типтi сиппаттаудыњ жалпы т‰рi:
type
A=array [ T1] of T2;
м±ндаѓы
array, of – ќызметшi сµздер,
Т1– массив индексiнiњ типiн аныќтайды.
Т2– массив м‰шелерiнiњ типiн аныќтайды. Программада б±л типтiњ идентификаторы айнымалылар сипаттамасында ќолданылуы м‰мкiн.
Мысалдар:
type
M1 = array [1..100] of real,
Matrix= array [1..10,1..20] of integer;
DataBase= array [1..MaxF] of file of Person;
Var
Vector: M1;
SumTable: M2;
Arr1, Arr2: Matrix;
Turbo Pascal тiлiнiњ басќа тiлдерден айырмашылыѓы: массив элементтерiнiњ саны т±раќты болу керек. Ерекшелiктерi: массив элементтерiнiњ санын беру ‰шiн тип ќолданылады. Элементтер саны м‰мкiн болатын кµрсетiлген типтi мєндер санымен аныќталады.
Var
V2: array [ 1..10] of array [1..20] of byte;
Б±л сиппаттаманы 1-шiден, бiрнеше массивтерден т±ратын массив; 2-шiден екi µлшемдi массив (матрица) сиппаттамасы деп ±ѓуѓа болады. Б±л мысалдыњ эквивалентi тµмендегiдей жазылады:
Var
V2: array[ 1..10,1..20] of byte;
Б±л типте индекстер саны шектелiнбейтiндiгiн ескеру керек.
Типтiњ жазылу ‰лгiсi:
Array [<1-шi индекс т‰рi>,<2-шi индекс т‰рi>…,] of <тип>;
Массивтерге ќолданылатын амал:
Vect1:=Vect2,
м±нда екi массивте бiрдей типтi болу керек.
Массив элементтерiнiњ ќолданылу т‰рлерi:
Vector [1] V2[i,j]
V2[3,7] Vector [(i+1)*2]
V2[K] V2[K] [5]–осы массивтiњ 5 –шi элементi дегендi бiлдiредi, ќысќаша жазылуы: V2[K,5].
Массив элементтерi айнымалы болyы да м‰мкiн:
V[i,j]:= V[i,j-1]+7;
SymTable [‘z’]:=switch and SymTable [ ‘a‘]
Символдыќ массивтер.
Жазылу ‰лгiсiне мысалдар:
1) Var
S: array[ 1..13] of char; –символдыќ жол– массив.
2) S2: = ‘жол мысалы’
Koнкатенация амалы.
Koнкатенация амалы - символдыќ жолдарды бiр-бiрiне тiркестiру, басќаша айтќанда ќосу амалы –деп, аталады. Ќосу тањбасы ( + ) амалдыњ белгiсi болады.
Мысал тµмендегiдей сиппаттама бµлiмi бар болсын:
var
S1: array [1..5] of char;
S2: array [1..6] of char;
онда келесi жазулар орынды болады:
S1:= ” жолды”
S2:= “массив”
WRITELN (S1+ “ ”+S2);
Осы программа ‰зiндiсi орындалу нєтижесiнде алатынымыз: жолды массив
S:=S1+ ‘ ‘ +S2 – меншiктеу программада орын алса, онда б±л программаны компиляциялау кезiнде ќате шыѓады. М±нда, ±зындыѓы айнымалы болатын жолдарды ќолдану керек.
Ќате беретiн жаѓдайларды кµрсетейiк:
Var
Vector: array [ 0..10] of real;
begin
Vector [ 11]:=0.75;
Б±л жаѓдайда ќате индекске байланысты: сиппаттама бµлiгiнде индекстiњ жоѓарѓы шекарасы 10 деп алынѓан, ал программа денесiнде 11-шi, яѓни индекстер диапазонына кiрмейтiн индекстi элементтi ќолданбаќ болѓанымыз д±рыс емес.
Vector[i]:=Vector[i-1]+i;
Б±л жаѓдайда ќате i, i-1 мєндерiне байланысты.
Тақырып. Массивті сұрыптау.
Бір типтес берілгендерден құралып, барлық элементтеріне бір ортақ атау берілген жиынды массив деп атаймыз. Массив құрылымдық типтер қатарына жатады. Массив элементтері нөмірленеді. Массивтің әрбір элементіне индексін көрсету арқылы жұмыс істеуге болады. Массивке мысал ретінде векторларды қарастыруға болады. Егер массивке кестелік берілгендер жазылса (матрица), онда элементтері екі индекс бойьшша нөмірленеді
Turbo Pascal программалау тілі бір өлшемді массивтермен қатар екі өлшемді және көп өлшемді массивтерді қолдануға мүмкіндік береді.
Екі өлшемді немесе көп өлшемді массивтермен жұмыс істеу үшін, олар сипаттау бөлімінде көрсетілуі тиіс.
Екі өлшемді массивті var бөлімінде сипаттаудың жалпы түрі;
var
Массив атауы : array [al..an,bl..bn] of элемент muni;
Екі өлшемді массивті type бөлімінде сипаттаудың жалпы түрі:
type
Массив типінің атауы = array [a1..an,b1..bn[ of элемент muni;
var массив атауы : массив типінің.атауы;
Мүндағы, al..an,bl..bn - екі өлшемді массивтің көлемі: а1 және an - массив қатарының алғашқы және соңғы мәні;
B1 және bn - массив бағанының алғашқы және соңғы
мәні.
Қолданылған әдебиеттер [1], [2], [4-7], [11-13], [15-19], [20], [25]
Тақырып. Пәндердің күрделі типі
Жиындыќ типтер.
Жиындыќ типтiњ мєнi бiр типтi мєндерден ќ±ралады, алайда массивтермен жазулардан ерекшелiгi, жиындыќ типтi мєн єрт‰рлi элементтердiњ кез келген санынан т±руы м‰мкiн. Жиындыќ тип set жєне of ќызметшi сµздерiмен берiледi.
Мысалы,
Type
Digit1=set of 1..5;
Var
К: Digit1;
К айнымалысы келесi б‰тiн сандар жиынынан т±руы м‰мкiн.
<бос>
1,2
1,2,3
1,5
1,3,4,5
3,4,5
……
1,2,3,4,5
Turbo Pascal тiлiнде жиындарда негiзгi типтер ретiнде 256 єрт‰рлi мєндер (б‰тiн сандар) 0-255, byte жєне char типтер, тiзбелi тип, шектелген типтердi алуѓа болады.
Мысалдар:
type
ElemColor=(Red,Yellow,Blue);
MyColor м‰мкiн мєндерi:
<бос жиын>
Color=set of ElemColor; Red
Var Yellow
MyColor: Color; Blue
[1,2,5] [1..3,5] [1,2,3,5] Red, Yellow
[ Red,yellow] Red, Blue
бос жиын Yellow, Blue
[1,2,3] Red, Yellow, Blue
[1,1,2,3] ‰шеуi де
[1,2,3,2,2,3,1] бiр жиынды бiлдiредi, себебi жиын–б±л ќайталанбайтын элементтер жиыны болып табылады.
Жиындыќ типтiњ жазылу ‰лгiсi:
type
<жиындыќ тип аты>=set of <элементтер типi>;
Жиынныњ кескiнi:
[<µрнек>..<µрнек>]
[<1µрнек>,<2µрнек>,..,<¿ µрнек>]
Мысалдар. Жиындарды сипаттау жєне кескiндеу мысалдары:
type
SeteofEhar=set of char;
Digits= set of 0..100;
Var
MyChars: set of char;
MyDig1,MyDig2: Digits;
begin
…
MyChars:=[‘a’..’z’, ‘0’..’9’,’-‘];
MyDig1=[];
MyDig2:=MyDig1;
MyDig1=[x..x+10,0,y-1,y+1]
…
Жиындыќ типтi объектiлерге ќолданылатын амалдар:
бiрiктiру;
ќилысу;
айыру.
А+В
бiрiктiру нєтижесiне жиынѓа А–ѓа жєне В–а
кiретiн элеметтер кiредi.
А*В
ќилысу нєтижесiне А–ѓа да В–ѓа да бiрдей
уаќытта жататын элементтер кiредi.
Достарыңызбен бөлісу: |