Программалау тілдерінің классификациясы
Кіріспе
Ақпараттық технологияны қолданып білім беру жүйесін ақпараттандырудың
мақсаты еліміздің барлық территорияларында білім беру процесінің бірлігі
мен білім беру сапасының деңгейін арттыруды қамтамасыз ететін біріңғай
ақпараттық білім беру ортасын құру және дамыту болып саналады.
Жалпы орта білім беретін мектепте KTurtle-ді қолданып білім беру
жүйесін ақпараттандырудың мақсаты, әлеуметтік мағынасын анықтап, зерттеу
мәселесінің бүгінгі күнгі жағдайы жүйесінде адокватты керісін жою оны
алдағы уақытта дамытудың ғылыми-педагогикалық негізін құруға, білім берудің
болашақ жүйесінің анағұрлым маңызды ерекшеліктерін және оларды шешудің
негізгі жолдарын құрылымын анықтауға мүмкіндік береді.
kTurtle – Лого программалау тілін игеруге арналған оқу бағдарламалық
қоршауы. Бұл бағдарлама бағдарламалауды кең түрде игеруді жеңіл әрі ыңғайлы
түрде жүзеге асырады. Көрнекі түрде жасалған программаны тез арада
қорытындысын көру, өз кезегінде бастауыш сыныптарда бағдарламалауды оқыту
кезінде өте маңызды болып есептеледі. Бағдарламалауды ағылшын тілінде,
сондай- ақ орыс тілінде де жазуға мүмкіндік бар. kTurtle бағдарламасы кіші
жастағы балаларға, сондай-ақ кіші мектеп жасындағы балаларға бағдарламалау
негіздерін үйрету кезінде пайдаланылады. Бұл бағдарламалық жабдық бастауыш
сыныптарда (3-4 сынып), 5-7 сыныптарда бағдарламалаудың пропедевтикалық
курсында негізгі ретінде, сонымен қатар факультатив сабақтарында немесе
үйірме жұмыстарында қолдануға болады.
kTurtle бағдарламалық жабдығының бағдарламалауды жеңіл әрі тез арада
бастауға мүмкіндік беретін ерекшеліктері бар.
Ішінде бірге орнатылып келген интерпретатор арқылы қосымша
программаларды жүктеп алуға және орнатуға мүмкіндік бар
Бағдарламаның орындалуын баяулатуға немесе кез келген уақытта тоқтатуға
болады.
Лого командасы арқылы синтаксис тексеру, жолдарды номерлеу т.б.
мүмкіндіктері бар.
Программаның қорытындысын сурет арқылы сақтау немесе баспаға беруге
болады.
Логоның барлық командасына жанама көмек алуға. Ғ2 командасы.
Логоның барлық командасын кез келген басқа тілге аударуға болады.
Қателер туралы диалог жасауға болады.
Дипломдық жұмыстың өзектілігі. Жалпы орта білім беретін мектептегі 3-4
сыпыптардағы пәндерде, мысалы математика, сурет, ағылшын тілінде және т.б.
пәндерді оқытуда kTurtle бағдарламалық жабдығының мүмкіндіктерін қолдану
қажеттілігі басым болып тұр. Сондықтан, kTurtle бағдарламаны меңгеріп,
түрлі есептер шешуде қолдану үлкен шешімдерге әкелуі мүмкін екені мәлім.
Осыған орай, таңдап алынған: KTurtel программаны бастауыш сыныптарда
қолдану тақырыбы бүгінгі күнде ең маңызды, өзекті мәселе деп айтуға
болады.
Ғылыми-пратикалық маңызы мен жаңашылдығы. Бастауыш буындағы өтетін
сабақтарға оқушылардың материалды дұрыс ұғынуы, пәнге деген қызығушылығын
артуы, мұғалімнің сабақ өтуіндегі шеберлігіне байланысты. kTurtle
бағдарламанын негіздерін математика, ағылшын тілі және т.б. пәндерін
оқытуда қолдану кезінде оның тиімді ерекшеліктеріне назар аударылды. Бұл
дипломдық жұмыс оқытушыларға, студенттерге әдістемелік құрал ретінде де
пайдалануға болады.
Жұмыстың мақсаты: Жалпы орта білім беретін kTurtle бағдарламаны қолдана
отырып, оқушыларға математика пәніндегі есептер мен сызбаларды, ағылшын
(орыс) тіліндегі сөздердің дұрыс жазылу негіздерін пайдалану арқылы
түсіндіру, көрсету болып табылады.
Дипломдық жұмыстың міндеттері:
• математика пәнінде kturtle бағдарламаны оқыту;
• математика есептерін шешуде kturtle бағдарламанын негіздерін
қолдану;
• математика есептерін kturtle бағдарламада бағдарламалау арқылы
шешу және ағылшын (орыс) тілінде жазылған сөздердің дұрыс
жазылуы.
Дипломдық жұмысының теориялық және әдіснамалық негіздері: диплом
жұмысының тақырыбы KTurtel программаны бастауыш сыныптарда қолдану
болғандықтан, көрсетілген материалдар мен зертханалық жұмыстар, келтірілген
мысалдар зерттеудің әдіснамалық негізі болады.
Қазіргі уақыттағы ахуалы: kturtle бағдарламанын негіздерін тек қана
математика, ағылшын (орыс) тілі пәндерде ғана емес сонымен қатар сурет
(сызу) пәндерде қолдану.
Зерттеу объектісі: kturtle бағдарлама негіздерін жалпы орта мектептерде
математика, сурет және т.б. пәндерде қолдану дипломдық жұмыстың зерттеу
объектісі болып табылады.
Дипломдық жұмысының практикалық базасы: Дипломдық жұмыс
Кіріспе, 4 бөлімнен, қорытындыдан, пайдаланған әдебиеттер тізімінен тұрады.
1 бөлімде программалау тілдерінің классификациясын қолдану жолдары
қарастырылған. 2 бөлімде KTurtle программасына жалпы шолу жолдары
көрсетілген. 3 бөлімде Лого программалау тілінде программаларды құру
қарастырылған. 4 бөлімде, яғни практикалық бөлімде Kturtle программасындағы
зертханалық жұмыстарды ұйымдастыру жолдары зерттелген.
1 Программалау тілдерінің классификациясы
Программалауға қатысты тілдер мен аламдардың тарихы мен эвалюциясы
мәселелері зерттеліп, олардың артықшылықтары мен кемшіліктері талданып,
программалауға қатасты тілдермен амалдардың класификациясы (жіктеу)
құрылады.
Алдымен программаға қатысты тілдер мен амалдарды жіктеп алайық.
Алғашқы программалау тілдерінің пайда болуына көп уақыт өте қойған жоқ.
Әр түрлі зерттеушілер олардық құрылу уақытын ХХ ғасырдың 20-шы 30-шы тіпті
40-шы жылдары етіп көрсетеді. Біздің мақсатымыз, ең ерте тілді анықтау
емес, олардың даму заңдылықтарын іздеп табу болып табылады.
Алғашқы программалау тілдері, алғашқы ЭЕМ-дер секілді әдеттегідей
қарапайым болып, сандық есептерге негізделеді. Бұлар әрі таза ғылыми
есептеулер (ең алдымен математикалық, физикалық), және әсіресе әскери
саладағы қолданбалы есептер болады.
Ерте программалау тілінде жазылған программалар, мәліметтер сақталған
регистрлермен жүргізілетін қарапайым орерациялардың сызық бойғы бір
ізділігін білдіреді.
Бұл жерде мынаны айта кету керек: ерте программалау тілдері нақты
компьютердің ақпараттың архетектурасына қарай ұтымды етілген, әйтседе олар
есептеулердің жоғарғы тиімділігін қамтамасыз етсе де, стартталу үшін әлі де
болса ұзақ уақыт қажет еді. Бір есептеуіш машинада жұмыс істеуге қабілетті
программа, өзге ЭЕМ-де жұмыс істеуге қабілетсіз еді.
Міне осылайша алғашқы программалау тілдері есептеу ортасына елеулі
түрде тәуелді болды да, шамамен қазіргі замандағы машиналық кодтарға немесе
ассамблер тілдеріне сәйкес болады [1].
Келесі он жылдық одан бұрынғы жылдарда тиісінше төмен деңгейдегі
тілдермен аталатын тілдермен салыстырғанда, “Жоғарғы деңгейлі” деп аталатын
программалау тілдерінің пайда болуымен ерекшеленеді.
Мұндағы айырмашылық жасап шығушылардың еңбегінің тиімділігінің
аппараттық қамтамасыз етудің нақты бөлшектерінен алшақтауы есебінен
алшақтауы еді. Жоғарғы деңгейдегі тілдің нұсқауы (операторы) бірнеше төмен
деңгейдегі тілдердің нұсқауларының немесе тілдердің бір ізділігіне сәйкес
келеді. Шын мәнінде пргограмманың компьютерге қатысты дерективалардың
жиынтығын білдірудің ескере отырып, программалауға қатысты мұндай амал
императивті деген атауға ие болады.
Жоғары деңгейдегі тілдердің тағыда бір ерекшелігі, қандайда бір
әрекеттерді идентификациялау мен кейін оларға, мәселен атауы бойынша бет
бұру арқылы бұрын жазылған программалық блоктарды қайта пайдалану
мүмкіндігі болады. Мұндай блоктар функция немесе процедуралар (амалдар)
деген атауға ие болып, программалау біркелкі тәртіп сипатына ие болды.
Бұдан басқа жоғары деңгейдегі тілдердің пайда болуына байланысты жүзеге
асырудың аппараттың қамтамысыз етуге тәуелділігі едәуір түрде төмендеді.
1.2 Метатілдер
Ғылыми білімдерді білдірудің формалы ретіндегі математикалық тіл, өте
ерте замандарда – ақ практикалық міндеттерді шешу кезінде пайдаланылады.
Ғылымдардың метатілі – тіл ретіндегі математиканың дамуындағы үлкен
роль атқарған бірқатар теориямен ішкі құрылымын зерттеген, математикалық
логика болды.
Информатиканың әсіресе оның формальды алгоритмдік тілдер теориясы және,
мәліметтер базасы мен білімдерді және тағы басқаларды аудару сенімді
бөлімдерінің дамуы ғылым пәндерінің дамуына, теңдеуіне формальдануына және
құрылымдануына алып келеді.
Өз кезегінде тілдік құрылымдарды модельдеудің бірқатар сөйлесу тілдерін
формальдаудың құрылымдаудың алуан түрлі мәтіндер мен сөздіктерді талдау мен
құрудың – соның ішінде оларды автоматты түрде құрудың мүмкіндігі туды.
X = {x1,x2,...,xn}, әліпбиінің көмегімен (әліпбидің үстінен) анықталған
тіл – бұл, сөздер мен сөз тіркестерінен құрылымдардың құрылу ережесі –
синтаксистің және лексикамен тұратын тілдің синтаксистік конструкцияларының
дұрыстығын мағыналық біркелкілігі мен сәйкестілігін тексеру ережесі –
семактиканы қоса алғандағы сөздерді Х – те білдірудің кейбір ауызша
дыбыстық жазбаша немесе өзге де формалары. Ауызша тілдер үшін, сөйлемнің
құрамдас бөліктерін айту ережесі – фонетика яғни фонем де қажет.
Қатынас ақпараты ретіндегі тілдің осы әліпбидің үстіндегі сөздерді
анықтаушы конструкциялар сөздерден сөйлемдердің құрылуының грамматикалық
ережесі мен осы сөйлемдерді олар сипаттайтын құбылыстар мен процесстерге
немесе синтаксистік және семантикалық ережелерге сәйкестендірулері болуы
тиіс.
Мысалы: Дәлірек айтқанда семантика түрдің байланыстарын зерттейді:
“белгі, белгінің құрылымы мән объект”;
синтаксис – түрдің байланыстары:
“белгі, белгілердің құрылымы объект”.
Кез – келген тілдің функциясы – осы тілдегі хабарламалардың көмегімен
ақпаратты бейнелеу, беру, сығымдау, сақтау, актуализациялау болып табылады.
Мысалы. Қысқа сығымдалған және дәлме – дәл түрде (формаланған) мына
фактыны жазайық:
“Х бүтін саны У бүтін санына қалдықсыз бөлінеді”
Математикалық тілде бұл мынадай түрге ие болады. “Х саны У санына
еселі”. Х,у сандарының бүтін екендігін жоғарыда көрсетілгендей етіп арнайы
түрде алдын – ала сөзбе - сөз келтіріп отырудың қажеті жоқ, себебі
еселіктің математикалық ұғымы мұны қарастырып қойған (аксиома). Енді
алгоритімдік Паскаль тілінде одан сайын қысқа және формаланған түрде
жазайық: “X mod y = 0”. Мұнда енді еселік шартын, аргументтерді өзгерту
атырабын алдын-ала белгілеп отырудың қажеті жоқ – олар Паскаль тілінде бар
(типтердің сипаттамаларында және mod операцияларында).
Тілдер шығу тегі бойынша табиғи (мәселен сөйлесу тіл) және жасанды
немесе формальды тілдер болып бөлінеді. Формальды тілдер адам мен
машинаның сөйлесуі үшін немесе білімдерді сипаттау мен алу үшін
құрастырылады.
Х – қайсыбір әліпби, X = {x1, x2,...,xn}, ал S (X) - әліпбидің үстіндегі
сөздер жиыны болсын делік, онда S (X) – шексіз және саналымды жиын.
L (X) формальды тілі – S (X) тің туынды ішжиыны.
Формальды тіл табиғи тілді оған көретін абстрак тілі объектілерді
дайындаудың лексикалық формасы [2].
1.2 Формальды грамматиканың негізгі түрі
U1(W сөзі W2(W сөзінен P1:f1-91 ережесінің көмегімен, егер де
U1=v1f1v2, w2=v191v2, p1(P болса қорытылады. F=f0:f1:f2: ... :ft=9, t(1
тізбегі, егер де fi+1, fi ден бірақ 0( i ( n үшін қорытылатын болса ғана
f тен шыққан g қорытынды деп аталады. Қорыту процесінің (тізбегінің)
аяқталуының көрінісі - ол g ден қорытылатын сөздің болмауы болып табылады.
Мысал. Мәселен қарапайым тілдің (орыс немесе қазақ) элементтерін
формальды грамматика терминдерінде сипаттап көрейік. Х тілінің әліпбиі
={A,a,Б,б, ... , Я,я, . , . , . , . , . , ! , ? , “ , ”, (,)},
T={түбірлер үстеулер және әрі қарай}, n0=“сөйлем”.
Мысалы,
T={қарбыз, банан, қызыл, жылытады, қыздырады, бүйір},
N={бастауыш, баяндауыш, анықтауыш, толықтауыш, бастауыш тобы, баяндауыш
тобы},
n0={сөйлем},
P={P1: cөйлем ((бастауыш тобы), (баяндауыш тобы)},
Р2:бастауыш тобы ( (анықтауыш) (бастауыш),
Р3:баяндауыш тобы ((баяндауыш) (толықтауыш),
Р4:анықтауыш ( “қызыл”,
Р5:бастауыш ( “қарбыз”,
Р6:бастауыш ( “банан”,
Р7:баяндауыш ( “жылытады”,
Р8:толықтауыш ( “банан”,
Р9:толыққтауыш ( “бүйір”}
Cанды мына қорытындылар дұрыс болады: сөйлем (бастауыш тобы)
(баяндауыш тобы) ( (анықтауыш) (бастауыш) (баяндауыш тобы) ( (анықтауыш)
(сөйлем) (баяндауыш) (толықтауыш) ( “қызыл” (бастауыш) (баяндауыш)
(толықтауыш) ( “қызыл қарбыз” (баяндауыш) (толықтауыш) ( “қызыл қарбыз
жылытады” (толықтауыш) ( “қызыл қарбыз бүйірді жылытады”.
Міне осылайша біз формальді ереже бойынша қарапайым тілдің сөйлемін
құрастырдық.
Формальды грамматиканың төрт негізгі түрін ажыратады.
0(G-0) типіндегі грамматика – қорытынды ережесіне шектеу болмайтын
грамматика (яғни f(9, қорытынды ережесінде, f және g – кез келгені)
1(G-1) типінің грамматикасы – f=f1nf2, g=f1u*f2 көрінісінің f-g
ережесі болатын грамматика, мұнда n-w сөздігіндегі (n(N),f1,f2,w тізбегінің
терминалды емес символы.
2(G-2) типтегі грамматика – ол n(w, n(N, w(W көрінісінің ережелеріне
ғана жол берілетін грамматика.
Тіл өзіндік табиғи жаратылысындағы тілге жақын болған сайын, соншама
жоғары деңгейдегі тіл болып есептеледі, ал аппараттық тұрғыдан, машина
жүзеге асырған тілге жақын болған сайын, соншама төмен деңгейдегі болып
есептеле береді [3].
Алгоритмдік тілдердің осы деңгейлерін сипаттайық:
Сұрау алу тілдері (процедуралық емес тілдер) қолданбалы
программалардың кейбір топтарымен диалогты жүзеге асыру үшін арналған,
бұлар ұқсататын модельдеу тілдері, дәлірек айтқанда SLAM тілі және тағы
басқа;
Жоғары деңгейдегі тілдер (проблемалық – бағытталған тілдер)
белгілі бір, бірақ барынша кең көлемдегі мәселелерді шешуге, мәселен:
есептеу сипатындағы немесе мәтіндерді өңдеу секілді мәселелерді шешуге
арналған, мысалға айтар болсақ олар FORTRAN,BASIC,LISP және тағы басқа
тілдер;
Ассемблер (тілдер тобы) машиналық командаларды үлкейтуге және
символдық (мнемоникалық) жазба үшін арналған;
Микрооперациялар тілдері (микропрограммаларды жасау тілдері) –
бұл машиналық операциялардың нағыз өзі.
Тілдерді пайдалану тілдері мен қолдану салалары бойынша шартты түрде
мынандай типтерге бөлуге болады (бұл олардың толық топтамасы емес).
1. Процедуралық тілдер.
2. Процедуралық емес тілдер.
3. Функционалды программалау тілдері.
4. Модельдеу тілдері.
5. Талдау өзгерістер тілдері.
6. Эвристикалық тілдер.
7. Сипаттау тілдері, обьектілік тілдерді көрсету немесе метатілдер.
Енді формальды жүйе ретіндегі комбинаторлы логиканың сипаттамасына
өтейік. Математика практикасына сәйкес, теорияның келесі элементтерін
анықтау қажет:
• Әліпби (алфавит)
• Тұжырымдау
• Аксиомалар
• Қорытынды ережесі.
Мынаны еске салған жөн әліпби (алфавит) ретінде қандай да бір
формализацияны шартты түрде белгілеуге жарамды жағдайдағы символдардың
жиынын түсінеміз.
Тұжырымдау математикалық теорияның терминальды символдарының қалыптасу
ережелерін бекітеді.
Аксиома деп – ақиқаттылығын дәлелдеуді қажет етпей-ақ ақиқат деп
есептеуге болатын қарапайым тұжырымдарды айтамыз.
Қорытынды-ережесі теорияда зерттелетін бір символдардың (обьектілердің)
өзге бір обьектіге айналуының ережесін анықтайды.
Комбинаторлы логиканың әлбиін (алфавитін) қарастырайық.
Мұнда төрт түрдегі элементтерге жол тарайды.
Константтар
Айнымалылар
Комбинаторлы өрнектер (немесе (или) басқаша (иначе) термдер).
Арнайы символдар
Константтар С1,С2, ... латын алфавитімен сипатталады.
Екі комбинаторлық термнің конверттелуші – біри комбинаторлық термнің
өзге комбинаторлық термге айналатындығын білдіреді. Конверттелушілік
қатнастары коптеген қатнастардағы қайта белгілеулерді де модельдейді, яғни
бұдан бұрын айтылғандай программалау процесін білдіреді.
Келесі акциомалар конверттелушілік қатынастарының қасиеттерін
білдіреді.
(I)Ix=x;
(k)Kxy=x;
(S)Sxyz=xz(yz).
(I) Аксиомасы тепе- теңдік комбинаторының (функциясының) бар
екендігін білдіреді,яғни дәлірек айтқанда кез-келген аогументтің өзінде
бейнеленетін, тепе-тең өзгерістердің бар екендігін білдіреді.
(К) Акциомасы бірінші проекцияны алу комбинаторының (функциясының),
яғни реттелген қосақтың алғашқы элементінің немесе тізімнің бірінші
элементтінің бар екендігін білдіреді.Бұл акциоманың тізімдерді амалдаушы
функционалдық программалау тілене жақын екендігі айқындалып отыр және ол
тізімнің алғашқы элементін алудың фундоментальды операциясын сәйкес келеді
[4].
Алгоритмнің машиналық тілдегі бейнесі программа деп аталады. Ал
программа жазуға арналған тілі программалау тілі дейді. Сондықтан машиналық
тілдердегі барлық бұйрықтар мен нұсқаулар комьпютердің құрамына кіретін
функционалдық бөліктер арқылы орындалады. Машиналық тілдер комьпютерлердің
алғашқы интеллектуалдық (зерделік) деңгейін анықтайды. Кейін неше түрлі
программаларды комьпютердің жадына сақтай отырып, оның интеллектуалдық
деңгейін көтеруге болады.
Машиналық тіл де барлық бұйрықтар мен нұсқаулар тек “0” мен “1”-ден
тұратын тізбектер арқылы арқылы бейнеленеді. Сондықтан машиналық тіл де
программаларды жазу адам үшін өте қиын. Себебі бір жағынан барлық амалдар
мен нұсқаулардың екілік бейнелерін (кодтарын) есте сақтау керек, екіншіден
кез келген алгоритімді осы машиналық амалдар мен нұсқаулар арқылы
өрнектеліп білу қажет. Алғашқы деркетер, нәтиже және олардың адрестері
екілік сандар арқылы бері леді. Тармақталу нұсқауын жазу үшін басқару
беретін адресті қолмен есептеу қажет Сол сияқты тұрын істелмеген көптеген
жұмыстарды басынан бастап қайтадан жасау керек. Мұның бәрі бір ден көзге
көрінбейтін еөптеген қателер жіберуге соқтырады. Жазылған программалар
оқуға және түсінуге қолайсыз болғандықтан, олардың ішіндегі жіберілген
қателерді тауып түзету өте көп уақытты және жылдамдылықты қажет етеді.
Сондықтан адамдар өздерінің жұмыстарын жеңілдету үшін программа жазуға
ыңғайлы басқа жасанды тілдер ойластыра бастады.
Жасанды тілі комбпютер өзінің машиналық тіліне адамның қатысуынсыз
(автоматты түрде) аударатындай етіп жасайды. Аударуды программа орындайды.
Ондай программаны ағылшын тілінде “транслятор” (аудармашы) деп атайды, ал
аудару процесін “трансляция” дейді. Сондықтан программаны жасанды тіл де
пайдаланып жазған кезде комьпютердің жұмысы екі кезеңнен тұрады.
Жасанды тілден машиналық тілге трансляциялау;
Машиналық тілдегі программаны орындау.
Программаны орындаудағы осы екі кезеңде көрсетілген жұмысты жүзеге
асырудың екі түрлі әдісі бар:
1.Компиляция әдісі-алдымен жасанды тілдегі программа түгелдей машиналық
тілге аударылады, сонан кейін бұл программа басынан орындалады.
2.Интерпретация әдісі- жасанды тілдегі программаның әрбір әрекеті
(нұсқауы немесе амалы) жеке алдын ала аударылмастан бірден машиналық тілде
орындала бастайды.
Яғни, компиляция әдісінде жасанды тілдегі программа тек қана бір рет
қарастырылады және аударылған программаны бірнеше рет орындауға болады, ал
интерпретация әдісінде әр орындау алдында жасанды тілдегі программаны
қайтадан қарастыру қажет. Сондықтан компиляциялау әдісі бойынша шыққан
орындалуға дайын программа жылдам жұмыс істейді, бірақ программаны түгел
орналастыру үшін жадының көп орнын алады. Керсінше, интерпретациялау әдісі
жадының аз көлемін қажет етеді де, бірақ ақыры (шабан) жұмыс істейді.
Сонымен осындай жасанды тілдер де комьпютерге түсінікті болады,
сондықтан оларды да біз программалау тілдері дейміз.
Қазіргі кезде комьпютердің көмегімен әртүрлі есептерді шығаруға
мүмкіндік беретін сан алуан программалау тілдері бар. Әр тілдің кемшілігі
де, жетістігі де бар. Мысалы, кейбір тілде программаны жазу оңай болғанымен
оны орындау өте көп уақытты талап етеді немесе жадының көп орнын алады.
2. Жалпы, программалау тілдерін мынадай белгілері, қасиеттері бойынша
жіктеуге болады:
1Тілдің деңгейіне байланысты, яғни машиналық тілге жақындығына
байланысты;
2.Тілдің қызметіне байланысты, яғни қандай есептерді шешуге мүмкіндік
беретініне байланысты;
3.Тілдің моделіне байланысты, яғни құрылу принципіне байланысты.
Ең төменгі деңгей машиналық тілдерде болады деп қабылданады.Сондықтан
басқа тілдердің деңгейі деп олардың машиналық тілдерге жақындық өлшемін
айтады: тіл неғұрлым машиналық тілге жақын болса, соғұрлым оның деңгейі
төмен болады және керісінше. Ең жоғарғы деңгей табиғи тілдерде болады.
Сонымен, бір інші кластағы тілдер екі топтан тұрады:
-деңгей төмен машинаға байланысты тілдер;
-деңгей жоғары машинаға байланыссыз тілдер.
Деңгейі төмен машинаға байланысты тілдер комьпютерлердің жеке
маркаларының (IBM, Macintosh,Sun, Cray т.с.с.) ерекшелігін немесе
комьпютерлер кластарының ерекшеліктері қамтиды. Сондықтан олар екіге
бөлінеді:
машинаға бағытталған арнайы тілдер;
машинаға бағытталған әмбебап тілдер.
Машинаға бағытталған арнайы тілдерге мнемокодтар мен автокод тар
жатады.
Мнемокодтарда машиналық тілдердегі барлық бұйрықтардың деректердің және
олардың адрестерінің екілік бейнелері (кодтары) мнемоника деп аталатын
әріптер мен цифрлардан тұратын тізбектерге алмастырып жазылады. Әдетте
мнемоника ретінде осы бұйрықтардың табиғи тілдегі атауларының бас әріптерін
алады. Мысалы, қосу амалының мнемоникасы ретінде алатын әліпбиінің
бірінші А әріпі алынады. Себебі ағылшын тілінде қосуды “Adition” деп
атайды.Мнемокодтың машиналық тілге қатысы 1: 1 болады, яғни әрбір
машиналық тілдегі бұйрыққа бір мнемоника берілді [5].
Автокод тардың мнемокодтардан айырмашылығы ол мнемоникаларды
пайдаланумен қатар онда қосалқы программаларды ұйымдастыру және
макроамалдар деп аталатын бір ғана амалдармен бірнеше қарапайым амалдардың
тізбектерін атау мүмкіншіліктері бар. Мысалы, бір есепті шығарғанда
программаның өзіндік логикалық бір тұтастығы бар кейбір бөлшек жиі
кездессе, онда оны қосалқы программа немесе макроанықтама ретінде
ұйымдастырып және қажеттілігі бар жерде оның атын және осы контекстке
байланысты параметр мәнін көрсетіп қолдануға болады. Автокадтар
мнемокодтардың біршама дамыған түрлері.
Жалпы, мнемокодтар мен автокодтарды біріктіріп ассемблердің тілі деп
атайды. Олай дейтіні, әрбәр комьпютерде осы тілді машиналық тілге аударатын
программа бар. Сол программаны асемблер деп атайды. Ассемблердің алғашқы
деректері ретінде мнемокодта немесе автокод та жазылған программалар, ал
оның нәтижесі ретінде осы программалардың машиналық тілдегі түрлері болады.
Машинаға бағытталған әмбебап тілдерде бір класта жататын бірнеше
комьпютерлердің ерекшеліктерін қамтитын амалдар мен мысалдар болады. Бұлар
машинаға бағытталған тілдердің дамығаны. Оларға, мысалы, ALMO немесе Uncol
деген тілдер жатады. Кейін С деген тіл жасалды, соңғы кезде оның
жетілдірілген түрі С++ шықты.
Бізге комьпютердің жұмысын жоспарлау, ұйымдастыру және басқару үшін
қатынас тілі қажет. Негізінде осы айтылғандардың барлығы белгілі
программалардың орындау арқылы жүзеге асады. Оларды біріктіріп операциялық
жүйе (ОЖ) деп атайды. ОЖ программалары берілген есепті шығаратын жұмысшы
программа орындалуы кезінде оның алғашқы деректерін енгізу, сақтау және
нәтижесін шығару сияқты қызметтер көрсетеді. Сонымен қатар, осы жұмысшы
программаға қажетті комьпютердің жабдықтарын Альп береді, оның орындалу
кезегін анықтайды, т.б. жұмыстар атқарады. Яғни, ОЖ программалары ішінде
басқару және қызметші программалары бар. Қысқасы, комьпютердегі
программалар, былайша айтқанда “программалық қоғам” құрады. Бұл “қоғамдағы”
программалар өзара қатынас жасауы үшін және олардың жұмысын алғаш бастап
беру үшін немесе жұмыстың соңын белгілеу үшін жоғарыда айтылған қатынас
тілі қолданылады. Әдетте, осындай қатынас тілдерін операциялық жүйенің
тілі немесе тапсырмаларды басқару тілі деп атайды. Бұл тілдер, бір жағынан
операциялық жүйе белгілі комьпютердің маркасына үйлескенде осы марканың
ерекшеліктері мен қасиеттерін қамтитын болады. Сондықтан оларды машинаға
байланыс тілдер класына жатқызуға болады. Ал екінші жағынан, кейбір
операциялық жүйелер тілі машинаға байланыссыз болады (мысалы, Unix деген
операциялық жүйеде ).
Деңгейі жоғары, машинаға байланыссыз тілдер табиғи тілдерге жақын
болады. Бұлар негізінен алгоритмі оңай және түсінікті жазу үшін арналып
жасалынады. Оларда комьпютерлердің ерекшеліктерін қамтитын нұсқаулар мен
амалдар болмайды деседе дұрыс. Бірақ, бұл тілдерде жазылған программалар
машинаға байланысты тілднрде жазылған программаларға қарағанда комьпютердің
көп ресурсын талап етеді. Мысалы, орындалуы көп уақыт және орналасуы көп
жер алады.
Осы тілдер қандай есептерді шешуге ыңғайлылығына байланысты
төмендегідей болып бөлінеді:
сандық есептерге арналған тілдер;
символдық есептерге арналған тілдер;
логикалық есептерге арналған тілдер;
экономикалықесептерге арналған тілдер;
моделдеу есептеріне арналған тілдер, т.с.с.
Жалпы, осы айтылған тілдердің барлығын проблемаға бағытталған тілдер
деп те атауға болады.
Жоғарыда келтірілген есептердің барлығын шығаруға мүмкіндік беретін
тілдерді амбебап тілдер деп атайды. Мысалы, ондай тілге PLI (ПЛІ) және
Ada (Ада) тілдерін жатқызуға болады. Бұл тілдерде шамалардың барлық типтері
және оларға орындалатын амалдар анықталған. Әдетте, бұл тіл арқылы кез
келген есепті шығаруға болғанымен ондағы программаны көлемі өте үлкен
болады.Сондықтан ол комьпютердің көп ресурсын қажет етеді.
2. Программалау тілдері, табиғи тілдері сияқты, өздерінің моделі
(құрылу негізі) бойынша бөлінеді. Мысалы, табиғи тілдерді біз түркі
тілдері, славиан тілдері, роман тілдері, арап тілдері, парсы тілдеріжәне
т.с.с.деп топқа бөлеміз. Ал программалау тілдерін процедуралық тілдер,
функционалдық тілдер, логикалық тілдер және продукциялық (алмастырымдық)
тілдер деп бөлуге болады.
Программалау тілдердің ішінде ең алғаш пайда болғандары және ең көп
тарағандары процедуралық тілдер, ал процедуралық тілдердің ішіндегі ең
бірінші пайда болғаны ФОРТРАН (1955ж).
Процедуралық тілдер жөнінде функционалдық программалаудың негізін
салушы Америка оқымыстысы Дж Бэкус өзінің Тьюринг сыйлығының (информатика
ғылымы бойынша ең жоғарғы сыйлық) лауреаты болуына байланысты лекциясында
Ада тілінде барлық теориялық сұрақтардың шешімдері орын тапқан деп
дәлелдейді (Ада тілі 1975 жылы АҚШ-ң Қорғаныс министрлігінің жариялаған
конкурсты жеңіп алған Жан Ишбианың басқаруымен француз ғалымдары 1979 жылы
жасаған тіл. Бұл тілдің аты дүние жүзіндегі ең бірінші программалаушы әйел,
лорд Байронның қызы, Чарльз бэббидждің қызметкері Ада АВГУСТ есімімен
аталған).
Мұнда қатаң бағыттамамен көп әсер ететіндікті, ал жіңішке бағыттамамен
аз әсер еткендікті белгіленген. Осыған сәйкес, рпоцедуралықтілдің дамуының
басымшылығы АЛГОЛ тілінің концепцияға негізделгендігін байқауға болады.
Жалпы, процедуралық тілде алгоритм әрекеттерді және оларды орындау үшін
қажет нұсқауларды бейнелеу арқылы жазылады. Процедуралық тілдердегі
программа бірлік оператор деп аталынады. Ең кіші программалық бірлік болып
меншіктеу операторы есептелінеді. Он, жалпы түрде, былай бейнелеуге болады:
айнымалы :=өрнек,
мұнда “:=“ – меншіктеу амалының белгісі, ол әр программалау тілінде әр
түрлі белгімен берілуі мүмкін, мысалы, “=”-ФОРТРАН және Бейсик тілдерінде,
“:=”-АЛГОЛ және Паскаль тілінде. Меншіктеу операторының орындалу екі этапта
өтеді: алдымен өрнектің мәні есептелінеді, содан кейін осы есептелінген мән
айнымалыға меншіктеледі. Әрбір программалау тілінде кездесетін деректерді
Тенгізу операторы және шығару операторы меншіктеу операторының
дербесжағдайлары болады. Деректерді енгізген екзде айнымалы ретінде
комьпютер жедел жадынадағы адрес, ал өрнек ретінде сыртқы құрылғының аты
немесе сыртқы құрылғының жадындағы адрес алынады, ал деректерді шығарған
керісінше болады: айнымалы- сыртқы құрылғы немесе жадыға, өрнек- жедел
жадыға сәйкес құрылады:
Процедуралық тілдерінде басқа программалық бірліктерге тізбектеу
операторы, тармақталу операторлары және қайталау операторлары сияқтылар
жатады.
Функционалдық программалау функционалдық тілдер арқылы жүзеге асады.
Бұл тілде алгоритм функцияларыды бейнелеу арқылы жазылады. Функциялар
қарапайым функция немесе күрделі функція болуы мүмкін. Күрделі функция
қарапайым функциялардың композициясынан (суперпозициясынан) тұрады.
Функционалдық тідерде программа бірлігі ретінде функция қабылданады. Осы
тілдердің мысалы ретінде ЛИСП, ПЛЭНЕР, CONNIVER, KRL, FRL, және FP сияқты
тілдерді алуға болады [6].
Логикалық тілде алгоритм шығарылатын есептің алғашқы деректерінің және
оларда орындалатын амалдардың қасиеттері мен қатынастары туралы құрылған
тұжырымдарды логикалық береже депр қарастыруға болады және әрбір береже
белгілі бір шартты береді. Есептің нәтидесі сұрау арқылы анықталады. Егер
осы сұрау бойынша логикалық ережелердің орындалғанын дәлелдесек, онда
есептің нәтижесінің болғаны, әйтпесе не басқа сұрау қою керек, не қойған
сұрауға теріс жауап алғанымыз. Осыны жүзеге асару үшін осы тілде белгілі
бір формальды дедукциялық жүйені қолданады. Кейінгі кезде логикалық тілдер
өте қауырт дамуда. Себебі, ло есептегіш техниканың 5-буынында негізгі
машиналық тіл ретінде қабылданбақшы. Мұндай тілдерге мысал ретінде ПРОЛОГ,
ЛОГО сияқтыларды алуға болады.
Продукциялық (алмастырымдық) тілде алгоритм алмастыру ережелерін
кескіндеу арқылы жазылады. Алмастыру ережелері “сол жағы” және “оң жағы”
деп аталатын екі бөліктен тұрады. Ереженің сол жағында осы ереженің атауы
және алғашқы деректердің үлгілері орналасады, ал оң жағында үлгілерге
сәйкес келген алғашқы деректермен не істеу керектігі көрсетіледі. Бұл үшін
басқа ережелерді шығаруға болады. Ал ережелерді құру “жоғарыдан төмен”
алдымен берілген есептің жалпы мазұнына сәйкес алмастыру ережесі құрылады.
Сонан кейін осы есепті шешу кезінде пайда болван жаға ұғымдарға сәйкес
алмастыру ережелері құрылады. Яғни, бұл тілдегі программаның құрылымы
иерархиялық (бұтақ тәрәздес) болады. Оның кез келген деңгейінде тексеруге
немесе өзгерістер енгізуге болады. Осындай тілдердің мысалы ретінде СНОБОЛ
немесе РЕФАЛ сияқты тілі алуға болады.
Функционалды программалау жасанды интеллектіні зерттеу мен оның дамуы
негізінде және информатиканың жаңа көкжиектерін игеру кезінде математикалық
бағытқа айрықша ден қою ретінде қалыптасты. Қазіргі уақытта есептердің
әртүрлі топтары мен техникалық құралдардың түрлеріне бағдарланған
программалаудың жүздеген функционалды тілдері өмір сүруде.
Програмамалаудың негізгі парадигмалары шешілетін есептердің
күрделігінің өсуіне қарай қалыптасты. Ақпаратты компьютерлік өңдеу процесін
ұйымдастырудың техникалық тұстарын алдын ала жасап қоюдың тереңдігі мен
жалпылығына байланысты, программалаудың амалдары мен әдістерінің жіктелуі
байқалды. Программалаудың алуан түрлі стильдері ерекшеленіп шықты, олардың
ішіндегі ең ұзақ қолданылып келе жатқандары-машиналық бағдарланған,
жүйелік, логикалық, трансформациялық және жоғары өнімді параллельді
программалау.
Машиналық-бағдарланған программалау.
Жабдықтын кез-келген мүмкіндігіне жетуге бағыт алған, компьютер жұмысын
ұйымдастыруға қатысты аппараттың амалмен ерекшеленеді. Басты назарда-
жабдықтың конфигурациясы, жадының жағдайы, басқаруды беру, оқиғалардың
кезекпен өрбуі, т.б.
Жүйелі программалау ұзақ уақыт бойы сервистік және тапсырыс
жұмыстарының массасында дамып келді. Осындай жұмыстарға тән өндірістік амал-
көп ретті пайдалану үшін жасалынатын өндірілетін процесстер мен тұрақты
программалауға артқшылық беруге сүйенеді. Бұл салада қолданбалы
программалаудың операциялық стилін тікелей жалпылау болып табылатын,
программалаудың императивті-процедуралық стилі басымдыққа ие.
5. Білдің қарапайым функциясын жүзеге асырудан тұратын және
функционалдық тілдің мағыналануын қуаттайтын абстрактілі машина анықталады
және компилятор программалаудың функционалдық тілінің абстрактілі
синтаксисінен тілдік бағдарланған абстрактілі машинаға қарай талданған.
Міне осылайша, функционалдық түйсікті ұғымдардың, мәсілеттер құрылымы
мен машиналық код деңгейіндегі қолданудың мүмкін боларлың бір процесін
барлық ұсақ-түйегіне дейін бейнелеуге мүмкіндік беретін функционалды
программалау тілін анықтаудың кемілелі сызығы аяқталды. Содан соң функцияны
қолдану процесі жайлы түсініктерді жалпылаудың (жинақтаудың) бірқатары
орындалған болатын, яғни мұнда функционалды тілді анықтаудың өспелі сызығы
жүзеге асырылды.
Бұл процесс алуан түрлі көзқарас тұрғысынан алғанда тиімділігі
жағынан, әрқашан қанағаттанарлық бола бермейді. Тиімділіктің артуы әдетте
кеңістіктің өлшемділігінің дамуын талап етеді, ал мұнда ұтымды етілетін
ұғымдар қарастырылды.
дамудың тігінен де көлденеңнен де мүмкін боларлық бағыттары
зерттелінді. Бұл үшін функционалды программалауды қалыпта ұстап тұруға
арналған мәліметтер құрылымы мен программалау жүйелереін ұйымдастыру
бойынша дәстүрлі шешімдер зерттелді.
Бір мәнді емес функциялар қатынас ұғымы арқылы қарастырылуы мүмкін.
Объектілі-бағдарланған програмалауды зерттегенде осы идеалардың өте жақын
екендігі және олардың функционалдық бағалық амалдары тарапынан өте жеңіл
түрде қолдануға ие болатындығы көрсетілген. Объектілердің топтарымен және
нұсқаларымен жүргізілетін жұмыстардың техникасын және оларды өңдеудің
әдістерін анықтаудың тәсілдерін көрсете де жеткілікті.
Нұсқалар немесе балама процесстер ұғымы қарастырылған, бұлардың
біреуінің сәтті түрде орындалуын функция нәтижесін құру үшін жеткілікті.
Мұндай процесстерді жүзеге асыру, тығырыққа тірелген жағдайдан шығуға
жадының жаңдайын сақтауды қамтамасыз ету үшін, абстрактілі машина
анықтамасын айқындауды талап етті.
Нақты формалаларға сәйкес келетін, процесстің және қадамдарын
орындаудың уақытын таңдауды қамтамасыз етуші функциялар мен амалдарды
есептеу процесстерін басқарудың әдістері берілген. Осындай процесстерді
ұйымдастыру мәліметтер мен оларды алудың нұсқауларын бірлесіп сақтау арқылы
қамтамасыз етіледі. Программалардың тоқтатылуы мен қайта жалғасуына келіп
тірелетін рецентермен жүргізілетін жұмыстың техникасы, арнайы жүзеге
асырушы механизмдерді талап етпейді.
Жоғары тәртіптегі функциялар программалаудың табиғи модульденуінің
құралы ретінде көрсетілген [7].
Кез келген математикалық өрнектер алгоритмдік тілдерде тек
математиканың ережесімен ғана емес, сондай-ақ мына тілдердің ережесімен
де жазылады.
Мысал:
Алгоритмдік паскаль тіліндегі
математикалық өрнегі түрде жазылады.
Мысалы. Паскаль өрнегіне, мына түрдегі математикалық өрнек сәйкес
келеді.
Алгоритмдік тілде өрнектің мәнін есептеп шығару тілде қолданылған
операциялардың үлкендігіне сәйкес түзіледі [8].
Мысалы. табамыз. Нәтиже мынаған тең 8=5+min(3,6)+3*1=5+3+3=1
Алғашқы ЭЕМ –дегі программалық жасақшаларымыз жіберіліп отырады. Да,
програмистке программаның жұмыс істеуіне қажетті ондағы барлық
нәрселерді сипаттап шығуына тура келеді. Алғашқы алгоритмдік тілдердің
құрылуы (мысалы, For, Tran) программалауды жеңілдетті, өз есептерін
программистің қатысуысыз –ақ шешетін адамдардың саны көбейтті,
программалаудағы басты екі бағыттың – қолданбалы және жүйелі
программалаудың содан соң үшінші бағыт – аспапты программалаудың негізін
қалады.
Қолданбалы программист ( жоғары денгейдегі программалау тіліндегі )
нақты жаратылыстану ғылыми міндеттерді шешетін программалады құрады.
Жүйелі программист (төмен денгейдегі программалау тіліндегі)
қолданбалы программалады жазу мен жөндеу процесін автоматтандыру,
қолданбалы программаладың арасында ресурстарды бөлу, ЭЕМ-дегі
операциялық жүйелерді құру секілді қолданбалы программалардың жүру
процесін бақылау программаларын құру
Модуль ілінісіуі – бұл модульдің берілгендер бойынша басқа
модульдерге тәуелділігінің өлшемі. Берілгендердің берілу жолымен
сипатталады. Модульдің басқа модульдермен ілінісуі әлсіз болған сайын оның
тәуелсіздігі жоғары ілінісу деңгейін бағалау үшін Майерс реттелген модуль
ілінісу түрлерінің 6-уын ұсынады. Ең төмен деңгейлі ілінісу – бұл мәні
бойынша ілінісу.
Бір модульдің екінші модульдің құрамындағысын (константа, айнымалы
т.б.) тікелей пайдалануы осыған жатады. Мұндай ілінісуге жол бермеу керек.
Жалпы аймақ бойынша ілінісуді де қолдануға кеңес берілмейді. (бірнеше
модульдің бір ғана жады аймағын пайдалануы). Қолдануға кеңес берілетін
модуль ілінісуінің бір ғана түрі бар, ол – параметрлік ілінісу не
берілгендер бойынша ілінісу. Бұл модульді шақырған кезде берілгендердің
модуль параметрі ретінде берілетін жағдай немесе берілгендердің қайсыбір
функцияны есептеу үшін басқа модульді шақыру нәтижесі ретінде берілетін
жағдай.
Модуль ілінісуінің бұл түрі программалау тілдерінде процедураны
(функцияны) шақыруда жүзеге асады.
Модул байланыстығы – модульді алдыңғы шақыруларынан тәуелсіздігі.
Модульді алдыңғы шақыруына байланыссыз деп атаймыз, егер модульді шақыру
нәтижесі тек параметрінің мәніне ғана тәуелді болса ( және алдыңғы
шақыруларынан тәуелсіз болса). Модульді алдыңғы шақыруларына байланысты деп
атаймыз, егер модульді шақырудың нәтижесі алдыңғы шақырылғанда өзгерген
ішкі жағдайына тәуелді болса.
Осыған байланысты мына кеңестер беріледі:
- егер модульдердің төмен деңгейлі ілінісуге әкеп соқпайтын
болса, онда
алдыңғы шақыруына байланыссыз модульдерді қолдану керек;
параметрлік ілінісуді қаматамасыз ету үшін қажет болған жағдайда ғана
алдыңғы шақыруына байланысты модульдерді қолдану керек;
алдыңғы шақыруына байланысты модульдің спецификациясында осы
байланыстылық айқын көрсетілсін. Соның арқасында модульдің әр түрлі
жағдайда шақыру нәтижесін болжау мүмкін болсын.
Жоғарыда айтылып өткендей, программаның модульді құрылымы ретінде
ағаш түріндегі құрылымды (бұтақты ағашты да қоса) қолдану келісілген.
Мұндай ағаштық түйіндерді программалық модульдер орналасады. Ал
бағытталған доғалар (стрелкалар) модульдердің статикалық бағыныштылығын
көрсетеді, яғни әрбір доға модуль текстінде (доғаның басында орналасқан
модуль) келесі модульге (доғаның екінші ұшында орналасқан модуль) сілтеме
бар екендігін білдіреді. Басқаша айтқанда, әрбір модуль өзіне бағынышты
модульді шақыруы мүмкін, яғни осы модульдер арқылы өрнектелуі мүмкін.
Сонымен бірге программаның модульді құрылымы программаны құрайтын
модульдердің спецификациялар жиынтығын өз ішіне алу керек.
Программалық модульдің спецификациясы біріншіден, оның
кірістерінің (входов) синтаксистік спецификациясынан (ол қолданып отырған
программалау тілінде модульді синтаксистік дұрыс шақыруды құруға мүмкіндік
береді), екіншіден модульдің функционалды спецификациясынан (осы
модульдің әрбір кірісі бойынша орындалатын функциялардың семастикасын
бейнелеу) тұрады.
Модульдің функционалды спецификациясы ПС-ң функциясының
спецификациясы сияқты құрылады.
Программа құрып, дайындау процессінде оның модульдік құрылымы
әртүрлі түзілуі мүмкін және осы құрылымда көрсетілген модульдерді отладка
жасау және программалау ретін анықтауда пайдаланылуы мүмкін.
Сондықтан программа құрылымын құрудың әр түрлі тәсілдері бар.
Солардың екуін: төменге қарай құру, жоғары қарай құру тәсілдерін
қарастырамыз.
Программа құрылымын дайындаудың тәсілдері.
Жоғары қарай құру тәсілі: Алдымен программаның ағаш түріндегі модульді
құрылымы құрылады. Одан соң кезекпен модульдер ең төмен деңгейдегіден
(ағаш жапырақтары) бастап программалана бастайды.
Әрбір программаланатын модуль үшін керек болатын модульдер
программаланып қойылатындай кезекпен құрылады. Программаның барлық
модульдері программаланып болған соң, жоғарыдағыдай кезекпен оларды
тестілеу және отладка жасау жүргізіледі. Бір қарағанда программаның
осындай ретпен құрылуы керек те сияқты: әрбір модуль программалану кезінде
программаланып қойылған бағынышты модульдермен өрнектеле алады, және
тестілеу кезінде отладка жасалынған модульдер дайын қолданылады.
Айтылып жатқан тәсілдердің барлығы программа дайындалу барысында оның ағаш
түрдегі құрылымның түйіндерін (модульдерін) қандай ретпен айналып өтуіне
қарай әр түрге бөлінеді. (Айналып өту түрлері: жоғарыдан – төменге, оңнан
–солға, т.б) Солардың бір түрі дәлірегі конструктивті жандасудың бір түрі
мақсаттты – конструктивті жүзеге асыру. Бұл тәсілдің мәні мынадай:
конструктивті жандасуды ұсатала отырып, алдымен программаның ең қарапайым
(ықшамды) варианты үшін кееркті модульдер жүзеге асырылады.
Бұл қарапайым программа енуші берілгендер саны аз жағдай үшін дұрыс
орындалады және аяғына дейін орындалады. Программады шақырылатын әлі
программаланбаған модульдердің орнына имитаторы қолданылады. Бұдан кейін
осы программаға енуші басқада берілгендер қосылған жағдайда дұрыс орындалуы
үшін керекті модульдер енгізіле бастайды. Бұл процесс біртіндеп программа
толық жүзеге асырылғанша жалғасады. Сонымен прграмма ағашын айналып өту
дұрыс орындалатын программаның вариантарын ең қысқа жолмен жүзеге асыруды
мақсат етеді. Бұл тәсілдің артықшылығы – бастапқы этаптарда дайындалып
жатқан программаның орындала алатын варианты құрылуында.
Программа құрылымын құрудың біз қарастырған тәсілдерінің
классификациясы төменгі схемада келтіріледі [9].
2 Алгоритмдер және орындаушылар
Алгоритмдер күнделікті өмірде кез келген жерде кездеседі, бірақ біз оны
байқамаймыз. Өзіміз қолданамыз және өзіміз жаңадан құрамыз. Алгортим
термині ортағасырларда өмір сүрген шығыстың ұлы ғалымы Мухаммед әл-
Хорезмидің есіміне байланысты шыққан. Ол математикалық пәндердің ішінде
алгебраның негізін қалады. Бұл пән әртүрлі санау жүйелеріндегі көп орынды
сандарды арифметикалық есептеулердегі есептеу ережелерін қалыптастырды. Бұл
ережелер кейінірек келе алгоритм деп атылып кетті. Алгоритм сөзінің латыншы
жазылуы algoritmi.
Алгоритм дегеніміз,- алдын ала белгіленген қорытындыға келтіретін
белгілі бір іс әрекеттің орындалу тәртібі.
Алгоритмнің мысалы ретінде белгілі бір тамақтың дайындалуын,
вилосипедтің жинақталуын т.б.б алуға болады.
Алгоритмді іске асыруышыны орындаушы дейміз. Алгоритмді орындаушы
ретінде адам, автомат, компьютер бола алады.
Орындаушы алгоритмді іске асыруы үшін, ол алгоритмнің командаларын түсінуі
керек. Орындаушының түсінетін және орындайтын командалар жиынтығы
орындаушының командалар жиынтығы деп аталады (ОКЖ).
Алгоритмнің қасиеттері
Алгоритм дұрыс әрі негізгі қорытындыға жеткізу үшін, ол мынадай негізгі
қасиеттерге иее болуы керек.
1. Түсінікті. Алгоритмді орындаушы оны қалай орындайтынын түсінуі
керек.
2. Дискреттілік. Алгоритм орындалуыға қажетті жекелеген қадамнан тұруы
қажет.
3. Қорытындылы. Алгоритмнің орыналуы қандай да бір қорытындымен
аяқталуы қажет. Немесе бұл жағдайда белгілі бір қорытындыға келе
алмағандығы жөніндегі хабар берілуі керек.
4. Аяқтылық. Алгоритмнің орындалуы қай кезде де аяқталуы қажет. Егер
бұл шартты ескермесек шексіз орындала беретін алгоритмге тап болуымыз
мүмкін.
5. Бірмәнді. Алгоритм орындалуының әрбір қадамы жалғыз ғана жолмен
орындалуы керек, бұл қадамның екі немесе одан көп рет орындалуы
қарастырылмауы қажет. Бұл өте маңызды қасиет.
6. Жалпылық. Мүмкіндігінше алгоритм әмбебап болуы керек, яғни бір мәнді
тапсырмаларды орындауға ортақ болуы керек.
Алгоритмнің жазылу жолдары.
Алгоритмді жазудың әртүрлі жолдары бар.
Сөзбен жазылуы.
Алгоритмнің әрбір тапсырмасы сөзбен жазылады.
Қуырылған жұмыртқаны дайындау алгоритмінің сөзбен берілген ьүрін
келтірейік.
1. Екі жұмыртқа, 1 ас қасық өсімдік майын, бақыраш және тұз дайындаңыз.
2. Бақырашты 3 минут қыздырыңыз.
3. Бақырашқа май салыңыз.
4. Бақырашқа жұмыртқаны жарып салыңыз.
5. Жұмыртқаны тұздаңыз.
6. Жұмыртқа дайын болғанша 5 минут күтіңіз.
7. Дайын болған жұмыртқаны тарелкаға салыңыз.
Графикалық
Алгоритм әрекеттері сурет негізінде көрсетілген. Алгоритмнің графикалық
жазылуын киндер-сюрприздің ойыншықтарын жинау, шайдың қорапшасында немесе
тездайындалатын кеспенін сыртында инструкциясын кездесуге болады (сурет 1).
Сурет 1. Кеспе дайындаудың графикалық алгоритмі
2.1 Kturtle прогаммасына кіріспе
Программаны жүктеу
Программана бірнеше түрде жүктеуге болады. Егер линукс мастер
пайдаланып жатқан болсаңыз, онда Пуск→Разное→Обучение программу на языке
Лого (kTurtle) командасы арқылы жүктеледі (сурет 2).
Сурет 2. Kturtle программасын іске қосу
Сонымен қатар Разработка бөлімінде Образование тобынан жүктеуге болады.
Егер басқа дистрибутив немес линукс мастер басқаша бапталған болса, онда
программаны жүктеу басқаша орындалатын болады. Сонымен қатар көнекілеу
түрде әмбебап консулдік түрде орындауға болады. Альт-линукс мастерде
консульдік жүктеу үшін Пуск менюінен служебные бөлімін таңдап, сондан кейін
Терминал (Консул) командасын орындау керек. Командалық жолда KTurtle деп
жазып enter пернесін басамыз (сурет 3).
Сурет 3. Командалық жолдын көмегімен іске қосу
2.2 Программа интерфейсі
Сурет 4
Kturtle программаның интерфейсі
Редактордың сол жағында кодтар редакторы орналасқан (сурет 4). Бұл
бағдарламашының жұмыс орны. Осы жерде черепашкаға (команда орындаушыға)
арналған командалар орналасады. Редакторың оң жағында кенеп орналасқан. Бұл
команда орындаушының жұмыс алаңы. Кенепте жазылған командаларды орындай
жүріп команда орындаушы кенеп қозғалады, сурет салады, әртүрлі қызықты
әрекеттер орындайды [11].
Сонымен қатар басты терезеде программалық қоршауды басқаруға арналған
құраодар тақтасы орналасқан. Бұл көптеген жиі орындалатын команданы жылдам
түрде орындауға мүмкіндік береді.
2.3 Жұмыс істеуге дайындық
Черепашкаға арналған алғашқы программамызды жазбай тұрып кейбір
негізгі әдіс-тәсілдерге тоқтала кетейік. Программа терезенің сол жақ
бөлігінде жазылады. Кодтар редакторы бағдарламашы мүмкіндігінше аз қате
жіберуге ыңғайланған. Командалар дұрыс жазылған кезде көк түске түрін
өзгертеді. Ол мәтін арасындағы қателерді жылдам табуға көмегін береді.
Черепашкаға арналған программа жекелеген командалардан тұрады. Әрбір
команда екі түрлі қысқаша және толық жазыла алады. Біз кез келген түрін
пайдалана аламыз [12].
Программаны баптау
Настройка бөлімінде кейбір параметрлерін өзгертуге болады.
Алдын ала айтылып кеткендей черепашка орыс және ағылшынша командаларға
түсінеді. Бұдай былайға жұмыс орыс тілімен жұмыс істеуге бағытталғандықтан,
жұмыс басында орыс тілін таңдаймыз. Орыс тілін қою үшін Настройка менюінен
Настройка kTurtle пунктін таңдаймыз (сурет 5).
Сурет 5. Орыс тілін қою үшін Настройка менюінен Настройка kTurtle ... жалғасы
Ақпараттық технологияны қолданып білім беру жүйесін ақпараттандырудың
мақсаты еліміздің барлық территорияларында білім беру процесінің бірлігі
мен білім беру сапасының деңгейін арттыруды қамтамасыз ететін біріңғай
ақпараттық білім беру ортасын құру және дамыту болып саналады.
Жалпы орта білім беретін мектепте KTurtle-ді қолданып білім беру
жүйесін ақпараттандырудың мақсаты, әлеуметтік мағынасын анықтап, зерттеу
мәселесінің бүгінгі күнгі жағдайы жүйесінде адокватты керісін жою оны
алдағы уақытта дамытудың ғылыми-педагогикалық негізін құруға, білім берудің
болашақ жүйесінің анағұрлым маңызды ерекшеліктерін және оларды шешудің
негізгі жолдарын құрылымын анықтауға мүмкіндік береді.
kTurtle – Лого программалау тілін игеруге арналған оқу бағдарламалық
қоршауы. Бұл бағдарлама бағдарламалауды кең түрде игеруді жеңіл әрі ыңғайлы
түрде жүзеге асырады. Көрнекі түрде жасалған программаны тез арада
қорытындысын көру, өз кезегінде бастауыш сыныптарда бағдарламалауды оқыту
кезінде өте маңызды болып есептеледі. Бағдарламалауды ағылшын тілінде,
сондай- ақ орыс тілінде де жазуға мүмкіндік бар. kTurtle бағдарламасы кіші
жастағы балаларға, сондай-ақ кіші мектеп жасындағы балаларға бағдарламалау
негіздерін үйрету кезінде пайдаланылады. Бұл бағдарламалық жабдық бастауыш
сыныптарда (3-4 сынып), 5-7 сыныптарда бағдарламалаудың пропедевтикалық
курсында негізгі ретінде, сонымен қатар факультатив сабақтарында немесе
үйірме жұмыстарында қолдануға болады.
kTurtle бағдарламалық жабдығының бағдарламалауды жеңіл әрі тез арада
бастауға мүмкіндік беретін ерекшеліктері бар.
Ішінде бірге орнатылып келген интерпретатор арқылы қосымша
программаларды жүктеп алуға және орнатуға мүмкіндік бар
Бағдарламаның орындалуын баяулатуға немесе кез келген уақытта тоқтатуға
болады.
Лого командасы арқылы синтаксис тексеру, жолдарды номерлеу т.б.
мүмкіндіктері бар.
Программаның қорытындысын сурет арқылы сақтау немесе баспаға беруге
болады.
Логоның барлық командасына жанама көмек алуға. Ғ2 командасы.
Логоның барлық командасын кез келген басқа тілге аударуға болады.
Қателер туралы диалог жасауға болады.
Дипломдық жұмыстың өзектілігі. Жалпы орта білім беретін мектептегі 3-4
сыпыптардағы пәндерде, мысалы математика, сурет, ағылшын тілінде және т.б.
пәндерді оқытуда kTurtle бағдарламалық жабдығының мүмкіндіктерін қолдану
қажеттілігі басым болып тұр. Сондықтан, kTurtle бағдарламаны меңгеріп,
түрлі есептер шешуде қолдану үлкен шешімдерге әкелуі мүмкін екені мәлім.
Осыған орай, таңдап алынған: KTurtel программаны бастауыш сыныптарда
қолдану тақырыбы бүгінгі күнде ең маңызды, өзекті мәселе деп айтуға
болады.
Ғылыми-пратикалық маңызы мен жаңашылдығы. Бастауыш буындағы өтетін
сабақтарға оқушылардың материалды дұрыс ұғынуы, пәнге деген қызығушылығын
артуы, мұғалімнің сабақ өтуіндегі шеберлігіне байланысты. kTurtle
бағдарламанын негіздерін математика, ағылшын тілі және т.б. пәндерін
оқытуда қолдану кезінде оның тиімді ерекшеліктеріне назар аударылды. Бұл
дипломдық жұмыс оқытушыларға, студенттерге әдістемелік құрал ретінде де
пайдалануға болады.
Жұмыстың мақсаты: Жалпы орта білім беретін kTurtle бағдарламаны қолдана
отырып, оқушыларға математика пәніндегі есептер мен сызбаларды, ағылшын
(орыс) тіліндегі сөздердің дұрыс жазылу негіздерін пайдалану арқылы
түсіндіру, көрсету болып табылады.
Дипломдық жұмыстың міндеттері:
• математика пәнінде kturtle бағдарламаны оқыту;
• математика есептерін шешуде kturtle бағдарламанын негіздерін
қолдану;
• математика есептерін kturtle бағдарламада бағдарламалау арқылы
шешу және ағылшын (орыс) тілінде жазылған сөздердің дұрыс
жазылуы.
Дипломдық жұмысының теориялық және әдіснамалық негіздері: диплом
жұмысының тақырыбы KTurtel программаны бастауыш сыныптарда қолдану
болғандықтан, көрсетілген материалдар мен зертханалық жұмыстар, келтірілген
мысалдар зерттеудің әдіснамалық негізі болады.
Қазіргі уақыттағы ахуалы: kturtle бағдарламанын негіздерін тек қана
математика, ағылшын (орыс) тілі пәндерде ғана емес сонымен қатар сурет
(сызу) пәндерде қолдану.
Зерттеу объектісі: kturtle бағдарлама негіздерін жалпы орта мектептерде
математика, сурет және т.б. пәндерде қолдану дипломдық жұмыстың зерттеу
объектісі болып табылады.
Дипломдық жұмысының практикалық базасы: Дипломдық жұмыс
Кіріспе, 4 бөлімнен, қорытындыдан, пайдаланған әдебиеттер тізімінен тұрады.
1 бөлімде программалау тілдерінің классификациясын қолдану жолдары
қарастырылған. 2 бөлімде KTurtle программасына жалпы шолу жолдары
көрсетілген. 3 бөлімде Лого программалау тілінде программаларды құру
қарастырылған. 4 бөлімде, яғни практикалық бөлімде Kturtle программасындағы
зертханалық жұмыстарды ұйымдастыру жолдары зерттелген.
1 Программалау тілдерінің классификациясы
Программалауға қатысты тілдер мен аламдардың тарихы мен эвалюциясы
мәселелері зерттеліп, олардың артықшылықтары мен кемшіліктері талданып,
программалауға қатасты тілдермен амалдардың класификациясы (жіктеу)
құрылады.
Алдымен программаға қатысты тілдер мен амалдарды жіктеп алайық.
Алғашқы программалау тілдерінің пайда болуына көп уақыт өте қойған жоқ.
Әр түрлі зерттеушілер олардық құрылу уақытын ХХ ғасырдың 20-шы 30-шы тіпті
40-шы жылдары етіп көрсетеді. Біздің мақсатымыз, ең ерте тілді анықтау
емес, олардың даму заңдылықтарын іздеп табу болып табылады.
Алғашқы программалау тілдері, алғашқы ЭЕМ-дер секілді әдеттегідей
қарапайым болып, сандық есептерге негізделеді. Бұлар әрі таза ғылыми
есептеулер (ең алдымен математикалық, физикалық), және әсіресе әскери
саладағы қолданбалы есептер болады.
Ерте программалау тілінде жазылған программалар, мәліметтер сақталған
регистрлермен жүргізілетін қарапайым орерациялардың сызық бойғы бір
ізділігін білдіреді.
Бұл жерде мынаны айта кету керек: ерте программалау тілдері нақты
компьютердің ақпараттың архетектурасына қарай ұтымды етілген, әйтседе олар
есептеулердің жоғарғы тиімділігін қамтамасыз етсе де, стартталу үшін әлі де
болса ұзақ уақыт қажет еді. Бір есептеуіш машинада жұмыс істеуге қабілетті
программа, өзге ЭЕМ-де жұмыс істеуге қабілетсіз еді.
Міне осылайша алғашқы программалау тілдері есептеу ортасына елеулі
түрде тәуелді болды да, шамамен қазіргі замандағы машиналық кодтарға немесе
ассамблер тілдеріне сәйкес болады [1].
Келесі он жылдық одан бұрынғы жылдарда тиісінше төмен деңгейдегі
тілдермен аталатын тілдермен салыстырғанда, “Жоғарғы деңгейлі” деп аталатын
программалау тілдерінің пайда болуымен ерекшеленеді.
Мұндағы айырмашылық жасап шығушылардың еңбегінің тиімділігінің
аппараттық қамтамасыз етудің нақты бөлшектерінен алшақтауы есебінен
алшақтауы еді. Жоғарғы деңгейдегі тілдің нұсқауы (операторы) бірнеше төмен
деңгейдегі тілдердің нұсқауларының немесе тілдердің бір ізділігіне сәйкес
келеді. Шын мәнінде пргограмманың компьютерге қатысты дерективалардың
жиынтығын білдірудің ескере отырып, программалауға қатысты мұндай амал
императивті деген атауға ие болады.
Жоғары деңгейдегі тілдердің тағыда бір ерекшелігі, қандайда бір
әрекеттерді идентификациялау мен кейін оларға, мәселен атауы бойынша бет
бұру арқылы бұрын жазылған программалық блоктарды қайта пайдалану
мүмкіндігі болады. Мұндай блоктар функция немесе процедуралар (амалдар)
деген атауға ие болып, программалау біркелкі тәртіп сипатына ие болды.
Бұдан басқа жоғары деңгейдегі тілдердің пайда болуына байланысты жүзеге
асырудың аппараттың қамтамысыз етуге тәуелділігі едәуір түрде төмендеді.
1.2 Метатілдер
Ғылыми білімдерді білдірудің формалы ретіндегі математикалық тіл, өте
ерте замандарда – ақ практикалық міндеттерді шешу кезінде пайдаланылады.
Ғылымдардың метатілі – тіл ретіндегі математиканың дамуындағы үлкен
роль атқарған бірқатар теориямен ішкі құрылымын зерттеген, математикалық
логика болды.
Информатиканың әсіресе оның формальды алгоритмдік тілдер теориясы және,
мәліметтер базасы мен білімдерді және тағы басқаларды аудару сенімді
бөлімдерінің дамуы ғылым пәндерінің дамуына, теңдеуіне формальдануына және
құрылымдануына алып келеді.
Өз кезегінде тілдік құрылымдарды модельдеудің бірқатар сөйлесу тілдерін
формальдаудың құрылымдаудың алуан түрлі мәтіндер мен сөздіктерді талдау мен
құрудың – соның ішінде оларды автоматты түрде құрудың мүмкіндігі туды.
X = {x1,x2,...,xn}, әліпбиінің көмегімен (әліпбидің үстінен) анықталған
тіл – бұл, сөздер мен сөз тіркестерінен құрылымдардың құрылу ережесі –
синтаксистің және лексикамен тұратын тілдің синтаксистік конструкцияларының
дұрыстығын мағыналық біркелкілігі мен сәйкестілігін тексеру ережесі –
семактиканы қоса алғандағы сөздерді Х – те білдірудің кейбір ауызша
дыбыстық жазбаша немесе өзге де формалары. Ауызша тілдер үшін, сөйлемнің
құрамдас бөліктерін айту ережесі – фонетика яғни фонем де қажет.
Қатынас ақпараты ретіндегі тілдің осы әліпбидің үстіндегі сөздерді
анықтаушы конструкциялар сөздерден сөйлемдердің құрылуының грамматикалық
ережесі мен осы сөйлемдерді олар сипаттайтын құбылыстар мен процесстерге
немесе синтаксистік және семантикалық ережелерге сәйкестендірулері болуы
тиіс.
Мысалы: Дәлірек айтқанда семантика түрдің байланыстарын зерттейді:
“белгі, белгінің құрылымы мән объект”;
синтаксис – түрдің байланыстары:
“белгі, белгілердің құрылымы объект”.
Кез – келген тілдің функциясы – осы тілдегі хабарламалардың көмегімен
ақпаратты бейнелеу, беру, сығымдау, сақтау, актуализациялау болып табылады.
Мысалы. Қысқа сығымдалған және дәлме – дәл түрде (формаланған) мына
фактыны жазайық:
“Х бүтін саны У бүтін санына қалдықсыз бөлінеді”
Математикалық тілде бұл мынадай түрге ие болады. “Х саны У санына
еселі”. Х,у сандарының бүтін екендігін жоғарыда көрсетілгендей етіп арнайы
түрде алдын – ала сөзбе - сөз келтіріп отырудың қажеті жоқ, себебі
еселіктің математикалық ұғымы мұны қарастырып қойған (аксиома). Енді
алгоритімдік Паскаль тілінде одан сайын қысқа және формаланған түрде
жазайық: “X mod y = 0”. Мұнда енді еселік шартын, аргументтерді өзгерту
атырабын алдын-ала белгілеп отырудың қажеті жоқ – олар Паскаль тілінде бар
(типтердің сипаттамаларында және mod операцияларында).
Тілдер шығу тегі бойынша табиғи (мәселен сөйлесу тіл) және жасанды
немесе формальды тілдер болып бөлінеді. Формальды тілдер адам мен
машинаның сөйлесуі үшін немесе білімдерді сипаттау мен алу үшін
құрастырылады.
Х – қайсыбір әліпби, X = {x1, x2,...,xn}, ал S (X) - әліпбидің үстіндегі
сөздер жиыны болсын делік, онда S (X) – шексіз және саналымды жиын.
L (X) формальды тілі – S (X) тің туынды ішжиыны.
Формальды тіл табиғи тілді оған көретін абстрак тілі объектілерді
дайындаудың лексикалық формасы [2].
1.2 Формальды грамматиканың негізгі түрі
U1(W сөзі W2(W сөзінен P1:f1-91 ережесінің көмегімен, егер де
U1=v1f1v2, w2=v191v2, p1(P болса қорытылады. F=f0:f1:f2: ... :ft=9, t(1
тізбегі, егер де fi+1, fi ден бірақ 0( i ( n үшін қорытылатын болса ғана
f тен шыққан g қорытынды деп аталады. Қорыту процесінің (тізбегінің)
аяқталуының көрінісі - ол g ден қорытылатын сөздің болмауы болып табылады.
Мысал. Мәселен қарапайым тілдің (орыс немесе қазақ) элементтерін
формальды грамматика терминдерінде сипаттап көрейік. Х тілінің әліпбиі
={A,a,Б,б, ... , Я,я, . , . , . , . , . , ! , ? , “ , ”, (,)},
T={түбірлер үстеулер және әрі қарай}, n0=“сөйлем”.
Мысалы,
T={қарбыз, банан, қызыл, жылытады, қыздырады, бүйір},
N={бастауыш, баяндауыш, анықтауыш, толықтауыш, бастауыш тобы, баяндауыш
тобы},
n0={сөйлем},
P={P1: cөйлем ((бастауыш тобы), (баяндауыш тобы)},
Р2:бастауыш тобы ( (анықтауыш) (бастауыш),
Р3:баяндауыш тобы ((баяндауыш) (толықтауыш),
Р4:анықтауыш ( “қызыл”,
Р5:бастауыш ( “қарбыз”,
Р6:бастауыш ( “банан”,
Р7:баяндауыш ( “жылытады”,
Р8:толықтауыш ( “банан”,
Р9:толыққтауыш ( “бүйір”}
Cанды мына қорытындылар дұрыс болады: сөйлем (бастауыш тобы)
(баяндауыш тобы) ( (анықтауыш) (бастауыш) (баяндауыш тобы) ( (анықтауыш)
(сөйлем) (баяндауыш) (толықтауыш) ( “қызыл” (бастауыш) (баяндауыш)
(толықтауыш) ( “қызыл қарбыз” (баяндауыш) (толықтауыш) ( “қызыл қарбыз
жылытады” (толықтауыш) ( “қызыл қарбыз бүйірді жылытады”.
Міне осылайша біз формальді ереже бойынша қарапайым тілдің сөйлемін
құрастырдық.
Формальды грамматиканың төрт негізгі түрін ажыратады.
0(G-0) типіндегі грамматика – қорытынды ережесіне шектеу болмайтын
грамматика (яғни f(9, қорытынды ережесінде, f және g – кез келгені)
1(G-1) типінің грамматикасы – f=f1nf2, g=f1u*f2 көрінісінің f-g
ережесі болатын грамматика, мұнда n-w сөздігіндегі (n(N),f1,f2,w тізбегінің
терминалды емес символы.
2(G-2) типтегі грамматика – ол n(w, n(N, w(W көрінісінің ережелеріне
ғана жол берілетін грамматика.
Тіл өзіндік табиғи жаратылысындағы тілге жақын болған сайын, соншама
жоғары деңгейдегі тіл болып есептеледі, ал аппараттық тұрғыдан, машина
жүзеге асырған тілге жақын болған сайын, соншама төмен деңгейдегі болып
есептеле береді [3].
Алгоритмдік тілдердің осы деңгейлерін сипаттайық:
Сұрау алу тілдері (процедуралық емес тілдер) қолданбалы
программалардың кейбір топтарымен диалогты жүзеге асыру үшін арналған,
бұлар ұқсататын модельдеу тілдері, дәлірек айтқанда SLAM тілі және тағы
басқа;
Жоғары деңгейдегі тілдер (проблемалық – бағытталған тілдер)
белгілі бір, бірақ барынша кең көлемдегі мәселелерді шешуге, мәселен:
есептеу сипатындағы немесе мәтіндерді өңдеу секілді мәселелерді шешуге
арналған, мысалға айтар болсақ олар FORTRAN,BASIC,LISP және тағы басқа
тілдер;
Ассемблер (тілдер тобы) машиналық командаларды үлкейтуге және
символдық (мнемоникалық) жазба үшін арналған;
Микрооперациялар тілдері (микропрограммаларды жасау тілдері) –
бұл машиналық операциялардың нағыз өзі.
Тілдерді пайдалану тілдері мен қолдану салалары бойынша шартты түрде
мынандай типтерге бөлуге болады (бұл олардың толық топтамасы емес).
1. Процедуралық тілдер.
2. Процедуралық емес тілдер.
3. Функционалды программалау тілдері.
4. Модельдеу тілдері.
5. Талдау өзгерістер тілдері.
6. Эвристикалық тілдер.
7. Сипаттау тілдері, обьектілік тілдерді көрсету немесе метатілдер.
Енді формальды жүйе ретіндегі комбинаторлы логиканың сипаттамасына
өтейік. Математика практикасына сәйкес, теорияның келесі элементтерін
анықтау қажет:
• Әліпби (алфавит)
• Тұжырымдау
• Аксиомалар
• Қорытынды ережесі.
Мынаны еске салған жөн әліпби (алфавит) ретінде қандай да бір
формализацияны шартты түрде белгілеуге жарамды жағдайдағы символдардың
жиынын түсінеміз.
Тұжырымдау математикалық теорияның терминальды символдарының қалыптасу
ережелерін бекітеді.
Аксиома деп – ақиқаттылығын дәлелдеуді қажет етпей-ақ ақиқат деп
есептеуге болатын қарапайым тұжырымдарды айтамыз.
Қорытынды-ережесі теорияда зерттелетін бір символдардың (обьектілердің)
өзге бір обьектіге айналуының ережесін анықтайды.
Комбинаторлы логиканың әлбиін (алфавитін) қарастырайық.
Мұнда төрт түрдегі элементтерге жол тарайды.
Константтар
Айнымалылар
Комбинаторлы өрнектер (немесе (или) басқаша (иначе) термдер).
Арнайы символдар
Константтар С1,С2, ... латын алфавитімен сипатталады.
Екі комбинаторлық термнің конверттелуші – біри комбинаторлық термнің
өзге комбинаторлық термге айналатындығын білдіреді. Конверттелушілік
қатнастары коптеген қатнастардағы қайта белгілеулерді де модельдейді, яғни
бұдан бұрын айтылғандай программалау процесін білдіреді.
Келесі акциомалар конверттелушілік қатынастарының қасиеттерін
білдіреді.
(I)Ix=x;
(k)Kxy=x;
(S)Sxyz=xz(yz).
(I) Аксиомасы тепе- теңдік комбинаторының (функциясының) бар
екендігін білдіреді,яғни дәлірек айтқанда кез-келген аогументтің өзінде
бейнеленетін, тепе-тең өзгерістердің бар екендігін білдіреді.
(К) Акциомасы бірінші проекцияны алу комбинаторының (функциясының),
яғни реттелген қосақтың алғашқы элементінің немесе тізімнің бірінші
элементтінің бар екендігін білдіреді.Бұл акциоманың тізімдерді амалдаушы
функционалдық программалау тілене жақын екендігі айқындалып отыр және ол
тізімнің алғашқы элементін алудың фундоментальды операциясын сәйкес келеді
[4].
Алгоритмнің машиналық тілдегі бейнесі программа деп аталады. Ал
программа жазуға арналған тілі программалау тілі дейді. Сондықтан машиналық
тілдердегі барлық бұйрықтар мен нұсқаулар комьпютердің құрамына кіретін
функционалдық бөліктер арқылы орындалады. Машиналық тілдер комьпютерлердің
алғашқы интеллектуалдық (зерделік) деңгейін анықтайды. Кейін неше түрлі
программаларды комьпютердің жадына сақтай отырып, оның интеллектуалдық
деңгейін көтеруге болады.
Машиналық тіл де барлық бұйрықтар мен нұсқаулар тек “0” мен “1”-ден
тұратын тізбектер арқылы арқылы бейнеленеді. Сондықтан машиналық тіл де
программаларды жазу адам үшін өте қиын. Себебі бір жағынан барлық амалдар
мен нұсқаулардың екілік бейнелерін (кодтарын) есте сақтау керек, екіншіден
кез келген алгоритімді осы машиналық амалдар мен нұсқаулар арқылы
өрнектеліп білу қажет. Алғашқы деркетер, нәтиже және олардың адрестері
екілік сандар арқылы бері леді. Тармақталу нұсқауын жазу үшін басқару
беретін адресті қолмен есептеу қажет Сол сияқты тұрын істелмеген көптеген
жұмыстарды басынан бастап қайтадан жасау керек. Мұның бәрі бір ден көзге
көрінбейтін еөптеген қателер жіберуге соқтырады. Жазылған программалар
оқуға және түсінуге қолайсыз болғандықтан, олардың ішіндегі жіберілген
қателерді тауып түзету өте көп уақытты және жылдамдылықты қажет етеді.
Сондықтан адамдар өздерінің жұмыстарын жеңілдету үшін программа жазуға
ыңғайлы басқа жасанды тілдер ойластыра бастады.
Жасанды тілі комбпютер өзінің машиналық тіліне адамның қатысуынсыз
(автоматты түрде) аударатындай етіп жасайды. Аударуды программа орындайды.
Ондай программаны ағылшын тілінде “транслятор” (аудармашы) деп атайды, ал
аудару процесін “трансляция” дейді. Сондықтан программаны жасанды тіл де
пайдаланып жазған кезде комьпютердің жұмысы екі кезеңнен тұрады.
Жасанды тілден машиналық тілге трансляциялау;
Машиналық тілдегі программаны орындау.
Программаны орындаудағы осы екі кезеңде көрсетілген жұмысты жүзеге
асырудың екі түрлі әдісі бар:
1.Компиляция әдісі-алдымен жасанды тілдегі программа түгелдей машиналық
тілге аударылады, сонан кейін бұл программа басынан орындалады.
2.Интерпретация әдісі- жасанды тілдегі программаның әрбір әрекеті
(нұсқауы немесе амалы) жеке алдын ала аударылмастан бірден машиналық тілде
орындала бастайды.
Яғни, компиляция әдісінде жасанды тілдегі программа тек қана бір рет
қарастырылады және аударылған программаны бірнеше рет орындауға болады, ал
интерпретация әдісінде әр орындау алдында жасанды тілдегі программаны
қайтадан қарастыру қажет. Сондықтан компиляциялау әдісі бойынша шыққан
орындалуға дайын программа жылдам жұмыс істейді, бірақ программаны түгел
орналастыру үшін жадының көп орнын алады. Керсінше, интерпретациялау әдісі
жадының аз көлемін қажет етеді де, бірақ ақыры (шабан) жұмыс істейді.
Сонымен осындай жасанды тілдер де комьпютерге түсінікті болады,
сондықтан оларды да біз программалау тілдері дейміз.
Қазіргі кезде комьпютердің көмегімен әртүрлі есептерді шығаруға
мүмкіндік беретін сан алуан программалау тілдері бар. Әр тілдің кемшілігі
де, жетістігі де бар. Мысалы, кейбір тілде программаны жазу оңай болғанымен
оны орындау өте көп уақытты талап етеді немесе жадының көп орнын алады.
2. Жалпы, программалау тілдерін мынадай белгілері, қасиеттері бойынша
жіктеуге болады:
1Тілдің деңгейіне байланысты, яғни машиналық тілге жақындығына
байланысты;
2.Тілдің қызметіне байланысты, яғни қандай есептерді шешуге мүмкіндік
беретініне байланысты;
3.Тілдің моделіне байланысты, яғни құрылу принципіне байланысты.
Ең төменгі деңгей машиналық тілдерде болады деп қабылданады.Сондықтан
басқа тілдердің деңгейі деп олардың машиналық тілдерге жақындық өлшемін
айтады: тіл неғұрлым машиналық тілге жақын болса, соғұрлым оның деңгейі
төмен болады және керісінше. Ең жоғарғы деңгей табиғи тілдерде болады.
Сонымен, бір інші кластағы тілдер екі топтан тұрады:
-деңгей төмен машинаға байланысты тілдер;
-деңгей жоғары машинаға байланыссыз тілдер.
Деңгейі төмен машинаға байланысты тілдер комьпютерлердің жеке
маркаларының (IBM, Macintosh,Sun, Cray т.с.с.) ерекшелігін немесе
комьпютерлер кластарының ерекшеліктері қамтиды. Сондықтан олар екіге
бөлінеді:
машинаға бағытталған арнайы тілдер;
машинаға бағытталған әмбебап тілдер.
Машинаға бағытталған арнайы тілдерге мнемокодтар мен автокод тар
жатады.
Мнемокодтарда машиналық тілдердегі барлық бұйрықтардың деректердің және
олардың адрестерінің екілік бейнелері (кодтары) мнемоника деп аталатын
әріптер мен цифрлардан тұратын тізбектерге алмастырып жазылады. Әдетте
мнемоника ретінде осы бұйрықтардың табиғи тілдегі атауларының бас әріптерін
алады. Мысалы, қосу амалының мнемоникасы ретінде алатын әліпбиінің
бірінші А әріпі алынады. Себебі ағылшын тілінде қосуды “Adition” деп
атайды.Мнемокодтың машиналық тілге қатысы 1: 1 болады, яғни әрбір
машиналық тілдегі бұйрыққа бір мнемоника берілді [5].
Автокод тардың мнемокодтардан айырмашылығы ол мнемоникаларды
пайдаланумен қатар онда қосалқы программаларды ұйымдастыру және
макроамалдар деп аталатын бір ғана амалдармен бірнеше қарапайым амалдардың
тізбектерін атау мүмкіншіліктері бар. Мысалы, бір есепті шығарғанда
программаның өзіндік логикалық бір тұтастығы бар кейбір бөлшек жиі
кездессе, онда оны қосалқы программа немесе макроанықтама ретінде
ұйымдастырып және қажеттілігі бар жерде оның атын және осы контекстке
байланысты параметр мәнін көрсетіп қолдануға болады. Автокадтар
мнемокодтардың біршама дамыған түрлері.
Жалпы, мнемокодтар мен автокодтарды біріктіріп ассемблердің тілі деп
атайды. Олай дейтіні, әрбәр комьпютерде осы тілді машиналық тілге аударатын
программа бар. Сол программаны асемблер деп атайды. Ассемблердің алғашқы
деректері ретінде мнемокодта немесе автокод та жазылған программалар, ал
оның нәтижесі ретінде осы программалардың машиналық тілдегі түрлері болады.
Машинаға бағытталған әмбебап тілдерде бір класта жататын бірнеше
комьпютерлердің ерекшеліктерін қамтитын амалдар мен мысалдар болады. Бұлар
машинаға бағытталған тілдердің дамығаны. Оларға, мысалы, ALMO немесе Uncol
деген тілдер жатады. Кейін С деген тіл жасалды, соңғы кезде оның
жетілдірілген түрі С++ шықты.
Бізге комьпютердің жұмысын жоспарлау, ұйымдастыру және басқару үшін
қатынас тілі қажет. Негізінде осы айтылғандардың барлығы белгілі
программалардың орындау арқылы жүзеге асады. Оларды біріктіріп операциялық
жүйе (ОЖ) деп атайды. ОЖ программалары берілген есепті шығаратын жұмысшы
программа орындалуы кезінде оның алғашқы деректерін енгізу, сақтау және
нәтижесін шығару сияқты қызметтер көрсетеді. Сонымен қатар, осы жұмысшы
программаға қажетті комьпютердің жабдықтарын Альп береді, оның орындалу
кезегін анықтайды, т.б. жұмыстар атқарады. Яғни, ОЖ программалары ішінде
басқару және қызметші программалары бар. Қысқасы, комьпютердегі
программалар, былайша айтқанда “программалық қоғам” құрады. Бұл “қоғамдағы”
программалар өзара қатынас жасауы үшін және олардың жұмысын алғаш бастап
беру үшін немесе жұмыстың соңын белгілеу үшін жоғарыда айтылған қатынас
тілі қолданылады. Әдетте, осындай қатынас тілдерін операциялық жүйенің
тілі немесе тапсырмаларды басқару тілі деп атайды. Бұл тілдер, бір жағынан
операциялық жүйе белгілі комьпютердің маркасына үйлескенде осы марканың
ерекшеліктері мен қасиеттерін қамтитын болады. Сондықтан оларды машинаға
байланыс тілдер класына жатқызуға болады. Ал екінші жағынан, кейбір
операциялық жүйелер тілі машинаға байланыссыз болады (мысалы, Unix деген
операциялық жүйеде ).
Деңгейі жоғары, машинаға байланыссыз тілдер табиғи тілдерге жақын
болады. Бұлар негізінен алгоритмі оңай және түсінікті жазу үшін арналып
жасалынады. Оларда комьпютерлердің ерекшеліктерін қамтитын нұсқаулар мен
амалдар болмайды деседе дұрыс. Бірақ, бұл тілдерде жазылған программалар
машинаға байланысты тілднрде жазылған программаларға қарағанда комьпютердің
көп ресурсын талап етеді. Мысалы, орындалуы көп уақыт және орналасуы көп
жер алады.
Осы тілдер қандай есептерді шешуге ыңғайлылығына байланысты
төмендегідей болып бөлінеді:
сандық есептерге арналған тілдер;
символдық есептерге арналған тілдер;
логикалық есептерге арналған тілдер;
экономикалықесептерге арналған тілдер;
моделдеу есептеріне арналған тілдер, т.с.с.
Жалпы, осы айтылған тілдердің барлығын проблемаға бағытталған тілдер
деп те атауға болады.
Жоғарыда келтірілген есептердің барлығын шығаруға мүмкіндік беретін
тілдерді амбебап тілдер деп атайды. Мысалы, ондай тілге PLI (ПЛІ) және
Ada (Ада) тілдерін жатқызуға болады. Бұл тілдерде шамалардың барлық типтері
және оларға орындалатын амалдар анықталған. Әдетте, бұл тіл арқылы кез
келген есепті шығаруға болғанымен ондағы программаны көлемі өте үлкен
болады.Сондықтан ол комьпютердің көп ресурсын қажет етеді.
2. Программалау тілдері, табиғи тілдері сияқты, өздерінің моделі
(құрылу негізі) бойынша бөлінеді. Мысалы, табиғи тілдерді біз түркі
тілдері, славиан тілдері, роман тілдері, арап тілдері, парсы тілдеріжәне
т.с.с.деп топқа бөлеміз. Ал программалау тілдерін процедуралық тілдер,
функционалдық тілдер, логикалық тілдер және продукциялық (алмастырымдық)
тілдер деп бөлуге болады.
Программалау тілдердің ішінде ең алғаш пайда болғандары және ең көп
тарағандары процедуралық тілдер, ал процедуралық тілдердің ішіндегі ең
бірінші пайда болғаны ФОРТРАН (1955ж).
Процедуралық тілдер жөнінде функционалдық программалаудың негізін
салушы Америка оқымыстысы Дж Бэкус өзінің Тьюринг сыйлығының (информатика
ғылымы бойынша ең жоғарғы сыйлық) лауреаты болуына байланысты лекциясында
Ада тілінде барлық теориялық сұрақтардың шешімдері орын тапқан деп
дәлелдейді (Ада тілі 1975 жылы АҚШ-ң Қорғаныс министрлігінің жариялаған
конкурсты жеңіп алған Жан Ишбианың басқаруымен француз ғалымдары 1979 жылы
жасаған тіл. Бұл тілдің аты дүние жүзіндегі ең бірінші программалаушы әйел,
лорд Байронның қызы, Чарльз бэббидждің қызметкері Ада АВГУСТ есімімен
аталған).
Мұнда қатаң бағыттамамен көп әсер ететіндікті, ал жіңішке бағыттамамен
аз әсер еткендікті белгіленген. Осыған сәйкес, рпоцедуралықтілдің дамуының
басымшылығы АЛГОЛ тілінің концепцияға негізделгендігін байқауға болады.
Жалпы, процедуралық тілде алгоритм әрекеттерді және оларды орындау үшін
қажет нұсқауларды бейнелеу арқылы жазылады. Процедуралық тілдердегі
программа бірлік оператор деп аталынады. Ең кіші программалық бірлік болып
меншіктеу операторы есептелінеді. Он, жалпы түрде, былай бейнелеуге болады:
айнымалы :=өрнек,
мұнда “:=“ – меншіктеу амалының белгісі, ол әр программалау тілінде әр
түрлі белгімен берілуі мүмкін, мысалы, “=”-ФОРТРАН және Бейсик тілдерінде,
“:=”-АЛГОЛ және Паскаль тілінде. Меншіктеу операторының орындалу екі этапта
өтеді: алдымен өрнектің мәні есептелінеді, содан кейін осы есептелінген мән
айнымалыға меншіктеледі. Әрбір программалау тілінде кездесетін деректерді
Тенгізу операторы және шығару операторы меншіктеу операторының
дербесжағдайлары болады. Деректерді енгізген екзде айнымалы ретінде
комьпютер жедел жадынадағы адрес, ал өрнек ретінде сыртқы құрылғының аты
немесе сыртқы құрылғының жадындағы адрес алынады, ал деректерді шығарған
керісінше болады: айнымалы- сыртқы құрылғы немесе жадыға, өрнек- жедел
жадыға сәйкес құрылады:
Процедуралық тілдерінде басқа программалық бірліктерге тізбектеу
операторы, тармақталу операторлары және қайталау операторлары сияқтылар
жатады.
Функционалдық программалау функционалдық тілдер арқылы жүзеге асады.
Бұл тілде алгоритм функцияларыды бейнелеу арқылы жазылады. Функциялар
қарапайым функция немесе күрделі функція болуы мүмкін. Күрделі функция
қарапайым функциялардың композициясынан (суперпозициясынан) тұрады.
Функционалдық тідерде программа бірлігі ретінде функция қабылданады. Осы
тілдердің мысалы ретінде ЛИСП, ПЛЭНЕР, CONNIVER, KRL, FRL, және FP сияқты
тілдерді алуға болады [6].
Логикалық тілде алгоритм шығарылатын есептің алғашқы деректерінің және
оларда орындалатын амалдардың қасиеттері мен қатынастары туралы құрылған
тұжырымдарды логикалық береже депр қарастыруға болады және әрбір береже
белгілі бір шартты береді. Есептің нәтидесі сұрау арқылы анықталады. Егер
осы сұрау бойынша логикалық ережелердің орындалғанын дәлелдесек, онда
есептің нәтижесінің болғаны, әйтпесе не басқа сұрау қою керек, не қойған
сұрауға теріс жауап алғанымыз. Осыны жүзеге асару үшін осы тілде белгілі
бір формальды дедукциялық жүйені қолданады. Кейінгі кезде логикалық тілдер
өте қауырт дамуда. Себебі, ло есептегіш техниканың 5-буынында негізгі
машиналық тіл ретінде қабылданбақшы. Мұндай тілдерге мысал ретінде ПРОЛОГ,
ЛОГО сияқтыларды алуға болады.
Продукциялық (алмастырымдық) тілде алгоритм алмастыру ережелерін
кескіндеу арқылы жазылады. Алмастыру ережелері “сол жағы” және “оң жағы”
деп аталатын екі бөліктен тұрады. Ереженің сол жағында осы ереженің атауы
және алғашқы деректердің үлгілері орналасады, ал оң жағында үлгілерге
сәйкес келген алғашқы деректермен не істеу керектігі көрсетіледі. Бұл үшін
басқа ережелерді шығаруға болады. Ал ережелерді құру “жоғарыдан төмен”
алдымен берілген есептің жалпы мазұнына сәйкес алмастыру ережесі құрылады.
Сонан кейін осы есепті шешу кезінде пайда болван жаға ұғымдарға сәйкес
алмастыру ережелері құрылады. Яғни, бұл тілдегі программаның құрылымы
иерархиялық (бұтақ тәрәздес) болады. Оның кез келген деңгейінде тексеруге
немесе өзгерістер енгізуге болады. Осындай тілдердің мысалы ретінде СНОБОЛ
немесе РЕФАЛ сияқты тілі алуға болады.
Функционалды программалау жасанды интеллектіні зерттеу мен оның дамуы
негізінде және информатиканың жаңа көкжиектерін игеру кезінде математикалық
бағытқа айрықша ден қою ретінде қалыптасты. Қазіргі уақытта есептердің
әртүрлі топтары мен техникалық құралдардың түрлеріне бағдарланған
программалаудың жүздеген функционалды тілдері өмір сүруде.
Програмамалаудың негізгі парадигмалары шешілетін есептердің
күрделігінің өсуіне қарай қалыптасты. Ақпаратты компьютерлік өңдеу процесін
ұйымдастырудың техникалық тұстарын алдын ала жасап қоюдың тереңдігі мен
жалпылығына байланысты, программалаудың амалдары мен әдістерінің жіктелуі
байқалды. Программалаудың алуан түрлі стильдері ерекшеленіп шықты, олардың
ішіндегі ең ұзақ қолданылып келе жатқандары-машиналық бағдарланған,
жүйелік, логикалық, трансформациялық және жоғары өнімді параллельді
программалау.
Машиналық-бағдарланған программалау.
Жабдықтын кез-келген мүмкіндігіне жетуге бағыт алған, компьютер жұмысын
ұйымдастыруға қатысты аппараттың амалмен ерекшеленеді. Басты назарда-
жабдықтың конфигурациясы, жадының жағдайы, басқаруды беру, оқиғалардың
кезекпен өрбуі, т.б.
Жүйелі программалау ұзақ уақыт бойы сервистік және тапсырыс
жұмыстарының массасында дамып келді. Осындай жұмыстарға тән өндірістік амал-
көп ретті пайдалану үшін жасалынатын өндірілетін процесстер мен тұрақты
программалауға артқшылық беруге сүйенеді. Бұл салада қолданбалы
программалаудың операциялық стилін тікелей жалпылау болып табылатын,
программалаудың императивті-процедуралық стилі басымдыққа ие.
5. Білдің қарапайым функциясын жүзеге асырудан тұратын және
функционалдық тілдің мағыналануын қуаттайтын абстрактілі машина анықталады
және компилятор программалаудың функционалдық тілінің абстрактілі
синтаксисінен тілдік бағдарланған абстрактілі машинаға қарай талданған.
Міне осылайша, функционалдық түйсікті ұғымдардың, мәсілеттер құрылымы
мен машиналық код деңгейіндегі қолданудың мүмкін боларлың бір процесін
барлық ұсақ-түйегіне дейін бейнелеуге мүмкіндік беретін функционалды
программалау тілін анықтаудың кемілелі сызығы аяқталды. Содан соң функцияны
қолдану процесі жайлы түсініктерді жалпылаудың (жинақтаудың) бірқатары
орындалған болатын, яғни мұнда функционалды тілді анықтаудың өспелі сызығы
жүзеге асырылды.
Бұл процесс алуан түрлі көзқарас тұрғысынан алғанда тиімділігі
жағынан, әрқашан қанағаттанарлық бола бермейді. Тиімділіктің артуы әдетте
кеңістіктің өлшемділігінің дамуын талап етеді, ал мұнда ұтымды етілетін
ұғымдар қарастырылды.
дамудың тігінен де көлденеңнен де мүмкін боларлық бағыттары
зерттелінді. Бұл үшін функционалды программалауды қалыпта ұстап тұруға
арналған мәліметтер құрылымы мен программалау жүйелереін ұйымдастыру
бойынша дәстүрлі шешімдер зерттелді.
Бір мәнді емес функциялар қатынас ұғымы арқылы қарастырылуы мүмкін.
Объектілі-бағдарланған програмалауды зерттегенде осы идеалардың өте жақын
екендігі және олардың функционалдық бағалық амалдары тарапынан өте жеңіл
түрде қолдануға ие болатындығы көрсетілген. Объектілердің топтарымен және
нұсқаларымен жүргізілетін жұмыстардың техникасын және оларды өңдеудің
әдістерін анықтаудың тәсілдерін көрсете де жеткілікті.
Нұсқалар немесе балама процесстер ұғымы қарастырылған, бұлардың
біреуінің сәтті түрде орындалуын функция нәтижесін құру үшін жеткілікті.
Мұндай процесстерді жүзеге асыру, тығырыққа тірелген жағдайдан шығуға
жадының жаңдайын сақтауды қамтамасыз ету үшін, абстрактілі машина
анықтамасын айқындауды талап етті.
Нақты формалаларға сәйкес келетін, процесстің және қадамдарын
орындаудың уақытын таңдауды қамтамасыз етуші функциялар мен амалдарды
есептеу процесстерін басқарудың әдістері берілген. Осындай процесстерді
ұйымдастыру мәліметтер мен оларды алудың нұсқауларын бірлесіп сақтау арқылы
қамтамасыз етіледі. Программалардың тоқтатылуы мен қайта жалғасуына келіп
тірелетін рецентермен жүргізілетін жұмыстың техникасы, арнайы жүзеге
асырушы механизмдерді талап етпейді.
Жоғары тәртіптегі функциялар программалаудың табиғи модульденуінің
құралы ретінде көрсетілген [7].
Кез келген математикалық өрнектер алгоритмдік тілдерде тек
математиканың ережесімен ғана емес, сондай-ақ мына тілдердің ережесімен
де жазылады.
Мысал:
Алгоритмдік паскаль тіліндегі
математикалық өрнегі түрде жазылады.
Мысалы. Паскаль өрнегіне, мына түрдегі математикалық өрнек сәйкес
келеді.
Алгоритмдік тілде өрнектің мәнін есептеп шығару тілде қолданылған
операциялардың үлкендігіне сәйкес түзіледі [8].
Мысалы. табамыз. Нәтиже мынаған тең 8=5+min(3,6)+3*1=5+3+3=1
Алғашқы ЭЕМ –дегі программалық жасақшаларымыз жіберіліп отырады. Да,
програмистке программаның жұмыс істеуіне қажетті ондағы барлық
нәрселерді сипаттап шығуына тура келеді. Алғашқы алгоритмдік тілдердің
құрылуы (мысалы, For, Tran) программалауды жеңілдетті, өз есептерін
программистің қатысуысыз –ақ шешетін адамдардың саны көбейтті,
программалаудағы басты екі бағыттың – қолданбалы және жүйелі
программалаудың содан соң үшінші бағыт – аспапты программалаудың негізін
қалады.
Қолданбалы программист ( жоғары денгейдегі программалау тіліндегі )
нақты жаратылыстану ғылыми міндеттерді шешетін программалады құрады.
Жүйелі программист (төмен денгейдегі программалау тіліндегі)
қолданбалы программалады жазу мен жөндеу процесін автоматтандыру,
қолданбалы программаладың арасында ресурстарды бөлу, ЭЕМ-дегі
операциялық жүйелерді құру секілді қолданбалы программалардың жүру
процесін бақылау программаларын құру
Модуль ілінісіуі – бұл модульдің берілгендер бойынша басқа
модульдерге тәуелділігінің өлшемі. Берілгендердің берілу жолымен
сипатталады. Модульдің басқа модульдермен ілінісуі әлсіз болған сайын оның
тәуелсіздігі жоғары ілінісу деңгейін бағалау үшін Майерс реттелген модуль
ілінісу түрлерінің 6-уын ұсынады. Ең төмен деңгейлі ілінісу – бұл мәні
бойынша ілінісу.
Бір модульдің екінші модульдің құрамындағысын (константа, айнымалы
т.б.) тікелей пайдалануы осыған жатады. Мұндай ілінісуге жол бермеу керек.
Жалпы аймақ бойынша ілінісуді де қолдануға кеңес берілмейді. (бірнеше
модульдің бір ғана жады аймағын пайдалануы). Қолдануға кеңес берілетін
модуль ілінісуінің бір ғана түрі бар, ол – параметрлік ілінісу не
берілгендер бойынша ілінісу. Бұл модульді шақырған кезде берілгендердің
модуль параметрі ретінде берілетін жағдай немесе берілгендердің қайсыбір
функцияны есептеу үшін басқа модульді шақыру нәтижесі ретінде берілетін
жағдай.
Модуль ілінісуінің бұл түрі программалау тілдерінде процедураны
(функцияны) шақыруда жүзеге асады.
Модул байланыстығы – модульді алдыңғы шақыруларынан тәуелсіздігі.
Модульді алдыңғы шақыруына байланыссыз деп атаймыз, егер модульді шақыру
нәтижесі тек параметрінің мәніне ғана тәуелді болса ( және алдыңғы
шақыруларынан тәуелсіз болса). Модульді алдыңғы шақыруларына байланысты деп
атаймыз, егер модульді шақырудың нәтижесі алдыңғы шақырылғанда өзгерген
ішкі жағдайына тәуелді болса.
Осыған байланысты мына кеңестер беріледі:
- егер модульдердің төмен деңгейлі ілінісуге әкеп соқпайтын
болса, онда
алдыңғы шақыруына байланыссыз модульдерді қолдану керек;
параметрлік ілінісуді қаматамасыз ету үшін қажет болған жағдайда ғана
алдыңғы шақыруына байланысты модульдерді қолдану керек;
алдыңғы шақыруына байланысты модульдің спецификациясында осы
байланыстылық айқын көрсетілсін. Соның арқасында модульдің әр түрлі
жағдайда шақыру нәтижесін болжау мүмкін болсын.
Жоғарыда айтылып өткендей, программаның модульді құрылымы ретінде
ағаш түріндегі құрылымды (бұтақты ағашты да қоса) қолдану келісілген.
Мұндай ағаштық түйіндерді программалық модульдер орналасады. Ал
бағытталған доғалар (стрелкалар) модульдердің статикалық бағыныштылығын
көрсетеді, яғни әрбір доға модуль текстінде (доғаның басында орналасқан
модуль) келесі модульге (доғаның екінші ұшында орналасқан модуль) сілтеме
бар екендігін білдіреді. Басқаша айтқанда, әрбір модуль өзіне бағынышты
модульді шақыруы мүмкін, яғни осы модульдер арқылы өрнектелуі мүмкін.
Сонымен бірге программаның модульді құрылымы программаны құрайтын
модульдердің спецификациялар жиынтығын өз ішіне алу керек.
Программалық модульдің спецификациясы біріншіден, оның
кірістерінің (входов) синтаксистік спецификациясынан (ол қолданып отырған
программалау тілінде модульді синтаксистік дұрыс шақыруды құруға мүмкіндік
береді), екіншіден модульдің функционалды спецификациясынан (осы
модульдің әрбір кірісі бойынша орындалатын функциялардың семастикасын
бейнелеу) тұрады.
Модульдің функционалды спецификациясы ПС-ң функциясының
спецификациясы сияқты құрылады.
Программа құрып, дайындау процессінде оның модульдік құрылымы
әртүрлі түзілуі мүмкін және осы құрылымда көрсетілген модульдерді отладка
жасау және программалау ретін анықтауда пайдаланылуы мүмкін.
Сондықтан программа құрылымын құрудың әр түрлі тәсілдері бар.
Солардың екуін: төменге қарай құру, жоғары қарай құру тәсілдерін
қарастырамыз.
Программа құрылымын дайындаудың тәсілдері.
Жоғары қарай құру тәсілі: Алдымен программаның ағаш түріндегі модульді
құрылымы құрылады. Одан соң кезекпен модульдер ең төмен деңгейдегіден
(ағаш жапырақтары) бастап программалана бастайды.
Әрбір программаланатын модуль үшін керек болатын модульдер
программаланып қойылатындай кезекпен құрылады. Программаның барлық
модульдері программаланып болған соң, жоғарыдағыдай кезекпен оларды
тестілеу және отладка жасау жүргізіледі. Бір қарағанда программаның
осындай ретпен құрылуы керек те сияқты: әрбір модуль программалану кезінде
программаланып қойылған бағынышты модульдермен өрнектеле алады, және
тестілеу кезінде отладка жасалынған модульдер дайын қолданылады.
Айтылып жатқан тәсілдердің барлығы программа дайындалу барысында оның ағаш
түрдегі құрылымның түйіндерін (модульдерін) қандай ретпен айналып өтуіне
қарай әр түрге бөлінеді. (Айналып өту түрлері: жоғарыдан – төменге, оңнан
–солға, т.б) Солардың бір түрі дәлірегі конструктивті жандасудың бір түрі
мақсаттты – конструктивті жүзеге асыру. Бұл тәсілдің мәні мынадай:
конструктивті жандасуды ұсатала отырып, алдымен программаның ең қарапайым
(ықшамды) варианты үшін кееркті модульдер жүзеге асырылады.
Бұл қарапайым программа енуші берілгендер саны аз жағдай үшін дұрыс
орындалады және аяғына дейін орындалады. Программады шақырылатын әлі
программаланбаған модульдердің орнына имитаторы қолданылады. Бұдан кейін
осы программаға енуші басқада берілгендер қосылған жағдайда дұрыс орындалуы
үшін керекті модульдер енгізіле бастайды. Бұл процесс біртіндеп программа
толық жүзеге асырылғанша жалғасады. Сонымен прграмма ағашын айналып өту
дұрыс орындалатын программаның вариантарын ең қысқа жолмен жүзеге асыруды
мақсат етеді. Бұл тәсілдің артықшылығы – бастапқы этаптарда дайындалып
жатқан программаның орындала алатын варианты құрылуында.
Программа құрылымын құрудың біз қарастырған тәсілдерінің
классификациясы төменгі схемада келтіріледі [9].
2 Алгоритмдер және орындаушылар
Алгоритмдер күнделікті өмірде кез келген жерде кездеседі, бірақ біз оны
байқамаймыз. Өзіміз қолданамыз және өзіміз жаңадан құрамыз. Алгортим
термині ортағасырларда өмір сүрген шығыстың ұлы ғалымы Мухаммед әл-
Хорезмидің есіміне байланысты шыққан. Ол математикалық пәндердің ішінде
алгебраның негізін қалады. Бұл пән әртүрлі санау жүйелеріндегі көп орынды
сандарды арифметикалық есептеулердегі есептеу ережелерін қалыптастырды. Бұл
ережелер кейінірек келе алгоритм деп атылып кетті. Алгоритм сөзінің латыншы
жазылуы algoritmi.
Алгоритм дегеніміз,- алдын ала белгіленген қорытындыға келтіретін
белгілі бір іс әрекеттің орындалу тәртібі.
Алгоритмнің мысалы ретінде белгілі бір тамақтың дайындалуын,
вилосипедтің жинақталуын т.б.б алуға болады.
Алгоритмді іске асыруышыны орындаушы дейміз. Алгоритмді орындаушы
ретінде адам, автомат, компьютер бола алады.
Орындаушы алгоритмді іске асыруы үшін, ол алгоритмнің командаларын түсінуі
керек. Орындаушының түсінетін және орындайтын командалар жиынтығы
орындаушының командалар жиынтығы деп аталады (ОКЖ).
Алгоритмнің қасиеттері
Алгоритм дұрыс әрі негізгі қорытындыға жеткізу үшін, ол мынадай негізгі
қасиеттерге иее болуы керек.
1. Түсінікті. Алгоритмді орындаушы оны қалай орындайтынын түсінуі
керек.
2. Дискреттілік. Алгоритм орындалуыға қажетті жекелеген қадамнан тұруы
қажет.
3. Қорытындылы. Алгоритмнің орыналуы қандай да бір қорытындымен
аяқталуы қажет. Немесе бұл жағдайда белгілі бір қорытындыға келе
алмағандығы жөніндегі хабар берілуі керек.
4. Аяқтылық. Алгоритмнің орындалуы қай кезде де аяқталуы қажет. Егер
бұл шартты ескермесек шексіз орындала беретін алгоритмге тап болуымыз
мүмкін.
5. Бірмәнді. Алгоритм орындалуының әрбір қадамы жалғыз ғана жолмен
орындалуы керек, бұл қадамның екі немесе одан көп рет орындалуы
қарастырылмауы қажет. Бұл өте маңызды қасиет.
6. Жалпылық. Мүмкіндігінше алгоритм әмбебап болуы керек, яғни бір мәнді
тапсырмаларды орындауға ортақ болуы керек.
Алгоритмнің жазылу жолдары.
Алгоритмді жазудың әртүрлі жолдары бар.
Сөзбен жазылуы.
Алгоритмнің әрбір тапсырмасы сөзбен жазылады.
Қуырылған жұмыртқаны дайындау алгоритмінің сөзбен берілген ьүрін
келтірейік.
1. Екі жұмыртқа, 1 ас қасық өсімдік майын, бақыраш және тұз дайындаңыз.
2. Бақырашты 3 минут қыздырыңыз.
3. Бақырашқа май салыңыз.
4. Бақырашқа жұмыртқаны жарып салыңыз.
5. Жұмыртқаны тұздаңыз.
6. Жұмыртқа дайын болғанша 5 минут күтіңіз.
7. Дайын болған жұмыртқаны тарелкаға салыңыз.
Графикалық
Алгоритм әрекеттері сурет негізінде көрсетілген. Алгоритмнің графикалық
жазылуын киндер-сюрприздің ойыншықтарын жинау, шайдың қорапшасында немесе
тездайындалатын кеспенін сыртында инструкциясын кездесуге болады (сурет 1).
Сурет 1. Кеспе дайындаудың графикалық алгоритмі
2.1 Kturtle прогаммасына кіріспе
Программаны жүктеу
Программана бірнеше түрде жүктеуге болады. Егер линукс мастер
пайдаланып жатқан болсаңыз, онда Пуск→Разное→Обучение программу на языке
Лого (kTurtle) командасы арқылы жүктеледі (сурет 2).
Сурет 2. Kturtle программасын іске қосу
Сонымен қатар Разработка бөлімінде Образование тобынан жүктеуге болады.
Егер басқа дистрибутив немес линукс мастер басқаша бапталған болса, онда
программаны жүктеу басқаша орындалатын болады. Сонымен қатар көнекілеу
түрде әмбебап консулдік түрде орындауға болады. Альт-линукс мастерде
консульдік жүктеу үшін Пуск менюінен служебные бөлімін таңдап, сондан кейін
Терминал (Консул) командасын орындау керек. Командалық жолда KTurtle деп
жазып enter пернесін басамыз (сурет 3).
Сурет 3. Командалық жолдын көмегімен іске қосу
2.2 Программа интерфейсі
Сурет 4
Kturtle программаның интерфейсі
Редактордың сол жағында кодтар редакторы орналасқан (сурет 4). Бұл
бағдарламашының жұмыс орны. Осы жерде черепашкаға (команда орындаушыға)
арналған командалар орналасады. Редакторың оң жағында кенеп орналасқан. Бұл
команда орындаушының жұмыс алаңы. Кенепте жазылған командаларды орындай
жүріп команда орындаушы кенеп қозғалады, сурет салады, әртүрлі қызықты
әрекеттер орындайды [11].
Сонымен қатар басты терезеде программалық қоршауды басқаруға арналған
құраодар тақтасы орналасқан. Бұл көптеген жиі орындалатын команданы жылдам
түрде орындауға мүмкіндік береді.
2.3 Жұмыс істеуге дайындық
Черепашкаға арналған алғашқы программамызды жазбай тұрып кейбір
негізгі әдіс-тәсілдерге тоқтала кетейік. Программа терезенің сол жақ
бөлігінде жазылады. Кодтар редакторы бағдарламашы мүмкіндігінше аз қате
жіберуге ыңғайланған. Командалар дұрыс жазылған кезде көк түске түрін
өзгертеді. Ол мәтін арасындағы қателерді жылдам табуға көмегін береді.
Черепашкаға арналған программа жекелеген командалардан тұрады. Әрбір
команда екі түрлі қысқаша және толық жазыла алады. Біз кез келген түрін
пайдалана аламыз [12].
Программаны баптау
Настройка бөлімінде кейбір параметрлерін өзгертуге болады.
Алдын ала айтылып кеткендей черепашка орыс және ағылшынша командаларға
түсінеді. Бұдай былайға жұмыс орыс тілімен жұмыс істеуге бағытталғандықтан,
жұмыс басында орыс тілін таңдаймыз. Орыс тілін қою үшін Настройка менюінен
Настройка kTurtle пунктін таңдаймыз (сурет 5).
Сурет 5. Орыс тілін қою үшін Настройка менюінен Настройка kTurtle ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz