ОҚу -әдістемелік кешені 5В0070400



бет3/39
Дата08.06.2018
өлшемі0,84 Mb.
#41429
1   2   3   4   5   6   7   8   9   ...   39

2.9 Программалау тілдері
Программаларды жасауда қазіргі заманғы компьютерлерде әр түрлі деңгейдегі программалау тілдері пайдаланылады.

Жалпы жағдайда тіл деп информацияның жазылыуын және оның түрленуін белгілі ережелер бойынша формальдыетіп беруші құралдарды түсінеміз.

Тілдің құрамында информацияның негізгі элементтерін құрудың құралдары және осы элементтерден әр түрлі мазмұнды құрылымдар құруға арналған ережелер жүйесі бар.

Программалау тілі деп деректерді жазуға және оларды белгілі ережелер бойынша өңдеуге арналған адам мен компьютерді байланыстыратын формальды тілді айтамыз.

Програмалаудың әр түрлі тілдерін пайдалану.

Әр түрлі белгілер бойынша жіктеуге болатын бірнеше жүздеген программалау тілдері бар. Ең жалпысы тілдің машинаға жақындық дәрежесі бойынша жіктеу болып табылады. Осы белгісі бойынша программалау тілдері екі үлкен топқа бөлінеді:



  • машинаға тәуелді тілдер;

  • машинаға тәуелсіз тілдер;

Машинаға тәуелді тілдер өз кезегінде былай бөлінеді:

  • машина тілі;

  • машинаға бағдарланған тілдер;

Машинаға бағдарланған тілдер кейде автокодтар деп те аталады. Машинаға бағдарланған тілдердің екі деңгейі бар:

  • символдық кодтау тілдері, басқаша айтқанда мнемокодтар;

  • макротілдер.

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

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

  • процедулалы- бағдарланған тілдер;

  • проблемалы – бағдарланған тілдер.

Процедулалы – бағдарланған тілдер есепті шешу алгоритмін сипаттауға арналған, сондықтан да оларды кейде алгоритмдік тілдер деп те атайды. Алгоритмдік тіл деген ұғым программалау тілі деген ұғыммен сәйкес елмейді. Егер алгоритмдік тілде жазылған алгоритмдік жазу компьютерге ендіруге тікелей жарамды және дайын жұмысшы программаға түрленетін болса, онда мұндай алгоритмдік тіл программалау тілі де бола алады. Кейбір алгоритмдік тілдер тек оларға кейбір құралдарды қосқаннан кейін ғана программалау тілі болады.

Проблемалы – бағдарланған тілдер есептерді сипаттау үшін қызмет атқарады.

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

Алгоритмдік тілден программаны машина тіліне аудару жұмысын компьютердің әмбебаптығын пайдаланып, оның өзіне жүктеуге болады. Бұл үшін әрбір алгоритмдік тілден машина тіліне формальды аударуға яғни аударудың ережесін алгоритм түрінде тұжырымдауға мүмкіндік беретіндей болуы керек. Егер, осы алгоритмді бір рет машиналық программа түріне келтіріп алсақ, онда одан кейін осы программаның көмегімен компьютердің өзі берілген алгоритмдік тілде жазылған кез келген программаны нақтылы компьютердің машина тіліне аударып бере алады. Мұндай арнайы аудармашы-программа жоғарыда айтқанымыздай транслятор деп аталады.
3 Турбо Паскаль программалау тілі туралы мағлұматтар

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

1. 26 латын алфавитінің әріптерінен, олармен қызметші сөздермен иденфикаторлар жазылады. Идентификаторлар - программада кездесетін барлық тұрақтыларды, айнымалыларды, функциялармен процедураларды белгілеу үшін қолданылатын әріптер мен сандар және сызықшадан тұратын қызметші сөздер. Идентификаторларға бұлардан басқа символдарды беруге болмайды, олар міндетті түрде әріптен басталуы керек және оларға тілдегі басқа қызметші сөздердің атын қоюға болмайды. Идентификаорларды бас әріппен де, кішкентай әріптермен де жаза беруге болады.

Мысалы: Begin, begin, BEGIN - сөздері бір ұғымды білдіреді;

2. Сандарды белгілейтін араб цифраларынан: 0,1,2,3,4,5,6,7,8,9. Сандар бүтін және нақты болып екіге бөлінеді. Нақты сандардың бүтін бөлігімен бөлшегін нүкте арқылы бөліп жазады -9.7, 6.25, .41,-8.178.

Ал өте үлкен немесе өте кіші шамалар экспонициал сандар түрінде жазылады- 1.801Е + 5(1.801*105), 5.74E-4(5.74*10-4);

3. Ұлттық алфавит әріптерінен, ұлттық әріптер түсініктеме мен комментарийлар жазу үшін немесе символдық айнымалыларда қолданылады (ұлттық алфавит әріптері клавиатураның жоғарғы жағындағы цифрлар орнына арнаулы драйверлер қосылғанда ғана жұмыс істейді);

4. Арнаулы символдардан: +,-,:,',<,>,/,=,.,(,),,,$,%,& т.б.

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

Паскаль тілінде программа жеке - жеке жолдардан тұрады. Оларды теру, түзету арнайы мәтіндік редакторлар атқарылады. Программа алдындағы азат жол немесе бос орын саны өз қалауымызша алынады. Бір қатарда бірнеше команда немесе оператор орналаса алады, олар бір - бірімен нүктелі үтір (;) арқылы ажыратылып жазылады, бірақ бір жолда бір ғана оператор тұрғаны дұрыс, ол түзету жеңіл, әрі оқуға ыңғайлы.

Паскаль тілінде программа үш бөліктен тұрады: тақырып, сипаттау бөлімі және операторлар бөлімі.

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

Программаның соңғы және негізгі бөлімі операторлар бөлімі – болып табылады. Орындалатын іс - әрекеттер, командалар осы бөлімде орналасады. Ол begin түйінді сөзінен басталып, бірақ атқарылатын операторлар (командалар) тізбегі жеке - жеке жолдарға жазылып біткен соң end түйінді сөзімен аяқталады.




Program BASTAU:


Сипаттау бөлімі


begin


Операторлар бөлімі


end

Операторлар бөлімінде командалар ретімен орналасады. Олардың кейбірі шартқа байланысты атқарылса, ал кейбір қайталанатын цикл немесе қосымша программа түрінде орындалады. Операторлар бөлімінде орнатылатын негізгі әрекеттерді қарастырайық.



Деректер - сан мәндері мен мәтін түріндегі сөз тіркесін мән ретінде қабылдай алатын тұрақтылар, айнымалылар т.б. осы тәрізді құрылымдар немесе солардың адрестері.

Дерек енгізу - бастапқы деректерді пернетақтадан, дискіден немесе еңгізу - шығару порттарынан еңгізу арқылы жүзеге асады.

Операциялар немесе амалдар - берілген және есептелген мәндердің меншіктеу, соларды өңдеу, салыстыру операцияларын орындайды.

Шартты түрде атқарьшу белгілі бір көрсетілген шарттың орындалуына байланысты, командалар жиыны атқарылады, әйтпесе олар аттап өтіледі немесе басқа командалар жиыны орындалады.

Цикл - белгілі бір шарттар орындалған жағдайда көрсетілген командалар жиынын бірнеше рет қайталанып атқарылады. Қайталау саны бүтін санмен беріледі.

Көмекші программа - алдын ала қандай да бір атаумен атымен атымен аталған командалар тобы. Олар программаның кез келген жерінен оның атауын көрсету арқылы шақырылып атқарыла береді.

Түсініктеме - программа жолдары соңында немесе оның түйінді сөздері арасында қазақша (орысша) түсінік беретін пішінді жақшаға алынып жазылған сөз тіркесітері. Олар программа операторларының орындалуына ешқандай әсер етпейді.

3.1.1 Айнымалылар, тұрақтылар, стандартты

функциялармен қызметші сөздер
Айнымалылар деп программаның орындалу барысында әр түрлі мәндерді қабылдай алатын шамаларды айтады. Олар идентификаторлармен белгіленіп, әрбір уақытта белгілі бір мәнге ие бола алады. Айнымалыларды белгілеу мысалдары:

X, X1, A, B, C1, MIN1, MAX, A[1], B[2,3].

Тұрақтылар деп программаның орындалу барысында мәндері өзгеріссіз қалатын шамаларды айтады. Тұрақтыларға CONST бөлімінде бірден мәнін берсек те, немесе VAR бөлімінде иденфикатор түрінде белгілеп алып мән берсек те болады. Тұрақтылардың жазылу мысалдары:
CONST A=5: B=8: PI=3.14
Стандартты функцияларды программада жазу үшін, алдымен функцияның атын, одан кейін жәй жақшаның ішінде аргументін көрсету керек. Программаларда аргументтердің мәнін берген кезде міндетті түрде функцияның анықталу облысын ескеру қажет. Мысалы: түбірден еш уақытта теріс сан шықпайды, бөлшектің бөлімі 0-ге тең болмау керек т.с.с..
3.2 Мәлімет типтері
Программада пайдаланылатын мәліметтердің немесе шамалардың мәндері Паскаль тіліндегі алдын ала келісілген типтердің біріне тән болуы тиіс.

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

Мәліметтердің әр типі тек өзіне ғана сәйкес келетін операциялар жиынын орындата алады. Мысалы, 1 мен 2 мәндері бүтін сандар типіне жатады, оларды қосуға, азайтуға, көбейтуге және бөлуге болады.АJI, «ІВМ» және «РС» мәндері сөз тіркесі типіне жатады, бұларды біріктіріп жазуға ғана болады («ІВМ РС»). Қосуға, азайтуға, көбейтуге, бөлуге болмайды. Кез келген тұрақты, айнымалы функция немесе өрнек өзіне тән бір типпен ғана сипатталады. Паскаль тілінде шамалардың типін көрсету міндетті болып табылады. Сондықтан программа алдына оның сипаттау бөлімінде пайдаланылатын барлық шама атаулары және оның типтері көрсетілуі қажет.

