Ффсо пгу 18. 2/05 Қазақстан Республикасы Білім және ғылым министрлігі



бет2/3
Дата16.06.2016
өлшемі0.55 Mb.
#138820
1   2   3

Санақтық тип - ие болатын мәндерiнiң тiзiмiмен берiледi. Мәндер тұрақты болады және жақша iшiнде үтiрмен анықталып жазылады. Мәндердiң тiзiмi реттелген жиынды құрайды. Бiрiншi мәннiң реттiк нөмерi-ноль, екiншiнiкi-бiр, т.с.с.


Мысалы:

var


planeta:(mars, pluton, saturn, mercury);

kun:(1, 2, 3, 4, 5, 6, 7);

Бұл мысалдағы planeta, kun айнымаларының типi санақтық, себебi, айнымалыны сипаттау бөлiмiнде var резервтелген сөзiнен кейiн айнымалылардың қабылдайтын тұрақты мәндерi жақша iшiнде тiзiммен көрсетiлген. Planeta айнымалысы mars, pluton, saturn, mercury мәндерiне, ал kun айнымалысы 1, 2, 3, 4, 5, 6, 7 мәндерiне ие бола алады.

Жоғарыдағы мысал бойынша planeta, kun типтерiн жасасақ, олар былай сипатталады.



type planeta = ( mars, pluton, saturn, mercury);

kun = (1, 2, 3, 4, 5, 6, 7);

пайдаланушы жасаған осы типтер айнымалыны сипаттау үшiн былай қолданылады:

var p1, p2,p3 : planeta;

k1, k2 : kun; tys : (ak, kara, sary, kyzyl);

Бұл мысалда type сөзiнен кейiн пайдаланушы жасаған planeta, kun типтерi сипатталған, яғни, олардың мәндерi ретінде бiрнеше планета мен күндер номері анықталған.

Ал var сөзiнен кейiн p1, p2, p3 айнымалылары planeta типiмен, k1, k2 айнымалылары kun типiмен сипатталған. Яғни, p1,p2,p3 айнымалылары planeta типiнiң бiр мәнiне, ал k1, k2 айнымалылары kun типiнiң бiр мәнiне ие болады. Ал tys айнымалысы ak, kara, sary, kyzyl мәндерiнің бiріне ие болады
Аралықтық тип – берiлген айнымалының қабылдайтын мәндерiнiң төменгi және жоғарғы шегiн көрсететiн екi тұрақты шаманы анықтайды.
Тұрақтыларға қойылатын талаптар:

1. Тұрақтылар бiр типтi болу керек.

2. Типтер real-дан басқа кез келген скаляр болады.

3. Бiрiншi тұрақты екiншiден кiшi болу керек.



Мысал: type

kunder=1..31;

arip=’а’..’я’

var


d,a: kunder; l: arip

Kunder деген типтi пайдаланушы өзi жасады. Төменгi шегi 1, жоғарғы шегi 31, типтерi – byte. Осы типтегi d, a айнымалылары 1..31 аралығындағы мәндердiң бiреуiн қабылдайды. Сол сияқты, arip типiндегi l айнымалысы а..я аралығындағы әрiптердiң бiрiне ие болады.


Сұрақтар
1. Таңдау операторы қай кезде қолданылады?

2 Таңдау айнымалысы қандай қызмет атқарады?

3. Тандау операторынын жазылу форматы қандай?

4. Тандау операторынын орындалуын түсiндiр ?


5. Тандау операторын пайдалану ережелерi қандай


1. Стандарттық типтердi ата.

2. Пайдаланушының типтерi қай кезде қолданылады?

3. Санақтық тип қалай жазылады?

4. Аралықтық тип қалай жазылады?

6 зертханалық жұмыс Программалауға модульдық ыңғай.

Циклдер.
Теориялық бөлім
Параметрлi қайталану. Қайталанатын әрекеттердiң саны алдын-ала белгiлi болғанда For операторы пайдаланылады. Бұл оператор параметрлi қайталану деп аталады, себебi, қайталану саны параметр немесе басқарушы айнымалы деп аталатын айнымалының мәнiне байланысты болады. Бұл айнымалыда қайталану саны көрсетiледi. Қайталанатын әрекеттер цикл денесi деп аталады.

Жазылу форматы:

For <циклдiң параметрi>:= <s1> to <s2> do

<оператор>; { өсу ретімен }
For <циклдiң параметрi> := < s2> downto < s1> do <оператор>; { кему ретімен}

Мұндағы: s1, s2 - параметрдiң бастапқы және соңғы мәндерi;

For … do - циклдiң тақырыбы;

<оператор> –цикл денесi.

Цикл денесi жай немесе құрама оператор болуы мүмкiн.



For операторы мынаны анықтайды:

  • параметрдiң өзгеру аралығын және цикл денесiнiң қайталану санын;

  • параметр мәнiнiң өзгеруiн ( to-өсу, downto-кему);

FOR операторы параметр барлық мәндерiне ие болып бiткенше, цикл денесiнiң орындалуын қайталауды тоқтатпайды.

Егер s2>s1 болса, цикл денесi (s2-s1+1) рет орындалады.

Егер s1>s2 болса, цикл денесi орындалмайды.
Алғы шартты цикл. Егер iс-әрекеттiң қайталану саны белгiсiз, бiрақ қайталану шарты белгiлi болса, онда while немесе repeat операторлары қолданылады.

While (әзiр) операторында қайталану шарты цикл денесiнен бұрын тексерiледi. Сондықтан while операторы алғы шартты цикл деп аталады.

Жазылу форматы:



While <қайталану шарты> do

<цикл денесi>

Қайталану шарты – бульдiк (логикалық) өрнек, цикл денесi - жай немесе құрама оператор. Цикл денесi орындалудан бұрын шарттағы өрнектiң мәнi анықталады. Егер ол мән true болса, цикл денесi орындалады. Шарттық өрнектiң мәнi тағы да анықталады, егер нәтижесi false болса циклдың жұмысы аяқталып, while-ден кейiнгi бiрiншi оператор орындалады.


