Көпөлшемді массивтер
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
Достарыңызбен бөлісу: |