Паскаль тілінде пайдаланылатын барлық типтер скалярлық (қарапайым) және құрылымдық (структуралық) болып үлкен екі топқа бөлінеді. Скалярлық (қарапайым) типке шамалардың стандартты типі және жасанды тип (тағайындалған) жатады. Стандартты типтерге:

• Бүтін - INTEGER;

• Нақты - REAL;

• Логикалық - BOOLEAN;

• Тіркестік - (STRING);

• Мәтіндік (ТЕХТ) тәрізді типтер жатады.

Құрылымдық типтері жиымдар - ARRAҮ, жазбалар - RECORD, жиындар - SET және файлдар - FILE түрлеріне бөлінеді.

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

Ол үшін type түйінді сөзі қолданылып, жазылу пішімін былай көрсетуге

болады:


Туре <тип атауы> =<тип мәндері>;

Логикалық шамалар екілік сандар жүйесіне сәйкес «1» және «О» деген мәндерді ғана қабылдайды. Мұндағы «1» тексерілетін белгілі бір шарттың - логикалық тұжырымның орындалатынын, яғни ақиқат екенін, ал «О» сол шарттың орындалмайтынын - тұжырымның жалған екенін көрсетеді. Бұл екі мән программада ағылшын тіліндегі айтылуына сәйкес true (1) және false (О) болып жазылады.

Символдық шамалар апострофқа алынған бір символды ғана мән ретінде қабылдай алады, мысалы, 'R','Л','%'тағы басқа. Бірақ әрбір таңбаны оның кодына байланысты реттелген бүтін сандармен де өрнектеу мүмкіндігі бар.

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



Стандартты типтер. Паскаль тілінде төмендегі қарапайым типтер пайдаланылады:

• Бүтін типтер - SHORTINT, INTEGER, LONGINT, ВУТЕ, WORD;

• Нақты тип - REAL, SINGLE, DOUВLE, EXTENDED, СОМР;

• Логикалық - BOOLEAN;

• Симводық - CНAR;

• Ауқымды (диапозонды) тип;

• Саналатын тип;
3.3 Паскаль тіліндегі программа дайындау жолдары

3.3.1 Программа құрылымы
Паскаль тілінің программасы блоктардан құрылады. Қандай да бір блок ішінде басқа да кішігірім блоктар орналасуы мүмкін. Блоктар екі бөлімнен тұрады, олардың алғашқысы - мәліметтерді сипаттау бөлімі, ал екіншісі.- сол мәліметтерді пайдаланып, әр түрлі іс - әрекеттерді (операцияларды, амалдарды) атқару бөлімі.

Мәліметтерді сипаттау бөлімінің болуы міндетті емес, ал екінші негізгі бөлімінің болуы міндетті. Басқа блокқа кірмейтін блок негізгі (глобальді) блок болып саналады. Ал блок ішіндегі блок - жергілікті (локальді) блок деп аталады.

Негізгі блок - негізгі программа блогы, сондықтан ол басқа блоктарға кірмеуі тиіс. Жергілікті блоктарға процедуралар мен функциялар кіреді, олар кейбір программаларда болмауы да мүмкін.

Программалардың негізг объектілері болып саналатын айнымалы, тұрақты және oлapдың типтері орналасқан блогына байланысты басты немесе жергілікті деп аталады. Программа объектілерінің де жұмыс істеу, ықпал ету аймағы сол өздері орналасқан блокпен шектеледі. Блоктық құрылым программа мәтінін тиянақты түрде қатесіз құрастыруға мүмкіндік береді.

Турбо Паскаль программасының тақырыбын (атауын) жазбай кетуге де болады, бірақ жалпы Паскаль тілінің стандарты бойынша программада тақырып болуы қажет.

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



  1. Программамен байланысатын кітапханалық модульдер атауларының

тізімі (ол uses түйінді сөзімен басталады);

2) Белгілерді (lаbеl) сипаттау;

3) Тұрақтыларды (const) сипаттау;

4) Мәліметтер типтерін (true) анықтау;

5) Айнымалыларды (var) сипатгау;

6) Процедураларды (procedure) сипатгау;

7) Функцияларды (function) сипатгау;

Паскаль тіліндегі программалар бірнеше бір-бірімен байланысып тұратын бөлімдерден тұрады. Мысалы: бір программа келесі бөлімдерден тұруы мүмкін:

1. программа тақырыбы;

2. айнымалылар мен типтер бөлімі;

3. таңбалар (белгі) бөлімі;

4. тұрақтылар бөлімі;

5. процедуралар мен функциялар бөлімі;

6. программа денесі бөлімі;

Программа тақырыбы қызметші сөздерден, латын әріптерінен тұратын программа атынан тұрады. Программа тақырыбынан кейін әтірлі нүкте қойылады. Түсініктемелер жәй жақша ( * *) немесе фигуралық жақша { } ішінде жазылады.

Мысалы:


PROGRAM SUMMA;

{Y=2*X+5*X+8*X қатарының қосындысы}

Айнымалылар мен типтер бөлімінде (VAR, TYPE) иденфикаторлар сипатталады. Кез-келген иденфикатор өзіне тән бір типпен ғана сипатталады.

Мысалы:


TYPE MAS=ARRAY [1.. 5] of CHAR;

VAR X: INTEGER; T: CHAR;

D: ARRAY [1.. 10] of STRING;

B, C: REAL; S: SINGLE;

V: BOOLEAN; A: MAS;

оператор


Белгіні сипаттау



Тұрақтыны сипаттау

Типтерді анықтау

Айнымалыларды сипаттау

Процедураны сипаттау

Функцияларды сипаттау

Сурет 6 Турбо Паскальдағы программаның жалпы құрылымы


4 Turbo Pascal- дағы енгізу және шығару операторлары

4.1 Мәліметтерді енгізу операторы
Берілген мәндерді айнымалыға беру ушін жоғарыда атап өткенімдей, меншіктеу операторын пайдалануға болады. Мысалы, А:= -15; ВЕС:=16,4; тағы басқалар. Бірақ бұл жағдайда программада жалпылық қасиет болмайды, яғни ол тек көрсетілген мәндер үшін ғана есептеу жұмысын жүргізіп, қалған кез - келген мәндер үшін дұрыс нәтиже бермейді. Программаны дұрыс әрі әмбебап етіп жасay үшін айнымалылардың мәндері өзгерілетін түрде жасалып oлap пернетақтадан енгізілуі қажет, мұндайда программа айнымалының әр түрлі мәндері үшін дұрыс жұмыс атқара алады.

Паскаль тілінде мәліметтерді енгізу және шығару үшін, яғни адам мен компьютер арасында мәлімет алмасу мақсатында алдын ала анықталған Input, Output файлдары қолданылады. Программа берілген мәндерді Input файлынан алады да, алынған нәтижені Output файлына орналастырады. Стандартты енгізу файлы болып пернетақта, ал шығару файлы болып дисплей экраны саналады. Ол үшін енгізу операторы пайдаланылады.

Паскаль тілінде мәлімет енгізетін READ ( READ - ағылшынша оқy )

операторының жалпы түрі (пішімі) төмендегідей:


READ (а1, а2 ... ап);

READLN (а1, а2, ... , ап);

READLN;
Мұндағы а1, а2, ..., аn - айнымалы атаулары, оларды енгізу операторының параметрлері деп те атайды. Алғашқы оператор көрсетілген айнымалылардың мәндері пернелер арқылы араларына бір бос орын қалдыру арқылы енгізілген соң, курсорды келесі қатарға көшірмейді. Ал readln ( read lіnе - «қатарды оқу» деген сөздің қысқартылуы) алдыңғы оператордағыдай пернетақтадан мәндер енгізілгеннен кейін курсорды келесі қатарға көшіріп жібереді. Соңғы қатарда жазылған параметрсіз оператор ешбір мән енгізбей, тек курсорды келесі қатарға көшіруді ғана атқарады.

Енгізілетін айнымалылардың мәндері integer, reаl, char немесе stгіпg (сөз тіркесі) типтеріне жатуы мүмкін. Логикалық айнымалылардын мәндері өз типтеріне сәйкес Паскаль тілінің ережесі бойынша енгізіледі. Егер ол шарт бұзылса (мысалы, а1 типі integer болса, ал енгізгенде сhаг типтес мән терілсе), онда экранға енгізу-шығару қатесі шығады, оның пішімі мынадай болып келеді:


І/О error ХХ,
мұндағы ХХ - бүтін сан түріндегі қaтенің сипатына сәйкес коды.

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

Мысал.

var

І: real;


J: integer;

К: cҺar;


begin

Read (І, J, К);

...

Программаға мынадай бастапқы мәндер енгізіледі 212.5 38 ‘п’. Осыдан кейінгі келесі мәндер енгізілсін: 'л' 121.35 25.



Алғашқы нұсқасында мәлімет енгізу дұрыс орындалады, өйткені енгізілетін мәндер өз ретімен орналасқан айнымалылар типтеріне (І, J. К) сәйкес келіп тұр. Екінші нұсқа коды 10 болып келетін қате бар екенін айтады, себебі real типтес 1 айнымалысы үшін char типіндегі мән енгізіліп отыр.

Егер енгізу пернетақта арқылы емес, дискіден немесе файлдан жүзеге асырылса, онда жақша ішіне алдымен файл аты жазылады.


READ (FN, аl, а2 ... ап);

READLN (FN, аl, а2, ... , ап);

READLN (FN);
Мұндағы FN - енігізілетін мәндер жазылған дискідегі файлдың аты; а1- айнымалылар идентификаторлары, файлдарда да мәндер бір қатардан немесе келесі қатардан оқыла береді, сол себепті мұнда да жоғарыда көрсетілген операторлардың үш түрі қолданылады. Файлдағы мәліметтер де бір-бірінен «бос орын» немесе «енгізу» пернесін басу арқылы бөлінуі тиіс, яғни файлға енгізілгеннен кейін «_», ал енгізу соңында «Enter» пернесі басылады.

Файлдардан мәлімет енгізу мысалдары кейінірек қарастырылады.



READ операторы кез келген сандармен, символдармен және сөз тіркестерімен жұмыс атқара алады.

Сонымен, параметрлердің сандық мәндері бір - бірінен бос орын арқылы

