Лекция 12-14. Алгоритм ұғымы. Оның қасиеттері, түрлері. Тілдер және программалау әдістері
Дәрістің мақсаты: алгоритмнің, программаның және программалаудың негізгі ұғымдарымен таныстыру. Программа құру принципін, алгоритмнің базалық құрылымын меңгерту.
Жоспар:
1. Алгоритм ұғымы.
2. Алгоритмнің қасиеттері және оларды сипаттаудың әдістері.
3. Алгоритмнің түрлері.
4. ЭЕМ-де есеп шығару кезеңдері
5. Программалау тілдері және әдістері
6. Программалау тілдерінің даму тарихы
7. Программалау тілдерінің жіктемесі
Кілттік сөздер:алгоритм, қасиеттер, классификациясы, программалау.
Иллюстрациялық материал: Электрондық оқулық, слайд, схема.
"Алгоритм" сөзі IX ғасырдағы Орта Азияның ұлы математигі әл-Хорезми атының латынша жазылу – аlgorithmi – қалпынан шыққан.
Орындаушының белгіленген мақсатқа жетуіне бағытталған түсінікті де дәл нұсқаулары алгоритм деп аталады. Алгоритмнің басқаша тағы да бір анықтамасы:
Алгоритм дегеніміз - анықталған мақсатқа жету үшін орындаушыға арналған, орындалу тәртібі ұйымдастырылған, түсінікті, ықшамды, шектелген нұсқаулар тізбегі. Алгоритм мынадай қасиеттерге ие: дискреттілік, анықтылық, жалпылық, нәтижелік.
Алгоритм айқын, аяқталған әрекеттер болып табылатын жеке қадамдарға бөлінуі керек. Орындаушының келесі қадамға етуі алдыңғысын аяқтағаннан кейін ғана мүмкін. Алгортимнің жеке кадамдардан құрыла алатын касиеті дискреттілігі деп аталады.
Алгоритмнің әрбір нұсқауы немесе командасы орындаушыға түсінікті болуы тиіс, яғни олар бір мағынада түсініліп, қайталанатын алғашқы деректер бойынша бірыңғай нәтижелерге әкелуі қажет. Алгортитмнің бүл қасиеті анықталгандыгы деп аталады.
Алгоритмнің нақты бір мәселені ғана емес, бүкіл бір типті мәселелерді шеше алатын мүмкіндігі бар. Мысалы, квадрат теңдеуді шешетін алгоритм ін түбірін кез келген коэффициент мәндерінде табуға мүмкіндік береді, ал жол жүру ережелері баршаға ортақ. Алгоритмнің бұл қасиеті жалпылығы деп аталады.
Айқын белгіленген әрекеттер тізімнің әркайсысы нәтижеге жеткізе бермейді. Мысалы шахматта 10120 жүрістен тұратын ұтылыссыз ойын стратегиясы бар, бірақ оны түгел орындауға адам баласының ғүмыры жетпейді. Сондықтан да кез келген алгоритмді орындағанда белгілі бір нәтижеге қол жеткізу керек алгоритмнің бұл қасиеті нәтижелігі деп аталады.
Алгоритмдердің жасалуының үш негізгі түрі бар: сызықтық, тармақцталған, циклдік.
Егер орындаушы командаларды бірінен соң бірін ілесу тәртібімен орындайтын болса, алгоритм сызықтық деп аталады.
Орындаушының әрекеттері қандай да бір шартты нұсқауларға тәуелді орындалатын болса, ол алгоритм тармақталган болып саналады.
Жеке командалар немесе команда топтары бірнеше рет қайталанатын болса, алгоритм циклдік деп аталады.
Блок-схемалар. Компьютерде есеп шығару кезеңдері.
Алгоритмнің берілуінің ең көрнекі әдісі болып блок-схемалар түрінде берілуі болып табылады. Блок-схема - есептеу амалдарын көрсетуге арналған графикалық бейнелер жиынтығы болып табылады. Алгоритм бұл жерде бағытталған байланысы бар геометриялық фигуралармен сипатталып беріледі. Геометриялық фигуралардың ішіне орындалып жатқан әрекеттерді түсіндіретін ақпарат орналасқан. Блоктардағы сызықтар блоктар арасындағы байланыс функцияларын орындайды. Байланыс сызықтарының бағыттары, егер олар жоғарыдан төмен немесе солдан оңға қарай бағытталған болса, үшкір сызықшамен (стрелкамен) белгіленбеуі мүмкін. Блок-схема түрінде сипатталған алгоритм орындалатын әрекеттер көрнекілігін арттырады.
|
Алгоритмдерді бағдарламалау тілінде көрсету - багдарлама деп аталады. Багдарламалау тілі дегеніміз - бағдарлама жазуға арналған тіл. Компъютерде есеп шыгару кезеңдері:
1. Математикалық модель құруды қамтитын есептің қойылуы (есептің
математикалық қойылуы);
2. Есеп шешудің алгоритмін жазу;
3. Бағдарламаны құрастыру;
4. Бағдарламаны жөндеу;
5. Компьютерде есепті шешу және нәтижені талдау.
Автоматты цифрлы есептеуіш машиналарды құруға алып келген революциялық пікірлердің бірі XIX ғ. 20-шы жылдары Чарльз Бэббидж айтқан есептеуді- келешекте автоматтылыққа, программаға жүзеге асыру үшін машина әрекеттерінің ретін алдын-ала жазу туралы ойы болды. Бэббидж пайдаланған перфокарталардағы программалар жазбасынан бастап программалау тарихы басталады.
Ч. Бэббидждің замандасы Аду Лавлейс аналитикалық машинаның құндылығын бағалаған жер шарындағы 1-ші программист. Ол теориялық түрде программалауда пайдаланылатын есептеу тізбегінің кейбір тәсілдерін басқаруды өңдеді және қазіргі заманғы прогаммалау тілдері үшін маңызды болып табылатын конструкция – циклды сипаттап берді.
Программалау тілдерінің тарихындағы революциялық мезет - арнайы символдардың көмегімен машиналық командаларды кодтау жүйесінің пайда болуы болды. Мұны Пенсильван университетінің қызметкері Джон Моучли ұсынды. Моучли ұсынған кодтау жүйесі оның компаниясының қызметкеріөзінің барлық өмірін компьютер мен программалауға арнаған Грейс Мюррей Хоппер деген қызметкерді қызықтырды. Ол жер шары бойынша 1-ші үлкен цифрлы компьютерлердегі 3-ші программист болғандығын еске алады. Марк – 1 компьютерінде жұмыс жасауда Хоппер және оның тобы көптеген мәселелермен қақтығысты және олар ойлап тапқандардың барлығы жаңа болды. Олар ішкі программаны ойлап тапты. Сонымен бірге программалау техникасының іргелі ұғымдарының бірі баптауды алғаш болып енгізді (1945). Debugging (насекомое) –баптау.
40-шы жылдарыдың соңында Джон Моучли жоғарғы деңгейдегі дөрекі программалау тілі болып табылатын “Short Code” атаудағы жүйесін құрады, Онда программист шығарылатын есепті математикалық формула түрінде жазып, содан кейін арнайы кестені пайдаланып, символдарды кезекпен аударып, бұл формулаларды екі литерлі кодтарға түрлендірді. Болашақта компьютердің арнайы программасы бұл кодтарды екілік машиналық кодқа айналдырды. Дж. Моучли құрған жүйе дөрекі интерпретатордың алғашқысы болды.
Тек 1951 ж. Хоппер жер шарындағы 1-ші компиляторды құрды, ал 1954 ж. Хоппердің жетекшілігімен программалау тілінен және компилятордан тұратын MATH-MATIC жүйесі өңделді. Хоппер және оның тобы қолданушыларға қарапайым ағылшын тіліне жақын болатын тілде программалау болатын жаңа тіл мен компилятор өңдеуге кіріседі. 1958 ж. FLOW-MATIC компиляторы пайда болды.
50 ж. ортасы программалау облысында прогресс болуымен сипатталады. Машиналық командалы программалау ролі азайып, жаңа типтегі программалау тілдері пайда бола бастады. Бірінші және кең тараған – Фортран болды (FORTRAN, FORmula TRANslator – формула аударушысы). 1954 ж. IBM фирмасының программистер тобы өңдеген.
60-шы ж. ортасында Дартмутск колледжінің математика факультетінің қызметкерлері Томас Курц пен Джон Кемени қарапайым ағылшын тілінің сөздерінен құралған арнаулы программалау тілін құрды. Жаңа тілді “бастаушыларға арналған универсальды символикалық код” деп атады (Beginners All-Purpose Symbolic Instruction Code немесе қысқаша BASIC) (1964 ж.). PL/1 (Programm Language One, 1967), АЛГОЛ-68 (1968) .
Ресейде 50-ші жылдары Сергей Петрович Ершовтың жетекшілігімен Альфа трансляторы құрылған (Алголдың орысша версиясы). Кейініректе академик Ершов СССР-де мектеп информатикасының қалыптасуында маңызды роль атқарды.
Алгоритмдерді өңдеуді құрылымдау туралы Алголдың идеяларын дамыту 1970 ж. басында швейцар оқымыстысы Никлаус Вирт Паскаль тілін құруға алып келді. Паскаль тілі бастапқы кезде оқыту тілі ретінде құрылған, шындығында, қазіргі кезде де ол программалауға үйрететін тілдерідің негізгілерінің бірі болып отыр. Турбо-Паскаль жүйесін француз, джазист Филип Кан өңдеді. .
Программалау тілдері әртүрлі мақсатта қызмет етеді және оларды таңдау қолданушыға ыңғайлы болуымен, берілген компьютер және есеп үшін қажеттілігімен анықталады. М, Бейсик программалар жазуда кең қолданылады, Фортран математикалық және инженерлік есептерде ЭЕМ-де шығаруда классикалық программалау тілі болып табылады. Кобол (COBOL – іскерлік есептерге бағытталған жалпы тіл) тілі басқару және бизнес салаларында мәліметтерді өңдеуге арналған негізіг тіл болып ойластырылған. Біршама арнаулы тіл – ЛОГО (гректің logos-сөз) оқушылады программалауға оқытуға арналған (математика және педагогика профессоры Сейсмур Пейперт). Жеткілікті арнаулы әйгілі тіл – Пролог –жасанды интеллект жүйелерін құруға арналғанпрограммалау тілі ретінде құрылған.
Классикалық операциональды нмесе процедуралық программалау программистен есепті шығару үшін оның жеке бөліктерін сипаттауды, яғни алгоритмін және оның арнайы жазбасын тұжырымдауды талап етеді. Тілдердің негізгі ұғымдары – оператор және мәліметтер. Процедуралық тәсілде операторлар топқа- процедураларға бірігеді. Құрылымдық программалау осы бағыттың шегінен шықпайды, ол тек программалау технологиясының кейбір қажетті тәсілдерін белгілейді.
Басқа бағыт процедуралық емес программалау методологиясымен байланысқан. Оларға объектілі-бағытталған және декларативті тілдер жатады. Объектілі-бағытталған тіл тәулсіз объектілерді құрады.
Декларативті тілді пайдалануда программист ақпараттық құрылымға, олардың арасындағы байланыстарды көрсетеді.