Программа денесі(операторлар тізбегі)



бет3/21
Дата15.09.2017
өлшемі5,46 Mb.
#33792
түріПрограмма
1   2   3   4   5   6   7   8   9   ...   21

Көпөлшемді массивтер

Turbo Pascal-да массив элементтері тек қана қарапайым типтерден емес, сол сияқты құрылымдық типтер де бола алады. Мысалы, элементтері массивтер бола алатын массивтер болады. Осындай массивтің сипатталуы төмендегідей болады.

A1=array[1..5] of array[1..4] of integer;

Бұл массивті 20 элементі (4х5) бар екіөлшемді матрица ретінде көрсетуге болады. Жоғарыда көрсетілген массив сипаттамасын қысқартып жазуға болады.

A1=array[1..5, 1..4] of integer;

Бұл сипаттамалар эквивалентті. Осы массивтің бір элементіне қатынас жасау төмендегідей болады.

A1[3][4]

немесе


A1[3,4]

Осы екіөлшемді массив толықтай былай көрінеді

A1[1,1] A1[1,2] A1[1,3] A1[1,4]

A1[2,1] A1[2,2] A1[2,3] A1[2,4]

A1[3,1] A1[3,2] A1[3,3] A1[3,4]

A1[4,1] A1[4,2] A1[4,3] A1[4,4]

A1[5,1] A1[5,2] A1[5,3] A1[5,4]
Тек екіөлшемді массивтер емес, көпөлшемді массивтер де болады, және де өлшемдері шектелмейді. Дегенмен мұнда массив айнымалыларының өлшеміне 64Кбайт (немесе 65520 байт) шектеу қойылады. Бұл бір айнымалыға бөлінетін максималды жады көлемімен байланысты.

Қолданылатын амалдар

Массивтермен орындалатын әрекеттердің екі категориясы бар: массив элементтерімен жұмыс және тұтас массивпен жұмыс.

Массив элементтерімен жұмыс

Массив элементі айнымалы ретінде қолданылатындықтан, ол өрнектерге қатыса алады. Массив элементеріне қолданылатын амалдар жиынтығы базалық типке мүмкін амалдармен сәйкес келеді. Массив элементтерімен жұмыс істеу мысалдарын келесі 6-кестеден көруге болады.

6-кесте


Әрекет мысалы

Түсініктеме

Write(‘6’, a1[5])

Экранда 6 саны, соңынан а1 массивінің 5-ші элементі шығарылады.

a4[5]:=a4[3]+a4[2]

а4 массивінің 3-ші және 2-ші элементтерінің мәндері қосылып, алынған қосынды осы массивтің 5-ші элементінің мәні ретінде меншіктеледі.

abc:=abc+a4[88]

а4 массивінің 88-ші элементінің мәні abc айнымалысының мәнімен қосылып, алынған нәтиже осы айнымалының өзіне меншіктеледі.

abc:=a4[55]+a4[56]

а4 массивінің 55-ші және 56-ші элементтерінің мәндері қосылып, алынған нәтиже abc айнымалысына меншіктеледі.

a4[33]:=a4[33]+20

а4 массивінің 33-ші элементі 20-ға ұлғайтылады.

Массивтермен орындалатын әрекеттер

Массивтерге тұтас қолданылатын амалдар жиынтығына келетін болсақ, онда массивтің барлық элементтерін екіншісіне көшіруді жалғыз меншіктеу операторының көмегімен жүзеге асыруға болады. Мысалы, егер х және у – бір типке жататын массивтер болса, онда келесі оператор дұрыс болады.

х:=у


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

While x=y do ...

Егер мұндай қажеттілік туындаса, онда массивтердің әрбір элементтеріән салыстыруды ұйымдастыруға болады.

Массивтерге сол сияқты арифметикалық және логикалық амалдар қолданылмайды. Және де массивтерге стандартты Read және Write процедураларын қолдануға болмайды. Дегенмен массивтің әрбір элементін жеке оқу және экранға шығаруды ұйымдастыруға болады.

Мысал.

Екіөлшемді массивті енгізу және экранға шығару.



Program Mas2;

Var


A:array[1..100, 1..100] of integer;

i, j, n,m:integer;

begin

Write(‘массивтегі баған санын енгіз ’);



ReadLn(n);

Write(‘массивтегі жол санын енгіз’);

ReadLn(m);

For i:=1 to n do

For j:=1 to m do

Begin


Write(‘A[‘, i,’,’j, ‘]=’);

Readln(A[i,j]);

End;

For i:=1 to n do



begin

For j:=1 to m do

Write(A[i,j]);

Writeln;


End;

Readln;


End.
ЖИЫНДАР

Қаралатын сұрақтар:

  • Жиын ұғымы;

  • Жиындарға қолданылатын амалдар;

  • Салыстыру амалы.

Массивтер сияқты, жиындар базалық деп аталатын бір типті элементтерден тұратын мәліметтер жиынтығы. Бірақ массивтерден айырмашылығы - жиында элементтердің саны еркін болады. Жиындық типтердің сипатталуы:

Type

S=set of a



Мұндағы Set - жиын және of - одан (из) деген ұғымды білдіреді. S - жарияланушы жиындық типтің атауы, а- жиынның базалық типі.

Type


а1= set of 1..3;

а2= set of ‘а’..’е’;

а3= set of char;

Var


x:a1; y:a2; z:a3;