ажыратылып жазылады. Мәндерді беріп болдық дегенді білдіру үшін Enter (енгізу) пернесі басылады. Мысалы, енгізу операторы READ (А,В,С); түрінде берілсе, парметрлерге мәндер былай беріледі: 5 _ 6.2 _ 4.5 Enter. Бұл жағдайда

А=5, В=6.2, С=4.5 мәндер қабылдайды. Осы мәндер арқылы программа орындалып болған соң, басқа мәндер үшін программаны қайталау қажет болса, онда программа басынан бастап қайта орындау қажет.



Бүтін айнымалыларға бүтін, нақты айнымалыларға нақты мәндер берілуі қажет.

Айнымалы сипатталғанда нақты ретінде көрсетілсе, оған нақты да, бүтін де мән беруге болады, себебі нақты сан құрамына бүтін сан енеді. Ал машина «өзі» бүтін санды нақты сан түріне келтіріп алады.

Мысалы:

VAR


А, В: REAL;

BEGIN


READ (А, В);

...


END.

түрінде беріліп А,В айнымалылары үшін 4 5 Enter орындалса, онда машина оларды А= 4.0, В=5.0 түрінде қабылдайды.

Сандар арасында бір немесе бірнеше бос орын қалдыруға болады, себебі сан енгізілгенде бос орын есепке алынбайды.

Мәндерді енгізгенде мән енгізілген жолдан келесі жаңа жолға өту үшін параметрсіз немесе параметрге сәйкес READLN; READLN (аl, а2, ... ,аn); операторларын пайдалану қажет. Сонымен, READ (аl, а2,...,an); READLN; операторларының орнына бір ғана READLN (аl, а2,...,an) операторын пайдалануға болады.



Турбо Паскаль тілінде шығару форматтары бар. Оны келесі мысалмен түсіндіріп өтейін.

program qq;



var i: integer;

x: real;

begin

i := 15;

writeln ( '>', i, '<' );

writeln ( '>', i:5, '<' );

{i:5 барлық символдар санын білдіреді}

x := 12.345678;

writeln ( '>', x, '<' );

writeln ( '>', x:10, '<' );

writeln ( '>', x:7:2, '<' );

end.





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

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

2. Бір айнымалыға бір ғана символ меншіктеледі. Мысал ретінде төмендегі программа үзіндісін қарастырайық:

......................

VAR А, В, С: CHAR;

.......................

READ (А, В, С);

.......................


Бұл мысалдағы READ операторы орындаларда пернетақтадан мынадай мәндер SNR енгізсек, онда айнымалылар өз орындарына сәйкес: A='S', B='N', C='R' мәндерін қабылдайды. Егер мәндерді S_N_R түрінде берсек, онда айнымалылар орындарына сәйкес A='S', В='_', С=' N' мәндерін қабылдайды да, соңғы екі таңба ешқайда енгізілмейді.

3. Символдық айнымалыларды енгізудің тағы бір ерекшелігі - тек Eпter

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

VAR A, В: INTEGER;

С, D: CНAR;

BEGIN


WRlTELN (' А, В, С, D мәндерін енгізіндер :');

READ (А, В);

READ (С, D);

WRlTELN (А, В, С, D);

END.

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



3 4

WF


онда А = 3, В = 4, С=' " D = 'W' болады, себебі 4 санынан соң басылған Enter пернесі бос символ ретінде меншіктеледі де, соңғы F символы ешқайда енгізілмейді. Программадағы айнымалылар мәнді дұрыс қабылдауы үшін екі оператордың арасына параметрсіз және бір енгізу операторын мына түрде жазу қажет:
READ (А, В);

READLN;


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

READ (С, D);

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

KN

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



45 31 К N

Онда дисплейден 4531KN көрінеді, яғни осылай береді.

Readln операторы көмегімен пернетақтадан бір символ енгізіп оны экранның келесі қатарына қайта шығаруды орындайтын testread программасының мәтіні төменде келтірілген.
var сҺ: cҺar;

begin


writeln ('Символ енгізіндер: ');

writeln (сҺ,' символы енгізілді ');

write ('Enter пернесін басыңдар'); readln

end.


Егер осы программаның 'Символ енгізіндер:' деген хабарламасынан кейін бір символ пернесін басып, оны босатпасақ, онда сол басылған символ бейнесі экранға 127 рет шығады да, одан кейін тек тырсылдаған дыбыс қана естіледі. Бұл 127 символ сақтай алатын пернетақта буферінің енгізілген таңбалармен толып қалғанын көрсетеді.
Негізінде, перне басылғанда бірден екі код қалыптасады, оның алғашқысы символ коды, ал екіншісі - кеңейтілу немесе сканерлеу коды. Алфавиттік-цифрлық перне басылғанда, олардың символ коды пайдаланылады. Ал кеңейтілу коды басқару пернелері (Ctrl, SҺift, Caps Lock, , , , , F1, F 2 т.б.) үшін өте маңызды. Бұлардың символ коды нөлге тең болып саналады да, программаларда олардың тек сканерлеу коды пайдаланылады. Скарнерлеу кодын пайдалану Турбо Паскаль программасының CRT модулінін Read Кеу функциясы арқылы жүзеге асырылады. Символ енгізу кезінде бұл Функция курсорды келесі орынға жылжытпай, ол орынға кез келген символ бейнесін шығара алады. Келесі testread2 программасы Read Кеу функциясын пайдаланып, кіші латын әріптерін бас әріптерге түрлендіреді.
Uses CRT;
Var сҺ: cҺar;

Begin


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

Repeat


сҺ := Read Кеу;

write (Up Case( сҺ));

until сҺ ='z",

end.
1-кестеде басқару пернелерінің немесе олардың комбинацияларының сканерлеу коды берілген.

Кесте 1 Басқару пернелерінің немесе олардың комбинацияларының

сканерлеу коды



Басылған пернелер


Сканерлеу коды

Басылған пернелер

Сканерлеу коды


Ctrl+@Ctrl+3

SҺift+Tab

Alt+ 1..Alt+=

Alt+Q ..Alt+P

Alt+A ..Alt+L

Alt+Z ..Alt+M

Alt+Enter

Ноте

Ctrl+Home

Ctrl+PgUp


End




3

15

120..131



16..25

30..38


44..50

28

71



119

132


77

79

80



PgDn

lns


Del

Fl ..FI0


SҺift+F 1..SҺift+F 10

Ctr1+Fl ..Ctrl+Fl0

Alt+F 1..Alt+F 10

Ctrl+PrintScreen

PgUp

75

Ctrl+



Ctr1+End

Ctrl+PgDn



81

82

83



59..68

84..93


94 ..103

О 104..113

114

73

Ctrl+ 115



116

117


118

Төмендегі scan_codes программасы басылған пернелердың сканерлеу кодын анықтауға арналған. Ол программамен жұмыс істеу барысында Сtгl + PrtSс (принтерге экрандағы мәліметті шығару) немесе Ctr1+Alt+Del (ДОС-ты· қайта жүктеу) пернелер комбинациясын басу керек емес, ал Ctr1+Break пернелерін басу программа жұмысын тоқтатады.

Uses CRT;

Var сҺ: char;

Begin

Writeln ('Программа символ коды мен сканерлеу кодын анықтайды');



Wrіtеlп('Программа жұмысын тоқтату үшін Ctrl+Break пернелерін басыңдар');

repeat


wrіtеlп('Келесі перне: ');

сҺ: = Read Кеу;

writeln;

if cs <> #0 then