Кейiнгi шартты цикл. Циклдің бұл түрінде:

  • қайталану шарты цикл денесiнен кейiн тексерiледi, сондықтан кейiнгi шартты цикл деп аталады.

  • қайталанатын iс-әрекеттер кем дегенде 1 рет орындалады.

  • шарттың нәтижесi true болғанда циклдiң орындалуы тоқтайды.

Жазылу форматы: repeat

<оператор;>

: {цикл денесi}



< оператор;>

until <циклді аяқтау шарты>;

Repeat және until сөздерiнiң арасындағы операторлар цикл денесi болады.

Кейiнгi шартты циклдiң орындалу тәртiбi: алдымен цикл денесi орындалады, одан соң циклден шығу шарты тексерiледi. Егер нәтиже false болса, цикл денесi тағы да орындалады, егер true болса, циклден шығады.

1-мысал: 999 саны енгiзілгенше бүтiн сандарды енгізе отырып, олардың қосындысын табу.

x: integer; sum: real;



begin

sum:=0;


repeat

write (‘х-тi енгiз’); readln(x);

if x<> 999

then sum:=sum+x;

until x=999;

writeln (‘сандардың қосындысы=’,sum); readln;

end.

Айнымалыларға түсiнiктеме:

х-енгiзiлетiн бүтiн сандар; sum-олардың қосындысы (real);

Бағдарламаның басында қосынды 0-ге теңестiрiледi. Одан соң repeat сөзiмен цикл ашылады. Цикл денесiнде “х-тi енгiз” сұрауымен х айнымалының мәнi енгiзiледi. If операторы ол санның 999-ге тең емес екендiгiн тексередi. Егер тең болмаса, Sum қосындысының мәнiне х саны қосылады. Циклдiң соңындағы until х=999 циклдiң аяқталу шартын тексередi. Егер х=999 болса, цикл аяқталады, until-ден кейiнгi оператор орындалады. Ол оператор

writeln (‘сандардың қосындысы=’,Sum); нәтиженi шығарады.

3-мысал: сан қатарының қосындысын табу.

Шешуi: Берiлген есепте параметрi 1-ден 20-ға дейiн 1 қадаммен өзгеретiн (бөлшектің алымы) цикл құрған дұрыс. Бөлімінде алымы мен оған келесі санның көбейтіндісі жазылады. Егер алымын і деп белгілесек, бөлімі і ∙ (і+1) түрінде болады.

program kosyndy;

var i:byte; s : real;

begin

s:=0;


for i:=1 to 20 do

s:=s+i/(i*(i+1)); { цикл денесi }

write (‘қосынды =’,s); writeln(y); readln;