а1 жиындық типі үшін базалық тип ретінде (1..3) интервалдық типі берілген. Х айнымалысы а1 жиындық типке жатады және келесі мәндерді қабылдауы мүмкін: [], [1], [2], [3], [1,2], [1,3], [2,3], [1,2,3] (барлығы 8 (23) мәндер). Басқаша айтқанда, жиындардың мәндері оларға енетін барлық ішкі жиындар болуы мүмкін - құр жиыннан бастап, базалық типтің барлық мүмкін мәндеріне дейін. Turbo Pascal-да жиындық типтің айқын берілген мәндерін қолдану мүмкін, мысалы, бүтінсанды немесе нақты мәндер. Бұл жағдайда жиынның элементтері тік жақшаға алынып, үтір арқылы жазылады.

х:=[1,3];

х:=[];


а2 жиындық типі үшін базалық ретінде ‘a’..’е’ диапазонs алынған. а2 жиындық типіне жататын у айнымалысы осы жиынға енетін барлық ішкі жиындарға сәйкес мәндер қабылдай алады (барлығы 32(25) мәндер).

а3 жиындық типі үшін базалық тип ретінде стандартты char типі алынған. z-айнымалысы қабылдай алатын мәндер саны (а3 - жиындық типіне жататын) 2256 –не тең, және де бұл мәндер ASCIІ кестесінен алынған символдардың еркін жиынтығы болып табылады.

Мысалы z-айнымалысы келесі мәндерді қабылдай алады.

[ ‘3’,’f’, ‘(’,’#’,’п’, ‘Л’]

z-айнымалысының мәндерін былай да көрсетуге болады.

[chr(45), chr(54), chr(58), chr(65), chr(73), chr(78), chr(89)]

Turbo Pascal тілінде жиындарды программалауға байланысты бірқатар ескертулер:


  • Жиынның элементтерінің саны еркін болуынан басқа массивтен тағы да бір айырмашылығы бар. Егер массив - элементтердің реттелген типі болса, онда жиында элементтердің реті бекітілмейді.Мысалы, [1,2,3,4,5] және [5,2,1,4,3] – бұл бір жиын. Сол сияқты жиынның барлық элементтері әр түрлі болуы керек. Мысалы, [1,2,3] және [1,1,2,3,3,3] - екеуі бір жиын.

  • Жиынды көрсету оған енетін элементтерді тізімдеу жолымен немесе диапазонын (егер жиын мүшелері үздіксіз тізбекті құраса) көрсету арқылы жүзеге асырылады. Мысалы, [1,2,3,4,5] жиынын [1..5] деп те көрсетуге болады. Сол сияқты екі тәсілді араластырып көрсетуге де болады [1..5,7,9].

  • Turbo Pascal-да жиын элементтерінің саны 256-дан аспауы керек (және де бүтінсанды типтер үшін бұл мәндер 0..255 диапазонында жату керек). Осы шектеу салдарынан жиындар үшін базалық тип ретінде тек қана byte, char, Boolean типтері қызмет етеді. Мысалы, Integer типін базалық тип ретінде қолдануға болмайды, бірақ, Integer типі негізінде жасалған аралық типтерді қолдануға болады.


Қолданылатын амалдар

Жиындар үшін қолданылатын амалдар: элементтің жиынға тиістілігін тексеру; жиындарды біріктіру, қиылыстыру, алу; жиындарды салыстыру (жиындардың теңдігін немесе теңсіздігін тексеру, сол сияқты бір жиынның екінші жиынға тиістілігін тексеру).



Элементтің жиынға тиістілігін тексеру

Бұл амал үшін Turbo Pascal–да арнайы оператор IN бар. Бұл оператор қолданылатын өрнек boolean типті мәнді қабылдайды. IN операторын қолдану мысалы.

а in [1,3,5,7,9]

Бұл өрнек а айнымалының мәнінің осы жиынға тиістілігін тексереді, және де TRUE немесе FALSE мәнін қабылдайды. Егер IN операторы болмаса, онда осы шартты тексеру үшін өте үлкен өрнекті қолдануымызға тура келетін еді.

(a=1) or (a=3) or (a=5) or (a=7) or (a=9)

Жиындарды біріктіру, қиылыстыру және азайту

Бұл амалдар екі жиынға қолданылып, үшінші жиынды жасайды. Turbo Pascal-да бұл амалдарды келесі символдармен белгілейді: + (біріктіру), * (қиылыстыру), - (азайту).

a және b екі жиынын біріктіру нәтижесінде осы екі жиында кездесетін барлық элементтерден тұратын үшінші жиын жасалынады (1-сурет). Мысалдар 1-кестеде көрсетілген.

1-кесте. Екі жиынды біріктіру мысалдары.



Жиындарды біріктіру

Нәтижесі

[1,2,3,4,5] + [3,4,5,6,7]

[1, 2, 3, 4, 5, 6, 7]

[1,2] + [3,4]

[1, 2, 3, 4]

[‘a’, ‘b’, ‘c’]+ [‘A’, ‘B’, ‘C’]

[‘a’, ‘b’, ‘c’, ‘A’, ‘B’, ‘C’]

[‘1’,‘3’,‘5’,‘7’,‘9’] +[‘1’,‘3’, ‘5’,‘A’,‘B’]

[‘1’,‘3’,‘5’,‘7’,‘9’,‘A’,‘B’]

Көбінесе жиынға жаңа элемент қосу қажеттілігі туындайды. Бұл есеп төмендегідей шешіледі:[1, 2, 3, 4, 5] + [6].

а және b екі жиынын қиылыстыру нәтижесінде осы екі жиынға да бірмезетте тиісті болатын үшінші жиын жасалынады (1-сурет). Мысалдарды 2-кестеден көруге болады.


2-кесте. Екі жиынға тиісті болатын элементтер.

Жиындарды қиылыстыру

Нәтижесі

[1, 2, 3, 4, 5]*[3, 4, 5, 6, 7]

[3, 4,5]

[1, 2]*[3, 4]

[]

[‘a’, ‘b’, ‘c’]*[‘A’, ‘B’, ‘C’]

[]

[‘1’,‘3’,‘5’,‘7’,‘9’]*[‘1’,‘3’,‘5’,‘A’,‘B’]

[‘1’, ‘3’, ‘5’]

а жиынынан b жиынын азайту кезінде тек қана а жиынына тиісті және b жиынына тиісті емес элементтерден тұратын үшінші жиын жасалынады (1-сурет). Мысалдарды 3-кестеден көруге болады.



3-кесте. Жиындарды азайту мысалдары.

Жиындарды азайту

Нәтижесі

[1, 2, 3, 4, 5]-[3, 4, 5, 6, 7]

[1, 2]

[1, 2]-[3, 4]

[1, 2]

[‘a’, ‘b’, ‘c’]-[‘A’, ‘В’, ‘C’]

[‘a’, ‘b’, ‘c’]

[‘1’,‘3’,‘5’,‘7’,‘9’]-[‘1’,‘3’,‘5’,‘A’,‘B’]

[‘7’, ‘9’]

Егер жиындарды біріктіру немесе қиылыстыру жағдайларында а, b жиындарының орнын ауыстырғанмен нәтиже өзгермесе, ал жиындарды азайту кезінде жиындардың орнын ауыстырған кезде нәтиже өзгереді. Мысалдарды 4-кестеден көруге болады.

Жиындарды азайту

Нәтижесі

[‘1’,‘3’,‘5’,‘7’,‘9’]-[‘1’,‘3’,‘5’,‘A’,‘B’]

[‘7’, ‘9’]

[‘1’,‘3’,‘5’,‘A’,‘B’]- [‘1’,‘3’,‘5’,‘7’,‘9’]

[‘A’, ‘B’]

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



Салыстыру амалы

Жиындарды салыстыру амалына жиындардың теңдігін және теңсіздігін тексеру, сол сияқты бір жиынның екіншісіне тиістілігін тексеру жатады.

Turbo Pascal­да бұл амалдардың белгілеулері 5-кестеде көрсетілген.

5-кесте. Жиындарды салыстыру амалдары.



Белгілеулер

Әрекеттер

=

Жиынның теңдігін тексеру

<>

Жиынның теңсіздігін тексеру

<=

Сол жақтағы жиынның оң жақтағы жиынға тиістілігін тексеру

>=

Оң жақтағы жиынның сол жақтағы жиынға тиістілігін тексеру

Салыстыру нәтижесі boolean типті (TRUE немесе FALSE) мән болып табылады. Салыстыратын екі жиын бір базалық типке жатуы керек.

= және <> амалдары салыстырылатын жиындағы элементтер жиынтығының беттесетіндігін тексереді. Осы амалдар мысалдарын 6 және 7-кестелерден көруге болады.

6-кесте. Жиын теңдігін тексеру.

Салыстырылатын жиындар

Нәтиже

[1,2,3]=[1,2,4]

FALSE

[1,2,3]=[1,2,3]

TRUE

[1,2,3]=[3,2,1]

TRUE

[1,2]=[1,1,2,2,3]

FALSE

7-кесте. Жиын теңсіздігін тексеру.

Салыстырылатын жиындар

Нәтиже

[1,2,3]<>[1,2,4]

TRUE

[1,2,3]<>[1,2,3]

FALSE

[1,2,3]<>[3,2,1]

FALSE

[1,2]<>[1,1,2,2,3]

TRUE


<= және >= амалдары бір жиынның екіншісіне тиістілігін тексереді. Сол жақтағы жиын оң жақтағы жиынға тиісті, егер сол жақтағы жиынның барлық элементі оң жақтағы жиынның элементтері арасында кездессе. Сол жақтағы жиынның оң жақтағы жиынға тиістілігін тексеру мысалы 8-кестеде көрсетілген.

8-кесте. Сол жақтағы жиынның оң жақтағы жиынға тиістілігін тексеру.



Салыстырылатын жиындар

Нәтиже

[1,2,3]<=[1,2]

FALSE

[1,2,3]<=[1,2,3,4,5]

TRUE

[1,2,3]<=[4,3,2,1]

TRUE

[1,2,3]<=[1,3]

FALSE

Оң жақтағы жиын сол жақтағы жиынға тиісті болады, егер оң жақ жиынның барлық элементтері сол жақ жиын элементтерінің арасында кездессе. Оң жақ жиынның сол жақ жиынға тиістілігін тексеру мысалын 9-кестеден көруге болады.

9-кесте. Оң жақ жиынның сол жақ жиынға тиістілігін тексеру.

Салыстырылатын жиындар

Нәтиже

[1,2,3]>=[1,2]

TRUE

[1,2,3]>=[1,2,3,4,5]

FALSE

[1,2,3]>=[4,3,2,1]

FALSE

[1,2,3]>=[1,3]

TRUE

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

Жиындарды қолданудың классикалық мысалы ретінде «Эратосфен елегі» тәсілімен қарапайым санды есептеу программасын көрсетуге болады. Мысалы:

Program Prime;

const n=255;

Var

sieve, PRIMES: set of 2..n;



next, i: integer;

begin


writeln;

sieve:=[2..n];

primes:=[ ];

next:=2


repeat

while not (next in sieve) do

next:=next+1;

primes:=primes+[next];

i:=next;

while i<=n do

begin

sieve:=sieve-[i];



i:=i+next;

end


until sieve=[ ];

for i:=2 to n do

if i in primes then write (i:4);

writeln;


end.

6-ДӘРІС. СИМВОЛДАРДАН ЖӘНЕ СӨЗ ТІРКЕСТЕРІНЕН ТҰРАТЫН ШАМАЛАР

Қарастырылатын сұрақтар:

  • Символдық мәліметтермен жұмыс істеу тәсілдері;

  • Символдық мәліметтерді енгізу;

  • Паскаль тілінде мәтіндік ақпараттарды өңдеу;

СИМВОЛДЫҚ МӘЛІМЕТТЕРМЕН ЖҰМЫС ІСТЕУ ТӘСІЛДЕРІ

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

Осы кезге дейін қарастырылған программаларда біз тек сан мәндерімен ғана жұмыс істедік. Ал қазіргі компьютерлердегі программалардың кез келген символдық айнымалыларды өңдеуге толық мүмкіндігі бар. Сондықтан бұл тарауда символдың ақпаратты пернетақтадан енгізу және дисплей экранына шығаруды қарастырамыз.

Пернетақта мен дисплей мәліметтерді енгізу мен шығарудың стандартты құрылғылары болып табылады да, оларды пайдалану үшін INPUT және OUTPUT түйінді сөздері қолданылады. Сандық ақпарат енгізу және шығару кезінде READ және WRITE операторларының көмегімен стандартты процедураларды (INPUT, OUTPUT) пайдаланған тәрізді жұмыс істей береміз.

Символдық мәліметтерді өңдеу символдық (литерлік) типті анықтайтын CHAR (ағылшынның CHARACTER — символ деген сөзінен қысқартылып алынған) түйінді сөзі арқылы жүзеге асырылады. CHAR типіндегі айнымалының мәні компьютерде пайдаланылатын кез келген жеке символ болып, ол мәлімет өрнектеудің кодтық кестесінің белгілі бір мәніне сәйкес келуі тиіс. Әрбір символ 0 мен 255 арасындағы кез келген бір бүтін санмен бейнеленеді, оның негізі болып ASCII кодтары саналады. Оның 0— 127 кодтарына сәйкес символдары әмбебап таңбалар болып та­былады, оларға латын әріптері, тыныс белгілері, цифрлар, арифметикалық операция таңбалары, басқару символдары кіреді. Ал 128—255 кодтарына сәйкес символдар арнайы символдар мен ұлттық алфавит әріптері үшін қолданылады. Орыс, қазақ алфавитінің әріптері осы соңғы топта орналасқан.

Символдық немесе литерлік айнымалыға компьютер жадынан бір байт орын беріледі.

Егер программада мынадай сипаттау мысалы болатын болса:

VAR

А,В: CHAR;

BELGI, SYMBOL: CHAR; онда меншіктеу операторларындағы айнымалылар мен тұрақтылар мәні апострофка алынған бір символ болуы тиіс. Мысалы, A:=’k’, В:=’А’, B:=’5’, А:=’;’ тәрізді болуы мүмкін. Символдық мән дисплей экранына немесе принтер арқылы қағазға шыққанда, белгілері алынып тасталады да, тек символдың өзі көрінеді.

Символдық мәліметтер үшін логикалық нәтиже беретін =, <>, >, >=, <, <= қатынас таңбалары бар өрнектер пайдаланылады, өйткені барлық символдар өз кодтарына сәйкес реттеліп орналасқан.

Символ кодына сәйкес ‘a’<’c’; ‘z’>’y’; ‘2’>’1’; ‘x’<>’z’ сияқты теңсіздіктерді жазуға болады.

Е с к е р т у. Қазақ әріптері ASCII кестесінің бос орындарына орналасқандықтан, олар үшін бұл заңдылық сақталмайды.

Әріптерді кодтардың орналасу ретімен алфавит бойынша мына программа арқылы экранға шығаруға болады:

PROGRAM KODTAR;

VAR с:CHAR;

BEGIN

FOR c:=’a’ TO ‘z’ DO



WRITE (c)

END.


Мұның нәтижесінде дисплей экранында a b e d... z символдары көрінеді. Ал алфавитті кері тәртіпте бейнелеу қажет болса, онда FOR операторының алғашқы жолын басқаша мынадай түрде көрсетеміз:

for c:=’z’ downto ‘a’ do


СИМВОЛДЫҚ МӘЛІМЕТТЕРДІ ЕНГІЗУ

Символдық деректерді пернетақтадан енгізу READ (READLN) операторы арқылы жүргізіледі, оларды енгізудің төмендегідей ерекшеліктері бар.

1. Бос орын таңбасы Паскаль тілінде символ орнына жүретіндіктен, символдық айнымалылардың мәндері (символдар) бос орынсыз жазылады.

2. Бір айнымалыға бір ғана символ меншіктеледі.

3. Символдық айнымалыларды енгізудің тағы бір ерекшелігі — тек Enter пернесі басылса да, оны READ операторы бос орын символы ретінде кабылдайды. Мысалы, айнымалыларға: А=3, В=4, C=’W’, D=’F’ мәндерін меншіктеп, оны экранға шығару қажет болса, онда оған мынадай программа жазу керек:

PROGRAM SIM;

VAR А, В : INTEGER;

С, D : CHAR;

BEGIN


WRITELN (‘A, B, C, D мәндерін енгізіңдер’);

READ (A, B);

READ (C,D);

WRITELN (A, B,C,D)

END.

Бұл программа орындалу кезінде пернетақтадан мынадай мәндер енгізілген болса:


3 4

W F


онда А=3, B=4, C=’_’, D =W болады, себебі 4 санынан соң басылған Enter пернесі бос символ ретінде меншіктеледі де, соңғы f символы ешқайда енгізілмейді. Программадағы айнымалылар мәнді дұрыс қабылдауы үшін екі оператордың арасына параметрсіз және бір енгізу операторын мына түрде жазу қажет:

READ (A,B);

READLN;

READ (C,D);



Осылай жазылған үш оператор А=3, В=4, С =’W’, D=’F’ мәндерін дұрыс меншіктеуді қамтамасыз етеді. Символдарды енгізу операторларының алдына міндетті түрде READLN операторын қою қажет. Егер жоғарыдағы программа үзіндісінде символдарды енгізу операторын (READ (C,D);) 1-орынға шығарсақ та, оның алдына READLN операторын қою қажет, яғни айтылған ерекшелікке байланысты жоғарыдағы жолдарды былай да жазуға болады:

READLN;


READ (C,D);

READ (A,B);

Программада сандық және символдық мән қабылдайтын айнымалылар үшін екі рет енгізу операторын жазудың да қажеті жоқ. Жоғарыдағы екі оператор орнына READ (A,B,C,D) операторын ғана жазуға болады. Егер READ (A,B,C,D) операторын орындауда айнымалыларға мәнді былай берсек:

45 31


К N

онда дисплей экранында 4531K көрінеді, демек А =45, В= 31, С=’_’, D=’Kболғаны, ал егер мәндер былай берілсе:

45 31 K N

онда дисплейден 45 31 K N көрінеді, яғни осылай енгізу дұрыс нәтиже береді.

Егер осы программаның ’Символ енгізіңдер:’ деген хабарламасынан кейін бір символ пернесін басып, оны босатпасақ, онда сол басылған символ бейнесі экранға 127 рет шығады да, одан кейін тек тырсылдаған дыбыс қана естіледі. Бұл 127 символ сақтай алатын пернетақта буферінің енгізілген таңбалармен толып қалғанын көрсетеді.

Негізінде, перне басылғанда бірден екі код қалыптасады, оның алғашқысы — символ коды, ал екіншісі — кеңейтілу немесе сканерлеу коды. Алфавиттік-цифрлық перне басылғанда, олардың символ коды пайдаланылады. Ал кеңейтілу коды басқару пернелері (Ctrl, Shift, CapsLock, Fl, F2 т.б.) үшін өте маңызды. Бұлардың символ коды нөлге тең болып саналады да, программаларда олардың тек сканерлеу коды пайдаланылады. Сканерлеу кодын пайдалану Турбо Паскаль программасының CRT модулінің

ReadKey функциясы арқылы жүзеге асырылады. Символ енгізу кезінде бұл функция курсорды келесі орынға жылжытпай, ол орынға кез келген символ бейнесін шығара алады. Келесі testread2 программасы ReadKey функциясын пайдаланып, кіші латын әріптерін бас әріптерге түрлендіреді.

Program testread2;

uses CRT;

var


ch:char;

begin


writeln(‘Латын алфавитінің кіші әріптерін ентізіңдер (z — программадан шығу):');

repeat


ch := ReadKey;

write(UpCase(ch));

until ch =’z’;

end.


Төмендегі scan_codes программасы басылған пернелердің сканерлеу кодын анықтауға арналған. Ол программамен жұмыс істеу барысында Ctrl + PrtSc (принтерге экрандагы мөліметті шығару) немесе Ctrl + Alt + Del (DOS-ты қайта жүктеу) пернелер комбинациясын басу керек емес, ал Ctrl + Break пернелерін басу программа жұмысын тоқтатады.
Бұл программа кейбір пернелерді басқанда, мысалы, F11 пернесін басқанда еш нәрсе істемейді. Оның символдық және сканер­леу коды болғанмен, Паскаль колданатын DOS жүйесі компьютер пернелерінің кеңейтілмеген ескі нұсқасын пайдаланатындықтан (онда F11 болмаған), программа осындай нәтиже береді.

4. Символдық және сандық мәндерді енгізгенде, кебінесе EOLN (end of line — жол соңы) стандартты функциясын пайдалану қолайлы болады. Бұл функция мәні «жолдың соңы болды» немесе «мәндер беріліп болды» дегенді білдіретін Enter пернесі басылғанда ғана ақиқат (TRUE) болады да, қалған жағдайлардың барлығында жалған (FALSE) болады. Бұл функция көбінесе циклдік операторларда пайдаланылады.



1-мысал. Енгізілуге тиіс бүтін сандардың Enter пернесі басылғанша қаншасы терілгенін есептейтін программа құру керек.

PROGRAM SANAU;

VAR A,I: INTEGER;

BEGIN


І:=0;

READLN;


WHILE NOT EOLN DO

BEGIN


READ (A);

І:= І+1



END;

WRITELN;


WRITELN (‘I=’,I)

END.


Мәндер бос орын арқылы ажыратыла отырып енгізіледі, яғни 3 5 7 9 11 тізбегі берілсе, дисплей экранына I=5 шығады.

Е с к е р т у. WHILE NOT EOLN DO операторының алдында

міндетті түрде READLN; операторы тұруы қажет.

WRITE (al, а2, аЗ,..., an), WRITELN(al, а2, аЗ,...,ап) операторлары және параметрсіз шығару операторы сандарды шығару операторына ұқсас. Мұндағы al, a2, a3,..., an параметрлері мәндері бүтін, нақты, логикалық және символдық тұрақтылар болуы мүмкін.

Шығару операторындағы мәліметтердің пішімін жазып көрсетуге де, көрсетпеуге де болады. Нәтиже деректердің типіне байланысты болады, егер ол нақты және бүтін типте болса, оған 13 орын, символдық типте болса, 1 орын, ал логикалық типте болса, 4 (TRUE) немесе 5 орын (FALSE) беріледі.

Шығатын нәтиже алдында бос орын қалдыру үшін ‘ ’ белгісі пайдаланылады. Мысалы, WRITE (‘ ‘:5, А: 3, ‘ ‘:7, В: 4) болса, онда нәтиже былай беріледі: 5 бос орыннан соң А-ның мәні үш орын алуы тиіс, одан соң 7 бос орын қалдырылады да, В-ның мәні 4 орынға жазылады.

Символдық тұрақтылар апостроф ішіне қалай жазылса, солай шығарылады.
Turbo Pascal тілінде мәтіндік ақпараттарды өңдеу

Мәтін әр түрлі символдардан тұратын жолдар тізбегінен тұрады. Әдетте, мәтіндермен жұмыс істегенде, тек символдық шамаларды пайдалану тиімсіз, өйткені көбінесе жеке символдарды емес, олардың тізбегін— сөз тіркестерінен тұратын мәтін жолдарын өңдеу қажет болады.

Turbo Pascal тілінде символдар тізбегінен тұратын тіркесттік айнымалылар кең қолданылады, олардың типін көрсету үшін алдымен айнымалы атауы, одан кейін тік жақша ішінде жолдың ең ұзыны көрсетілген string түйінді сөзі пайдаланылады.

Тіркестік айнымалының типі программаның типтерді сипаттау бөлімінде немесе тікелей айнымалыны сипаттау бөлімінде де орналаса береді. Оның айнымалы бөлімінде сипатталуы:

VAR

<айнымалы атауы>: string [жолдың ұзындығы];

Мысалы: VAR

TEX1 : string [29];

ATJ : string [40];

АТАҮ : string [275];

A : string;

Мұндағы соңғы АТАҮ-дағы символдар ұзындығы дұрыс көрсетілмеген, себебі 275>255, сондықтан мұнда компьютер «өте» деген хабарлама береді. Егер жолдың ұзындығы (символ саны) сипаттау кезінде көрсетілмесе (А айнымалысы), онда оның ұзындығы 256 символ деп кабылданады. Сөз тіркесіндегі (мәтін жолының) символдардың нөмірі 1- ден бастап оның ең үлкен мәніне дейін өзгереді.

Апостроф ішінде орналасқан тіркестік айнымалылар мәндерінің мағынасының болуы немесе болмауы шарт емес. Мысалы, К =’’, А := ‘Алматы’, В =’Т?АВ’, B1 =’1999АВ’, т.б., мұнда сөз тіркестерінің ұзындығы символдар санына сәйкес: 0, 6,4, 6 байтқа тең болып есептеледі.

Сонымен, жолдың компьютер жадында орналасу схемасы төмендегідей түрде көрсетуге болады, мұнда Ү — бірінші байт:

Ү —жолдың ағымдағы К ұзындығы сақталады;

Ү+1-де жолдың 1-символы,

Ү+2-де жолдың 2-символы,

...


Ү+А-да ағымдағы жолдың соңғы символы,

Ү+А+1 — бос ұяшық,



Ү+М — осы сөз тіркесіне берілген ұзындықтың ең үлкен мәні.

Мұндағы Ү жад ұяшығының алғашқы байты, К—ағымдағы сөз тіркесінің ұзындығы, М — осы сөз тіркесі үшін қабылданған ең үлкен ұзындық, яғни оның ең үлкен мәнінің ұзындығы.



Тіркестік өрнектер. Тіркестік өрнек деп амал белгілері, тіркеспейтін, айнымалылар және функция атауларынан құралатын, ұзындығы 256 символдан артпайтын тізбекті айтады.

Алгоритмдік тілдерде тіркестік өрнектерді литерлік өрнектер деп те атайды. Литерлік шамалардың мәндері алгоритмдік тілдерде тырнақша ішіне алынып жазылса, Паскаль тілінде апостроф ішінде жазылады.

Тіркестік өрнектерде біріктіру және салыстыру амалдары пайдаланылады.
Біріктіру немесе конкатенация амалы, ол қарапайым «+» белгісімен белгіленеді. Бұл амал бірнеше символдардан немесе сөз тіркесінен жаңа мәтін жолын кұру үшін пайдаланылады.

Программа мәтініндегі сөз тіркесінен тұратын тұрақтылар бір жол бойына жазылуы тиіс, егер оның бөлігін келесі жолға тасымалдап жазатын болсақ, қате болады. Сондықтан программа жазу кезінде бір жолға сыймайтын сөз тіркесін біріктіру амалы арқылы былай орналастыру қажет:

Mekeme := ‘Республикалык білім беруді ақпараттандыру ғылыми’ + ‘-әдістемелік орталығы’;

Сөз тіркестерін біріктіру амалын Concat() функциясы арқылы да орындауға болады, мысалы:

Strl := "Әйтеке"; Str2 := "би"; Ctr3 := Concat(Strl, Str2);

Мұның нәтижесі: Str3 := "Әйтеке би"; болады, негізінде, былай жазған дұрыс: Str3 := Concat(Strl, ‘ ‘, Str2);



Салыстыру амалдары, олар: =, <>, >, >=, <, <= белгілерімен белгіленеді. Сөз тіркестерін салыстыру олардың символдарының кодтарын солдан оңға қарай біртіндеп бір-бірімен салыстыру ар­қылы жүзеге асырылады. Егер тіркестің алғашқы символдары бірдей болса, онда қай жолдың символы көп болатын болса, сол үлкен деп есептеледі. Егер өрнекте біріктіру мен салыстыру амал­дары болса, ең алдымен біріктіру амалы, содан соң салыстыру амалы орындалады. Сөз тіркестерін салыстыру амалының нәтижесі логикалық шама (TRUE немесе FALSE) болады.

Мәтін ұзындығын анықтау операциясы. Бұл операция алгоритмдік тілде ұзын (длина — length) түйінді сөзі арқылы орындалады. Мәтін ұзындығы оны құрайтын символдар санымен анықталады. Мысалы: алгоритмдік тілде ұзын («информатика») = 11, ал Паскаль тіліндегі ұзындығы LENGTH (‘информатика’) = 11.

Бір де бір символы жоқ мәтін бос мәтін болып саналады. Оның ұзындығы 0-ге тең: Ұзын («») = 0, яғни мұндай мәтін алгоритмдер мен программаларда 0 рөлін атқарады.

Көп жағдайларда өрнек құрамына тіркестік тұрақтылар, айнымалылар, тіпті символдар да енуі мүмкін.

Мысалы:


PROGRAM BK1;

VAR L :CHAR;



S : STRING[5]; R :STRING [25];

BEGIN


WRITELN(‘L,S мәндерін енгізіңдер:’);

READLN (L,S);



R:=L+S + "біздікі”;

WRITELN (R)

END.
7-ДӘРІС. Көмекші программалар.


  1. Көмекші программа-процедуралар.

  2. Идентификаторлардың көріну аймағы.

  3. Формальды және нақты параметрлер.

  4. Параметрлер мәндер, параметрлер-айнымалылар және типтік емес параметрлер.

  5. Көмекші программа-функциялар.


СТАНДАРТТЫ ПРОЦЕДУРАЛАР

Turbo Pascal тілінде көптеген стандартты процедуралар бар. Олар алдын ала ішкі программа түрінде жасалып стандартты модульге жинақталып қойылған. Ең қарапайым мысал ретінде Read, ReadLN (пернетақтадан енгізу) және Write, Writeln (экранға шығару) процедураларын алуға болады. Алдыңғы дәрістерде осындай стандартты процедуралармен танысатын боламыз.


СТАНДАРТТЫ ФУНКЦИЯЛАР

Turbo Pascal тілінде алдын ала программалары жасалып стандартты модульге жинақталып қойылған, қажет кезінде пайдалануға болатын объектілер бар. Солардың бірі стандартты функциялар болып табылады. Олар жиі кездесетін математикалық және басқа да функцияларды есептеу үшін қолданылады. Стандартты функцияны жазу үшін міндетті түрде функцияның аты және жақшаның ішінде аргументі көрсетілуі қажет.

Стандартты функциялар: abs(x) — санның абсолют шамасы, sqr(х)— х-тің квадраты, sin(x), cos(x), arctan(x), еxр(x), ln(x) — элементар функциялар, sqrt(x) — х-тің квадрат түбірі, frас(x) — санның бөлшек бөлігі, int(x) — санның бүтін бөлігі, рі (3.14159) —  саны т.б. Функ­цияны есептеу барысында аргумент пен функция типтерінің әр уақытта сәйкес келе бермейтінін есте сақтаған жөн.

Енді программаларда жиі пайдаланылатын функцияларды қарастырайық.



  1. Арифметикалық функциялар. Арифметикалық функцияларда бүтін және нақты шамалар пайдаланылады.

  2. Типтерді өзгерту функциялары. Бұл функциялар шамалардың типтерін өзгерту үшін пайдаланылады. Мысалы, нақты санды бүтін санға, цифрлар түрінде берілген символдар тізбегін бүтін санға т.б. аударады. Олар:

Сhr(х)х санын (кодын) символға аударады. Мұнда аргументтің типі (0...255) аралығындағы бүтін сан болуы қажет.

High(x) — шаманың максимум мәнін береді. Мысалы, шаманың мәні жиым түрінде болса, онда бұл функция индекстің ең жоғарғы (максимум) мәнін, ал шаманың мәні сөз тіркесі түрінде болса, онда сипатталған тіркес өлшеміндегі символдар санының үлкен мәнін береді.

Low(x) — шаманың минимум мәнін береді.

Ord(x) — саналатын (реттелген) типті бүтін типке көшіреді. Мысалы, аргумент реттелген типте (логикалық, символдық, саналатын) болса, онда нәтиже типі Longint болады.

Round(x) — нақты санды бүтін санға дөңгелектейді.

Тrunc(x) — нақты санның бүтін бөлігін береді.

3. Реттелген типтегі шамаларга пайдаланылатын функ­циялар. Бұл функциялар реттелген типтегі шамалар үшін пайдаланылады. Мысалы, элементтің алдындағы немесе соңындағы элементті анықтау т.б. Олар:

Odd(х) х сандық шамасының тақ екендігін тексеру. Мұнда аргумент типі Longint түрінде, ал сан тақ болса, нәтиже true (ақиқат), жұп болса false (жалған) болады.

Pred(х) — реттелген мәндер тізбегіндегі х-тің алдындағы элементін табу.

Succ(х) — реттелген х-тен кейінгі элементті табу. Егер бұл функция соңғы элементке пайдаланылса, қате кеткендігі туралы хабар шығады.

Шамаларға қолданылатын амалдар олардың типтеріне байланысты болады.

Бүтін сан түріндегі тип. Бүтін типтегі мәндерді қабылдайтын атаулар былай сипатталады:

Атау1, атау2, ..., атауп: тип; мұнда тип орнында бүтін типті көрсететін түйінді сөздің бірі жазылады. Мысалы, integer, byte,...

Бүтін типке мынадай амалдар қолданылады: +, -, *, /, div, mod. Төмендегі 4-кестеде осы операциялар және солардың операторлары мен нәтижелерінің типтері келтірілген.



4-кесте

Белгілер

Операциялар

Операндтар типі

Нәтиже типі

+

Қосу

Екеуі де бүтін, не

біреуі бүтін, біреуі нақты



Бүтін, нақты

-

Азайту

Екеуі де бүтін, не

біреуі бүтін, біреуі нақты



Бүтін, нақты

*

Көбейту

Екеуі де бүтін, немесе

екеуінің біреуі нақты



Бүтін, нақты

/

Бөлу

Бүтін немесе нақты

Нақты

Div

Бүтін бөлу

Бүтін

Бүтін

mod

Бүтін қалдық

Бүтін

бүтін

Қосу, азайту, көбейту, бөлу амалдары кәдімгі математикадағыдай орындалады, ал қалған екі амалға мысал келтірейік:

5 div 2 = 2, 5 mod 2 = 1

8 div 3 = 2 8 mod 3 = 2

7 div 2 = 3 7 mod 2 = 1

Төмендегі стандартты функциялар бүтін аргументтер үшін бүтін мән береді:

abs(x) — бүтін х санының абсолют шамасы;

sqr(х) — бүтін х санының квадраты;

trunc(х) — нақты х санының бүтін бөлігі (нәтиже дөңгелектенбейді), мысалы, trunc(52.9)=52;

round(х) — нақты х саны дөңгелектеніп бүтін нәтиже береді, мысалы: round(x) = round(x+ 0.5), х> = 0, round(x) = round(x-0.5), x< = 0;

succ(х) — х-тан кейінгі бүтін саңды береді, мысалы: succ(5) = 6;

pred(x) — х-тың алдындағы бүтін санды береді, мысалы: pred(5) = 4.

Нақты тип. Нақты типтегі мәндерді қабылдайтын атаулардың сипатталуы:

Атау1, атау2, ..., атауп: тип; мұндағы тип орнында нақты типті көрсететін түйінді сөздердің бірі жазылады, мысалы: real, single, ...

Жоғарыда айтылғандай бұл типтерге жатқан сәйкесінше 6 және 4 байттан орын қажет болады. Егер деректер мәні жоғарғы шектен асып кетсе, онда программаның орындалуы тоқтатылады да, қате туралы хабар шығады. Ал төменгі шектен төмен болса, онда айнымалы атауына нөл мәні меншіктеледі де программа орындала береді.

Нақты типтегі шамаларға: (+) қосу, (-) азайту, (*) көбейту, (/) бөлу амалдары қолданылады. Бұл амалдарда операндтар (аргументтер) бүтін сан болуы да мүмкін, бірақ нәтиже әрқашанда нақты сан болады, мысалы: 5/2 = 2.5, 12/6 = 2.0.

Төмендегі стандартты функциялар тек нақты мәндер береді: sin(x), cos(х), arctan(х), ln(х), ехр(х), sqrt(х). Ал егер х саны нақты болса, онда abs(х) және sqr(x) функциялары да нақты мән береді.



Логикалық тип. Бұл типтегі атаулар былай сипатталады: amayl, amay2,..., атауп: boolean;

Логикалық шамалар true (ақиқат) немесе false (жалған) мәндерінің бірін ғана кабылдайды.

Логикалық типтегі шамаларға мына амалдар қолданылады: and(ЖӘНЕ), or — (НЕМЕСЕ), not(EMEC), xor(арифметикалық НЕМЕСЕ).

Бүтін сандарға not, or, shl, shr, and, xor амалдарын қолдану биттерге амалдар қолдану болып табылады.



NOT амалы. Бұл амалды пайдаланғанда әр битті 1-ден 0-ге, ал 0-ді 1-ге алмастырады, мысалы ондық кодта not 12=-13, ал сәйкес екілік кодта:

not 0000000000000110 - 1111111111111001.

AND (ЖӘНЕ) операциясы төмендегі ақиқаттық кестесіне сәйкес операндтардың (сандардың) логикалық көбейтіндісін табады:

1 AND 1 = 1 1 AND 0 = 0

0 AND 1 = 0 0 AND 0 = 0

Операндтар ондық түрде жазылады, бірақ орындалғанда олар екілік түрге түрлендіріледі. Нәтижесі ондық түрде көрсетіледі.



OR (НЕМЕСЕ) операциясы төмендегі ақиқаттық кестесіне сәйкес операндтардың (сандардың) логикалық қосындысын табады:

1 OR l = l 1 OR 0 = l

0 OR 1 = 1 0 OR 0 = 0

Операндтар мен нәтиже ондық түрде жазылады, бірақ орындалар кезде екілік түрде түрлендіріледі.



XOR (аралас НЕМЕСЕ) операциясы төмендегі ақиқаттық кестесіне сәйкес операндтардың (сандардың) қосындысын анықтайды:

1 XOR 1 = 1 1 XOR 0 = 1

0 XOR 1 = 1 0 XOR 0 = 0

Нәтижесі ондық түрде түрлендіріледі. Логикалық шамаларға бір ғана стандартты функция odd(x) қолданылады. Егер х саны тақ болса, онда оның мәні true, ал жұп болса, онда false болады.




Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   21




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

    Басты бет