writeln ('Символдық перне. Огd (сҺ) = " Ord(ch))

else


begin

write (Басқару пернесі, символ коды: #0. ' );

сҺ : = Read Кеу;

writeln ('Сканерлеу коды: " Огd(сҺ));

end·,

until false;



end.

Бұл программа кейбір пернелерді басқанда, мысалы, F11 пернесін басқанда еш нәрсе істемейді. Оның символдық және сканерлеу коды болғанмен, Паскаль қолданатын DOS жүйесі компьютер пернелерінің кеңейтілмеген ескі нұcқaсын пайдаланатындықтан (онда F11 болмаған), программа осындай нәтиже береді.

4. Символдық және сандық мәндерді енгізгенде, көбінесе EOLN (еnd of linе - жол соңы) стандартты функциясын пайдалану қолайлы болады. Бұл Функция мәні "жолдың соңы болды " немесе "мәндер беріліп болды" дегенді білдіретін Enter пернесі басылғанда ғана ақиқат (TRUE) болады да,қалған жайғдайлардың барлығында жалған (FALSE) болады. Бұл Функция көбінесе циклдік операторларда пайдаланылады.
4.3 Мәліметтерді шығару операторы
Паскаль тілінде нәтижені экранға шығару үшін WRITE (жазу) операторы (процедурасы деп те айтылады) қолданылады:
WRІTE (аl, а2, ... ,an);
Мұндағы жақша ішінде жай айнымалылар немесе апострофтармен қоршалған символдар тобы болуы мүмкін. Мысалы, егер B=17.15. болып, мына команда орындалғанда:
WRlTE ('В мәні=', В);

экранда


В мәні = 1.715Е+Оl

деген сөз тіркесі көрінеді.

Шығарлатын мәндердің түрі айнымалылардың типі арқылы анықталады, олар iпteger, real, Вооlеап (true, false), char, striпg сияқты типтер түрінде беріле береді.

Шығарылатын параметрлер бір-бірімен үтір арқылы ажыратылыn, WRITE түйінді сөзінен соң жай жақша ішіне жазылады.

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


WRITE (b: n) немесе WRITE (b: 5)
операторы арқылы жүзеге асырылады. Мұндағы b - айнымалының атауы: n - мәні бүтін сан болып келетін тұрақты түрінде берілген орын саны, оны бірден бүтін санмен де жазуға болады. Егер b: 5 пішімі беріліп, ал b =56 ( екі немесе үш разрядты сан) болса, онда беске дейінгі толтырылмаған орындарға сол жақ шетте бос орын қалдырылады. В = 56 мәні үшін WRІTE (b: 5) операторы экранға

«56»


тіркесін шығарады.

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


І- санға берілетін барлық орын.

ІІ- үтірден кейін алынатын бөлшек цифрлар саны.


Мынадай оператор берілсін делік: WRІTE (Ү: 5: 2)

Мұндағы 5 - нәтижеге берілген барлық орын, 2 үтіпден соңғы бөлшек бөлігіне берілетін орындар саны. Мысалы, С= - 145.7865 болғанда WRITE (С: 8: 3) операторы экранға - 145.786 мәнін шығарады, мұндағы жалпы орындар саны - 8, ал бөлшек үш санмен бейнеленетіндіктен соңғы бір цифр жазылмай қалып отыр. С айнымалысының берілген мәнін толық бейнелеу үшін WRITE (С: 9: 4) операторын жазу керек еді. Жалпы нақты санды экранда бейнелеу операторының жазылу түрі:


WRITE (С: п: т);
мұндағы n - С мәнінің барлығына берілген орын саны; m - С мәнінің бөлшек бөлігіне белгіленген орын саны. n - нің мәні таңбаны, бүтін мен бөлшекті бөлетін нүктені және бүтін сандар орнын бөлшек қосып көрсететіндіктен, ол n > m +3 болуы тиіс. Экранға шығаратын сандардың арасында қалдырылатын бос орын санын да осы жолмен көрсетуге болады. Ол үшін екі апостроф жазып, одан кейін қос нүктемен бөлінген бүтін сан арқылы қалдырылатын бос орындар санын өрнектейміз, мысалы:
WRITE (b: 8: 3,":4, с: 12: 4);
мұндағы 4 - b мен с сандарының арасындағы бос орын саны.

Егер нақты сан үшін: WRIТЕ ('Ү =', Ү: 8: 3) пішімі берілсе, ал оның мәні Ү=1.76 болса, экраннан Ү=1.760 тіркесі көрінеді.



Егер операторда пішім көрсетілмесе, онда нәтuжеде сол сан экспоненциальды түрде экранға шығады.

Паскаль тілінде параметрсіз шығару операторы WRITELN жаңа жолға өту үшін қолданылады.

Егер WRITELN (аl, а2, ...,an); операторы қолданылса, онда аl, а2, ... ,аn. мәндерін экранға шығарған соң курсор келесі жолға көшеді.

WRITE операторын түсініктеме беруге қолдануға болады. Мысалы:


WRITE (' А, В, С мәндерін енгізіндер: ');

READ (А, В, С);
Мұндайда экранға:

А, В, С мәндерін енігізіндер:

түсініктеме сөзі шығады, сонан кейін үш сандық мән енгізілуі тиіс.

Мысалы,
WRITE (' Т = ' , N: 3,": 4, ,М = ' , М: 4: 2)

болса, онда Т-ның үш орынды мәнінен соң 4 бос орын қалады да, одан соң М-нің нақты мәні жазылады.

Айталық, х= 7, ү= 15, Z= 11, ал R= 450,08 болсын, оларды экранға шығарудың әр түрлі тәсілдері мына кестеде көрсетілген.


Кесте 2 Экранға шығару тәсілдері

Оператордың жазылуы

Экрандағы нәтижесі

Write (х, у);

Write (Х'_,_' ,у);

Write ('Х =',Х);

Write (Х, ": 3, Z);

Write +Ү =',Х+Ү);

Write (Z,'- соңы);

Write ('бітті');

Write (R);



7 15

7_,_ 15


Х=7

7 11


Х+Ү=22

ІІ-соңы


бітті

4.5008Е+02




5 Тармақталу командалары
Программадағы операторлардың орындалу ретін басќарып отыратын операторларды тармаќталу командалары дейді. Бұл командалардың көмегімен құрылған программалардың блоксхемасы тармаќ (бұтаќ) түріне болады. Тармаќталу командалары шартсыз және шартты болып екіге бөлінеді.

GOTO шартсыз операторы.

GOTO операторы программаның орындалуын өзінде көрсетілген белгіге аударады.

Мысалы:

GOTO 10; //программа орындалуы ешќандай шартсыз 10 белгісі бар операторға ќарсы көшеді


IF…THEN шартты операторлары.

IF…THEN шартты операторлары берілген шарттардың орындалуын реттейді.

Программалауда шартты операторларды мынадай варианттарға ќолдануға болады:

1.IF шарт THEN 1 блок;

Егер шарт орындалса, онда басќару THEN операторына беріліп, 1 блок орындалады, әйтпесе басќару үтірлі нүктеден кейінгі операторға беріледі.


2. IF шарт THEN 1 блок 2 ELSE блок;

Егер шарт орындалса, онда басќару THEN операторына беріліп, 1блок орындалады, әйтпесе басќару ELSE операторына беріліп, 2 блок орындалады.


3.IF шарт THEN 1 блок ELSE IF 2 шарт THEN 2 блок ELSE IF 3 шарт

THEN 3 блок ELSE 4 блок;

Егер шарт орындалса, онда басќару THEN операторына беріліп, 1блок орындалады, әйтпесе басќару ELSE операторына беріліп, 2 шарт тексеріледі, егер 2 шарт орындалса 2 блок орындалады, орындалмаса 3 шарт тексеріледі, егер 3 шарт орындалса 3 блок орынды, орындалмаса 4 блок орындалады.

Егер THEN не ELSE операторларында бірнеше оператор болса, онда олар операторлыќ жаќшаға алынып жазылады. Егер IF операторында бірнеше шарт болса, онда жәй жаќшаға алынып OR немесе AND ќызметші сөзі арќылы бөлініп жазылады.

Тармаќталу программаларын ќұруға бірнеше мысал келтірейік.


1.Екі санның үлкенін табу программасы.
PROGRAM MAXSHISLO;

VAR A, B:REAL;

BEGIN READLN (A,B);

IF A>B THEN

WRITELN(`MAX=`,A)

ELSE WRITELN (MAX=`,B);

END.

2.N санының [ a, b] интервалына жататынын аныќтау программасы.


PROGRAM INT shislo;

VAR N,A,B: REAL;

BEGIN READLN (N);

A:=-50; B:=200;

IF ( N>A) AND (N=0
PROGRAM systema;

LABEL 1;


VAR X, A, B, Y: REAL;

BEGIN READLN (X,A,B);

IF X>0 THEN

BEGIN Y:=X2*A; GOTO 1; END;

Y:=X+3*B;

1: WRITELN(`Y=`,Y:5:2);

END.
B) X+2*A, егер X<-50

Y= X+3*B, егер X<0

A*B+X, егер X<50

X, егер X>=50


PROGRAM systema;

VAR X, A, B, Y: REAL;

BEGIN READLN (X,A,B);

IF X<-50 THEN Y:=X+2*A ELSE IF X<0 THEN Y:=X+3*B

ELSE IF X<50 THEN Y:=A*B+X ELSE Y:=X;

WRITELN(`Y=`,Y:5:2);

END.
3. Светофор программасын ќұру.
PROGRAM svet;

VAR X, Y: STRING;

BEGIN READLN (X);

IF X=`ќызыл` THEN Y:= `ТОЌТА,К‡Т` ELSE IF X=`сары` THEN

Y=`ДАЙЫНДАЛ` ELSE IF X=`жасыл` THEN Y=`Ж‡Р`

ELSE Y=`светофорда ондай түс жоќ`;

WRITELN(Y);

END.
4. Төрт банктегі валюта курсын шығару программасы.

PROGRAM valuta;

LABEL 1,2,3,4,5;

VAR X:STRING;

BEGIN READLN (X);

IF X=`Казкоммерцбанк` THEN GOTO 1 ELSE

IF X=`Темірбанк` THEN GOTO 2 ELSE

IF X=`ТуранЄлембанк` THEN GOTO 3 ELSE

IF X=` ЦентрКредитбанк` THEN GOTO 1 ELSE GOTO 5;

1: WRITELN (`$US-147.5 KZT`); WRITELN (`1 RR-5.7 KZT`);

GOTO 5;


2: WRITELN (`$US-147.8 KZT`); WRITELN (`1 RR-4.9 KZT`);

GOTO 5;


3: WRITELN (`$US-148.7 KZT`);

WRITELN (`1 RR-5.3 KZT`); GOTO 5;

4: WRITELN (`$US-148.2 KZT`);

WRITELN (`1 RR-5.4 KZT`);

5:END.
CASE таңдау командалары.

CASE таңдау операторының көмегімен берілген блоктардың кез-келген вариантын таңдауға болады. Егер орындалатын блокта бірнеше оператор болса, онда олар операторлыќ жаќшаға алынып жазылады.

CASE N OF

1:1 блок;

2:2 блок;

… … … …


N: N блок; END;
Таңдау командаларымен программа ќұру.
11. Х айнымалысына байланысты Y-тің мәнін есептеу.
5*X+50*A, егер X<-10

SQRT(X+A), егер X<0

Y= COS (A+B), егер X<10

SIN (A+B), егер X>=10


PROGRAM esepteu;

VAR M:INTEGER;

X,A,B,Y: REAL;

BEGIN READLN (X,A,B);

IF X<-10 THEN M:=1ELSE X<0 THEN M:=2

ELSE IF X<10 THEN M:3 ELSE M:=4;

CASE M OF

1: Y:=5*X+50*A;

2: Y:=SQRT(X+A);

3: Y:=COST (A+B);

4: Y:=SIN (A+B);

END;


WRITELN (`Y=`, Y:5:2); END.
12. Ќазаќстандыќтардың олимпиадалыќ ойындарда алған алтын медальдары (жылдар бойынша таңдау).
PROGRAM OLYMP;

VAR M:INTEGER;

BEGIN READLN (M);

CASE M OF

1996: BEGIN

WRITELN (`Грек-рим күресі - Ю.Мельниченко`);

WRITELN (`Ќазіргі бессайыс - А.Парыгин`);

WRITELN (`Бокс - В.Жиров`);

2000: BEGIN

WRITELN (` Жеңіл атлетика - О.Шишигина`);

WRITELN (`Бокс - Б.Саттарханов, Е.Ибраимов`); END;

END.
13. Әртүрлі елдердің астаналары туралы мәлімет алу программасы.


PROGRAM COUNTRY; LABEL 10;

VAR M:INTEGER; X:STRING;

BEGIN READLN (X);

IF X=`¤збекстан` THEN M:=1 ELSE IF X=Ресей` THEN M:=2

ELSE IF X= `Франция`THEN M:=3 ELSE IF X= `Жапония` THEN

M:=4 ELSE IF X=`Болгария` THEN M:=5 ELSE GOTO 10

CASE OF

1: WRITELN (`Астанасы - Ташкент, тұрғыны -2.5 млн. адам`);



2: WRITELN (`Астанасы - Москва, тұрғыны -7.2 млн. адам`);

3: WRITELN (`Астанасы - Париж, тұрғыны -6.5 млн. адам`);

4: WRITELN цикл денесі;

(`Астанасы - Токио, тұрғыны -12.8 млн. адам`);

5: WRITELN (`Астанасы - София, тұрғыны -3.5 млн. адам`);

END.


10: END.

6 Қайталану (Циклдік) командалары
Программаның белгілі бір бөлігінің орындалуын бірнеше рет қайталау үшін қолданылатын командаларды қайталану командалары деп атайды. Көптеген есептеулерде айнымалылардың әртүрлі мәндері үшін кейбір операторлар бірнеше рет қайталанып орындауды қажет етеді. Бұл операторларды, қайталап орындалуы үшін, программаға қайта – қайта жаза берсек, онда программа құру үшін көп уақыт кетеді, әрі программалық текст өте ұзақ және оқуға ынғайсыз болып жазылады. Сондықтан программалық текстер қысқа әрі оқуға жеңіл болу үшін қайталану процесін циклдық операторлар қолданып ұйымдастырады. Циклдік процесс ұйымдастыру үшін келесі операторлар қолданылады:

1.FOR – параметрлі циклдік оператор;

2.WHILE – алдын – ала циклдің орындал шартын тексеретін оператор;

3.REPEAT – соңында циклдің тоқтау шартын тексеретін оператор.


Циклдік операторлар құрылымдық операторлар тобына жатады, өйткені құрамына бірнеше операторлар кіреді. Программада алдымен циклдің тақырыбы жазылады, онан кейін қайталанатын операторлар бөлімі – цикл денесі жазылады. Цикл денесі бір немесе бірнеше операторлардан тұруы мүмкін. Барлық циклдық операторлардың келесі ерекшелігі бар:

а) Қайталанатын операторлар ( циклдің денесі ) бір – ақ рет жазылады;

ә) Циклге тек қана басынан ( тақырыбы ) ғана кіруге болады;

б) Циклің айнымалылары алдын – ала циклге дейін анықталуы тиіс;

в) Цикл денесінде көшу операторын ( Goto ) қолданып программаның басқа бөліктеріне шығуға болады.

д) Цикл ұйымдастырғанда, міндетті түрде циклден шығу шарты орындалатынын қарастыру керек, әйтпесе программа орындалуы циклге келгенде тоқтап тұрып қалады ( программа «мәңгі циклденіп» қалады ).

Цикл денесінің әр қайталауында цикл айнымалыларының мәндері де өзгеріп, жаңа мән қабылдап отырады. Қайталану саны циклдің тақырыбында және цикл денесінде берілетін айнымалылардың мәндеріне байланысты болады.
FOR циклдік операторы ( Үшін циклі ).
Параметрлі циклдік операторлар цикл денесінің қайталануы арқылы алдын – ала белгілі болғанда қолданылады.Жалпы жазылу түрі төмендегідей болады:

FOR K : = M TO N DO

ЦИКЛ ДЕНЕСІ ;

МҰНДАҒЫ : К – циклдік айнымалы ( есептеуіш ), әр цикл орындалғанда К – ға 1 қосылып тұрады.

М – К айнымалысының алғашқы мәні.

N – К айнымалының соңғы мәні.


Цикл денесі жай немесе құрама оператордан тұруы мүмкін, егер цикл денесі құрама оператордан тұрса,онда ол операторлық жақшаға алынып жазылады.Циклдің параметрі ( К ) тек қана айнымалы болуы тиіс, ал М және N өрнек болуы да мүмкін ( нақты Real – типтен басқа ). Көбінесе цикл параметріне бүтін типті айнымалы қолданылады, оның мәні циклдің әр орындалуынан соң 1 – ге артып отырады ( қадам 1 – ге тең ).
FOR циклінің блок – схемасы:


Цикл денесінің орындалуы FOR операторындағы К параметрінің мәні соңғы М параметрінің мәніне жеткенге дейін қайталанады. Егер К мәні М мәнінен асып кетсе, онда қайталану процесі тоқтап, басқару циклі денесінен кейін тұрған операторға беріледі. Сондай – ақ FOR және DOWNTO операторларының көмегімен кері циклдер ұйымдастыруға болады, кері циклдің жалпы жазылу түрі төмендегідей:

FOR := N DOWNTO M

Цикл денесі;
Мұндағы: К – циклдік айнымалы ( есептеуіш ), әр цикл орындалғанда – 1 – ге азайып тұрады.

М – к айнымалысының алғашқы мәні. Т – К айнымалысының соңғы мәні.


Енді FOR операторымен циклдер құру мысалдарын қарастырайық:

Алты бұрыштың қабырғалары берілген. Үшбұрыштардың ауданын программаның бір орындалуында шығару керек.

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


PROGRAM AUDAN;

VAR A, B, C: Byte; P, S:REAL;

BEGIN Write ( 1,’үшбұрыштың қабырғаларын енгіз:’ );Readln ( A, B, C );

P:= ( A+ B + C )/2; S := SQRT ( P*(P – A)*(P – B)*(P – C) );

Writeln ( ‘ аудан S ’ , 1 , ’ = ’ , S : 5 : 2 );

Write ( 2 , ’ үшбұрыштың қабырғаларын енгіз: ’); Readln ( A, B, C );

P:= ( A+ B + C )/2; S := SQRT ( P*(P – A)*(P – B)*(P – C) );

Writeln ( ‘ аудан S ’ , 2 , ’ = ’ , S : 5 : 2 );

Write ( 3 , ’ үшбұрыштың қабырғаларын енгіз: ’); Readln ( A, B, C );

P:= ( A+ B + C )/2; S := SQRT ( P*(P – A)*(P – B)*(P – C) );

Writeln ( ‘ аудан S ’ , 23, ’ = ’ , S : 5 : 2 );

Write ( 4, ’ үшбұрыштың қабырғаларын енгіз: ’); Readln ( A, B, C );

P:= ( A+ B + C )/2; S := SQRT ( P*(P – A)*(P – B)*(P – C) );

Writeln ( ‘ аудан S ’ , 4 , ’ = ’ , S : 5 : 2 );

Write ( 5 , ’ үшбұрыштың қабырғаларын енгіз: ’); Readln ( A, B, C );

P:= ( A+ B + C )/2; S := SQRT ( P*(P – A)*(P – B)*(P – C) );

Writeln ( ‘ аудан S ’ , 4 , ’ = ’ , S : 5 : 2 );

Write ( 6 , ’ үшбұрыштың қабырғаларын енгіз: ’); Readln ( A, B, C );

P:= ( A+ B + C )/2; S := SQRT ( P*(P – A)*(P – B)*(P – C) );

Writeln ( ‘ аудан S ’ , 5 , ’ = ’ , S : 5 : 2 );

Readln End.
ә) Программаны тармақталу командалары көмегімен төмендегідей етіп құруға болады:
PROGRAM AUDAN 1;

LABEL 1;


VAR A, B, C: Byte; P, S: Real; K : Byte;

BEGIN K:=1;

1: Write ( k, ‘үшбұрыштың қабырғаларын енгіз: ’); Readln ( A, B, C );

P:=( A + B + C ) / 2 ;

S:=SQRT ( P*(P – A)*(P – B)*(P – C) );

Writeln ( ‘ аудан S ’ , K , ’ = ’, S : 4 : 1 );;

K:= K + 1;

If K < = 6 Then Goto 1;

Readln End.
б)Енді дәл осы программаны FOR операторымен құратын болсақ, онда программада үшбұрыштың қабырғаларын ендіру және оның жарты периметрі мен ауданын есептеу формулаларын төмендегідей цикл денесінде бір – ақ рет жазса жеткілікті. Цикл денесі К параметрінің 1 – ден 6 – ға дейінгі мәндерінде қайталанып орындалады. Компьютер 6 рет Readln операторындағы айнымалылар мәндерін сұрап, оларды клавиатурадан ендіргеннен кейін, 6 рет үшбұрыштың ауданы Герон формуласымен есептеліп, экранға нәтиже шығарады.
PROGRAM AUDAN 1;

VAR A, B, C : Byte;

P, S : Real; K : Byte;

BEGIN


For K:= 1 To 6 Do Begin

Write ( K,’үшбұрыштың қабырғаларын енгіз’ );

Readln ( A, B, C );

P:= ( A + B + C ) / 2;

S:=SQRT (P*(P-A)*(P-B )*(P-C));

Writeln ( ‘ аудан S’ , K, ’=’ , S:5:2 );End;

Readln END.
Бұл программаны ТО операторының орнына DOWNTO операторын қолданып төмендегідей кері цикл ұйымдастырып, құруға да болады:
PROGRAM AUDAN 1;

VAR A, B, C : Byte;

P, S : Real; K : Byte;

BEGIN


For K:=6 Downto 1 Do Begin

Write (K,’ ’үшбұрыштың қабырғаларын енгіз’ );

Readln ( A, B, C );

P:= ( A + B + C ) / 2;

S:=SQRT (P*(P-A)*(P-B )*(P-C));

Writeln ( ‘ аудан S’ , K, ’=’ , S:5:2 );End;

Readln END.

Экранға Х – тің барлық 1 – ден 100 – ге дейінгі бүтін мәндері үшін Y=x2-50*x-30 өрнегінің нәтижесін шығару командасы.
Программада Х идентификаторын өрнектің айнымалысы әрі циклдің параметрі ретінде белгілеп, 1 – ден 100 – ге дейін қайталанатын цикл ұйымдастырамыз. Цикл параметрі Х 1 – ді меншіктеп, өрнектің Х =1 болғандағы мәнін шығарады. Цикл параметрінің келесі мәні 2 – ні меншіктеп, өрнектің Х =2 болғандағы мәнін шығарады, әрі қарай цикл аяқталғанша өрнектің сәйкес мәндері шыға береді. Цикл параметрі 101 мәнін қабылдағанда, цикл тоқтайды.

PRAGRAM Tendeu 1;

VAR X:Byte; Y:Longint;

BEGIN


For X:= 1 To 100 Do

Begin

Y:= SQR ( X ) + 50*X-30;

Writeln (‘Y=’, Y );

End;

Readln END.



Программаның блок – схемасы:



Дәл жоғарыдағы өрнектің Х – тің 1 – 100 – ге дейінгі бүтін жұп мәндері үшін нәтиже шығару программасын құру.
PRAGRAM Tendeu 3;

VAR X:Byte;

Y:=integer;

BEGIN


For X:=1 To 100 Do

If X Mod 2=0 Then

Begin

Y:= SQR ( X )+*X-30;

Writeln (‘Y =’, Y);

End;

Readln END.


Программаның блок – схемасы:

немесе бұл программа төмендегідей қысқаша етіп құруға да болады:


PRОGRAM Tendeu 4;

VAR X:Byte;

BEGIN

For X:=1 To 100 Do

Begin

X:=X+1;

Writeln (‘Y=’,SQR (X)+50*X-30);

End;

Readln END.


Программаның блок – схемасы:


Whilе … Do циклдік операторы ( ӘЗІРШЕ циклі )

Әдетте, WHILE операторы қайталану саны алдын – ала белгісіз болған жағдайларда қолданылады. Цикл денесінің әрбір орындалуының алдында, WHILE опероторында циклдің орындалу шарты тексеріледі, шарттағы айнымалылар мәндерінің өзгеруіне әсер ететін операторлар цикл денесінде беріледі. Егер цикл денесі бірнеше операторлардан тұрса, онда ол операторлық жақшаларға алынады, жалпы жазылу түрі:


WHILE шарт Do

цикл денесі;
Әзірше WHILE операторында жазылған шарт орындалып тұрса, цикл денесінің орындалуы қайталанып тұрады. Егер шарт орындалмай қалса, онда қайталану процесі тоқтап, басқару цикл денесінен кейін тұрған операторға беріледі. Шарттағы салыстырылатын айнымалылар мәндері цмклге дейін беріліп, олардың жаңа мәндерінің өсімі цикл денесінде беріледі. Егер WHILE операторындағы шарт бірде – бір рет орындалмаса, онда программа орындалуы циклді аттап өтеді.Егер шарттағы айнымалы мәндері ешқашан өзгермесе, онда программа мәңгі циклденіп қалады.

WHILE циклінің блок – схемасы:


FOR операторымен құрған үшбұрыштың қабырғалары бойынша ауданын табу және өрнектердің нәтижелерін шығару программаларын

WHILE операторымен де төмендегі мысалдардағыдай етіп құруға болады.
Герон формуласымен үшбұрыштардың ауданын табу программасы.
PROGRAM Audan1;

VAR A, B, C, K: Byte;

P, S :Real;

BEGIN K :=1; ( циклдің орындалу шарты )

WHILE K <=6 Do

Begin


Writeln (K,’үшбұрыштың қабырғаларын енгіз’);

Readln ( A, B, C );

P:= (A +B +C );

S:= SQRT (P*(P-A)*P-B)*(P-C));

