«Алгоритм және оның күрделілігі»



жүктеу 1.02 Mb.
бет1/8
Дата27.04.2016
өлшемі1.02 Mb.
  1   2   3   4   5   6   7   8


ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ

СЕМЕЙ ҚАЛАСЫНЫҢ ШӘКӘРІМ АТЫНДАҒЫ МЕМЛЕКЕТТІК УНИВЕРСИТЕТІ




3 деңгейдегі СМК құжаты

ПОӘК


ПОӘК


042-39.1.11/03-2013

«Алгоритм және оның күрделілігі» пәні бойынша оқу-әдістемелік материалдар

02.09.2013ж

№1 басылым






«Алгоритм және оның күрделілігі»

ПӘНІН ОҚЫТУ-ӘДІСТЕМЕЛІК КЕШЕН
6М060200- «Информатика» мамандығына арналған
ОҚУ-ӘДІСТЕМЕЛІК МАТЕРИАЛДАР

Семей

2013.

МАЗМҰНЫ





Глоссарий






Дәрістер






Машықтану сабақтары






Студенттердің өздік жұмыстарының жоспары






1. Глоссарий

1.1 Алгоритм - белгілі бір мәселені шешу үшін қойылатын мақсатқа бағытталған іс-әрекеттердің тізбегі.

1.2 Шама- есепті шығару барысында қолданылатын белгілеулер

1.3 Тұрмыстық алгоритм - cөз түріндегі әрекеттер тізбегін күнделікті өмірде ешбір роботтың, техниканың көмегінсіз адам өздігінен орындаса ондай алгоритмдер

1.4 Есептеу алгоритмдері - формула көмегімен шығарылатын, есептеуді қажет ететін, күрделілігіне байланысты белгілі бір техниканың араласуын талап ететін алгоритмдер

1.5 Рекурсивті алгоритм - есептеу алгоритмінің бір түрі. Оның нәтижесі формуланың ішіндегі бір параметрінің мәні басқа бір өзгеріп отыратын параметрден тәуелді болудан шығады.


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

1.7 Сызықты алгоритмдер - операциялардың реті алгоритмнің өз структурасымен анықталған және енгізетін шамалардың жеке мәндеріне тәуелсіз алгоритмдер.

1.8 Тармақты алгоритм - енгізетін шамалардың жеке мәндеріне тәуелді, бірнеше әрекеттердің біреуінің орындалуын тағайындау.

1.9 Циклдік алгоритм - енгізетін шамалардың жеке мәндеріне тәуелді бір немесе бірнеше әрекеттердің қайталануын тағайындау.

1.10 Енетін шамалар немесе аргументтер - алгоритм үшін бастапқы берілгендер немесе алғашқы информация болып табылатын шамалар.

1.11 Шығатын шамалар - алгоритмнің орындалу процесінде алынатын өңделген информацияларды сақтауға арналған шамаларды

1.12 Аралық шамалар- енетін шамаларға да, шығатын шамаларға дажатпайтын алгоритмді орындау процесінде аралық мәндерді сақтауға арналған шамаларда


2. Дәрістер

1-тақырып: «Алгоритм ұғымы. Анықтамасы. Қасиеттері. Түрлері. Алгоритмді жазу әдістері. Алгоритм модельдері»

Дәріс жоспары:

  1. Алгоритмнің шығу тегі. Алгоритмнің тарихы. Алгоритмнің тұрмыста қолданылуы. Алгоритмнің қажеттілігі. Алгоритмнің қызметі мен мақсаты.

  2. Алгоритмнің ЭЕМ-дегі рөлі. Информатика ғылымындағы алгоритм. Оның мақсаты мен міндеті.

  3. Алгоритмдік конструкциялар.

  • тізбектелген конструкция

  • тармақталған конструкция

  • циклдік конструкция

  • рекурсивті конструкция

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

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

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

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

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

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

Қай алгоритм болса да негізгі қасиеттерді қанағаттандыруы шарт:


  1. Дискреттілік қасиет – орындалатын әрекеттер тізбегі бірнеше қадамдарға бөлініп үздікті құрылымды болуы керек. Және қадамдардың орындарын ауыстыруға болмайды.

  2. Түсініктілік қасиеті – орындаушыға түсінікті және орындай алатын нұсқаулар жиынынан командалардан тұруы қажет. Орындаушыдан біртұтас әрекет жасауды талап ету керек. Алгоритм орындаушыға бағытталуы керек.

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

  4. Ортақтық қасиеті – бір алгоритм барынша үлкен класқа жататын есепті шешетіндей болуы керек, тек бастапқы берілгендерді өзгерту арқылы ғана шешімді табуға болатындай. Мысалы квадрат теңдеуді шешу алгоритмін ах2+bx+c=0 жағдайына құрған дұрыс болады, ал 4x2+5x-1=0 түріне құрса онда алгоритм дербес болады, неғұрлым жалпы болуы керек.

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

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

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

Енгізетін шамалардың жеке мәндеріне тәуелді, бірнеше әрекеттердің біреуінің орындалуын тағайындауды тармақты алгоритм дейді.

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



    • шарты алдынан берілген – «әзірше» циклі,

    • шарты соңынан берілген цикл – «дейін» циклі,

    • параметрлі цикл.

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

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

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

Алгоритмнің берілу тәсілдері:



    • формула бойынша

    • таблицалық түрде

    • блок-схема көмегімен

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

  1. қатынас тілі

  2. математика тілі

  3. автоматтар тілі деп бөлінеді.

Алгоритмді жазу үшін пайдаланылатын тілдің сипаты орындаушының мүмкіндіктеріне байланысты.

Орындаушылардың мүмкіндігі тіл құралдарының деңгейін анықтайды.



  1. Тілдің деңгейі алгоритмдік жазу командаларының тәптіштеліп нақтылану дәрәжесіне тәуелді. Яғни орындаушы үшін элементар деп есептелетін амалдың шын мәніндегі элементарлық дәрежесі ашып көрсетілуі тиіс.

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

  1. командаларды тұжырымдау барысында машинадан осы машина үшін қатаң анықталған операцияларды орындауды ғана талап ету.

  2. Берілген машинаның тілі үшін қабылданған нұсқаулар құру ережелерін ғана пайдалануға болады.

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

Тілді формальдандыру адам тілінің көркемдік мүмкіндіктерін азайтады.

  1. Тілдің деңгейі адам үшін түсініктілік дәрежесіне де тәуелді. Алғашқы ЭЕТ- мен қатынас цифрлар тілі деңгейінде болды. ЭЕТ жаппай таралғандықтан адам мен машинаның қатынасуын қамсыздандыратын тілдің жаңа деңгейлері пайда болды. Қазір тілді «табиғиландыру» проблемасы алға қойылып отыр. Бұл проблема машинаның өзін жетілдірумен қатар жүріп келеді. Ғылыми , инженерлік тілдер табиғи тіл мен математика тілін жымдастырады. Олар: Алгол, Фортран, Бейсик, паскаль, т.б.

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

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

Алгоритмтік тіл – алгоритмдерді біркелкі және дәл біркелкі жазудың және оларды орындаудың ережелер мен белгілер жүйесі.

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

Алгоритмдік тіл – ұғымдары:


  1. алфавитті – тілде қолдануға болатын символдардың, белгілердің жиынтығы.

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

  3. Семантикасы - әр түрлі командалардың қызметі мен орындалу жолы.

Алфавитте символдар, тілдің көмекші сөздері (басы, егер, онда, әйтпесе, соңы т.б.) бар. Олардың асты сызылуы керек.

Тілдің негізгі объектілері – командалар. Олар нұсқауларды жазу үшін қолданылады. Олар екі түрлі:



  1. Жай командалар

  2. Құрама командалар

Жай командалар нақтылы орындалатын элементар әрекеттердің шектеулі сипаттамасы. Оған меншіктеу, көшу, бос командалар жатады.

Құрама командаларға тарамқталу, қайталану командалары жатады.

Алгоритмдік тілде алгоритмнің сипатталауы

Басы

Жай команда 1;

Жай команда 2;

Егер шарт

Онда 1 – серия

Әйтпесе 2 – серия

Әзір шарт

Ц.б.

Құрама команда



Ц.с.

Бітті . соңы



Алгоритмнің түрлері. Алгоритмді жазу әдістері. Алгоритм модельдері

Алгоритмдік конструкциялар:



  1. Сызықты

  2. тармақты

  3. қайталану

  4. рекурсивті

1969 жылы В. Дейкстр өзінің «деректер структурасы және алгоритмдер» статьясында кез келген алгоритмді жазу үшін негізгі 3 конструкцияның – сызықты, тармақты, қайталану - жеткілікті екенін дәлелдеген. Сызықты алгоритмді тізбекті алгоритм деп те айтады.

Анықтама. Р алгоритмі тізбекті алгоритмдік конструкциямен қарастырылады, егер Р алгоритмінің әрбір қадамы бір рет орындалса, және әрбір i-ші қадамнан соң (i+1)-ші қадам орындалып, i-ші қадам соңғы қадам болмаса.

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

Анықтама. Р алгоритмі қайталану алгоритмдік конструкциямен қарастырылады, егер алгоритмнің қандай да бір қадамдар тобы бастапқы берілгендерге байланысты бірнеше рет қайталануы керек болса.Кез келген циклдік конструкцияның ішінде тармақты конструкция да, тізбекті конструкция да болады.

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

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

Алгоритмнің моделі екіге бөлінеді:


  1. теориялық

  2. практикалық