end.
4-мысал: 10-нан 99-ға дейiнгi сандардың арасынан цифрларының қосындысы n-ге тең сандарды табу. (0

Шешуi: Мынадай айнымалыларды белгiлеймiз.

n- берiлген сан; p1- санның ондық разрядты цифрасы;

p2- санның бiрлiк разрядты цифрасы;

s- берiлген санның цифрларының қосындысы;

k -iзделiндi сан.
Program san_kosyndy;

var k,n,p1,p2,s : integer;

begin

writeln (‘бүтiн сан енгiз’); readln (n);  бүтiн санды енгiземiз 



for k:=10 to 99 do  10-нан 99-ға дейiнгi сандарды қарастырамыз

begin  цикл денесiнiң басы 

p1:=k div 10;

p2:=k mod 10;  бiрiншi, екiншi цифраны табамыз

s:=p1+p2;

if s=n then writeln (k);  егер қосынды n-ге тең болса,

end; берiлген k санын шығарамыз 

readln;


end.
Сұрақтар

1. Цикл дегенiмiз не?

2. Циклдi қолдануға мысалдар келтiр.

3. Параметрлi қайталану қай кезде қолданылады?

4. Параметр деген не?

5. Параметрлi қайталанудың жазылу форматы.

6. For операторының орындалуын түсiндiр.

7. Цикл денесi деген не?

7 зертханалық жұмыс Программалауға құрылымдық ыңғай.

Евклид алгоритмi
Теориялық бөлім
Евклид алгоритмi дегенiмiз, ол - терiс емес бүтiн екi санның ең үлкен ортақ бөлгiшiн (ЕҮОБ) табу алгоритмi.

х және у – бiр уақытта 0-ге тең емес, бүтiн, терiс емес сандар және ух болсын. Егер у=0 болса, онда ЕҮОБ(х,у)=х, ал егер у0 болса, онда х, у және r сандары үшiн, (мұндағы r дегенiмiз х:у-тiң қалдығы), ЕҮОБ(х,у)=ЕҮОБ(у, r) теңдiгi орындалады.

Мысалы, х=48, ал у=18 болсын.

ЕҮОБ(48,18)=ЕҮОБ(18,12) = ЕҮОБ(12,6) = ЕҮОБ(6,0) =6


1-мысал: Терiс емес екi санның ең үлкен ортақ бөлгiшiн (ЕҮОБ) табу бағдарламасы.

1-әдiс: Қалдықтар арқылы.

program algor_evklid;

var x,y: integer;

begin


writeln (‘ Екi санды енгiз’ ); readln(x,y);

repeat { циклдiң басы }

if x>y

then x:=x mod y { екi санның үлкенiн үлкендi кiшiге

else y:=y mod x; бөлгендегi қалдықпен ауыстыру}

until (x=0) or (y=0) ; { екi санның бiреуi 0-ге тең

болғанша, цикл орындалады }

writeln (‘ЕҮОБ= ’,x+y); readln; end.


2-әдiс: Айырма арқылы.

program algor_evklid;

var x,y: integer;

begin


writeln (‘ Екi санды енгiз’ ); readln(x,y);

repeat { циклдiң басы }

if x>y

then x:=x - y else y:=y - x; { екi санның үлкенiн



айырмамен ауыстыру }

until x=у; {екi санның тең болғанша қайталанады}

writeln (‘ЕҮОБ= ’,x); readln;

end.


Евклид алгоритмiн негiзге ала отырып, екi санның ең кiшi ортақ еселiгiн (ЕКОЕ) табуға болады. Формуласы: ЕКОЕ(х,у) = х*у/ ЕҮОБ(х,у).

8 зертханалық жұмыс Жолдар


Жол дегеніміз – ұзындығы 255-тен артпайтын символдар тізбегі. Тізбектің мағынасы болуы міндет емес. Мысал: ‘df56’, ‘*d-шар56‘, ‘*-4 лд’

Жолдар string жолдық типпен сипатталады. Жолдық типті анықтағанда ондағы символдар санын көрсетуге болады.



Жазылу форматы:

type

<типтің аты>=string [символдар саны];

var <идентификатор>: <типтің аты>;

String типтегі айнымалыны типті алдын-ала сипаттамай-ақ көрсетуге болады: var <идентификатор>:string[жолдың ұзындығы];

N символдан тұратын жолға жадыдан N+1 байт бөлінеді. N байт-символдарды сақтау үшін, ал бір байт – жолдың ұзындығын сақтау үшін.
Жолдық өрнектер. Олар жолдық тұрақтылардан, айнымалылардан, функциялардан және операция таңбаларынан тұрады. Мысал:’ма’+’ма’
Жолдық процедуралар мен функциялар



Аты, жазылуы

Қызметі

Ескерту

1. жою

delete(a,p,n)



a жолындағы р пози-циядан бастап, ұзындығы n символды жояды.

p<=255; нәтиже басқа айны-малыға меншіктелмейді.

2. кіргізу

insert (a,s,p)



a жолын s жолына р по-зициядан бастап кіргізеді.

нәтиже басқа айны-малыға меншіктелмейді.

3. типті ауыстыру

str(x,a)


x сандық шаманы жолға өңдеп, а-ға меншіктейді

х-ті шығару форматымен жазуға болады. Х сандық типте, а –жолдық типте.

4. типті ауыстыру

val(a,x,c)



a жолын сандық шамаға өңдеп, х айнымалыға орналастырады. А жо-лында бос символ болмау керек.

c-өңдеу нәтижесі, бүтін сан. Егер өңдеуде қате болмаса c=0 болады. А:string, х сандық типте, c:integer.

5.ұзындық

length(a)



a жолының ұзындығын табады.

Нәтижені айнымалыға меншіктеуге болады.

6. ретімен тіркестіру

concat(a,b,..s)



a,b,..s жолдарын сол ретімен тіркестіреді

-

7. белгілеу

copy (a,p,n)



a жолынан р позициядан бастап, ұзындығы n символды белгілейді.

егер p>length(a) болса, нәтижесі бос символ;

p>255 болса, қате.



8. позиция

pos (a,s)



a жолы s жолында нешінші позицияда тұрғанын табады.

егер a жолы s жолында болмаса, нәтиже=0

9.регистрді ауыстыру

upcase(ch)



кіші әріпті бас әріпке өзгертеді.

тек латын алфавитін ғана.


Мысалдар

Берілгені:

Қолданылған процедура, функция

Нәтиже

1.a:=’абвгде’

delete(a,4,2)

‘aбве’

2.s1:=’интика’

s2:=’форма’



insert(s2,s1,3)

‘информатика’

1.var x:integer;

a:string;

-------------

x:=72584



str(x,a)

str(-x:7,a)



‘72587’

‘-72584’


2.var a:string;

cod:integer;

---------------

a:=’25’;


a:=’14.2Е+2’;

a:=’14.2’


val(a,x,cod)

val(a,x,cod)

val(a,x,cod)


cod=0


cod=0

cod=5


3.st:=’1237’

st:=’klassio’



length(st)

length(st)



4

7


4.a1:=’ ab’;

a2:=’cd’;

a3:=’ej’


concat(a1,a2,a3)

concat(a1,’nm’,a2)



‘abcdej’

‘abnmcd’


5.st:=’abcdefjk’

copy(st,2,4)

copy(st,5,7)



‘bcde’

‘efjk’


8.a1:=’abcdef’;

a2:=’def’;



pos(a2,a1)

pos(‘e’,a2)

pos(‘k’,a1)


4

2

0



9.Ch:=’d’

A:=’x’


UpCase(Ch)

UpCase(A)

UpCase(‘a’)


‘D’

‘X’


‘A’


1-мысал. Енгізілген сөздегі ‘a’ әріптерін санау, ‘b’әрпіне ауыстыру.

1- әдіс: Алгоритм:

1.Сөзді енгізу.

2.Сөздің бірінші әрпін белгілеу.

3.Белгіленген символды ’a’ символымен салыстыру.

4.Егер сәйкес болса, санауышты бірге арттыру, сол символдың орнына ’b’ символын қою;

5.Осылайша барлық символдарды қарастыру.



Бағдарлама.

program sanau;

var s:string; n,l,i:byte; {n-‘a’әрпін санауыш }

begin


n:=0; readln(s); l:=length(s); { l сөздің ұзындығы}

for i:= 1 to l do

if copy(s,і,1)=’a’ {кезектегі әріпті белгілеп,

then ’a’ әрпімен салыстыру}

begin

delete (s,і,1); insert(‘b’,s,i);

n:=n+1; { а әрпін санау}

end;


writeln (‘сөзде,’n,’ a әрпі бар’);

end.


2-әдіс. Алгоритм:

1.Сөзді енгізу.

2. ’a’әрпін санайтын санауыш енгізу.

3.Сөздегі ‘a’әрпі тұрған позицияны тауып, сол орынға ‘b’ әрпін жазу.

4.Сөздегі барлық позициялар үшін 3 пунктті қайталау.

5.Нәтижені шығару.



Бағдарлама.

program sanau;

var

s:string; n:byte;



begin

write (‘сөзді енгіз’); readln(s); n:=0;

while pos (‘a’,s)>0 do

begin


n:=n+1; s[pos(‘a’,s)]:=’b’;

end;


writeln (‘сөзде’,n,’ a әрпі бар’);

end.


6 тақырып. Ішкі бағдарламалар: процедуралар және функциялар
9 зертханалық жұмыс Процедуралар
Процедураныњ сипаттамасы процедураныњ таќырыбынан жєне денесінен т±рады.

Процедураныњ таќырыбы procedure деген резервтелген сµзден, процедураныњ атын білдіретін идентификатордан жєне жаќшаѓа алынып, типтері кµрсетілген формальді параметрлер тізімінен т±рады. Процедура денесі бағдарламалыќ блоктан т±рады.



Процедураныњ жалпы т‰рі:

procedure <аты>[(формалдыќ параметрлер тізімі)];

сипаттама бµлімі

begin


операторлар бµлімі

end;
Процедура µздігінен орындалмайды. Ол аты бойынша негізгі бағдарламадан шаќырылады. Шаќыру жолында оныњ фактілік (наќты) параметрлері кµрсетіледі.

Фактілік жєне формальдыќ параметрлердіњ арасында мынадай сєйкестік болу керек:

● саны бірдей;

типтері бірдей;

● жазылу реті бірдей;

Формальдыќ параметрлердіњ мынандай т‰рлері болады:

- параметр – мєндер;

- параметр – айнымалылар;

Параметр – мєндер. Параметр – мєндер негізгі бағдарламадан ішкі бағдарламаѓа мєндерді беру ‰шін ѓана ќолданылады, процедура нєтижесі негізгі бағдарламаѓа ќайтарылмайды. Параметр – мєндер фактілік мєндерге ешќандай ыќпал жасамайды.
1-мысал: тµрт санды екі-екіден ж±птап, квадраттарыныњ ќосындысын табу.

Б±л мысалда параметр – мєндер ќолданылады. Берілген сандар 2,5 пен 3,1; -7,2 жєне 5,3 болсын.

program mander;

var k, z, x, y: real;

procеdure sum_kv(a, b:real); {а, b формальдық параметрлер}

begin {процедура денесі}

a:=a*a; b:=b*b;

writeln(’квадраттар ќосындысы=’, a+b);

end;

begin {негізгі бағдарлама денесі}



х:=2.5; у:=3.1;

sum_kv (x,y);

z: = -7.2; k:=5.3;

sum_kv (z,k);

readln;

end.
Бағдарламаѓа т‰сініктеме



X, y, z, k - негізгі бағдарламадаѓы фактілік параметрлер. Олар негізгі бағдарламада сипатталады.

Sum_Kv процедурасында екі санныњ квадраттыныњ ќосындысы экранѓа шыѓарылады; а мен b - процедурадаѓы формальді параметрлер.

Процедура х, у параметрлерімен шаќырылѓанда а=2.5 жєне b=3.1 мєндеріне ие болады да, олардыњ квадраттарыныњ ќосындысы есептеледі.

Экранѓа мынандай хабарлама шыѓады:



2.5 жєне 3.1 квадраттарыныњ ќосындысы

Бағдарлама ж±мысы процедурадан шыѓып, негізгі бағдарламаныњ орындалуы жалѓасады. z пен k-ныњ мєндері меншіктеледі. Процедура енді z, k параметрлерімен шаќырылады.

А=-7.2, b=5.3 мєндеріне ие болады. Енді осы екі санныњ квадраттарыныњ ќосындысы есептеледі.

Экранѓа мынандай хабарлама шыѓады :



-7.2 жєне 5.3 квадраттарыныњ ќосындысы

процедура ж±мысы аяќталып, негізгі бағдарламаѓа оралады, негізгі бағдарлама ж±мысын аяќтайды.


Бағдарламаныњ орындалу тєртібі

1. Негізгі бағдарламадаѓы айнымалылар сипатталады.

2. X, Y параметірлерімен Sum_Kv процедурасы шаќырылып, процедура орындалады, болѓан соњ негізгі бағдарлама жалѓасады.

3. Z, K параметрлерімен Sum_Kv процедурасы шаќырылып, процедура орындалады, болѓан соң негізгі бағдарламаѓа оралады.

4. Негізгі бағдарлама ж±мысын аяќтайды.
Параметр–айнымалы. Параметр – айнымалылар процедураныњ нєтижесін негізгі бағдарламаѓа єкелу (ќайтару) ‰шін ќолданылады.

Параметр–айнымалылар негізгі бағдарламадаѓы фактілік параметрлерге ыќпал етіп, оларды µзгерте алады.


2-мысал. Санныњ дєрежесін табуды процедура етіп алып, у=a4*x4+a3*x3+a2*x2 мєнін есептеу бағдарламасын ќ±ру. М±ндаѓы, а4, а3, а2,х – клавиатурадан енгізіледі.
program kosindi;

var x, a4, a3, a2, y, s,:real

procedure dareje (a: real; n: byte; var d: real);

var i:byte;

begin {процедура денесі}

d:=1;


for i:=1 to n do

d:= d * a

end;

begin {негізгі бағдарламаның денесі}



readln(x, a4, a3, a2);

dareje(x,4,s); y:=s*a4;

dareje(x,3,s); y:= y +s*a3; dareje(x,2,s); y:=y+s*a2;

writeln (‘y=’, y); readln;

end.

Бағдарламадағы процедураѓа сипаттама. Процедура Dareje деп аталады. Онда а саныныњ n дєрежесі есептеліп, нєтижесі d-ѓа меншіктеледі. A,n,d- формальдыќ параметрлер. Дєреженіњ нєтижесі d негізгі бағдарламаѓа ќайтарылатындыќтан var d:real сипаттамасы жазылады. і-формальдыќ параметр емес, сондыќтан ол процедураныњ сипаттама бµлімінде жазылѓан.

Процедура денесінде а саныныњ n рет кµбейтіндісі есептеледі, а мен n-ніњ мєндері негізгі бағдарламадан беріледі.



Негізгі бағдарламаѓа сипаттама. Негізгі бағдарламада ќолданылатын фактілік параметрлер: х, а4, а3, а2, у, s; у-нєтиже, ал s-санныњ дєрежесініњ нєтижесі.

х, а4, а3, а2-мєндері клавиатурадан енгізіледі.

х4, s-параметрлерімен dаreje процедурасы шаќырылады.

Процедурадаѓы a=x, n=4 мєндеріне ие болып, х-тіњ 4 дєрежесі есептеледі. Нєтижесі S параметрімен негізгі бағдарламаѓа ќайтарылады, яѓни s:=d болады.

Негізгі бағдарламада y:=s*a4 мєні есептеледі.

x,3,s параметрлерімен процедура таѓы да шаќырылады, яѓни a=x, n=3 мєндерінде х-тіњ 3 дєрежесі есептеледі. Нєтижесі, яѓни d–ныњ мєні s-ке меншіктеледі, s жања мєнге ие болады да, негізгі бағдарламада y:=y+s*a3 есептеледі. х, 2, s параметрлерімен процедура шаќырылып, іс-єрекет қайталанады.

10 зертханалық жұмыс. Функциялар.

Теориялық бөлім
Паскаль тілінде пайдаланушы стандарттыќ функциялардан басќа, µз функциясын аныќтай алады. Ондай функциялардыњ сипаттамасы функцияныњ таќырыбынан жєне функция денесінен т±рады.

Функцияныњ жазылуыныњ жалпы т‰рі:

Function аты(формальді параметрлер тізімі): нєтиженіњ типі;

сипаттама бµлімі

begin

функция денесі



end;

Функция негізгі бағдарламадан аты бойынша шаќырылады. Функцияѓа берілетін мєндер, ондаѓы формальдыќ параметрге сєйкес болу керек. Функцияныњ таќырыбында функцияныњ аты жєне типтері кµрсетілген формальды параметрлер тізімі жазылады. Тізім жаќшаѓа алынады. Жаќшаныњ сыртында функция нєтижесініњ типі жазылады.

Функция денесінде кем дегенде бір меншіктеу операторы функцияныњ атына мєн меншіктейтін болу керек!
3-мысал. Санның дәрежесін табуды функция етіп алып, z=(a5+a-3) / (2· am) – өрнегінің мәнін есептеу.

program z_funk;

var m: integer; a, z, r: real;

function dareje (n: integer; x : real): real;

var i: integer; y: real;

begin


y:=1;

for i:= 1 to n do

y:= y*x; dareje:= y;

end;


begin

readln (a, m);

z:= dareje (5,a);

z:= z+ dareje(3,1/a);

if m=0 then r:=1

else if m>0 then r:= dareje (m,a)

else r:=dareje (m,1/a);

z:= z/(2*r);

writeln ('a=',a, 'm=':10, m, 'z=':10, z);

readln; end.


Бағдарламадағы функцияға сипаттама. Функцияның аты dareje деп аталады. Бұл функция хn дәрежесін есептейді. N мен х- функцияның формальды параметрлері: n- дәреже көрсеткіші, типі integer; ал x n дәрежеге шығарылатын сан, типі real. Негізгі пограммаға қайтарылатын функцияның нәтижесі де нақты типті.

Функцияда формальды параметрлерден басқа, і және у айнымалылары сипатталған. i-қайталану санын білдіреді.

Y айнымалысы санды өз-өзіне і рет көбейтудің нәтижесін сақтайды. N-дәреже есептеліп болған соң, dareje функциясына y-тің мәні меншіктеледі.
Негізгі бағдарламаға сипаттама. Негізгі бағдарламада m,a,z,r айнымалылары сипатталады. m - дәреже көрсеткіші; a - берілген сан;

r - аn дәрежесінің нәтижесі; z - нәтиже.

Бағдарлама орындалғанда а және m мәндері клавиатурадан енгізіледі. z:=dareje(5,a) жолында 5 және а фактілік параметрлерімен dareje функциясы шақырылады.


    Функциядаѓы n жєне x параметрлері сєйкес мєндерге ие болады, яѓни n:=5, x:=a. a5 есептеліп, нєтижесі dareje айнымалысына меншіктеледі. Негізгі бағдарламаѓа оралѓан соњ, функцияныњ мєні z айнымалысына меншіктеледі.

    Z:=z+dareje(3,1/а) жолы орындалѓанда функцияныњ формальды параметрлері мына мєндерге ие болады. n:=3, x:=1/a; себебі, (a-n)=(1/an).

    Функцияныњ орындалуы алдыңѓыдай. Негізгі бағдарлама орындалѓан соњ, z мєніне dareje мєні ќосылады. Шарттыќ операторда n-ніњ мєні тексеріледі. Соныњ нєтижесіне байланысты r-ді аныќтайды. Атап айтќанда, егер m=0 болса, онда r:=1;

    егер m>0 болса, онда r:=am;

    егер m<0 болса, онда r:=(1/am);

    m,a параметрлерімен dareje функциясы шаќырылады, нєтижесі r-ге меншіктеледі. z:=z/(2*r) жолында z/(2*r) нєтижесі z-ке меншіктеледі.

    Нєтиже экранѓа шыѓарылады.

    Функциясы бар бағдарламаныњ орындалу тєртібі

    1.Негізгі бағдарламадан фактілік параметрмен функция шаќырылады.

    2.Функциядаѓы формальді параметрлер фактілік мєндерге ие болады.

    3.Функцияныњ нєтижесі аныќталады, функцияныњ атына мєн меншіктеледі.

    4.Негізгі бағдарламада функцияныњ мєні пайдаланылады.



Пайдаланылатын әдебиет: [2], 57-64 беттер; [1], 130-157 беттер;
7тақырып. Ақпаратты компьютердің сыртқы құрылғыларында көрсету
11 зертханалық жұмыс. Файлдар
Теориялық бөлім
Өте үлкен көлемді ақпараттарды сыртқы жадыда сақтау ыңғайлы. Мысалы, оқу орнындағы студенттер туралы, кітапханадағы кітаптар туралы, т.с.с. мәліметтер. Бұл ақпараттар бағдарламада файлдар арқылы пайдаланылады.

Файл дегеніміз сыртқы жадыда белгілі бір атпен сақталған деректердің жиыны.

Мәліметтерді файлдармен пайдаланудың себептері:

1. Бағдарламаның жұмыс барысында өте үлкен ақпаратты енгізу көп уақытты алады және адамды жалықтырады. Клавиатурадан енгізілген деректер мен экранға шығарылған нәтижелер сақталмайды, бағдарламаның жұмысы аяқталған соң жоғалып кетеді. Сондықтан, бұл ақпараттар алдын-ала дайындалып, дискіде сақталады да, қажетінше пайдаланыла беріледі.

2. Берілгендер файлын басқа бағдарламамен дайындап бірнеше бағдарламаны бір-бірімен байланыстыруға болады.

3. Бағдарламаның орындалу кезінде пайдаланушының қатысуы міндет емес.

Файлдық тип. Бір бағдарламада бірнеше файлмен жұмыс істеуге болады. Әрбір файл өз атымен аталады. Файлдағы компоненттер бір типте болады. Файлдың ұзындығы алдын-ала анықталмайды, ол құрылғының сыйымдылығына байланысты болады. Файлды бір типтегі мәндердің шексіз тізімі деп қарастыруға болады. Файлдың элементтері нольден бастап нөмірленеді. Файлдың элементтері ағымдағы көрсеткіш арқылы көрсетіліп тұрады. Ағымдағы көрсеткіш бағдарлама жұмысына байланысты бір элементтен екіншіге ауысып тұрады. Кез келген уақытта файлдың бір элементіне ғана қол жеткізуге болады.


1 элемент

2 элемент

3 элемент

4 элемент

...


















ағымдағы көрсеткіш




Файлдардың элементтерін тізбекті (последовательный) немесе тікелей (прямой) қарастыруға болады. Тізбекті файлдың элементтеріне жазылу реті бойынша қол жеткізіледі. Тікелей қол жетімді файлдың элементтеріне олардың адресі бойынша қол жеткізіледі. Сондықтан, тікелей файлдың кез келген элементін кез келген уақытта пайдалануға болады.

Дискідегі деректер файлы Паскаль бағдарламасымен файлдық айнымалы арқылы байланысады. Бағдарламада көпшілік жағдайда файлдық айнымалыны f арқылы белгілейді.

Бағдарламаның айнымалыны сипаттау бөлімінде файлдық айнымалы былай сипатталады.

var

файлдық айнымалы: file of элементтердің типі;



Мысал:

var


f1, f2:file of integer; f1, f2 - элементтері бүтін типтегі файл.

s1 , s2:file of string; s1, s2- элементтері жолдық типтегі файл.



Файлдарды пайдалану әдістері.

1. Бағдарламаның басында файл мен файлдық айнымалыны байланыстыру қажет. Ол үшін мына процедура қолданылады:



assign(файлдық айнымалы, деректік файлдың аты);

2. Файлмен жұмыс істеу үшін алдымен оны ашу қажет. Файлды пайдалану мақсатына қарай ашудың екі түрі бар:

2.1. Файлдан деректерді оқу үшін –

Reset(файлдық айнымалы);

2.2. Жаңа файлды жасау үшін және оған деректерді жазу үшін



Rewrite(файлдық айнымалы);

3. Ашылған файлдың элементін оқу:



Read(файлдық айнымалы, айнымалы);

4. Ашылған файлға элемент жазу:



Write(файлдық айнымалы, айнымалы);

5. Файлмен жұмыс аяқталған соң файл жабылады:



Close(файлдық айнымалы);

1-мысал: Санды клавиатурадан енгізіп, san.txt файлына жаз.

program file_tip;

var f:text; s:integer;

begin


assign(f1, 'san.txt’); { san.txt файлы f1 айнымалысымен байланыстырылады. }

rewrite(f1); { f1 файлы деректерді жазу үшін ашылады}

readln(s); write(f1, s); { s айнымалысының мәні f1 файлына жазылады}

close(f1); { пайдаланылып болған соң, f1 файлы жабылады}

readln; end.

2-мысал: Деректерді san.txt файлынан оқып, экранға шығар.

Бағдарламаны жазудан бұрын san.txt файлы алдын-ала дайындалады.

program file_tip;

var f1: text; s, n:integer;

begin

assign(f1, 'san.txt’); { san.txt файлы f1 айнымалысымен байланысты}



reset(f1); { f1 файлы деректерді оқу үшін ашылады}

read(f1, s); { f1 файлынан кезектегі элемент оқылып, s айнымалысына беріледі. }

writeln(s); {s айнымалысының мәні экранға шығарылады }

close(f1); {пайдаланылып болған соң, f1 файлы жабылады}

readln;

end.
8тақырып. Графиктік операторлармен жұмыс


12 зертханалық жұмыс. Графиканы бағдарламалау
Теориялық бөлім
Паскаль тілінде графикалық кескіндер жасау үшін, GRAPH модулі қолданылады. Бұл модульде 79 графикалық процедуралар, функциялар, тұрақты шамалар мен типтер орналасқан.

Графиканы жұмысқа қосу мына әрекеттерден тұрады:



uses Graph; {Graph модулін, яғни графикалық процедуралар,

орналасқан кітапхананы іске қосу}



var dv, mv:integer; {dv, mv – екі айнымалысы графикалық

режимді іске қосады}



dv:=Detect; {detect мәнімен қажет графикалық драйвер

мен режим автоматты түрде іске қосылады}



InitGraph(dv,mv,’c:\tP7\BGI’); {graph модулінің

орналасқан жолы көрсетіледі}



If GraphResult<>grOk then Halt(1); {Графикалық режимді

іске қосудағы қатесі тексеріледі}

Осы әрекеттерден соң графикалық операторлар жазылады. Графикалық әрекеттер орындалып болған соң, графикалық режимді жабу керек.

6.CloseGraph; {Графикалық режимді жабу}.

Монитор экраны нүктелер жиынынан тұрады. Графикалық экранда координаталар жазықтығының орналасуы төмендегідей:


Түстер таблицасы

Түстің

номері


Түстің аты

Түстің номері

Түстің аты

0

Қара

8

Қою

1

Көк

9

Көгілдір

2

Жасыл

10

Ашық жасыл

3

Бирюза

11

Ашық бирюза

4

Қызыл

12

Қызғылт

5

Малина

13

Ашық малина

6

Қоңыр

14

Сары

7

Ашық сұр

15

Ақ




Графика элементі

Паскальда жазылуы

Параметрлеріне сипаттама

1

2

3

Нүкте

PutPixel(x,y,t)

x,y-нүктенің координатасы; t-түсі, санмен беріледі.

Кесінді

Line(x1,y1,x2,y2)

(x1,y1),(x2,y2) ұштарының координаталары

Сызық

LineТо(x,у)

х,у нүктелеріне дейін сызады

Тік төртбұрыш

Rectangle(x1,y1,x2,y2)

(x1,y1),(x2,y2)диагональдың координаталары.

Боялған төртбұрыш

Bar(x1,y1,x2,y2)

(x1,y1),(x2,y2)диагональдың координаталары.

Шеңбер

Circle(x,y,r)

x,y-центрдің координатасы;

r-радиустың ұзындығы.



Эллипс

Ellipse(x,y,b,s,rx,ry)

b,s-эллипстік доғаның басы және соңы.

b =0, s=360 эллипс салады.

rx,ry – x және y бойынша радиустар.


Доға

Arc(x,y,b,s,r)

x,y,b,s,r- жоғарыда

Сектор

sector(x,y,b,s,rx,ry)

x,y, b,s, rx,ry - жоғарыда

Сызықтың түсі

SetColor(t)

t - түс номері, кестеде келтірілген.

Бояудың түсі

SetFillStyle(t1,t2)

t1 - бояу стилінің номері,

t2-бояудың түсі.



Текст шығару

Outtext(‘текст’)

Тексті экранның сол жақ шетіне шығарады.

Текст шығару

OutTextXY(x,y,’текст’)

Тексті көрсетілген координатаға шығарады

Көпбұ-рыш салу

DrawPoly(n,pp)

n -нүктелер саны;

Тұйық ай-мақты бояу

FillPoly(t, pp)

t-бояудың түсі

Суретті бағдарламалау мысалы:



program suret;

uses graph;

var dv, mv:integer;

begin dv:=detect;

initgraph(dv, mv,’c:\tp7\bgi’);

if graphresult<>grok then halt(1);

setcolor(5);

rectangle(10,15,610,430);

circle(350,100,50);

setfillstyle(1,6);

bar(100,250,200,300);

readln;


closegraph;

end.



program kopburish;

uses graph;

var pp:array[1..5] of PointType;

dv,mv,I,x1,y1:integer;

begin dv:=detect;

initgraph(dv,mv,’c:\ tp7\bgi’);

pp[1].x:=300; pp[1].y:=50;

pp[2].x:=400; pp[2].y:=50;

pp[3].x:=350; pp[3].y:=150;

pp[4].x:=150; pp[4].y:=200;

pp[5]:=pp[1];

DrawPoly(5,pp);FillPoly(3,pp);

readln;

closegraph;



end.

program kozgalys;

uses Graph,CRT;

var


x,y,i,dv, mv:integer; x1,x2,y1,y2:integer;

begin


dv:=detect; initgraph(dv,mv, 'c:\bp\bgi');

if graphresult <>grok then halt (1);

x:=460;y:=400; суреттің бастапқы координаталары

for i:=1 to 200 do

begin

setcolor(6);



circle(460,y,40);

ellipse(460,y-40,0,180,20,20);

ellipse(440,y-60,0,90,20,20);

ellipse(480,y-60,90,180,20,20); сурет салынды

ellipse(440,y-40,270,360,20,65);

ellipse(480,y-40,180,270,20,65);

circle(440,y-20,5); circle(480,y-20,5);

circle(440,y+10,5); circle(480,y+10,5);

delay(500); пауза

SetColor(0);

circle(x,y,40);

ellipse(460,y-40,0,180,20,20);

ellipse(440,y-60,0,90,20,20);

ellipse(480,y-60,90,180,20,20); сурет өшірілді, бұл

ellipse(440,y-40,270,360,20,65); фрагментті cleardevice

ellipse(480,y-40,180,270,20,65); процедурасымен circle(440,y-20,5); circle(480,y-20,5); алмастыруға

circle(440,y+10,5); circle(480,y+10,5); болады.

delay(500);

y:=y-1; жаңа координата

end;


SetColor(6);

circle(x,y,40);

ellipse(460,y-40,0,180,20,20); ellipse(440,y-60,0,90,20,20);

ellipse(480,y-60,90,180,20,20); ellipse(440,y-40,270,360,20,65);

ellipse(480,y-40,180,270,20,65);

circle(440,y-20,5); circle(480,y-20,5);

circle(440,y+10,5); circle(480,y+10,5);

readln;


closegraph;

end.
program grafik;

uses Graph,CRT;

var


x,y,i,dv, mv:integer; x1,x2,y1,y2:integer;

begin


dv:=detect; initgraph(dv, mv, 'c:\тр7\bgi');

if graphresult <>grok then һalt (1);

line(300,50,300,400); line(150,400,500,400);

for i:=-100 to 100 do

begin

x:=i; y:=trunc(sqr(x));



putPixel(trunc(x/2+300),trunc(400-y/50),14);

end;


readln;

closegraph;

end.

Пайдаланылатын әдебиет: [2], 101-104 беттер; [1], 336-408 беттер;

.

Тақырып 7. Программалауға объектілік-бағытталған амал

13 зертханалық жұмыс.Деректердің құрылымдандырылған типтерін өңдеу.
57 мысал. Сызықтық алгебраның жиі қолданылатын алгоритмдерін модульге біріктіреміз.

unit algebra;

interface

const n=10;

type vector=array[1.. n] of real;

type мr=array[1.. n] of vector;

function scalar(n:byte; a,b:vector):real;

procedure summatr(n,m:byte; a,b:mr; var c:mr);



implementation

uses crt;

var i,j,k:byte;

procedure sumvector(n:byte; a,b:vector; var c:vector);

begin

for i:=1 to n do



c[i]:=a[i]+b[i]; end;

procedure peek; begin sound(400); delay(100); nosound; end;

function scalar;

var s:real;

begin

s:=0;


for i:=1 to n do

s:=s+a[i]*b[i]; scalar:=s; end;

procedure summatr;

begin


for i:=1 to n do

sumvector(m,a[i],b[i],c[i]); end;

begin readln; end.

Егер бұл модульді компиляцияласа, аlgebra.tpu файлы пайда болады. Бұл модуль біз құрған программаларды пайдаланады.

Мысалы:

uses algebra;

var w,q,z:matr;

begin summatr(3,4, w, q, z);

end.

Программа мен онда пайдаланылатын модульдер Ғ9 клавишасымен компиляцияланады. Нәтижесінде .tpu .exe файлдары пайда болады. algebra модулінің тексі жазылған файлдың аты algebra.pas болу керек!



14 зертханалық жұмыс. Деректердің динамикалық құрылымдарын өңдеу.

Delphi ортасымен танысу
Delphi ортасы – программист жұмысының өте жоғары тиімділігін қамтамасыз ететін орта.

Delphi ортасын шақырғаннан кейін ортаның жұмысын басқаратын алты негізгі терезе шығады (1-сурет).



  1. ) негізгі терезе – негізгі терезе құрылатын программаның

жобаларын басқаратын негізгі қызметті атқарады. Бұл терезе экранда барлық уақытта болады және ең жоғары бөлігінде орналасады. Негізгі терезеде Delphi ортасының бас менюі, пиктографиялық командалы батырмалар жиынтығы, компоненттер палитрасы орналасқан.

  1. ) объектілер инспекторының терезесі – формаға орналасатын кез

келген компонент бірқатар параметрлер жиынымен сипатталады: орналасуы, өлшемі, түсі және т.б. Мысалы, компоненттің орналасуы мен өлшемін программист формалар терезесінде компонентті басқара отырып, өзгерте алады. Ал, объектілер инспекторы терезесі қалған өзгертулерді орындауға арналған. Бұл терезеде екі бет бар: Properties (Қасиет) және Events (Оқиға). Properties беті – компоненттің керекті қасиеттерін тағайындау қызметін атқарады. Events беті – қандай да бір оқиғаға компоненттің жауабын анықтайды.

  1. ) формалар терезесі – windows жобасы болашақта программа жазатын