Writeln (‘аудан S’,K,’=’ S:5:2);

Lnc (K); (K:=K+1 өрнегін ауыстыратын функция )

End;

Readln END.



Экранға Х – тің барлық 1 – ден 100 – ге дейінгі бүтін мәндері үшін Y=X2-50*X-30 өрнегінің нәтижесін шығару программасы.

PROGRAM Tendeu 1;

VAR X:Byte;

Y: Integer;

BEGIN X:=1;

While X<=100 Do

Begin

Y:= SQR (X)+50*X-30;



Writeln(‘Y=’, Y);

Lnc (X);


End;

Readln END.



Программаның блок – схемасы:



Дәл жоғарыдағы өрнектің Х – тің 1 – 100 – ге дейінгі бүтін жұп мәндері үшін нәтиже шығару программасын құру.
PROGRAM Tendeu 2;

VAR X:Byte; Y: Integer;

BEGIN

X:=2;


While X<= 100 Do

Begin

Y:=SQR(X)+50*X-30;

Writeln (‘Y=’,Y);

Lnc (X,2);

End;

Readln END.


Программаның блок – схемасы:



Сандардың қатынасының мәндерін есептейтін стандартты Mod және Div функцияларын While циклі арқылы ауыстыру программасы.
PROGRAM San;

VAR A, B, K, P, N :integer;

BEGIN

Readln ( A, B ); {екі сан енгізу }



P:= A;N:=0;

{Циклдің орындалу шарты}

While P>=b Do

Begin


P:= P – B;

N:= N + 1



End;

Writeln (‘Rez1=’,N, ‘Rez2=’,P);



Readln END.

Repeat … Until циклдік операторы ( ДЕЙІН ).
Бұл операторда WHILE операторы сияқты қайталану саны алдын – ала белгісіз болған жағдайларда қолданылады. REPEAT циклінің WHILE циклінен айырмашылығы циклді орындау шарты цикл денесінен кейін тексеріледі. Цикл денесі жай немесе құрама оператор болуы мүмкін. Ондағы операторлар REPEAT және UNTIL қызметші сөздерінің арасында орналасқандықтан, цикл денесі операторлық жақшаларға алынбай жазылады. Циклден шығу шарты орындалу үшін, цикл денесінде шартқа әсер ететін ең кемі бір оператор болуы тиіс, әйтпесе цикл денесінің орындалуы тоқтамай шексіз қайталана береді ( программа «мәңгілік циклденіп» қалады ).Жалпы жазылу түрі төмендегідей:
REPEAT

Цикл денесі;

UNTIL шарт;
UNTIL операторында жазылған шарт орындалғанға дейін цикл денесінің орындалуы қайталанып тұрады. Егер ондағы шарт орындалса, онда қайталану процесі тоқтап, басқару цикл денесінен кейін тұрған операторға беріледі. Шарттағы есептеуіш параметр мәні циклге дейін беріліп, оның жаңа мәнінің өсімі цикл денесінде беріледі.
REPEAT циклінің блок – схемасы:

Барлық циклдік операторлармен программалар құрғанда, Do, While, Repeat операторларынан кейін нүктелі үтір қойылмайтынын ескеру қажет. Егер цикл денелерінде басқаруды циклдің сыртындағы таңбаға көшіретін оператор кездессе, онда циклдің қайталануы бірден тоқтайды. Егер циклдің орындалу шарты басынан орындалмаса, онда цикл жүрмейді. REPEAT циклінде программа орындалуы цикл соңындағы шартқа бармай тұрып, цикл денесі міндетті түрде бір рет орындалады. Цикл денесінде басқаруды цикл сыртына жіберетін шартсыз көшу операторы тұрса, онда басқару Goto операторындағы белгісі бар цикл сыртындағы операторға беріліп, цикл ертн аяқталуы мүмкін.

REPEAT операторымен қайталану процестерін ұйымдастыру мысалдары:
S=1+2+3+4+5 қатарын есептеу программасын құру.
а) есептің сызықты программасы төмендегідей құрылады:
PROGRAM Syzyk;

VAR S:integer; {айнымалыларды сипаттау}

BEGIN

S:=0; {S – тің қосынды есептемей тұрғандағы алғашқы мәні}



S:=S+1;S:=S+2;

S:=S+3;S:=S+4;S:=S+5;

Writeln (‘S=”,S); {нәтиже шығару}

Readln END.

ә) Сызықтық программадан қатардың қосындысын есептеу формуласын шығарып алып, программаны тармақталу командаларымен құруға болады. Қатардың қосындысының формуласы:

S:=S+K;

Мұндағы: S – қосындының алдыңғы мәні;

К - әр жолы 1 – ге артып отыратын параметр.
PROGRAM Tarmak;

LABEL :


VAR X, K: integer; {айнымалыларды сипаттау}

BEGIN S:=0; K:=1; {S – пен К – ның алғашқы мәндері}

1:S:=S+K;

K:=K+1; {K – ның жаңа мәні әр жолы 1 – ге өсіп отырады}

If K<5 Then Goto 1; {шарт тексеру}

Writeln (‘S =”, S); {нәтиже шығару}

Readln End.
б) Енді программаны REPEAT операторымен құрып көрсетелік:
PROGRAM Kaitalanu;

VAR S, K :integer;

BEGIN S:= 0; K:=1;

REPEAT

S:=S+k;

K:=K+1;

Until K>5;

{циклдің тоқтау шартын тексеру}

{нәтиже шығару}

Readln END.


Программа блок – схемасы:




S:=0; k:=1;

S:=s+k;


K:=k+1;








Y =X2 функциясын Х – тің мәндері 1, 4, 7, 10 болғанда шығару программасын REPEAT циклімен құру.
PROGRAM Funct;

VAR X:Byte; Y: integer; {айнымалыларды сипаттау}

BEGIN

X:=1; {Х – тің алғашқы мәні}



{цикл басы}

REPEAT



Y:=SQR(X);

Writeln (X,’^2=’,Y); {нәтиже әр циклдің шығады}

Lnc (X,3)



Until X>10;

Readln END.



Радиустары әртүрлі 5 шеңбердің аудандарының қосындысын табу программасын құру.

PROGRAM Audankos;

CONST PI=3.14; {тұрақты шаманы көрсету}

VAR R,K: integer; S, P:Real; {айнымалыларды сипаттау}

BEGIN

P:=0;K:=1; {қосынды мен цикл параиетрінің алғашқа мәні}



REPEAT

Readln (R); {радиустың мәнін енгізу (5 рет )}

S:=PI*SQR(R); {5 шеңбердің ауданын есептеу}

P:=P+S; {5 ауданды бір – біріне қосу}

