Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС Программалауа кіріспе.doc
Скачиваний:
88
Добавлен:
18.05.2015
Размер:
244.74 Кб
Скачать

Негізгі бөлім

Ең бірінші программалау тілі болып Short Code (1949) саналды. XX ғасырдың 50-ші жылдарында пайда болған жоғары деңгейдегі программалау тілдері болып ФОРТРАН, КОБОЛ және АЛГОЛ саналады. Фортран мен Коблон әлі күнге дейін пайдаланылады, ал Алгол болса бірталай тілдердің (олардың ішінде паскаль тілі де бар) негізгі болып табылады. Қазіргі уақытта программалау тілдерінің саны бірнеше жүз құрайды. 1970 ж. программалау  әлемінде кемінде екі маңызды оқиға болды, олар: UNIX- операциялық жүйесінің және Паскаль атты жаңа программалау тілінің пайда болуы. Бұл тілді алғашқыда жалпы программалауды оқыту мақсатымен құрастырған Швейцариядағы жоғарғы политехникалық мектебінің Информатика институтының директоры, профессор Никлаус Вирт (1968-1971 жж) Жаңа программалау тіліне француз математигі, физигі және философы, көрнекті ғалым Блез Паскаль (1623-1662 жж) есімі берілді. Кейіннен осы тілдің бірталай түрлері және толықтамалары пайда болды. Олардың ішінен кеңінен таралған BORLAND компаниясының Turbo Pascal – пакеті. Программа құрастырудың сапасымен жылдамдығын арттыру үшін 80-ші жылдардың ортасында Турбо Паскаль атты программалау жүйесі дүниеге келді. Турбо деген сөз Borland International Inc. (АҚШ) фирмасының сату таңбасының бейнеленуі. Сонымен қатар Turbo Pascal тілі компьютерлік графиканы пайдалануға, дыбыспен жұмыс істеуге, жүйелік программалауға үлкен мүмкіндіктер береді. Бүл тілдің программистер арасында кеңінен таралуына  келесі себептер болды: Паскаль тілі өзінің икемді сипатталуына байланысты оқушылардың игеруіне  өте оңай және жылдам. Алгоритмдердегі концепцияны программа түрінде бейнелеуге түрлі программалық құралдар мен мүмкіншіліктерін ұсынады. Программада пайдаланатын айнымалылардың алдын ала сипатталынуы, программа, орындалмай тұрып компиляция кезеңінде оның үйлесімділігін тексеру т.с.с. Паскаль – программаларының қасиеттері программаға деген “сенімділікті” арттырады. Паскальда қарапайым және икемді басқару құрылымдарының пайдаланулы: сызықтық, тармақталу, қайталану. Паскаль тілінің құрушысы Н. Вирттің айтуы бойынша: “…Паскаль тілінің тәжірибелік пайдалануы оның құндылығын әйгі етіп көрсетті: — бұл тілде программа түзудің өте оңай екендігін; программаның жұмысын жөнге салудағы икемділігін; көптеген тәжірибелік мәселелердің шешімін тиімді жолдармен табу үшін ұсынылатын Паскаль тілінің техналогияларын, т.с.с…”. Бұл тілді Н. Вирт біріншіден- программалауға жүйелік бапты енгізіп, автоматты түрде программа мен мәліметтердің бірлігін тексеру мақсатымен құрды, екіншіден – жаңа компьютерлік мәдениетті игерудегі оқу құралы ретінде. Паскаль тілінің маңызды ерекшелігі болып бұл тілдегі оператор мен операндтың бір- бірімен байланысы, яғни кез келген оператор тек белгілі бір операндтар тобына тән болады. Бұл жерде операндтар деп операторлар  арқылы түрлі өңдеуге түсетін бастапқы мәліметтерді атаймыз. Осының жалғасы  — Паскаль тіліндегі мәліметтермен айнымалылардың типтеліну концепциясы болады. Типтеліну коцепциясының мағынасы неде? Көптеген программалау тілдерінде операторлардың әрекеттеріне байланысты барлық бастапқы мәліметтер бірнеше класқа немесе типтерге бөлінеді. Сондықтан тілдің барлық операторлары да өздеріне тән типті мәліметтермен жұмыс атқара алатын болады. Сонымен операторлар тобы мен операндтар тобы бір-бірімен нық байланысты болатын тіл элементтерін құрайды. Программалар белгілі бір мәселені, есепті шешуге арналған. Есеп шығару барысында компьютерге бастапқы мәліметтер енгізіледі, оларды қалай өңделетіндігі көрсетіледі және нәтиже қандай түрде, қандай құрылғыға шығарылатыны айтылады. Паскаль тілінде программа жеке-жеке жолдардан тұрады. Оларды теру, түзету арнайы мәтіндік редакторлар атқарылады. Программа алдындағы азат жол немесе бос орын саны өз қалауымызша алынады. Бір қатарда бірнеше команда немесе оператор орналаса алады, олар бір — бірімен нүктелі үтір (;) арқылы ажыратылып жазылады, бірақ бір жолда бір ғана оператор тұрғаны дұрыс, ол түзету жеңіл, әрі оқуға ыңғайлы.