терезе болып таылады. Басында бұл терезе бос болады Дәлірек айтқанда, ол windows-дің интерфейстік элементтері үшін стандартты жүйелік менюді шақыру батырмаларынан, терезені үлкейту, кішірейту, жабу батырмаларынан және тақырып жолынан тұрады. Әдетте, терезенің жұмыс алаңы нүктелік координаталық тормен толтырылған, ол формадағы компонеттердің орналасуын реттеу қызметін атқарады (бұл нүктелерді алып тастау үшін Tools/Environment Options меню командаларының көмегімен, Preferences қойымтасындағы Display Grid ауысытырып қосқышындағы жалаушаны алып тастау қажет).

  1. ) программа кодының терезесі – программа мәтінін құрып,

жөндеуге арналған. Бұл мәтін арнайы ереже бойынша құрылады және программаның жұмыс алгоритмін сипаттайды. Мәтінді жазу ережелерінің жиынтығы программалау тілі деп аталады.

Сурет 1 - Delphi ортасының интерфейсі

2 Delphi-ді баптау
Программалар жобасымен жұмыс істеу процесінде формалар мен модульдер жиынтығын құру қажет. Бұл мәліметтерді жеке қапшықта файлдар түрінде сақтаған дұрыс. Delphi ортасының стандартты келтірілген күйіне өзгеріс енгізу қажет. Ол құрылған програманың соңғы нұсқасының автоматты түрде сақталуы үшін керек. Ол үшін Tools/Environment Options сұхбат терезесінде Preferences бетін таңдау керек. Осы беттің сол жақ жоғарғы бұрышында Autosave Options тобында «Editor Files» және «Desktop» деген ауыстырып қосқыштары бар. Ауыстырып қосқыштарды екпінді жасау – программа коды терезесінің мәтінін және Delphi терезесінің жалпы орналасуын автоматты түрде сақтайды. Бұл программаны жоғалудан қорғайды. Мәтін шығару үшін шрифтті тағайындау қажет:

Tools/Editor Options – Display бетінде Editor Font-қа Times New Roman шрифт түрін тағайындау қажет.

Программаны жүргізуге барлығы дайын болған соң негізгі терезеден батырмасын немесе F9 басқару пернесін басу керек. Сонымен, Delphi ортасындағы программа үш кезеңнен өтеді: компиляция – компоновка – орындау.

Компиляция кезіңінде код терезесінде дайындалған программа мәтіні Object Pascal тіліне ауыстырылады; компоновка кезеңінде қажетті қосалқы, ал орындалу кезеңінде дайын программа жедел жадыға шақырылып, орындалуға жіберіледі.

F9 пернесін басқаннан кейін Save Unit1 As сұхбат терезесі пайда болады, яғни Delphi Unit1.pas модулі үшін файлдың аты мен ол орналасатын папканың атын сұрайды, сондай-ақ, модульдің де атын өзгерту қажет.



Достарыңызбен бөлісу:
1   2   3




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет