Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Teoretichesky_blok_kaz.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
126.02 Кб
Скачать

Теориялық блок Қазіргі кездегі программалау тілдері

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • ЭЕМ үшін программалар түрінде – орындаушы компьютер болып табылатын программалаудың кез-келген алгоритмдік тілінде (Бэйсик, Паскаль, Си++ және т.б.).

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

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

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

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

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

Терминатор

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

Мәліметтер

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

Құжат

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

Үрдіс

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

Модификация

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

Шешім

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Мысалдар:

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