Паскаль тілінде программа үш бөліктен тұрады: тақырып, сипаттау бөлімі және операторлар бөлімі.Кез келген программаның алғашқы жолы PROGRAM сөзінен басталатын оның тақырыбынан тұрады. Одан кейін программаның ішкі объектілерінің сипаттау бөлімі жазылады. Бұл бөлім программадағы айнымалылар, тұрақтылар тәрізді объектілердің жалпы қасиеттерін алдын ала анықтап алуға көмектеседі. Сипаттау бөлімі бірнеші бөліктерден тұрады, бірақ программаның күрделілігіне байланысты көбінесе ол бір немесе екі ғана бөліктен тұруы мүмкін. Программаның соңғы және негізгі бөлімі операторлар бөлімі – болып табылады. Орындалатын іс — әрекеттер, командалар осы бөлімде орналасады. Ол begin түйінді сөзінен басталып, бірақ атқарылатын операторлар (командалар) тізбегі жеке-жеке жолдарға жазылып біткен соң end түйінді сөзімен аяқталады. Операторлар бөлімінде командалар ретімен орналасады. Олардың кейбірі шартқа байланысты атқарылса, ал кейбір қайталанатын цикл немесе қосымша программа түрінде орындалады. Операторлар бөлімінде орнатылатын негізгі әрекеттерді қарастырайық. Деректер — сан мәндері мен мәтін түріндегі сөз тіркесін мән ретінде қабылдай алатын тұрақтылар, айнымалылар т.б. осы тәрізді құрылымдар немесе солардың адрестері. Дерек енгізу — бастапқы деректерді пернетақтадан, дискіден немесе еңгізу — шығару порттарынан еңгізу арқылы жүзеге асады. Операциялар немесе амалдар — берілген және есептелген мәндердің меншіктеу, соларды өңдеу, салыстыру операцияларын орындайды. Шартты түрде атқарьшу белгілі бір көрсетілген шарттың орындалуына байланысты, командалар жиыны атқарылады, әйтпесе олар аттап өтіледі немесе басқа командалар жиыны орындалады. Цикл — белгілі бір шарттар орындалған жағдайда көрсетілген командалар жиынын бірнеше рет қайталанып атқарылады. Қайталау саны бүтін санмен беріледі. Көмекші программа — алдын ала қандай да бір атаумен атымен атымен аталған командалар тобы. Олар программаның кез келген жерінен оның атауын көрсету арқылы шақырылып атқарыла береді. Түсініктеме — программа жолдары соңында немесе оның түйінді сөздері арасында қазақша (орысша) түсінік беретін пішінді жақшаға алынып жазылған сөз тіркесітері. Олар программа операторларының орындалуына ешқандай әсер етпейді.

ЭЕМ эволюциясымен бірге олар үшін базалық программалық құралдар эволюциясы жүрген. Бірінші кезекте бұл есептерді ЭЕМ-де шешу үшін кодтайтын программалау тілдеріне қатысты.

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

Екінші буын – Ассемблер тілдері, онымен машина тілдеріне қарағанда жұмыс істеу жеңілірек болған. Оларда командалар үшін нақты мнемоника қолданылады.

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

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

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

Бұл қиыншылықтар «жоғары деңгейлі» программалау тілдерінің құрылуына алып келді.

Үшінші буын – тілдердің ең «көлемді» буыны. Оның басы 1955 жылы ФОРТРАН(FORmula TRANslator –формулаларды аударушы) тілінің пайда болуымен сипатталады. Бұл тілдің қолданылуы бүгінгі күнге дейі жалғасуда.

1960 жылы АЛГОЛ (ALGOritmic Language – алгоритмдік тіл) тілі пайда болды. Ол ұзақ уақыт программистер арасында көп қолданыста болған программалау тілі.

1965 жылы осы кезге дейін ең танымал программалау тілдердің бірі– БЭЙСИК (BASIC–Beginner’sAllpurposeSymbolicInstructionCode–аударымы: «бастаушылар үшін символдық инструкциялардың көпмақсатты коды»). БЭЙСИКдербес компьютерлерде кең қолданыс тапты.Бүгінгі күні бұл тілдің бірнеше жеткілікті күшті түрлері бар.

1970 жылыНиклаус ВиртPascal(Паскаль) тілін құрды.Бұл программалау тілі аса дамыған құралдарға ие, олар қазіргі кезде де өз мәнін сақтауда.

1980 жылы программалаудың ең күшті тілдерінің бірі – ADA(Ада)тілі пайда болды. Ол АҚШ қорғаныс министрлігінің есептеуіш орталықтарындағы негізгі тіл ретінде қабылданған.

Осы кезде тағы бір күшті программалау тілі – С (Си) тілі қоладныста жүруді.

Тілдердің төртінші буыны – бұл программалық жабдықтаманы басқару тілдері, немесе оларды басқаша «программалар генераторы» деп атайды. Мысал ретінде Clipper, dBase, SuperCalc деген сияқты тілдерді келтіруге болады.

Аталған тілдердің барлығы продецуралық тілдерге жатады, олар декларативті деп аталатын «Бесінші буын» тілдеріне қарама-қарсы. Бұл буынның негізгі программалау тілдері – LISP/ЛИСП/ тізімдерді өңдеу тілі және PROLOG/ПРОЛОГ/ – логика терминдеріндегі программалау тілі.

ЛИСП 1961 жылы, алПРОЛОГ – 1973жылы пайда болған.Бұл тілдерде есептер шығару кезінде программистен ҚАЛАЙ емес, НЕ істеу керек екені талап етіледі. Есептің шешілу жолын жүйенің өзі табады (ЛИСП немесе ПРОЛОГ).

Осылайша, программалау тілдерінің барлығын үш категорияға бөлуге болады: ТӨМЕН деңгей тілдері – машиналық тілдер және Ассемблер тілі, яғни бірінші және екінші буын тілдері; ЖОҒАРЫ деңгей тілдері – барлық процедуралық тілдер, олар үшінші және төртінші деңгей тілдері және АСА ЖОҒАРЫ деңгей – бесінші буын тілдері.

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

  1. Не істеу керек екенін нақты және айқын анықтау.

  2. Қалаулы нәтижеге әкелетін әрекеттердің айқын тізбегін беру, яғни алгоритм ұсыну.

  3. Алгоритмді машинаға түсінікті түрде өрнектеу.

Бірінші саты ЖҮЙЕЛІК АНАЛИЗ деп аталады. Екінші саты–ПРОГРАММАНЫ ҚҰРЫЛЫМДАУ.Үшінші саты– «ПРОГРАММАЛАУ» сатысы.

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

Программалауда қолданылатын кейбір терминдер анықтамалары

Әрекет –негізгі түсініктердің бірі. Бұл ақырлы жалғасы бар және қалаулы нәтижеге әкелетін іс-қимыл.

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

Инструкция – әрекетті қандай да бір тіл немесе формулалар жүйесі көмегімен сипаттау.

Процесс (есептеу) – бұл құраушы бөліктерге жіктеуге болатын іс-әрекет. Егер бұл бөліктер бір уақытта емес, бірінен соң бірі қатаң орындалса, онда процесс тізбектелген деп аталады.

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

Орындаушы (процессор) – берілген инструкция бойынша іс-әрекетті жүзеге асырушы. Бұл – орындаушы адам ба, автомат па, кім екендігін анықтай алмайтын бейтарап термин. Шын мәнінде, егер нақты анықталған тілде жазылған программа жүзеге асса, онда орындаушы процессор болып табылады.

Алгоритм – қатаң алғышарттар – орындаушы үшін мақсатқа жеткізетін, яғни есепті программа құру арқылы шығаруға мүмкінді беретін бұйрықтардың жиынтығы. Ол – арнайы іс-әрекеттердің белгілі бір кезекпен орналасқан тәртібі. Ол алгоритмді атқарушы ЭЕМ-ге жұмыс тәртібін түсіндіретін ережелер мен нұсқаулар тізбегінен тұрады.

Тұрмыста кездесетін алгоритмдер әр түрлі болып келеді. Олардың жиі кездесетін түріне алгоритмнің белгілі бір шарттың орындалуына не орындалмауына байланысты тармақталып бірнеше жолдарға бөлінуі жатады. Тармақталу алгоритмінің құрылымы қарапайым болып келеді.Мұнда арифметикалық теңсіздік түрінде берілген логикалық шарт тексеріледі.Егерол орындалса,онда алгоритм бір жолмен, ал орындалмаса екінші жолмен жүзеге асырылады, яғни есепті шығару жолы тармақталып екіге бөлініп кетеді.Тармақталу алгоритмдеріне шартты тексеру блогы міндетті түрде кіреді. Ол ромб түрінде кескінделіп, басқа блоктармен кіру және шығу сызықтары арқылы байланысады. Көбінесе тармақталу алгоритмі екі түрде кездеседі, олар таңдау және аттам өту мүмкіндіктерін іске асыруға  көмектеседі. Таңдау жолымен тармақталуда берілген шарт тексеріледі. Егер ол шарт орындалса, онда 2 амал жүзеге асырылып,содан кейін келесі 3 амалға көшеміз. Ал егерде шарт орындалмаса, яғни оның орындалу мүмкіндігі жалған болса, онда 1 амал атқарылып, содан кейін 3 амал атқарылады. Сонымен,шарттың ақиқати немесе жалған болуынеа байланысты 1 амал немесе 2 амал орындалады. «Аттап өту» аллгормінде шарт орындалса, онда 1 амалды аттап өтіп, бірден  2ші амалды, содан кейін  3 амалды орындаймыз. Ал шарт жалған болса, онда 1 амал міндетті түрде орындалып, одан кейін  2 және  3 амалдар жүзеге асырылады. Тармақталу кезеңінде шартты тексеру блогы орындалуы барысында, алгоритмнің екі мүмкіндігінің тек біреуі ғана таңдап алынып жүзеге асырылады да, екінші таңдап алынбаған тармақ біріктіру нүктесіне дейін орындалмай қалады.

Сонымен, әрбiр нұсқау – команда. Алгоритмде командалар тәртібінің маңызы зор. Алгоритмнiң командалары кезек­пен бiрiнен кейiн бiрi орындалады. Алгоритмнiң орындалу кезiнде оны орындаушыға келесi жолы қандай нұсқау бойынша орындалатыны белгiлi болуы қажет. Ал орындаушының жүзеге асыра алатын командалар жиыны ко­мандалар жүйесiн құрайды.

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

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

Алгоритм қасиеттері:

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

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

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

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

5.      Алгоритмнің формальды орындалуы. Агоритмнің әр командасы орындаушының нақты бір әрекетті орындауын талап етеді. Орындаушы алгоритм командаларында көрсетілген әрекеттерді дұрыс орындау үшін командалар орындаушының білім деңгейіне сәйкес болуы тиіс.

Алгоритмді жазу тәсілдері

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

  • Графикалық–блок-схемалар түрінде. Алгоритмдердің блок-схемалар түрінде графикалық жазылуы графикалық символдармен, математикалық, жаратылыс тілдеріндегі жазбалармен, көрнекілікпен және алгоритммен таныс кез келген адамның түсінуімен сипатталады.

  • Сөздік – табиғи тілде жазу. Алгоритмнің бұл түрде жазылуының артықшылығы оны кез-келген адамның түсінуге қолжетімділігі болып табылады, ал кемшіліктері жазылудың қомақтылығынан, көрнексіздігінен, нақты емес және көпмәнділігінен тұрады.

  • Алгоритмдік тілде (псевдокод) – арнайы тілде. Алгоритмдік тіл – алгоритмдерді бірыңғай және дәл жазып, оларды орындау үшін арналған белгілеулер мен ережелер жүйесі. Бұл тіл, бір жағынан табиғи тілге жақын, ол жай мәтін түрінде жазылады. Алгоритмдік тілдің құрамына сандар, шамалардың аттары мен функциялар және кейбір символдар кіреді.

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

айнымалы:=өрнек немесе y:=a*x-b

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

Алгоритмнің графикалық сипатталуында стандартты графикалық символдар қолданылады. Блок-сызба – алгоритмдерді жазудың ең кең тараған және түсінікті әдісі. Блок-сызба – тасымал сызықтарымен байланысқан блоктар тізбегі.

Блок-схемаэлементтері

Үрдістің атауы

Блок-схемалар

Әрекеттің сипаты

Терминатор

Алгоритмнің басы, соңы

Мәліметтер

Берілгендерді енгізу/шығару

Құжат

Нәтижені принтерге шығару

Үрдіс

Математикалық өрнектерді есептеу

Модификация

Цикл басы(қайталау)

Шешім

Кейбір шарттарға байланысты алгоритм орындалуының бағытын таңдау блогы

Алгоритмдер классификациясы

Барлық алгоритмдер 3 типті болады (есептеу үрдістер типтері): сызықты, тармақталған, циклдық.

Сызықты алгоритм – орындалу барысында операциялар тізбегі алгоритм жазбасындағы тәртібімен сәйкес және енгізілген нақты мәндерден тәуелсіз (жоғарыдан төменге қарай орындалады) болатын тип.

Группа 42

Сызықты алгоритм деп барлық әрекеттер (операциялар) бір рет және бірінен соң бірі орындалатын алгоритм аталады. Ол тізбектелген қарапайым командалардан, блок-схемалары – көрсетілген тізбектегідей орындалатын, бір сызық бойында тұрған блоктардан тұрады. Операциялардың осылай бірінен соң бірі орындалуы жаратылыс тәртібі деп аталады.

Тармақталған алгоритм – операциялар тізбегі шарттың тексерілуімен анықталатын алгоритм.

Группа 54

Егер A>Bшарты ақиқат болса, онда ОПЕРАТОР 1 операторлар тобы орындалады, кері жағдайда – ОПЕРАТОР 2 операторлар тобы орындалады (шартты оператор)

Командалары бірінен соң бірі орындалатын сызықты алгоритмдермен салыстырғанда циклдық алгоритмдерге бірнеше рет орындалатын командалар тізбегі кіреді. Командалардың бұл тізбегі цикл денесі деп аталады.

IN орындалғанша,ОП.1 операторлар тобы орындалады

Циклдің дейін операторы цикл шарты ақиқат болғанша орындалады. Шарттың мәні жалған болған жағдайда цикл орындалуын тоқтатады.

I>N шарты ақиқат болғанша ОП.1операторлар тобы орындалады.

Циклдің дейін операторына қарағанда циклдің кейін операторында циклдан шығу шарт жалған болғанда орындалады. Бұл цикл кемінде бір рет орындалуы керек. Циклдың бұл операторы шарттың мәні ақиқат болған жағдайда орындалуын тоқтатады.

Әрбір I үшін 1-ден N-ге дейін ОП.1 операторлар тобы орындалады

Егер циклдың қайталау саны белгілі болса, цикл параметрін қолдан өсірудің қажеті жоқ цикл қолданылады. Параметрлі цикл кезінде оны өсіру автоматты түрде жүреді.

Есептің алгоритмдеу негіздері.

Программалау тілінде жазылған программа компьютерде міндетті түрде түрлену процесінен немесе трансляциядан өтеді. Бұл арнайы программа (транслятор) көмегімен іске асады.

Трансляторлар

Жоғары деңгейлі тілдер көптеген алгоритмдерді үйреншікті математикалық амалдардың жазылуына жақын ыңғайлы түрде жазып түсіндіруге мүмкіндік береді. Бұл тілдерді пайдалану программалаудағы кездесетін қиындықтарды азайтады. Жоғары деңгейлі тілдерді программа жасауда пайдалану 60-шы жылдары басталды. Содан бері бүгінгі күнде дейін белгілі есептерді шешуге арналған әмбебап, сандай-ақ бағдарланған көптеген әртүрлі тілдер жасалып пайдаланылып келеді. Әрбр программалау тілінің өзінің аты бар.Көптеген программалау тілінің аты олар алғаш жасалғаннан бастап тіркелген.Содан бері программалау тілдерінде қолданылатын ережелер өзгергенімен тілдер аты сол бұрынғы күйінде өзгеріссіз қалуда. Қазіргі кезде жоғары деңгейлі программалау тілдері былай бөлінеді:

• процедуралы (көптеген классикалық программалау тілдері, мысалы, FORTAN, PASCAL, BASIC, C);

• логикалық (ЛИСПЫ, ПРОЛОГ т.б.);

• объектік-бағдарланған (С++, Java т.б.).

Қысқа программаларды жасауда процедуралық программалау тілдерін пайдалану ыңғайлы; логикалық программалау тілдерін алгоритмдерді теориялық зерттеуде жасандsинтеллекті оқытып үйрену жұмыстарында деректер базасымен жасалатын операцияларда өндіріс объектілерін және әскери бөлімдерді басқару жүйелерін басқаруда, ал объектік-бағдарланған программалау тілдерін бәрінен де үлкен және күрделі программаларды (Мысалы, компьютерлік ойындарда), жасақтауда пайдаланған жөн. Әртүрлі программалау тілдерінің арасында айтарлықтай елеулі айырмашылықтардың болуына қарамастан олардың барлығында негізгі операцияларды жүзеге асырудың ұқсас құралдары бар. Бұдан басқа әртүрлі программалау тілдерін пайдаланғанда жұмыс істеу қиындығының түрліше болатындағына қарамастан кез келген программаны жасауда кез келген типтегі программалау тілін пайдалануға болады. Бұл тілдердің әрқайсысына тоқталмай-ақ, осы тілдерді машина тіліне аударушы трансляторлардың жұмысына тоқталайық. Машина тілінен өзгеше программалау тілінде құрылған программа компьютерде орындалу үшін жарамды түрде, яғни машина тіліне түрлендіруі тиіс. Мұндай түрлендіру трансляциялау деп аталады. Ассемблердің ендірілетін тілі мнемокод, макроассемблер-макротіл, ал компилятордікі-поцедуралы бағдарланған тілдер боып табылады. Осыған байланысты ендірілетін тілдерді транцлятордың түрлеріне қарай ассемблер тілі, макроассемблер тілі деп аталады т.с.с. Транслятор арқылы өңделіп алынған программа тікелей компьютерде орындалады немесе оны басқа транцлятордың өңдеуіне тура келеді. Трансляциялау мен программаның орындалуы уақыт жағынан бөлінген болады. Интерпретатордан басқа трансляторларда алдымен барлық программа трансляцияланады содан кейін орындалады. Осы режімде жұмыс істейтін трансляторлар компиляциялаушы типті трансляторлар деп аталады. Егер мұндай транслятордың ендірілетін тілі процедуралы-бағдарланған тіл болса, онда транслятор компилятор деп аталады. Трансляциялау кезеңімен орындау кезеңдері уақыт бойынша ығысып ауысып келіп отыратын транслятор интерпретатор деп аталады. Машина тілінде немесе жүктелуші тілде ұсынылған программа транслятор жұмысының нәтижесі болып табылады. Транслятордың жұмысын төрт кезеңге бөлуге болады:

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

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

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

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

Шығарылатын есептің сипатына және пайдаланушылардың категориясына байланысты трансляторларға әртүрлі талаптар қойылады. Мысалы, берілген программалау тілін игергісі келетін жаңадан бастаушыларға транслятордың ең маңызды сипаттамасы диагностикалық хабарларының толық әрі қарапайым болуы болып табылады. Егер компьютерде сплыстырмалы түрде алғанда көп уақыт есептеуді қажет етпейтін көптеген майда есептер шығарылатын болса, онда сол есептерді шығару үшін алынған программаның сапасына айтарлықтай мән берілмейді. Транслятордың жұмыс істеу жылдамдығы үлкен рол атқарады. Ұзақ есептелетін күрлелі есептер үшін талап етілетін машиналық уақытты және программаның орындалуы үшін қажетті жадтың көлемін ескере отырып транслятордың жасаған программаның ұтымдылығы ең маңызды рол атқарады. Мұндай ұтымды программалар алу трансляциялау алгоритмдерін күрделендіре түсуді талап етеді, ол трансляторды күрделендіре түсуге және оның жұмыс істеу уақытын арттыруға алып келеді. Осыған байланысты программалау жүйесінің өзінде тіптен бір программалау тілі үшін де бірнеше әртүрлі трансляторлар қарастырылады, ал пайдаланушы өзіне ең керекті трансяторларды таңдап алады. Ассемблер бастапқы модульді объектік программаның бір түрі болып табылатын объектік модульге түрлендіреді. Объектік модульдің оны оған тәуелсіз трансляцияланған басқа модульдермен біріктіруге және оның жедел жадтағы орналасуын реттеуге арналған машиналық командалары және информациялары бар. Объектік модуль компьютерлерде тікелей орындалмайды, сондықтан да оны программа құрастырушының қосымша өңденуіне тура келеді.

Интерпретатор және компилятор

Жоғары деңгейлі тілдің трансляторы трансляциялау кезеңдерінің өту реттілігіне және программа операторының орындалуына байланысты интерпретатор немесе компилятор деп аталады.Интерпретатор әрбір жеке операторды трансляциялаған соң, оның тікелей тез орындалуын қамтамасыз етеді, яғни трансляция кезеңі мен орындалу кезеңі кезекпен қайталанады. Программаны интерпретациялау схемасы мына суретте көрсетілген. Компилятор программаның барлық операторларын трансляциялайды, ал программаның орындалуы жалпы алғанда оның қатынасуынсыз өтеді, яғни жеке операторларды трансляциялау кезеңдері тікелей бірінен соң бірі өтеді және программаның орындалуынан толық оқшауланған болады. Программаны компиляциялаудың қысқартылған схемасы мына суретте көрсетілген. Жоғарғы деңгейлі тілдердің көпшілігі үшін комбиляторлар жасалған. Интерпретаторлар жасалған тілдердің мысалына BASIC және FOCAL тілдерін атауға болады. Компьютерлердің программалау жүйесінде комбилятордың екі түрі бар. Бірінші түрдегі комбиляторлар бастапқы модульді машина тіліндегі объектік программаға түрлендіреді, яғни объектік модульді ассемблар тіліндегі объектік программаға түрлендіреді. Екінші түрдегі комбилятор қалыптастырған осы программадан объектік модульді алу үшін қосымша ассемблерді пайдалану қажет болады.