Модель универсалды – жан–жақты, максимальды қарапайым, есепті шешуде минимальды есептеу құралын қажет ететін болуы керек.

Практикалық, қолданбалы модельде есептеу тиімділігі, программалау тиімділігі болу керек.

Теориялық модельдеу үш бағытта жүреді:


  1. бүтін санды аргументтен тәуелді сандық функцияны есептеу алгоритмі, олар есептелетін функция деп аталады. Есепті шешетін рекурсивті функция құру мүмкіндігінің бар екенін Черч, Гегель, Клини ғалымдар ашты.

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

  3. А.А. Марков – математик, қалыпты алгоритм түсінігін енгізді.

Жалпы алгоритмдердің келесі түрлері болады:

    1. Тұрмыстық

    2. Есептеу

    3. Рекурсивті

    4. Қосалқы

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

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

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

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

Алгоритмдер құрылымына қарай үшке бөлінеді:


  1. Сызықты

  2. Тармақталған

  3. Қайталану немесе циклдік

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

Енгізетін шамалардың жеке мәндерінен тәуелді бірнеше әрекеттердің біреуінің орындалуын тағайындайтын алгоритмдерді тармақталған алгоритмдер дейді.


Циклдік алгоритмдер

2 түрлі:


  1. «дейін» - шарты алдын – ала берілген

  2. «әзірше» - шарты соңынан берілген

«дейін» циклында белгілі шарт тексеріліп, егер ол ақиқат болса ғана цикл денесі қайталанып орындалады. Егер шарт бірден жалған болса, цикл денесі бір де бір рет орындалмайды.

Цикл денесі дегеніміз – бірнеше рет қайталанып орындалатын әрекеттер тобы.

Блок –схемасы

«кейін» циклында цикл денесі берілген шарт ақиқат болғанға дейін қайталанады.Алдынғы алгоритмнен ерекшелігі – цикл денесі шартқа дейін ең болмағанда 1 рет орындалады.



Блок – схемасы


...

Иә

жоқ

...

Өзін тексеру сұрақтары


  1. Алгоритмнің қасиеттері?

  2. Алгоритм түрлері?

  3. Алгоритм қолданыстары?

Ұсынылатын әдебиеттер

  1. Е. Бидайбеков, Е. Медеуов, А. Ниязбаев. Информатика бастамалары (алгоритмдеу). Алматы, 1990ж.

  2. Вирт Н. Алгоритмы + структуры данных. Программы. – СПб, 2001ж.

  3. Симонович С., Евсеев Г.Практическая информатика: Инфорком- Пресс, 1998г.

  4. Острейковский В.А. Информатика, Москва, 2000 г.

  5. Петров А.В., Алексеев В.Е., Ваулин А.С., Петрова М.А., Титов М.А., Шкатов П.Н. Вычислительная техника и программирование, Москва, 1990.



2-тақырып: “Алгоритм ұғымын тереңдету, анықтау. Тьюринг машинасын программалау. Пост алгоритмдік машинасы алгоритм ұғымын дәлелдеуші”

Дәріс жоспары:

  1. Алгоритм – математиканың арнайы бөлімі.

  2. Джордж Бульдің математикалық логикасы.

  3. Логика мен алгоритмнің байланысы.

  4. Әртүрлі оқиғаларға алгоритм құру әдістері.

  5. Тьюринг машинасына мысалдар.

  6. Тьюринг машинасының математикалық сипаттамасы.

  7. Алгоритм анықтамасын дәлдеу.

  8. Пост машинасы.

  9. Пост машинасы мен Тьюринг машинасын салыстыру.

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

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

Әрекеттерді орындауға арналған нұсқау әлдебір тілдің араласуымен әрбір орындаушыға түсіндіріледі. Бұл тілдің қызметші сөздері , әрекетті түсіндіретін немесе бейнелейтін командалары, оларды біріктірудің синтаксистік ережесі болады. Командалар тізімі орындаушының командалар жүйесі (СКИ) деп аталады. Дискретті ақпаратты өңдеуде қолданылатын элементарлы әрекеттер бір таңбаны басқамен алмастыру болып табылады. Кешенді әрекеттерді орындаушы абстрактілі және шын мәніндегі құрылғы болуы мүмкін.

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

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

Мнемониканы машиналық кодқа ассемблер тілі орындайды.

Элементарлы әрекеттерді біріктіру командалары жоғары деңгейдегі программаларда пайда болды. Тіл трансляторы берілген команданы элеменарлы қадамдарға аударады.

Одан гөрі элементарлы командаларды интеграцилауды қолданьалы программалар орындайды. ОКЖ – і мәзір, перне, терезе т.б. интерфейсті басқару командаларынан тұрады.



  1   2   3   4   5   6   7   8


©netref.ru 2017
әкімшілігінің қараңыз

    Басты бет