LNC(K) {К – ның келесі мәні}

Until K>5; {циклдің тоқтау шарты}

Writeln (‘аудандар қосындысы P=’,P:4:1); {нәтиже шығару}

Readln END.
1 – ден N – ге дейінгі жұп сандардың квадраттарының қосындысы мен тақ сандардың түбірлерінің көбейтіндісін табу программасы.

PROGRAM Sankvadrad;

VAR X, K, N; integer;

Y:Longing;

S:Real; {айнымалыларды сипаттау}

BEGIN Readln(N); {N санын енгізу}

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

REPEAT

{санның жұп – тақтығын}

{анықтайтын шарт}

if XMod 2= 0

Then Y:=Y+Sqr(x)

Elser S:=S*Sqrt(x);

Lnc(x) {х – тің келесі мәні}

Unit X>N; {циклдің тоқтау шарты}

Writeln (‘Жұп сандардың квадраттарының қосындысы=’,Y);

Writeln (‘Тақ сандардың түбірлерінің көбейтіндісі=’,S:4:1);

Readln End.


6.1 Цикл ішіндегі циклдер
Turbo Pascal программаларында бір циклдің ішінде екінші цикл, оның ішінде үшінші цикл тағыда сондай – сондай бір – біріне қабаттастырыпұйымдастыруға болады. Егер бір циклдің денесінің құрамында басқа бір циклдер болса,ондай циклді сыртқы цикл дейді. Ал цикл басқа бір циклдің құрамында болса, ондай циклді ішкі цикл дейді. Сыртқы және ішкі циклдерді ұйымдастыру тәртібі жай циклдерді ұйымдастыруға ұқсайды.Тек қана мынадай ережені есте сақтаған жөн: Ішкі циклдердің барлық операторлары сыртқы циклдің денесінде болуы шарт. Цикл ішіндегі циклдердің орындалу тәртібі мынадай:

1. Алдымен сыртқы циклдің параметрінің алғашқы мәні бойынша сыртқы циклдің орындалуының шарты тексеріледі, егер сыртқы циклдегі шарт орындалса, онда басқару цикл денесіндегі ішкі циклге беіледі.

2. Ішкі циклдің параиетрлерінің барлық мәндері бойынша ішкі циклдің орындалуы толық тексерілгеннен кейін басқару сыртқы циклге беріледі.

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



Цикл ішіндегі циклдер ұйымдастыру мысалдары:
Көбейту кестесін шығару программасын құру.
Программаны FOR операторын ғана қолданып құру:

PROGRAM Kob;

VAR K, I, S:Byte;

BEGIN {сыртқы цикл тақырыбы}

For K:=2To 9 Do Begin

{ішкі цикл}



For I:=1 To 9 Do

Begin S:= K*I;

Write(K,’X’, I,’=’, S, ’ ’ ) End; {ішкі цикл соңы}

Writeln


End; {сыртқы цикл соңы}

Readln END.



7 Процедуралар мен функциялар
Программалау барысында кей жағдайларда, бір типті есептеулерге бірнеше программалар ќұруға тура келеді. Осындайда артыќ жұмыс жасамай, барлыќ есептеулерді бір ғана программа ішінде орындау үшін, көмекші программалар- процедуралар немесе функциялар ќолданылады. Процедуралар мен функциялар программаның орындалу барысында бірнеше рет ќайталанып тұратын бірнеше операторлардан тұратын көмекші бөлігі. Программада бірнеше процедура немесе функция болуы мүмкін. Сол, сияќты көмекші программаның да өз көмекші программасы болуы мүмкін. Негізгі программаның сипаттамалар бөлімінде жазылған индефекаторлар көмекші программаның ішінде де жұмыс істей береді. Программа орындалу барысында негізгі программа шаќырылады.

Процедура орындалу барысында бірнеше нєтиже алады, ал функцияның нєтижесі бір ғана мән алады көмекші программалардың да негізі программа сияќты

а) көмекші программа аты, параметрлері жазылатын таќырыптан;

є) көмекші программада кездесетін индефекаторларды сипаттау бөлімінен;

б) операторлардан тұратын программа денесінен тұрады.

Процедураның жазылуы:

PROCEDURE Аты (формальды параметрлер); (*Таќырыбы*)

Сипаттамалар бөлімі; (* Бұл бөлім болмауы да мүмкін*)

BEGIN

Операторлар;



END;
Функцияның жазылуы:

FUNCTIION аты (формальді параметрлер): Типі;

Сипаттамалар бөлімі;

BEGIN Операторлар; END;


Процедура мен функциялардың наќты және формальді параметрлері болады. Программа орындалу барысында есептелетін параметрлер наќты деп, ал көмекші программалардың сипаттамасында көрсетілетін параметрлер формальды деп аталады. Наќты және формальды параметрлердің типі, саны, реттілігі сәйкес болуы тиіс. Олар бірдей белгіленуі де мүмкін. Наќты параметрлер тұраќтылардан, айнымалылардан және өрнектерден тұруы мүмкін. Кей процедуралар параметрлері болмауы да мүмкін.

Негізгі программада процедураны пайдалану үшін процедураның атын наќты параметрлермен жазып шаќырады.

Мысалы программа таќырыбы төмендегідей болса:

PROCEDURE SUMMA (N,M,X INTEGER);

Онда процедураны программада мынадай жолмен шаќыруға болады:

SUMMA (19, А,50);

Жаќшадағы19, А, 50 - наќты параметрлер болып табылады.

Сонда процедурадағы формальды параметрлер мынадай мәндерге ие болады:

N=19, M=А, X=50.

Сонымен программада процедура шаќыру процесіне формальды параметрлерді наќты параметрлердің мәнімен ауыстыру болып табылады. Процедураның параметрлері мәндік және айнымалы болып бөлінеді. Мәндік (аргументтік) параметрлер тек ќана наќты параметрлердің мәнін өзіне ќабылдайды да, ќайтып оларға өзінің мәнін бере алмайды. Ал айнымалы параметрлер наќты орындалу барысында өзгертіп, наќты параметрлерге жаңа мәндерін ќайтып береді. Айнымалы параметрлердің алдына ќызметші сөздер ќойылып жазылады. Мысылы:

PROCEDURE PRIMER (A,B:INTEGER; VAR X,Y:INTEGER);

VAR S: ITEGER;

BEGIN

S:=A+5*B;



X:=SQR (S);

Y:=SQR (X);

END;
Бұл процедураны былай жазып шаќыруға болады:

PRIMER (10,5,K,I);

Нәтижесінде:

а) формальді параметрлер 10, 5, K, І наќты параметрлердің мәнін ќабылдап,

ә) процедура орындалады да,

б)X-пен Y өздерінің жаңа мәндерін K-мен І-ге береді.


1) A=10, B=5, X=K, Y=I,

2) S=10+5*5=35,

X=35*35=1225,

Y=1225*1225=1500625,

3) K=X=1225,

I=Y=1500625.


Функциялар процедуралар сияќты шаќырылады.

Мысалы 1-ден 15- ке дейінгі және 1-ден 9- ға дейінгі ќосындылардың көбейтіндісін алу программасында ќосынды табуға SUMMA функциясын ќолдануға болады.

FUNCTION SUMMA (M:INTEGER):INTEGER;

BEGIN


S:=0;

FOR K:=1 TO M DO

S:=S+K; SUMMA:= S;

END;


BEGIN P:=SUM(15)+SUM(9);

WRITELN('Көбейтінді ='P);

END.
8 Массивтер
Индексті айнымалылардың жиынтығын - массивтер дейді. Массивтерді программада ќолдану үшін, оларға белгілі бір ат беріледі. Содан соң программаның VAR бөлімінде ARRAY ќызметші сөзімен сипаттап, компьютердің жадынан массив элементтеріне орын бөледі. Массивтер бір өлшемді және екі өлшемді (матрицалар) болып бөлінеді. Массив элементтерін өндіру және шығару цикл арќылы жүзеге асырылады. Екі өлшемді массивтердің бірінші индексі ќатардың, ал екіншісі - бағанның номерін білдіреді. Екі өлшемді массивтерді ендіргенде екі цикл ұйымдастырылады, сыртќы цикл - ќатарлар бойынша және ішкі цикл - бағандар номері бойынша.
Бір өлшемді массивтердің сипатталу түрлері:

CONST N=100; { N-элементтер саны}

TYPE MAS=ARRAY [1..N] OF REAL;

VAR A: MAS;

Немесе бірден VAR бөлімінде:

CONST N=100;

VAR A: ARRAY[1..N] OF REAL;

Екі өлшемді массивтер (матрицалар) сипатталу түрлері:

CONST N =100; M=100;

TYPE MAS = ARRAY [1..N, 1..M] OF REAL;

{N- ќатарлар саны, М- бағдар саны}

Массивтерге программа ќұру.

1. Массивтің теріс элементтерінің ќосындысын шығару.

PROGRAM PR1;

CONST N=20;

VAR K:INTEGER;X:ARRAY [1..N] OF REAL;

S:REAL;

BEGIN FOR K:=1 TO N DO REFD (X[K]);



S:=0; FOR K:=1 TO N DO IF X [K]<0

THEN S:=S+X [K];