Кез келген компьютер информацияны жадына жүктелген программаны орындау арқылы өңдейді. Программалау тілі символдардың жиынынан, осы символдардан тұратын тілдік нұсқаулардың семантикасынан және синтаксистен, яғни программаларды құру ережелерінің жүйесінен құралады. Есептелуге тиісті есептерді шығаруға операторлы программалау тілдері пайдаланылады. Осы тілдердің көмегімен математикалық, физикалық және инженерлік есептерді шешу ыңғайлы. Бірақ есептелмейтін, яғни сандық емес есептерді шығаруда программаны сол есептерді шығару үшін арнайы жасалған, басқа тілдерден құрған дұрыс. Мысалы, бір тілден екінші тілге аудару немесе қателіктерді алдын ала болжау программаларын басқа тілдерде құру жақсы нәтиже береді. Операторлы тілдерде алгоритмнің әрбір элементі қандайда бір оператордың көмегімен жазылады. Программада әрбір оператор белгілі бір әрекетті (операцияны) орындайды. Кәдімгі жағдайда барлық операторлар арнайы ағылшын сөздерімен жазылады. Бір есепті шешуге арналған программа әртүрлі программалау тілдерінде жазылап трансляциялануы және әртүрлі компьютерлерде орындалуы мүмкін. Бір программаның өзін әр түрлі трансляторлар процессордың әртүрлі нұсқайлар тізбегіне түрлендіреді. Осыған қарамастан программаның орындалу барысында барлық айырмашылықтар жоғалып кетеді және бірдей нәтиже алынады. Осылайша, программа қандай программалау тілінде жазылмағандығына қарамастан, оның тұрақты нәтижесі болады және бұл есепті шешу тәсілін анықтайды. Шын мәнінде программа мүлтіксіз орындалғанда есептің шешімін алуға мүмкіндік беретін әрекеттердің реттелген тізбегінен тұрады. Бұл әректтердің қалайша орындалатындығынның ешқандай мазмұны жоқ, яғни компьютердің көмегімен бе, қарандаш пен қағазды пайдаланып қолмен есептеу жолымен бе немесе қандай да бір басқа тәсілмен бе бәрібір. Әректтердің мұндай ретті тізбегі бұрын айтып кеткеніміздей есепті шешу алгоритмі деп аталады. Осы тұрғыдан қарағанда программалау тілдері алгоритмдерді компьютердің көмегімен орындауға мүмкіндік беретін пішінде жазушы тілдер болып табылады. Алгоритмнің орындалуын берілген әректтерді ретімен іс жүзіне асыру деп түсіну керек. Сонымен программа дегеніміз-бұл алгоритмді компьютер түсінетін тілде жазып көрсету деген сөз. Қалай біз программалауды алгоритмдеуден бөліп қарасақ болады, алгоритмдерді жазу, сондай-ақ оны жасақтау проблемалары программалауда қиындықтар туғызатындығы түсінікті болады. Программалаудың осы екі кезеңін ажырата білу керек. Программалауды алгоритмді жасақтау және оны жүзеге асыру деп түсінген жөн. Алгоритмді жазуға байланысты қиындақтарды әдетте оңай жеңуге болады. Қазіргі заманғы программалау тілдерінде кез келген проблемаларды жеңіп шығуға болатын әртүрлі қуатты операторлардың саны жеткілікті. Алгоритмді жазудың күрделілігі берілген тілді одан да тереңірек оқып үйренуге немесе өте қуатты программалау тілін игеруге итермелеуі мүмкін. Егер алгоритмді жасақтау проблемасы қиындық тудырса, онда біраз уақытқа дейін программаны жазуды қоя тұрып, есепті шешу үшін не істеу керектігін, оны қалай жүзеге асыруды ойлану керек. Есепті шешудің алгоритмін жасау жай ған программа жазғанға қарағанда өте күрделі және шығармашылықпен жұмыс істеуді талап ететін мәселе. Нақтылы дағдылар әр түрлі есептерді шығару кезіндегі программалау тәжірибелерімен бірге келеді. Жинақталған білім мен дағдыны қолдану мүмкіндігі алгоритмді жасау мезетінде есептің нақтылы мазмұнының мәні болмайтын жағдаймен байланысты. Ғылымның, техниканың және мәдениеттің әртүрлі салаларындағы есептердің бәріне бір ғана немесе оған өте жақын алгоритмнің өзі пайдаланылуы мүмкін. Жинақталған тәжірибелер тіптен басқа есептерді шешуде пайдаланылған принциптерге сүйене оырып программалар құруға мүмкіндік береді. Алгоритмдерді қайталап пайдаланғанда кейде оларды бір программалау тілінен басқа программалау тіліне аудару талап етіледі. Мұндай түрлендіру программаны қайтадан жасағанға қарағанда өте ыңғайлы және кейбір жүйелерде автоматты түрде жасалуы мүмкін. Әрбір есеп әдетте сөз түрінде адам тілінде тұжырымдалады. Есепті компьютердің көмегімен шығаруға даярлау үшін оны формальды түрде көрсету керек. Есепті формальды түрде көрсетудің әртүрлі тәсілдері программалауда ғана емес білім берудің түрлі салаларында пайдаланылады. Мысалы, есепті алгебралық немесе гоеметриялық тәсілдер арқылы шығарғанда шығарылып отырған есептегі айтарлықтай мәні жоқ барлық деректерді алып тастау керек, яғни есепті ықшамдап математикалық пішінге келтіру оны шешудің бірінші қадамы болып табылады. Бұдан кейін есептің күрделілігін бағалау шамамен есепті шешуге қажетті ресурстарды және оған кететін уақытты анықтау керек.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]