Паскаль – программалау тілі
Тақырыбы: Паскаль – программалау тілі
Мазмұны
І.Паскаль программалау тiлi
1.1.Тiлдiң алфавитi
1.2.Тiлдiң қарапайым құрылымы
1.3. Идентификаторлар
1.4.Айнымалылар, тұрақтылар және оларды сипаттау
1.5. Стандартты функциялар
1.6.Өрнектер
2.Программа құрылымы. Паскаль тiлiнiң операторлары
2.1.Мәлiметтердi шығару операторлары
2.2. Меншiктеу операторы
2.3. Мәлiметтердi енгiзу операторы
2.4.Шартты оператор
2.5.Шартсыз көшу операторы
2.6.Таңдау операторы
2.7.Циклдiк (қайталау) оператор
3.Паскаль тiлiнде сурет салу
3.1.Сурет салу кезеңi
3.2. Геометриялық фигураларды салу процедуралары
3.3.Мәтiндердi шығару тәсiлдерi
4.Массив
4.1. Бiр өлшемдi массив
4.2.Көп өлшемдi массив
5.Символдық шама
5.1. Жолдар
1.Паскаль программалау тiлi
Шығу тарихы
Паскаль программалау тiлiнiң алғашқы нұсқасын 1968 жылы Стэнфорд университетiнiң информатика кафедрасының профессоры Никлаус Вирт жасады.
Ал 1975 жылы стандартты Паскальдың компиляторымен Турбо Паскаль (3.0 версия) программмалау тiлi пайда болды. Содан берi Паскаль жалпыбiлiмдiк, кәсiптiк-техникалық мектептерде және жоғары бiлiм беру орындарында “бiрiншi” программалау тiлi ретiнде қолданыла бастады.
1.1.Тiлдiң алфавитi
Тiлдiң алфавитi басқа тiлдермен салыстырғанда құрылымы жағынан түсiнiктi. Тiлдiң алфавитiнiң құрамына әрiптер, цифрлар және арнайы белгiлер кiредi.
1) Әрiптер ретiнде латын алфавитiнiң 26 әрпi ғана қолданылады. Ұлттық алфавиттегi әрiптер (қазақ, орыс т.с.с.) тек апострофқа (жоғарғы үтiрге) алынған сөз тiркестерi немесе жүйелi жақшаға алынған түсiнiктеме ретiнде ғана кездеседi.
2) Цифрлар: 0, 1, 2, …, 9
3) Арнайы белгiлерге төмендегi белгiлер жатады:
а) арифметикалық амалдардың белгiлерi
1-кесте
Р/н | Атауы | Белгiленуi | Түсiндiрме |
1 2 3 4 5
6 | қосу азайту көбейту бөлу div
mod | + — * /
|
бөлiндiнiң бүтiн бөлiгiн табу бөлген кездегi қалдықты табу |
Мысалы: 10 div 3 амалының нәтижесi 3, 10 mod 3 – нәтижесi 1.
ә) Қатынас белгiлерi:
2-кесте
р/н | Атауы | Белгiленуi |
1 2 3 4 5 6 | үлкен кiшi үлкен, не тең кiшi, не тең тең тең емес | > < >= <= = <> |
б) Айыру белгiлерi:
_ (бос орын), ., ;, :, (, ), [, ], {, }, ,,
1.2.Т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
Кез келген тұрақты, айнымалы, функция немесе өрнек өзiне тән бiр түрмен ғана сипатталады. Тұрақты сандарды сыртқы пiшiнiне қарап-ақ ажыратуға болады, ал айнымалылар мен функциялар программаның сипаттау бөлiгiнде анықтала жазылып көрсетiледi. Мәлiмет типтерi қарапайым құрылымды-скалярлық және күрделi құрылымды-структуралық шамалар болып екiге бөлiнедi. Бұл мәлiметтердiң әрқайсысының 4 түрi бар. Қарапайым скалярлық: бүтiн — INTEGER, нақты — REAL, логикалық — BOOLEAN және символдық — CHAR, ал күрделi структуралық массивтер — ARRAY, жазбалар — RECORD, жиындар — SET және файлдар – FILE болып бөлiнедi.
Сандар мен айнымалылар бүтiн және нақты болып екiге бөлiнедi. Бүтiн оң және терiс сандардың жазылуы да қарапайым: 6, -40, 1999, 0, т.с.с. Бүтiн сандар –32768 бен 32767 аралығында ғана бола алады. Нақты сандар кәдiмгi табиғи аралас сандар тәрiздi санның бүтiнi мен бөлшегi нүкте арқылы ажыратылып жазылады. Мысалы: 3.023,
-1.264, 5.0, -23.94
Ал өте үлкен немесе кiшi нақты сандар көрсеткiшi бар экспоненциал сандар түрiнде жазылады. Мысалы: -2.65Е-06, 3.9Е+04, .61Е-02, -. 5ЕЕ+08.
Мұндағы Е әрпi “10-ның дәрежесi” деген мағынаны бiлдiредi. Санның бүтiн бөлiгi нөлге тең болса, ол жазылмайды, ал санның таңбасы оң болса, + белгiсi қойылмайды. Нақты сандар -1Е-38-ден 1Е38-ге дейiнгi аралықта бола алады. Мәндерi бұл аралықтан шығатын сандар үшiн арнайы тәсiлдер қолданылады.
Логикалық немесе бульдiк тип “BOOLEAN” сөзi арқылы өрнектеледi. Бұл типтегi шама екi мәннiң бiреуiн ғана қабылдай алады:
TRUE (ақиқат) немесе FALSE (жалған).
Логикалық амалдың үш түрi бар:
AND (логикалық “және”), OR (логикалық “немесе”), NOT (логикалық “емес”). Бұл амалдардың мәндерi төмендегi қатынастар бойынша анықталады:
TRUE AND TRUE = TRUE TRUE OR TRUE = TRUE
TRUE AND FALSE = FALSE TRUE OR FALSE = TRUE
FALSE AND TRUE = FALSE FALSE OR TRUE = TRUE
FALSE AND FALSE = FALSE FALSE OR FALSE = FALSE
NOT TRUE = FALSE NOT FALSE = TRUE
Символдық немесе литерлiк типтегi берiлгендер “CHAR” сөзiмен жазылады. CHAR типтегi шамаларды арифметикалық өрнектерде қолдануға болмайды.
1.3. Идентификаторлар
Идентификатор – мiндеттi түрде әрiптен басталатын сандар мен әрiптердiң тiзбегi. Оның ұзындығы 8 символдан тұрады. Мысалы: X, X1, SERN45T3, ALFA99, P31PS161 т.с.с.
Идентификатор стандартты және бейстандартты (өзiмiз берген атау) болып бөлiнедi. Стандартты атаулар тiлдiң объектiлерiн белгiлеу үшiн қажет, оларды тек сол өз мағынасында қолдануымыз керек, мысалы: TRUE, FALSE, BOOLEAN, REAL, ABS, SIN т.б. Паскаль тiлiнде программа жазуда қолданылатын түйiндi сөздер де стандартты идентификаторға жатады, мысалы: ARRAY, PROGRAM, BEGIN, VAR, CONST т.с.с.
Өзiмiздiң тұрақтыларға және айнымалыларға беретiн атауларымыз стандартты идентификатордан өзгеше болуы керек, мысалы: SURET1, CENA, MATERIAL, 2.25 т.с.с. Бiздiң келтiрiп отырған мысалдарымызда тек латын алфавитiнiң үлкен, не кiшi әрiптерiн ғана пайдалануға рұқсат етiлген.
1.4.Айнымалылар, тұрақтылар және оларды сипаттау
Айнымалылар деп программаның орындалу барысында әр түрлi мәндердi қабылдай алатын шамаларды айтады. Олар идентификаторлармен белгiленiп, кез келген уақытта белгiлi бiр мәнге ие болады. Айнымалылардың белгiленулерi: D, X1, X2, GAMMA, SUMMA т.с.с.
Айнымалыларды сипаттау VAR түйiндi сөзiнен басталады, одан кейiн типi көрсетiлген айнымалылардың атауы көрсетiледi. Мысалы:
Var
x, y, z: integer;
a, b, c: real;
d, r: char;
meli, bol: boolean;
мұндағы, қос нүктеге дейiнгi атаулар – сипатталатын айнымалылар идентификаторлары, соңғы сөз олардың стандартты типтерi.
Тұрақтылар (константа) деп программаның орындалу барысында өзгерiссiз қалатын шамаларды айтады. Тұрақтылар INTEGER, REAL, BOOLEAN, CHAR түрiндегi мәндердi қабылдай алады. Символдық тұрақтылар апостроф iшiндегi таңбалармен жазылады, мысалы, ‘A’. Логикалық түрдегi тұрақтылар — TRUE (ақиқат) немесе FALSE (жалған) мәндерiнiң бiреуiне ие бола алады.
Жалпы түрi:
Const < айнымалының аты > = < мәнi>
Мысалы:
Const a=3; pi=3.14; g=9.8;
Тұрақтыларды анықтау CONST түйiндi сөзiнен кейiн оларды сипаттап жазудан басталады. Әрбiр тұрақты сипатталғаннан кейін (;) белгiсi қойылады. Мысалы:
Const
Xmin=1; xmax=20; ymax= 5*amax;
A=’b’; q=ord(‘r’)-ord(‘m’);
Тұрақтының типi сәйкес мәннiң типiмен анықталады.
1.5. Стандартты функциялар
Стандартты функциялар математикалық және басқа да функцияларды есептеу үшiн қолданылады. Стандартты функцияны жазу үшiн ең алдымен функцияның аты, сосын жақшаның iшiнде аргументi көрсетiлуi керек.
Паскаль тiлiнiң стандартты функциялары.
3-кесте
№ | Математика тілінде жазылуы | Паскаль тілінде жазылуы | Түсiнiктемесi |
1 2 3 4 5 6 7 8 | Sinx Cosx Arctgx X2 Öx êxç ln x еx | Sin(x) Cos(x) Arctan(x) SQR(x) SQRT(x) abs(x) ln(x) exp(x) | Синус Косинус Арктангенс х-тың квадраты х-тың квадрат түбiрi х-тың абсолют шамасы х-тың натурал логарифм шамасы е-ң х дәрежесi |
-1, егер х<0
signx= 0, егер х=0 SGN(x) – санның таңбасы
1, егер х>0
Бұл тiзiмде жоқ функцияларды есептеу үшiн әр түрлi түрлендiру формулаларын пайдалану керек.
Мысалы: tgx = sin(x)/cos(x);
chx = (exp(x)+exp(-x))/2;
Arcsinx = ARCTAN( x/SQRT(1-SQR(x)));
Arcctgx = ARCTAN(1/x);
Log5x=ln(x)/ln(5);
an = exp(n*ln(x)) — a-ның n дәрежесi
1.6.Өрнектер
Өрнектер деп арифметикалық амалдардың таңбаларымен б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р жолдарға сiлтемесi бар бөлiктерде ғана белгiлер орналасады. Белгiлер LABEL (белгi) сөзiнен басталады да, одан кейiн программада қолданылатын белгiлер жазылады. Белгi ретiнде 0-ден 999-ға дейiнгi оң бүтiн сандар және идентификаторлар пайдаланылады. Жазылу үлгiсi:
LABEL N1,N2,N3,…,NK;
Мысалы: LABEL 1, 5, 20, pl, st;
Операторлар бөлiгiндегi бiр қатарға қойылған белгi келесi сөз тiркестерiнен қос нүкте (:) арқылы ажыратылып жазылады.
2.Программа құрылымы
Паскаль тiлi блокты құрылымдардан, яғни программа жеке блоктардан құралған. Жалпы блок оның тақырыбынан, сонан соң сипаттамалық және операторлық бөлiктерден тұрады. Блоктың тақырыбын әркiм өз қалауынша қояды, бiрақ ол блоктың iшкi мазмұнына байланысты болуы қажет. Блок программаны, процедураны немесе функцияны көрсетуi мүмкiн.
Программа тақырыбы PROGRAM сөзiнен және программаның атауынан тұрады. Турбо Паскальдың 7 версиясында программа тақырыбын жазбай-ақ қойса да болады. Сипаттаманы беру бөлiгi программада кездесетiн барлық мәлiметтердi хабарлауға және соларды сипаттауға арналған. Кей жағдайда сипаттау бөлiгiнiң жоқ та болуы ықтимал. Программаның операторлық бөлiгi берiлген алгоритмдi жүзеге асырады және ол BEGIN түйiндi сөзiмен басталып, END сөзiмен аяқталады.
Программаның жазылу құрылымы:
PROGRAM аты;
мәлiметтердiң аты;
мәлiметтердiң типiн көрсетiп сипаттау;
олардың мүмкiн мәндерi;
BEGIN
операторлар тiзбегi;
нәтижелер тiзбегi;
END.
Мұндағы PROGRAM — программа, BEGIN — программаның басы, END — программаның соңы деген мағынаны бiлдiредi. (;) белгiсi операторларды бiр-бiрiнен ажырату үшiн жазылады, бiрақ ол соңғы оператордан кейiн қойылмайды. Программаның соңы END сөзiнен кейiн ғана (.) қойылады, ол программаның аяқталғанын бiлдiредi.
Паскаль тiлiнiң операторлары
Операторлар программаның BEGIN және END түй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 жақшаға алынған түсiнiктеме сөздердi қазақша әрiптермен терген орынды.
Операторлар қарапайым және құрмалас болып екiге бөлiнедi. Қарапайым операторлар құрамында басқа операторлар болмайды, яғни ол тек бiр оператордан тұрады. Оған меншiктеу, көшу, процедураны шақыру, енгiзу-шығару операторлары жатады.
Құрмалас операторлардың құрамына бiрнеше қарапайым операторлар енедi, олар: шартты, таңдау және үш циклдiк операторлар болып бөлiнедi.
2.1.Мәлiметтердi шығару операторлары
Паскал тiлiнде енгiзу-шығару операторлары процедура болып анықталады.
Шығару операторлары есептiң нәтижесiн қағазға басып алу үшiн қолданылады.
Жазылу үлгiсi:
1) WRITE (S);
2) WRITE (P,S,H);
- WRITE (Y,Z);
- WRITELN(Y,Z)
Оператордан кейiн жақша iшiне айнымалылар аттары жазылады.
WRITE – оператордың аты, ағылшынша “жазу” деген ұғымды бiлдiредi. 4-мысалдағыдай ln сөзiн қосатын болсақ, онда меңзер келесi жолға көшедi. Егер жақшаның iшiнде бiрнеше айнымалы кездессе, онда олардың арасына “,” үтiр таңбасы қойылады. Шығарылатын мәндердiң түрi айнымалылардың типi арқылы анықталады, олар: integer, real, boolean (true, false), char, string.
Шығару операторы арқылы жақша iшiнде экранға шығарылатын мәннiң ондағы алатын орнын, яғни оның енiн толық көрсетуге болады. Оның бүтiн санды енiн көрсете отырып экранға шығарады, мысалы, x айнымалысының бүтiн түрдегi мәнiн көрсету. WRITE (x:n) немесе WRITE (x:4) операторы арқылы жүзеге асырылады. Мұндағы, x – айнымалының атауы; n – мәнi бүтiн сан болып келетiн тұрақты түрiнде берiлген орындар саны, оны бiрден бүтiн санмен жазуға да болады. Егер x екi-үш разрядты сан болса, онда төртке дейiнгi толтырылмаған орындар сол жақ шетте бос қалдырылады. X=53 мәнi үшiн WRITE (x:4) операторы экранға “53” тiркесiн шығарады.
Нақты сандар үшiн оның жалпы енiн, сонан соң бөлшек сандардың алатын орынын көрсету қажет, сол себептi аралас сандарды бейнелеуге оның енi қос нүктемен бөлiнген екi бүтiн сан арқылы жазылады. Мысалы, С=-132.6578 болғанда WRITE (С:8:3) операторы экранға –132.657 мәнiн шығарады, мұндағы жалпы орындар саны –8, ал бөлшек үш санмен бейнеленгендiктен соңғы бiр цифр жазылмай қалып отыр. С айнымалысының берiлген мәнiн толық бейнелеу үшiн WRITE (С:9:4) операторын жазу керек едi. Жалпы нақты сандарды экранда бейнелеу операторының түрi:
WRITE (С:n:m);
Мұндағы, n — C мәнiнiң бүтiн бөлiгiне белгiленген орын саны; m – C мәнiнiң бөлшек бөлiгiне белгiленген орын саны. n-нiң мәнi таңбаны, бүтiн мен бөлшектi бөлетiн нүктенi және бүтiн сандар орнын бөлшекке қосып көрсететiндiктен, ол n>m+3 болуы тиiс.
Шығару операторының орындалуына келетiн болсақ жақша iшiндегi штрихпен алынған текст және тiзiмде көрсетiлген айнымалылардың сандық мәндерi жауап ретiнде шығарылады. Ал өрнек жазылса, оның мәнi есептелiп, бiрақ шығарылады.
1-мысал: Экранға “Мен 9-сыныптың оқушысымын” және “Мен паскаль тiлiн оқып, үйренемiн“ деген сөздердi шығару программасын жаз.
PROGRAM Паскаль;
BEGIN
WRITELN (‘Мен 9-сыныптың оқушысымын’);
WRITELN (‘Мен паскаль тiлiн оқып, үйренемiн’);
END.
Программаны жазып болған соң:
— оның дұрыстығын F9 пернесі арқылы тексеру керек;
- программада қате кездессе, қатесiн программа дұрыс болғанша түзету керек;
- программа дұрыс болғанда оны CTRL+ F9 пернелері арқылы орындауға жiберу керек;
- ALT+F5 пернелері арқылы нәтижесiн шығару керек.
Алдымен “Мен 9 – сыныптың оқушысымын” деген сөз, ал келесi жолға “Мен паскаль тiлiн оқып, үйренемiн“ сөздерi экранға шығады.
2.2. Меншiктеу операторы
Меншiктеу операторы жазылған өрнектердiң мәнiн есептеп, оны айнымалыға телу үшiн қолданылады. Өрнек мәнiнiң типi айнымалының типiне сәйкес келуi тиiс. Литерлiк (символдық) айнымалылардың мәндерiн штрих арқылы меншiктеу керек.
Жазылу ережесi:
<айнымалы>:=<өрнек>;
мұндағы := — меншiктеу белгiсi, яғни айнымалының мәнi өрнектiң есептелген сан мәнiне тең болуы тиiс. Мысалдар:
x:=4.5; v:=’s’;
y:=sqr(a)+sqr(b); q:=’)’;
d:=sqr(b)-4*a*c; n:=’f’;
Ендi осы аталған операторды кез келген типтегi есептердi шығаруға пайдаланып, мысалдар келтiрейiк.
1-мысал: а=5, b=4, c=0.5 сандары берiлген. Осы сандардың көбейтiндiсiн есептеуге (Х=abc) программасын құр.
Program Көбейтiндi;
Var a,b: integer; {a және b айнымалыларының типi-бүтiн}
x,c: real; {x және c айнымалыларының типi-нақты}
begin
a:=5; b:=4; c:=0.5; {a-ны 5-ке,b-ны 4-ке,c-ны 0,5-ке меншiктеу}
x:=a*b*c; {a,b және c сандарын көбейтiп, x-ке меншiктеу}
Writeln(‘көбейтiндi x=’, x); {x көбейтiндiсiн жауапқа шығару}
End.
2.3. Мәлiметтердi енгiзу операторы
Енгiзу операторлары есеп шығаруға қажеттi берiлген мәлiметтердi пернетақтадан енгiзу үшiн қолданылады.
Жазылу үлгiсi:
- READ (x);
- READ (A,B,C);
- READLN(X1,X2);
Мұндағы, READ — оператордың аты, ағылшынша “оқу” деген ұғымды бередi, ал одан кейiн жақша iшiнде – енгiзiлетiн айнымалылардың атаулары берiледi. Алғашқы 2 оператор айнымалылардың мәндерi пернетақтадан енгiзiлген соң, курсорды келесi қатарға көшiрмейдi.
Ал READLN ( READ LINE –“жолды оқу” деген сөздiң қысқартылуы ) пернетақтадан мәндер енгiзiлгеннен кейiн курсор келесi қатарға көшiп кетедi.
Енгiзiлген айнымалының мәндерi INTEGER, REAL, CHAR типтерiне жатуы мүмкiн. Мысалдар.
1-мысал: Радиусы R-ге тең шеңбер берiлген. Шеңбердiң ұзындығын есептеу программасын құр.
RPOGRAM Шеңбер;
CONST PI =3.14159; { тұрақты санын сипаттау.}
VAR L: REAL; { Шеңбердiң ұзындығы L нақты сан}
R: INTEGER; { радиус R — бүтiн сан}
BEGIN
WRITELN (‘Шеңбердiң радиусы R-дi енгiз”);
READ(R); { R-дi енгiзу. }
L:=2*Pi*R; {L-дi есептейдi}
WRITELN(‘L=’,L:4:2); {L-дi жауапқа шығару}
END.
2.4.Шартты оператор
Басқару (шартты, таңдау және циклдiк) операторлары программа жолдарының орындалу реттiлiгiн өзгертедi. Шартты операторлар нәтижесi ақиқат болғанда (Иә) немесе нәтижесi жалған болған жағдайда (жоқ) деп жауап беретiн белгiлi бiр логикалық шартты тексередi. Бұл оператордың жазылу түрi төмендегi үлгiлердiң бiрiне сәйкес келуi керек:
а) if шарт then 1-оператор else 2-оператор; мұндағы, if-оператордың аты (егер), then (онда), else(әйтпесе)- түйiндi сөздерi; шарт- логикалық өрнек (типi boolean); 1-оператор және 2-оператор- кез келген орындалатын операторлар.
1-мысал: Х және Ү нақты сандары берiлген. Осы сандардың үлкенiн табу программасын құр.
PROGRAM үлкен;
Var x,ү:max:real;
Begin x:=0.2; y=-5; { x және y-тiң мәндерi меншiктеу
операторымен енгiзiледi}
If x>y then max:=x { екi сан келесi x>y шарты бойынша тексерiледi}
{ егер шарт орындалса, үлкенi-x}
Else max:=y; { шарт орындалмаса, үлкенi -y}
Writeln(‘max=’,max); { max-ын жауапқа шығару}
End.
Толық тармақталған шартты оператордың жалпы жазылу түрi:
б) If <1-шарт> then if <2-шарт> then <1-оператор> else <2- оператор>
Ендi осындай түрдiң Begin және End операторларының көмегiмен белгiленген толық шартты операторының жалпы түрi төмендегiдей болады:
If <шарт> then {шарттың орындалу немесе}
begin {орындалмауына байланысты}
<1-оператор>; {құрмалас операторлардың}
<2-оператор>; {бiрiн таңдап, ал}
… {екiншiсiн аттап өту}
<n-оператор>;
end
else
begin
<n+1-оператор>;
<n+2-оператор>;
…
<n+k –оператор>;
end;
1-мысал: a,b,c сандарының ең кiшiсiн табу программасын жаз.
Program кiшi;
Var a,b,c,x,min:integer;
Begin read(a,b,c);
If a<b then x:=a else x:=b;
If x<c then min:=x else min:=c;
writeln(‘ең кiшi сан=’,min);
End.
2.5.Шартсыз көшу операторы
Паскаль тiлiнде программа текстiндегi операторлардың рет-ретiмен орындалуын бұзып, яғни программаның кейбiр бөлiктерiн орындамай өтiп кету және керi қайту үшiн шартсыз көшу операторы қолданылады. Ол goto (көшу) түйiндi сөзiнен басталады, одан кейiн label бөлiмiнде сипатталған белгi идентификаторы келтiрiледi.
Оның жазылу ережесi :
Goto<m>;
Мұндағы m-белгi,
Мысалы :goto 1
goto 5
…
goto m
Осы оператор бойынша белгiдегi көрсетiлген нөмердiң операторына көшу орындалады.
1-мысал: xÎ[0;5] аралығында қадамы h=1-ге тең болғандағы
функциясының мәнiн есептеу программасын жаз.
Program қадам ;
Label 1;
Var x, z: real; h: integer;
Begin x:=0; h:=1;
1: Z:=sqrt(sqr(x)*x+4*x+1);
writeln(‘x=’,x);
writeln(‘z=’,z);
x:=h+1;
if x<=5 then goto 1; END.
2.6.Таңдау операторы
Таңдау операторы (case) б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:
Case <өрнек> of
C 1: <1-оператор >;
C 2: <2-оператор >;
…
C N: <n-оператор >;
[else <k-оператор >]
END;
Мұндағы <өрнек>- тексерiлетiн шарт, не таңдау индексi;
C 1;C 2;…;C N-тұрақтылар, яғни өрнектiң мүмкiн мәндерi;
<1-операторы>,<2-операторы>,…,<n-операторы>-тiлдiң кез келген операторлары;
<k-оператор>-өрнектiң мәнi көрсетiлген мәндерден өзгеше болғанда орындалатын тiлдiң кез келген операторы.
Тiк жақшаның iшiндегi сөз тiркесi болмауы да мүмкiн, ондай жағдайда, өрнектiң мәнi көрсетiлген тұрақтылардың ешбiр мәнiне сәйкес келмесе операторды орындау бiрден аяқталады. Сонымен таңдау операторы шартпен тұрақты мәндерiнiң сәйкес келуiне байланысты бiр ғана операторды орындауы тиiс.
Мысалдар:
1-мысал. Аптаның жетi күнiн шығару.
Program АПТА;
Var kyn :integer;
Begin
Read(kyn); {1 ден 7ге дейiнгi кез келген сан енгiзiлiп,егер ол}
Case kyn of
1:writeln(‘Дүйсенбi’); {1-ге тең болса“дүйсенбi”}
2:writeln(‘Сейсенбi’); {2-ге тең болса“сейсенбi”}
3:writeln(‘Сәрсенбi’); {3-ке тең болса“сәрсенбi”}
4:writeln(‘Бейсенбi’); {4-ке тең болса“бейсенбi”}
5:writeln(‘Жұма’); {5-ке тең болса“жұма”}
6:writeln(‘Сенбi’); {6-ға тең болса“сенбi”}
7:writeln(‘Жексенбi’); {7-ге тең болса“жексенбi”}
end; {деген сөз жазылып шығады}
end.
2.7.Циклдiк (қайталау) оператор
Кейбiр программалардың белгiлi бiр операторлары бiрнеше рет қайталанып отыруы мүмкiн. Мұндай болып келген операторлар тiзбегiн цикл операторлары деп атайды. Циклдiк оператордың үш түрi бар: параметрлi цикл-FOR, шартын алдын-ала тексеретiн цикл- WHILE және шартты соңынан тексеретiн цикл-REPEAT.
Егер циклдiң қайталанатын саны бастапқы орындалар кезде белгiлi болса, онда немесе операторын пайдаланамыз.
Параметрлi FOR операторы
FOR операторы цикл параметрi өзiнiң алғашқы мәнiнен соңғы мәнiне дейiн бiрлiк қадаммен өзгеру барысында циклге кiретiн бiр немесе бiрнеше операторды қайталау iсiн атқарады.
Бұл оператордың екi жалпы түрi бар:
- for i:=n1 to n2 do <оператор>;
- for i:=n2 downto n1 do <оператор>
мұндағы for-оператордың аты, “үшiн” болып аударылады; to-түйiндi сөз (дейiн); do-түйiндi сөз (орындау); i-цикл параметрi санауға, реттеуге болатын типтегi айнымалы; n1, n2 -цикл параметрiнiң алғашқы және соңғы мәндерi; <оператор> -бiрнеше рет қайталанатын оператор. Мысалдар:
1-мысал: 1 ден 100-ге дейiнгi натурал сандардың қосындысын табу керек, яғни мынадай қосындыны анықтау қажет:
Program Қосынды;
Var i, s: integer;
Begin s:=0;
for i:=1 to 100 do {цикл басы}
s:=s+i; {қайталану операторы}
Writeln(‘қосынды=’,s); {қосындыны жауапқа шығару}
End.
Цикл-әзiр операторы
Шартын алдын-ала тексеретiн қайталану саны белгiсiз операторы WHILЕ (әзiр) шарт ақиқат болғанда ғана орындалады. Егер шарт жалған болса, бұл цикл бiр рет те орындалмауы мүмкiн. Бұл оператордың жазылу түрi:
WHILЕ <шарт> DO <оператор> { бiр оператор қайталанады}
WHILE < шарт > DO
{бiрнеше оператор қайталанады}
ВЕGIN
< 1- оператор ;>
<2-оператор ; >
< n – оператор;>
END.
Мысалдар:
1-мысал. Евклид алгоритмi бойынша екi натурал санның ең үлкен ортақ бөлгiшiн табу (ЕҮОБ).
- Егер екi сан тең болса, онда ЕҮОБ ретiнде екеуiнiң бiреуi алынып орындалу
тоқтатылады.
- Сан тең болмаса, онда олардың үлкенiн табу керек.
- Үлкен санды, үлкен сан мен кiшi санның айырымына алмастырамыз да, алгоритмдi басынан бастап қайта орындау керек.
Program ЕҮОБ;
Var m, n: integer;
Begin READLN(m, n);
WHILE m<>n do
IF m>n then m:=m-n
else n:=n-m;
WRITELN(m);
END.
Цикл-дейiн операторы
Шарт цикл соңында тексерiлетiндiктен REPEAT (қайталау) операторы ең болмағанда бiр рет орындалады. Циклдiң орындалу шарты ақиқат болғанда оның жұмысы тоқтатылды.
Жазылу түрi:
REPEAT <оператор> UNTIL <шарт>
{бiр оператор қайталанады}
мұндағы UNTIL-түйiндi сөз, “дейiн” болып аударылады. Ал бiрнеше оператор қайталанатын жағдайдағы жазылуы:
REPEAT <1-оператор>;
<2-оператор>;
…
<n-оператор>;
UNTIL <шарт>;
Бұл жерде құрмалас оператор REPEAT және UNTIL сөздерiнiң арасында орналасып, басқа түйiндi сөздер жазылмайтыны көрiнiп тұр. Бұл операторды да WHILE операторын пайдаланған есептерде қолдануға болады.
Мысалы.
S=10+9+8+7+6 қосындысын есептеу.
Program Қосын-2 ;
Var i, s : integer;
Begin i:=10; s:=0;
REPEAT s:=s+i;
i:=i-1; UNTIL i<5; Writeln(‘i=’, i, ‘s=’, s); end.
3.Паскаль тiлiнде сурет салу
3.1.Сурет салу кезеңi
Турбо Паскальда графикамен жұмыс iстеу үшiн графиктiк операторларды (Uses), драйверлердi (GraphDriver), модульдердi (Crt, Graph), режимдердi (GraphMode, CloseGraph) қосуымыз қажет.
Арнайы графиктiк оператор – Uses болып табылады.
Турбо Паскальда графикалық бейнелердi салу үшiн стандартты кiтапханалық Graph модулi арналған. Ол әр түрлi адаптерлi дисплейлерде графикалық режимдердi толығымен басқаруды қамтамасыз ететiн программалардың кiтапханасы. Ал Crt модулi экранға информацияларды шығаруды, пернетақтадан берiлгендердi енгiзудi, сол сияқты терезелермен жұмыс iстеудi, дыбыстық сигналдар мен түрлi-түстi мәтіндік жолдарды экранға шығаруды қамтамасыз етедi.
Программа түсiнiктемесi:
Рrogram Сурет;
Uses Graph, Crt;
Var GraphDriver, {Графикалық драйвер}
Graphmode: integer; {Графикалық режим}
Begin
Clrscr; {Экранды тазалау}
GraphDriver := 0; {Графикалық драйвердi ашу}
InitGraph (GraphDriver, GraphMode, ‘ ‘); {Графикалық жүйенi нициализация
жасайды және аппаратураны графикалық режимге ауыстырады}
If GraphResult <> 0 then {Қате пайда болды}
Begin
Writeln; {Графика қатесiнiң нициализациясы}
Writeln; {Программа жұмысын тоқтату}
Halt; {Тоқтату}
End;
{Осы жолдан бастап графикалық әрекеттердi орындау процесi басталады }
Readln; {Enter түймесiне басқанға дейiн суреттi
экранда көрсетiп тұру}
CloseGraph; {Графикалық режимдi жабу}
End.
GraphDriver сөзiн (G) деп, ал GraphMode сөзiн (RGM) деп қысқартып алуға болады.
Координаттар жазықтығы
Турбо Паскальдағы графикалық режимде төмендегi координаттар жазықтығы пайдаланылады.
Графикалық режимдегi координаталар жазықтығындағы бiрiншi Х координатасы көлденеңiнен солдан оңға, ал екiншi У координатасы тiгiнен жоғарыдан төмен қарай өзгерiп отырады. Координатаның басы сол жақ жоғарғы бұрыштағы (0,0) координатасы болып табылады. Х координатасында 640, ал У координатасында 480 нүктесi бар, яғни координатаның оң жақ төменгi бұрыштағы нүкте (640,480)
Х координатасы
(0,0) (640,0)
У координатасы
(0,480) (640,480)
Графикалық режимде 0-ден 15-ке дейiн өзгеретiн 16 түс бар. Кез келген суреттiң түсiн анықтағанда сол түстi төмендегiдей ағылшынша сөзбен немесе сәйкесiнше керектi санды жазып көрсетуге болады.
Түстердiң тұрақтылары
1-кесте.
Р/н | Түстердiң жазылуы | Мәндерi |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Black Blue Green Cyan Red Magenta Brovn LightGray DarkGray LightBlue LightGreen LightCyan LightRed LightMagenta Yellow White | 0 ( қара ) 1 ( көк ) 2 ( жасыл ) 3 ( бирюза ) 4 ( қызыл ) 5 ( малина ) 6 ( қоңыр ) 7 ( ашық сұр ) 8 ( қара сұр ) 9 ( ашық көк ) 10 ( ашық жасыл ) 11 ( ашық бирюза ) 12 ( ашық қызыл ) 13 ( ашық малина ) 14 ( сары ) 15 ( ақ ) |
Бояу әдiстерiне сипаттама
2-кесте.
Мәндерi | Жазылуы | Бояу әдiс түрлерi |
0 1 2 3 4 5 6 7 8 9 10 11
| EmptyFill Solidfill Linefill ItStashFill StashFill BkStashFill LtBkStashFill HatchFill XhatchFill InterleaveFill WideDotFill CloseDotFill
| Тұйық облысты фондық түспен бояу Тұйық облысты толықтай (сплошная) бояу Сызықтармен бояу //////////////// сызықтармен бояу Қалың /////////////////сызықтармен бояу Қалың \\\\\\\\\\\\\\\\\сызықтармен бояу \\\\\\\\\\\\\\\\ сызықтармен бояу Сирек штриховкамен бояу Жиi штриховкамен бояу Үзiк сызықтармен бояу Сирек нүктелi сызықтармен бояу Жиi нүктелi сызықтармен бояу |
3.2. Геометриялық фигураларды салу процедуралары
Кез келген фигураларды салмастан бұрын экранның түсiн және салынатын фигура жиегiн анықтайтын процедуралармен танысайық.
- SetBkColor(Color) — экранның фонының түсiн бiлдiредi, color-түсi.
- SetColor(Color) — фигура жиегiнiң түсiн бiлдiредi, color-түсi.
Ендi фигураларды салу процедураларына тоқталайық.
- PutPixel(X,Y,Color) — боялған нүкте салу, мұндағы (X,Y) – нүктенiң координатасы, Color — түсi.
- Line(X1,Y1,X2,Y2) — түзу салу процедурасы, мұндағы Х1,Y1 – түзудiң бастапқы нүктесiнiң координатасы, ал X2,Y2 — соңғы нүктесiнiң координатасы.
- Rectangle(X1,Y1,X2,Y2) — тiктөртбұрышты салу процедурасы,
мұндағы, Х1,Y1 – тiктөртбұрыштың сол жақ жоғарғы бұрыштың нүктелерiнiң координаталары, ал X2,Y2 — оң жақ төменгi бұрыштың нүктелерiнiң координаталары.
- Circle(X,Y,R) — шеңбердi сызу процедурасы, мұндағы (X,Y)-шеңбер центрiнiң нүктесi, R-радиусы.
1-мысал. Сары түстi экранға қызыл түзу, жасыл үшбұрыш, көк тiктөртбұрыш және қоңыр шеңбер салу программасын жаз.
1-сурет.
Программасы:
Program Сурет-1;
Uses Graph, Crt;
Var GraphDriver,
Graphmode: integer;
Begin
Clrscr;
GraphDriver := 0;
InitGraph (GraphDriver, GraphMode, ‘ ‘);
If GraphResult <> 0 then
Begin
Writeln;
Writeln;
Halt; End;
SetBkColor(14); {Экранды сары түспен бояу}
SetColor(4); {Жиегi қызыл болатын
Line(40, 180, 240, 100); түзу салу}
SetColor(1); {Жиегi көк болатын
Rectangle(80, 260, 320, 360); тiктөртбұрыш салу}
SetColor(2); {Жиегi жасыл болатын
Line(380, 100, 380, 220);
Line(380, 100, 600, 220); үшбұрыш салу}
Line(380, 220, 600, 220);
SetColor(6); {Жиегi қоңыр болатын
Circle(480, 280, 40); шеңбер салу}
Readln; CloseGraph;
End.
Осы процедуралардан кейiн тұйық облыстардың iшiн қалай бояуға болады екен деген сұрақ тууы мүмкiн, мысалы тiк төртбұрышты, шеңбердi, т.с.с. Ол төмендегi екi процедурамен жүзеге асырылады:
- SetFillStyle(Pattern, Color) — мұндағы Pattern-бояудың типтерi, Color-түсi.
8.FloodFill(X,Y, Color) — мұндағы (X,Y)-тұйық облыстың iшiндегi кез келген нүктенiң координатасы, Color-түсi.
Тұйық облыстың iшi дұрыс боялуы үшiн ең алдымен оның кез келген iшкi нүктесi дұрыс табылуы және SetColor мен FloodFill процедураларындағы түстiң мәндерi бiрдей алынуы керек.
- Боялған тең бүйiрлi трапецияға iштей шеңбер, ал оның iшiне тең қабырғалы үшбұрыш салуға программа құр.
Доға, сектор, эллипс, эллипстiк доға және боялған эллипс салу поцедураларымен танысайық. Айтылатын бұрыштар сағат тiлiне қарсы сызылады.
Arc(X,Y,M,L,R)-доға салу. Мұндағы (X,Y)-доға шеңберiнiң центрi, M-доғаға тiрелетiн бастапқы, ал L-соңғы осьтiк бұрыштары, R-радиусы.
3.3.Мәтiндердi шығару тәсiлдерi
Кез келген мәтiндi экранға шығару үшiн төмендегi процедуралар пайдаланылады.
OutTextXY(x, y, ‘Text’) – процедурасы, мұндағы (x, y) — текстiң орналасу нүктесi, Text- кез келген мәтiн.
Мәтiннiң шрифтiсi мен өлшемiн өзгертуге болады, ол келесi процедура арқылы жүзеге асырылады.
SetTextStyle(F, D, CS)
мұндағы, F — текстiң шрифтi, D — бағыты, CS — өлшемi. D бағыты 0-ден 3-ке дейiн, ал CS бағыты 0-ден 10-ға дейiн өзгередi. Экранға жазылатын мәтiнге де процедурасы арқылы қалауымыз бойынша кез келген түс беруiмiзге болады.
Мысал. Эллипс пен шеңбер салып, олардың iшiне сәйкесiнше ”эллипс”, ”ШЕҢБЕР”сөздерiн жазып шығару программасын жаз.
Program Сурет-3;
Uses Graph, Crt;
Var GraphDriver,
Graphmode: integer;
Begin
Clrscr;
GraphDriver := 0;
InitGraph (GraphDriver,GraphMode,‘‘);
If GraphResult <> 0 then
Begin Writeln; Writeln; Halt;
End;
SetBkColor(9); Setcolor(4); Fillellipse(300, 150,100,50);
Setfillstyle(1, 11); Floodfill(300,150,4);
Setcolor(1); Settextstyle(9,0,3); OuttextXY(280,130, ‘эллипс’);
Setcolor(2); Circle(300, 350,70); Setfillstyle(1, 7); Floodfill(300,350,2);
Setcolor(9); Settextstyle(9,0,3); OuttextXY(280,350, ‘ШЕҢБЕР’);
Readln; Closegraph; end.
4.Массив
4.1. Б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нде жазылады, мысалы
А(I), С(12), К(100)
Паскаль тiлiнде массивтiң нөмерi /индексi/ тiк жақшаға алынып, жазылады, мысалы
1,6; 4,9; 5; 8,9; 0,47 –мәндерiнен тұратын А массивiн былай жазамыз:
A[1]=1,6; A[2]=4,9; A[3]=5; A[4]=8,9; A[5]=0,47
Егер есептеу барысында А1, А2, А3, … , А25 немесе {Ai}, мұндағы i=1, 2, 3, … 25 тәрiздi массив кездессе, онда оны программа барысында А[25] түрiнде жазамыз.
Мұндағы А-массив аты болады да, 25-оның индексiнiң қабылдайтын ең үлкен мәнi болып есептеледi.
Паскаль тiлiнде массивтi программада қолдану үшiн алдымен оларды мiндеттi түрде арнаулы ARRAY /ағылшын тiлiнен аударғанда – массив/ -операторы арқылы сипаттап жазу керек.
Ол айнымалы — VAR немесе TYPE –тип бөлiгiнде көрсетiледi, VAR арқылы жазылуы:
VAR массив аты : ARRAY [бастапқы нөмерi .. соңғы нөмерi] OF типi;
Мәселен алдыңғы мысалдағы А массивi үшiн:
VAR А : ARRAY [1 .. 5] OF REAL;
мұндағы, А – массив аты, элементтерi нақты шама — REAL қабылдайды. Нөмерi /индексi/ 1-ден 5-ке дейiн.
Массивтiң бүтiн, не нақты сандардан тұратын сандық типтерiн алдыңғы мысалдардан көрiп отырсыңдар. Сондай-ақ массив символдық типтен де тұрады. Символдық жол – STRING үшiн массив келесi түрде өрнектеледi:
TYPE
STRING : АRRAY [0 .. 255] OF CHAR ;
Массивтiң нөмерiнiң санына қарай қанша элементтi массив екенiн байқауға болады. Алдыңғы мысалда STRING –массивi 255 элементтi болады.
Келесi мысалдарды қарастыратын болсақ массив нөмерi тек сол мәндердi ғана емес, басқа мәндердi де қабылдайтынын төмендегi келтiрiлген мысалдардан да көре аласыздар.
- Мәтіндегі латын әрiптерiн шығару:
VAR әрiп : ARRAY [‘A’ .. ‘Z’] OF INTEGER;
- Құрылықтағы бiр жылдағы ауаның орташа температурасы:
TYPE құрылық =(Гаити, Таймыр, Ява, Тасмания Сицилия, Фемарн);
VAR T : ARRAY [құрылық] OF REAL;
- Келесi адамдардың қайсысының бойы ең ұзын:
TYPE aты =( Қарлығаш, Имаш, Ақын, Сара, Бақыт );
VAR Ж : ARRAY[ аты ] OF (ұл, қыз);
Б : ARRAY [ аты ] OF 140 .. 240;
Осы мысалдарға қарай отырып, массивтiң дұрыс /қатесiз/ жазылуын келесi түрде көрсетуге болады:
VAR M : ARRAY [1 .. N] OF REAL;
Жыл : ARRAY [қаңтар .. желтоқсан ] OF INTEGER;
L : ARRAY [Жол] OF BOOLEAN;
M1: ARRAY [CHAR] OF Шеңбер;
Егер бiрнеше массивтер бiр ыңғай типтi және элементтер саны тең болса, онда оларды программада бiр жолда сипаттауға болады, мысалы
VAR A, B, C : ARRAY [1 .. 25] OF REAL;
Мұнда, А, В, С – массивтерiнiң мәндерi 25 элементтен тұратын нақты сандар.
A[1], A[2], A[3], … , A[25],
B[1], B[2], B[3], … , B[25],
C[1, C[2]], C[3], …, C[25]
Паскаль тiлiнде масивтер арасында “тең”, ”тең емес” немесе “ меншiктеу операторы ” амалдарын қолдануға болады. Мысалы: егер А және В массивi былай берiлсе,
VAR
A, B : ARRAY[1..10] OF REAL;
Бұған үш амалды қолданғанда төмендегiдей нәтиже бередi:
Өрнек | Нәтиже |
А = В
| Егер әрбiр А массивi элементiнiң мәнi сәйкес В массивi элементерiнiң мәнiне тең болса. |
А<>B | Егер А массивi элементiнiң ең болмағанда бiр мәнi сәйкес В массивi элементiнiң мәнi тең болмаса. |
A:= B | В массивi элементiнiң барлық мәнi сәйкес массивi элементiнiң мәнi меншiктеледi. В массивi элементiнiң мәндерi өзгерiссiз қалады. |
Массивтi программаға енгiзу мен оны одан шығару үшiн цикл қолданылады, мысалы
FOR I:=1 TO 9 DO
READ(F[I]);
бұл жол тоғыз элементтен тұратын А – массивiн енгiзедi, ал цикл
FOR I:=1 TO 9 DO
WRITE(A[I]);
тоғыз элементтен тұратын массивтi шығарады.
Массив элементтерiн iздеу және реттеу
Мысал. 25 саннан тұратын массив элементтерiнiң iшiнен берiлген санға тең элементтерiн табу керек.
RPOGRAM MATRIX_2;
CONST N=25;
VAR
I, S, R : INTEGER;
A: ARRAY [1..N] OF INTEGER;
BEGIN
FOR I: = 1TO N DO
BEGIN
WRITE(‘Массив элементтерiн енгiз ’ );
READ (A [I]);
END;
WRITE(‘iздейтiн санды енгiзiңiз’);
READ(S);
R: =0;
FOR I: = 1TO N DO
BEGIN
IF A [I] = R THEN
BEGIN
R: =R+1;
WRITELN(‘Берiлген санға‘,R,’сан табылды, i-орындағы);
END;
END;
IF R<>0
THEN WRITELN( ‘S–саны массивте бар’,R,’рет ’ )
ELSE WRITELN(‘S саны массивте жоқ’);
END.
Массив элементтер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 алғашқы таңдауда реттелген бөлiгi ретiнде 1-шi элемент қана алынады, ал қалғандары реттелмеген бөлiкке жататын болады. Сонымен:
- реттiк нөмерiмен таңдалған элемент басқа айнымалыға меншiктелiп, сақталады;
- оны қоятын орын iзделiнедi;
- ретi өзгермейтiндей орынға жылжытылады;
- табылған орынға таңдалған элемент қойылады.
PROGRAM INSERTIONSOFT;
USES CRT;
CONST N = 20;
TYPE A = ARRAY [1..N] OF REAL;
VAR A: A;
B: REAL;
I, J, K = INTEGER;
BEGIN CLRSCR;
WRITELN(‘ массив элементтерiн енгiз ‘);
FOR I: = 1 TO N DO READ (A[ I ]);
READLN;
FOR I: =2 TO N DO
BEGIN
B:= A[ I ]; J:= 1;
WHILE (B>A[J]); DO
J= J + 1;
FOR K:=I-1 DOWNTO J DO
A[K+1]:= A[K];
A[J]:=B;
END.
Кескiнi:
1 2 3 4 5 n=6
3 | 1 | 9 | 2 | 5 | 7 |
1 2 3 4 5 n=6
1 | 3 | 9 | 2 | 5 | 7 |
9 |
1 2 3 4 5 n=6
1 | 3 | 9 | 2 | 5 | 7 |
|
1 2 3 4 5 n=6
1 | 2 | 3 | 9 | 5 | 7 |
|
1 2 3 4 5 n=6
1 | 2 | 3 | 5 | 9 | 7 |
|
Нәтиже
1 2 3 4 5 n=6
1 | 2 | 3 | 5 | 7 | 9 |
PROGRAM selest;
USES CRT;
CONST N=20; {Массив ұзындығы}
TYPE tvector=ARRAY [1..N] OF REAL;
VAR
Vector : tvector;
MIN : REAL ;
Imin, s :INTEGER ;
BEGIN
CLRSCR;
WRITELN (‘массив элементтерiн енгiз: ’ ) ;
FOR I : =1 TO N DO
READ (Vector [ I] ); READLN;
FOR S : = 1 TO N-1 DO
BEGIN
{ең кiшi элементтi диапазонда iздеу}
MIN: = Vector[S];
IMIN:= S;
FOR I : = S+1 TO N DO
IF Vector [i] < MIN THEN BEGIN
MIN : = Vector[i];
IMIN:= i;
{ S –шi және ең кiшi элементтердiң орындарын алмастыру}
Vector [IMIN]:=Vector [S];
Vector [S]: = IMIN
END;
FOR I : =1 TO N DO
WRITELN( ‘ Таңдап алынған массив:’ , Vector [I]);
WRITELN ;
END.
4.2.Көп өлшемдi массив
Бiр өлшемдi /яғни бiр индексi бар/ массивпен сiздер таныстыңыздар. Сонымен қатар информатикада жиi қолданылатын көп өлшемдi массивтер, яғни ол екi өлшемдi массив – матрица ретiнде көп қолданылады.
Мысалы, бiрнеше жолға жазылған бүтiн сандар тiзбегi берiлсiн:
15 4 3 6 Бұл матрица өлшемi 3´4, яғни ол үш жолдан және
2 8 1 7 төрт бағаннан құралған.
4 3 19 5
Егер жолды i индексiмен, ал бағананы j индексiмен нөмiрлесек, онда екi өлшемдi массивтi А[i, j] деп белгiлеймiз. Сонымен матрица элементi екi индекспен белгiленедi. Алдыңғы мысалда көрсетiлген матрица A[3,4], жолы i=1, 2, 3 ал бағанасы j=1, 2, 3, 4.
Матрицаның программада жазылуы үлгiсi:
Type k= array [1 ..3, 1 .. 4] of integer;
Var a : k;
1-мысал. Үш сатушы төрт түрлi тауарды сатты. Осылардың нәтижелерiн кесте түрiнде жазып, есептеу программасын құрайық.
Сатушылар: 1]
2] 3 5 2 5
3] 20 0 0 1
program s;
type atype=array[1..3, 1..4] of integer;
var
a : atype ; j : integer;
begin for i:=1 to 3 do (* матрица жолын енгiзу*)
for j:=1 to 4 do (* матрица бағанын енгiзу*)
read(A[i, j]);
s:=s+A[i,j];
writeln(a);
end.
5.Символдық шама
Өткен сабақтарда айнымалылардың INTEGER, REAL, BOOLEAN -типтерiмен таныстыңдар. Ендi айнымалының CHAR-типiмен танысасыңдар. Ол әрiптiк немесе цифрлi символдардан тұрады. Символдар тiзбегiнiң мағыналы болуы мiндеттi емес. Паскаль тiлiнде олар апострофқа (‘ ‘) алынады. Мысалы,
VAR
аб6312м : CHAR;
ПО, клви : CHAR;
Ал, символдық тұрақтыларды келесi түрде жазуға болады:
CONST
SIM =’A’ ;
C =’+’;
D1=’;’ ;
Мысалы. Экран бетiне латын алфавитiнiң барлық әрiптерiн ретiмен шығару программасын жазайық.
PROGRAM E33;
VAR SIM : CHAR;
BEGIN
WRITELN(‘ ЛАТЫН АЛФАВИТi :’);
FOR SIM:=’A’ TO ‘Z’ DO
WRITE( SIM );
END.
Жауабы:
***************************************************************
ЛАТЫН АЛФАВИТi :
ABCDEFGHJKMNPQRSTUVWXYZ
***************************************************************
Амалдар. Кез келген тiлде символдарды реттеуге байланысты салыстыру амалдарын қолдануымызға болады:
<, <=, +, <>, >, >=.
Салыстыру амалдарының нәтижесi логикалық тұрақты TRUE /ақиқат/ немесе FALSE /жалған/ болады. Мысалы, ‘D’ < ’R’ амалының нәтижесi TRUE, ал ‘+’ = ’3’ амалы FALSE.
Сондай-ақ, символдарға келесi функцияларды қолдануға болады:
ORD(X) – X символының реттiк нөмерiн анықтайды, мысалы ORD(‘R’)=82;
CHR(X) – Х реттiк нөмерiмен тұрған символды анықтайды, мысалы CHR(68)=’D’;
PRED(X)- Х-ке байланысты алдыңғы символды анықтайды, мысалы PRED(‘N’)=’M’;
SUCC(X)- Х-ке байланысты келесi символды анықтайды, мысалы SUCC)’R’)=’S’.
1 – мысал. L, А -әрiптерiнiң реттiк нөмерлерiн анықтау программасын жаз.
PROGRAM LET;
VAR N: INTREGER;
X: CHAR;
BEGIN
X:=’L’ ; WRITELN(X);
N:=ORD(X); WRITELN(N);
X:=’A’ ; WRITELN(X);
X:=CHR(N) ; WRITELN(X);
END.
5.1. Жолдар
Литерлiк /символдық/ шамалар деп мәндерi символдардың кез келген тiзбегiнен тұратын текстер болып келген шамаларды айтамыз.
Бос орын Паскаль тiлiнде символдар қатарына кiретiн болғандықтан, символдық берiлгендердi жолмен енгiзу керек. Паскаль тiлiнде символдық жолдар – апострофқа алынған символдар тiзбегi, мысалы,
‘КИНОТЕАТР ’, ‘SUMMA’, ‘——‘, A*B’
Апостроф iшiнде апостроф екi рет алыну керек: ‘Д’’ АРТАНЬЯН’, ‘ ТЕАТР ’’ТЮЗ’’’
Жоғарыда айтылған символдық жолмен орындалатын амалдарға тоқталайық. Символдық жол жолды өңдеуге арналған STRING /жол/ айнымалысымен өрнектеледi. Жолды өңдеудiң екi түрi бар. Бiрiншi түрi – жолдарды өңдеудi бiр бөлiкке бiрiктiрсе, ал оның екiншi түрi – жолды құрамдас объект түрiнде, яғни бөлек символдардан тұратын жолдарды өңдейдi. Мұнда да жол мазмұны CHAR типiндегi сияқты апострофқа алынып жазылады.
Жолды өңдеуге арналған функциялар:
Lеngth /ұзындық/ функциясы – текстiк жолдың ұзындығын анықтайды.
PROGRAM Demo;
VAR
WORDS: STRING ;
BEGIN
WRITE (‘сөз енгiзiңiз:’);
READLN (WORDS);
WRITELN;
WRITELN (‘Бұл сөз’, LENGTH(WORDS) :3,’ әрiптен тұрады!’);
END.
UpCase функциясы – кез келген литерлiк символды кiшi әрiптен үлкен әрiпке көшiредi.
PROGRAM Demo1;
VAR
WORDS: STRING ;
I : BYTE;
BEGIN
WORDS := ‘Фирма Microsoft’;
FOR I:=1 TO LENGTH(WORDS) DO WORDS[I]:=UPCASE(WORDS[I]);
WRITELN (WORDS); / ‘Фирма Microsoft’ деген текстi енгiз/
END.
Copy(words, k, m) функциясы – жолдың бөлiгiн бiр айнымалыдан келесi айнымалыға көшiредi.
Мұндағы: words — көшiрiлетiн бөлiк тұрған жолдың аты,
k — көшiрiлетiн бөлiктiң жолдағы орны,
m — көшiрiлетiн символдың саны.
PROGRAM Demo2 ;
VAR
WORDS: STRING[79] ;
WORD1, WORD2, WORD3: STRING20 ;
BEGIN
WORDS : =’ бейнесалон’;
WRITELN (WORDS);
WORD1: =COPY(WORDS, 6,5);
WRITELN (WORD1); /экранға ‘салон’ сөзi шығады/
WORD2: =COPY(WORDS, 1,3); / экранға ‘бей’ сөзi шығады/
WRITELN (WORD2);
WORD1: =COPY(WORDS, 8,3); / экранға ‘лон’ сөзi шығады/
WRITELN (WORD3);
END.
Pos(word, words) функциясы – жолдың қандай да бiр бөлiгiн iздеуге мүмкiндiк бередi. Мұндағы: word – iзделiнетiн жол бөлiгi, words – берiлген жол.
PROGRAM Demo3 ;
VAR
WORDS: STRING[79] ;
POSITION : BYTE;
PROCEDURE SEARCH STENCIL;
BEGIN
POSITION := POS (SERCH WORD,WORDS);
IF POSITION<>0
THEN WRITELN(‘бөлiк “ ‘SERCH WORD,’ ” мына сөзде
“’WORDS’ “орыннан бастап POSITION:3,’ .’)
ELSE WRITELN (‘бөлiк “’,SERCH WORD,’” бұл сөзде жоқ “’ ’WORDS’ “ .’;);
END; {SEARCH STENCIL}
WORDS: =’Электрификация ‘;
SEARCH WORD:= ’кац ‘;
SEARCH STENCIL;
SEARCH WORD:=’Кац’;
SEARCH STENCIL;
END.
***************************************************************
’Электрификация ‘ сөзiнде ’кац ‘ бөлiгi 10 орыннан басталады.
’Электрификация ‘ сөзiнде ’Кац ‘ бөлiгi жоқ.
***************************************************************
INSERT және DELETE процедурасы – текст бөлiгiн бiр жолдан келесi жолға қоюға және жолдан текст бөлiгiн өшiруге /алып тастау/ қолданылады.
INSERT процедурасы көрсетiлген орыннан бастап басқа жолды қояды, мысалы, INSERT(WORD1, WORDS,4); — WORD1 жолын 4-шi орыннан бастап WORDS жолына қояды.
DELETE процедурасы – жолдағы текстiң бөлiгiн көрсетiлген орыннан анықталған ұзындықпен өшiредi,
мысалы, DELETE (WORS, 2,3); — WORS жолынан 3 символдан, 2 орыннан басталатын текст бөлiгiн өшiредi.
PROGRAM Demo4 ;
VAR
WORDS: STRING[79] ;
WORD1: STRING[20] ;
BEGIN
WRITELN;
WORDS : =’бағдарлама ’;
WRITELN (WORDS);
DELETE (WORS,1,3);
WRITELN (WORDS);
DELETE (WORS,3,3);
WORD1: =’А’;
INSERT(WORD1, WORDS,1);
WRITELN (WORDS);
WORD1: =’ лаң‘);
IBSERT(WORD1,WORDS,2);
WRITELN (WORDS);
END.
бағдарлама
дарлама
дама
Адама
Алаңдама