WRITELN (Теріс элементтер ќосындысы',S:7:2); END.
2. Массивтің 5-тен үлкен элементтерінің көбейтіндісі.

PROGRAM PROIZV;

CONST N=20;

VAR K,N:INTEGER;

X:ARRAY [1..100] OF REAL; S: REAL;

BEGIN WRITLEN ('Массив элементтерінің санын енгіз');

READ (N); FOR K:=1 TO N DO IF X[K]> 5 THEN

S:=S*X[K];

WRITELN ('5 -тен үлкен элементтер ќосындысы=',S:7:2); END.
3. Массивтің таќ номерлері элементтерінің ішінде 0-ге тең элементтерінің санын шығару.
PROGRAM POV;

TYPE MAS=ARRAY[1..10] OF REAL;

VAR K: ITEGER; X:MAS; S: REAL;

BEGIN


FOR K:=1 TO 10 DO READ (X[K]);

S:=0;


FOR K:=0 TO 9 DO BEGIN K:=K+1; IF X [K]=0 THEN

S:=S+1; END;

WRITELN ('0-ге тең элементтер саны=',S:7:2); END.
4. Массивтің жұп номерлері элементтерінің ішінде 5-тен артыќ элементтерінің номерін экранға шығару.
PROGRAM POV;

TYPE MAS =ARRAY [1..10] OF REAL;

VAR K: INTEGER; X:MAS; S:REAL;

BEGIN


FOR K:=1 TO 10 DO READ (X[K]);

S:=0;


FOR K:=1 TO 10DO

BEGIN K:=K+1; IF X[K]>5THEN

WRITELN ('5-тен үлкен элементтер саны =',K); END'END.
5.Массивтің бүтін элементтерін шығару.
PROGRAM 2PR2;

CONST N=5;

VAR A:?ARRAY [1..N] OF REAL;

P,K:INTEGER;

BEGIN

FOR K:=1 TO N DO



IF A [K]=TRUNC(A [K]) THEN P:=P+1;

WRITELN(?бүтін элементтер=?,P); END.


6.Массивтің жұп элементтерінің санын табу.
PROGRAM PR3;

CNST N=15;

VAR A: ARRAY[1..N]OF INTEGER;

P,K,I:INTEGER;

BEGIN

FOR K:=1 TO N DO



IF ODD(A[K]) THEN P:=P+1;

I:=N-P;


WRITELN('Жұп элементтер саны=',); END.
7. Массивтің таќ элементтерін экранға шығару.
PROGRAM NESHETN;

LABEL 1;


CONST N=15;

VAR A:ARRAY [1..N] OF INTEGER;

P,K:INTEGER;

BEGIN


FOR K:=1 TO N DO READ (A[K]);

P:=0;


FOR K:=1 TO NDO

BEGIN


IF ODD (A[K]) THEN GOTO 1 ELSE

WRITELN(?Таќ элемент=?,A[K]);

1:END;END.
8.Массивтің ең үлкен элементін шығару.
A) DOWNTO операторымен

PROGRAM MAX; CONST N=10;

VAR A:ARRAY [1..N] OF REAL; P:REAL; K,I:INEGER;

BEGIN FOR K:=1 TO N DO READ ( A[K]);

P:=A[N]; I:=N;

FOR K:=N DOWNTO 1 DO

IF A[K]>P THEN BEGIN I:=K; P:=A[K] END;

WRITELN('Ең үлкен элемент='A[I]:4:2);

END.
В) FOR ТО операторымен

PROGRAM MAX;

CONST N=10;

VAR A:ARRAY [1..N]OF REAL; P:REAL;

K,I:INTEGER;

BEGIN


FOR K:=1 TO N DO READ (A[K]);

P:=A[1]; I:=N;

FOR K:=1 TO N DO

IF A[K] >P THEN BEGIN I:=K; P:=A[K] END;

WRITELN (?=Ең үлкен элемент?,A[I]:4:2);

END.
9. Спортсмендерге ќорытынды баға шығару программасы.

( Гимнастика жарысында спортсмендердің жаттығуларын 10 төреші бағалайды.

Ќорытынды баға шығарғанда, жарыс ережесі бойынша жалпы бағадан спортсменнің ең төменгі жєне ең жоғарғы алған бағаларын бір- бірден алып тастап, арифметикалыќ ортасын шығарады.


PROGRAM SRBALL;

VAR X:ARRAY [1..10] OF INTEGER;

A: REAL; K,S, MAX, MIN:INTEGER;

BEGIN


FOR K:=TO 10 DO READ (X[K]);

MIN:=X[1];

FOR K:=2 TO 10DO

IF X[K]>MAX THEN MAX:=X[K];

S:=0;

FOR K:=1 TO 10 DO S:= S+X[K]; A:= (S-MIN-MAX)/8;



WRITELN (?Ќорытынды баға A=?,A[I]:7:3);

END.
10. Массив элементтерін кему бойынша реттеу.


PROGRAM UBIV;

VAR K,I:INTEGER;

X:ARRAY [1..10] OF INTEGER;

S,MAX,A:INTEGER;

BEGIN

FOR K:=1 TO 10 DO READ (X[K]);



FOR K:=10 DOWNTO I DO

IF X[K]> MAX THEN

BEGIN A:=K; MAX:=X[K]) END;

X[A]:=X[I];

X[I]:=MAX;

END;


FOR K:=1 TO 10 DO WRITELN ('X[K]:5);

END.
11.Сыныптағы әр оќушының үлгерім проценті берілген, үлгерімі ең төмен оќушының сыныптың орта үлгерім процентіне жетуі үшін үлгерімін ќанша процентке арттыру керектігін есептеу программасы.


PROGRAM UKP;

VAR K,I:INTEGER;

X:ARRAY [1..20] OF REAL;

S,MIN,A:REAL;

BEGIN

PEREAT


READLN (X[1]>0);

UNTIL (X[1]<101) AND (X[1]>0);

MIN:=X[1]; S:=MIN;

FOR K:=2 TO 20 DO

BEGIN

REPEAT


READLN (X[K]);

UNTIL (X[1]<101) AND (X[1]>0);

S:=S+X[K];

IF MIN>X[K] THEN MIN:=X[K]

END;

WRITELN(?үлгерімді-',(S/5-MIN):7:2,'- процентке көбейту ќажет');



END.
9 Файлдардың түрлері
Осыған дейін, біз мәліметтерді пернетақтадан негізіп, оларды экранға шығардық, программа жұмысы кезінде олар компьютердің оперативті жадында сақталатын да, есептеулер біткеннен кейін бұл мәліметтер жоғалып кететін. Жұмыс нәтижесін келешекте пайдалана алу үшін, мысалы, оларды есептеулерге пайдалану үшін немесе жаңа мәліметтерді алу үшін, оларды есте сақтап қалу керек. Ондай тәсілдердің бірі мынадай: нәтиже экранға шыққан соң қолға қаламсап (қарындаш) және бір бет қағаз алып, бұл мәліметтерді жазып алу. “Дербес компьютерлер” дәуірінің басында оларды “үй тапсырмасы” деп атаған да, шын мәнінде солай болған. Қазіргі кездегі дербес компьютерлердің барлығы ақпаратты сақтауға арналған арнайы құрылғылармен жабдықталған. Қызметтеріне қарай оларды: магниттік ақпарат тасымалдаушылар немесе жазылатын CD- дискілер деп атайды. Ақпаратты сақтау осы тасымалдаушыларда ұйымдастырылады, бұл жағдайда біз алған нәтижелерді солардың жадында сақтаймыз. Барлық мәліметтер осы тасымалдаушыларда файлдар түрінде сақталады.

Файл дегеніміз – мәліметтер сақтауға арналған сыртқы тасымалдаушыдағы жадының ат қойылған аймағы (бөлігі).

File (ағылшын тілінен аударылғанда) бума, іс қағаздар жинағы, сонымен қатар ақпаратты сақтау деген мағынаны білдіреді.

Borland Pascal-да файлдарды екі негізгі белгісі бойынша топтастыруға болады:


  1. файлдың типі бойынша (оның логикалық құрылымына )

  2. файл элементтеріне қатынау тәсілі бойынша

Типтері бойынша файлдар шартты тұрде үш түрге бөлінеді:

  • мәтіндік файл;

  • типтік файл;

  • типтік емес файл.

Біз көбінесе мәтіндік және типтік файлдармен жұмыс істейміз.

Қатынау тәсілі бойынша файлдар келесідей бөлінеді:



  • Тікелей қатынау файлдары

  • Кезекпен қатынау файлдары

Олардың айырмашылығы тікелей қатынау файлдарында арнайы процедуралар және функцияларды пайдалана отырып, мәліметтерді, олардың файлдағы орнына тәуелсіз, оқуға немесе жазуға болады, ал кезекпен қатынау файлында оның ортасында немесе соңында тұрған мәліметті оқу үшін, оның алдындағы мәліметтердің барлығын оқуға тура келеді. Мәтіндік файлдар кезекпен қатынау файлдарына жатады, ал типтік файлдар тікелей қатынау файлдарыа жатады.
9.1 Мәтіндік файлға мәліметтер жазу.

Бір өлшемді массив
Ең қарапайым файл типі мәтіндік файл болып табылады. Бұл файлдағы мәліметтер типтік және типтік емес файлдардағыдай машиналық кодта емес, сан, әріп және басқа пернетақта символдары түрінде (ASCII кодында) беріледі. Сондықтан мұндай файлдар мазмұны оңай қаралады, оңай өзгереді және оларды кез келген мәтіндік редактордың, соның ішінде Borland Pascal ортасының да көмегімен өзгертуге болады. Өздеріңіз білетіндей 2.1.2.-ні қара, мәтінді теру кезінде жаңа жолды енгізу үшін “Enter” пернесін басу керек, осы кезде арнайы код гинерацияланады—ол жол соңы коды, ал файлды сыртқы сақтау құрылғысына жазған кезде де арнайы код гинерацияланады—ол файл соңы коды. Мәтіндік файлды оқығанда бұл кодтар көрінбейді.

Келесі есепті шешіп көрейік: Пернетақтадан бірнеше сандар енгізіп, оларды “mayFile.in” атты мәтіндік типтегі файлға жазу керек.

Есепті кезеңдерге бөлейік:


  1. пернетақтадан мәліметтерді енгізу

  2. оларды “mayFile.in” атты файлға жазу керек.

Бірінші кезеңді орындау үшін:



  • пернетақтадан енгізілетін сандардың мөлшерін (массив өлшемін) көрсету керек

  • Сан мөлшерін білген соң, параметрлі циклді қолдану арқылы массив элементтеріне осы сандардың нақты мәндерін меншіктейміз

Осы әрекеттерді орындау үшін қолданылатын айнымалыларды сипаттаймыз. Айталық, санымыз 100-ден көп емес және олар басқа да процедураларда қолданылатындықтан, оларды ауқымды айнымалыларды баяндау блогында сипаттаймыз.

рrogram Misal_F1;

var



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




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

    Басты бет