Блоктың пішімі
|
Оның атқаратын жұмысы
|
Процесс
Таңдау
Модификация
Құжат
Енгізу, шығару
Бастау, аяқтау
Қосалқы программа
Түсініктеме
|
жоқ иә
|
Математикалық өрнектерді есептеу
Есеп шығару жолын таңдау
Цикл (қайталау) басы
Нәтижені шығару, қағазға басып алу
Мәліметтерді енгізу (шығару)
Алгоритмдерді бастау, аяқтау
Қосалқы программаларға кіру және шығу
Схеманы, формулаларды түсіндіру
|
1.1-сурет
Сонымен алгоритм блоктармен немесе геометриялық көпбұрыштармен өрнектеледі. Әр блоктың ішінде орындалатын іс-әрекеттің мазмұны жазылады. Символдардың бір кіру және шығу сызықтары болуға тиіс. Мысалы, у=a+b формуласы бойынша есептеу тіктөртбұрыш арқылы кескінделетін есептеу блогы (3-блок) арқылы өрнектеледі. Ал нәтижені қағазға басу үшін көпбұрышты құжат алу блогын (4-блок) пайдаланып, оның ішіне нәтиженің атауларын жазамыз. Жоғарыда көрсетілген у=a+b формуласымен есептеу үшін a және b-ның сандық мәндерін ЭЕМ-ге енгізіп (2-блок), содан кейін қосу амалын орындап, ақарында у-ті қағазға басып шығарып, жұмысты тоқтататыз. Осы алгоритмнің схемасы 1.2-суретте көрсетілген.
1.2-сурет
Мысал:
Сызықтық теңдеуді шешу алгоритмінің блок-схемасын құрайық.
иә жоқ
иә жоқ
ІІІ. Есептеу әдістерінің негізгі түрлері: сызықтық
Алгоритмдер блоктардың өзара байланысуына қарай үш түрлі бірыңғай құрылымға – сызықтық, тармақтық және циклдік болып үш топқа бөлінеді.
Сызықтық құрылым. Қарапайым алгоритмдік құрылым операцияның сызықтық жүру реті болып табылады. Мұндай алгоритмдік құрылымның программалық жүзеге асуын сызықтық программа деп атайық. Сызықтық алгоритм және сызықтық программа қарапайым есептерді шешуге арналған. Онда бірнеше мүмкін альтернативалардың ішінен таңдауы және қандай да бір операциялардың циклдік қайталануы қарастырылмаған.
Сызықтық құрылымды алгоритм немесе қарапайым сызықтық алгоритм іс-әрекеттердің орындалу ретіне қарай тізбектеле орналасқан блоктардан тұрады. Амалдардың бұлай бірінен соң бірі реттеліп орындалу тәртібін табиғи атқарылу дейді.
Мысалы:
Төменде көрсетілген Z функциясының сандық мәнін есептеп шығару алгоритмін жасау керек болсын
Z=ax2+b+cos(ax2+b)- (ax2+b).
Бұл функцияның мәнін табу үшін алдымен жақшада тұрған (ax2+b) көпмүшелігін жеке есептеп алу қажет, себебі ол тізбек үш рет есептеліп оған машина уақытты көп кетіреді. Сонымен, қарастырылған алгоритм қарапайым сызықтық алгоритмнің (1.3-сурет) мысалы болып табылады.
Мұндағы 2-блок – a, b, x мәндерін пернелерден программаға енгізу блогы, 3-блок t-ның, ал 4-блок Z функциясының мәндерін есептейді. 5-блок x айнымалысының және Z функциясының нәтижесін қағазға басып шығарады.
1.3-сурет
IV. Есептеу әдістерінің негізгі түрлері: тармақталған
Тармақталу алгоритмінің құрылымы қарапайым болып келеді. Мұнда арифметикалық теңсіздік (теңдік) түрінде берілген логикалық шарт тексеріледі. Егер ол орындалса, онда алгоритм бір жолмен, ал орындалмаса екінші жолмен жүзеге асырылады, яғни есепті шығару жолы тармақталып екіге бөлініп кетеді. Тармақталу алгоритмдеріне шартты тексеру блогы міндетті түрде кіреді.
Паскаль тілінде тармақталудың негізгі алгоритмдік құрылымының жүзеге асыратын екі операторы бар. Олар шартты оператор және таңдау операторы.
Шартты оператор «Иә» немесе «Жоқ» деп жауап беруге болатын белгілі бір логикалық шартты тексереді. Егер оның нәтижесі ақиқат, яғни құптарлық болса, онда бір программалық тармақ орындалады. Тексеру нәтижесі жалған болған жағдайда, программаның басқа бір тармағы жүзеге асырылады.
Таңдау операторы (case) бірнеше операторлардың ішінен таңдау жолымен көп тарамды тармақталуды ұйымдастырады. Тармақталу берілген шартты тексеруден басталады, шарт мәндері таңдап алынған типтердің бірі болатын бүтін, символдық, логикалық өрнек түрінде жазылады. Бұл өрнек оператор орындалар кезде белгілі бір мәнге ие болуы тиіс. Сол мән оған байланысты орындалатын оператордың белгісі рөлін атқарады. Егер өрнектің есептелген мәні көрсетілген мәннің біріне сәйкес келсе, сол қатардағы оператор орындалады.
1-мысал. У функциясын төмендегі формула бойынша есептеп шығару керек.
y=x +x, егер х0
x2+1, егер х >0
жоқ иә
1.4-сурет
Мұнда х айнымалысының таңбасына (оң, теріс) байланысты не жоғары, не төменгі формуланы таңдап алып, сол арқылы у функциясының мәнін табамыз. 2-блоктың орындалу барысында х айнымалысына белгілі бір мән беріледі де, ол мән енгізу операторлары арқылы программаға енгізілуі тиіс. Бұдан кейін енгізілген мәннің оң немесе теріс екендігі үшінші шартты тексеру блогы арқылы айқындалады. Шарттың «ақиқат» (иә) немесе «жалған» (жоқ) болуына байланысты тек 4- немесе 5-блоктардың бірі ғана орындалып, «таңдау» жүзеге асырылады. 6-блок енгізілген х айнымалысының және у функциясының сандық мәндерін экранға немесе қағазға басып шығарады.
2-мысал. ax2+bx+c=0 квадрат теңдеуін шешу алгоритмін қарастырайық. Мұнда егер дискриминант оң сан болса, онда теңдеудің нақты түбірлерін (х1, х2) табамыз. Ал, егер дискриминант теріс сан болса, онда теңдеудің комплекс түбірлерін х1,2=i бөлек тармақ арқылы есептеп шығарып, және сандарын қағазға, не экранға басып алуымыз қажет. Сонымен, алгоритмді құру жолын математикалық түрде төмендегіше жазуға болады:
x1, 2=(-bb2-4ac)/(2a), егер b2-4ac0,
=-b/(2a); =4ac-b2)/(2a), егер b2-4ac<0.
жоқ иә
1.5-сурет
Бұл алгоритмде негізгі тексерілетін шарт – дискриминанттың таңбасы. Енді осы квадрат теңдеуді шешу алгоритмін схема түрінде өрнектейік (1.5-сурет).
3-мысал. Берілген а, в , с сандарының ең кішісін табу қажет болсын
V. Есептеу әдістерінің негізгі түрлері: циклдік
Алгоритмдік құрылымның ең маңыздысының бірі цикл болып табылады. Цикл операторлардың қайталануын көрсетеді. Мәліметтерді өңдеумен немесе есептеумен байланысты программада циклді қайталанатын іс-әрекеттерді жиі орындауға тура келеді.
Математикада, экономикада көптеген есептерді шығару кезеңінде бір теңдеуді пайдаланып, ондағы айнымалының өзгеруіне байланысты оны бірнеше рет қайталап есептеуге тура келетін сәттер де жиі кездеседі. Осындай қайталап орындалатын есептеу процесінің белгілі бір бөліктерін цикл деп атайды. Осы бірнеше рет қайталанатын бөлігі бар алгоритмдер тобы циклдік алгоритмдерге жатады. Циклдер қайталану санының алдын ала белгілі және белгісіз болуына байланысты екі топқа бөлінеді. Қайталану сандары алдын ала белгілі болып келетін циклдер тобы арифметикалық цикл болып есептеледі, ал орындалу саны белгісіз циклдер – қадамдық (итерациялық) цикл болып аталады.
Практикада белгілі бір айнымалының сандық мәніне байланысты орындалатын арифметикалық циклдер жиі кездеседі. Мұнда арифметикалық прогрессияға ұқсас болып келетін циклдер ең қарапайым арифметикалық цикл болып табылады. Оны басқару қайталану кезеңінде прогрессияның заңына сәйкес тұрақты шамаға өзгеріп отырған цикл параметрінің сандық мәнімен байланысты болуы тиіс.
Мысалы:
х өзінің ең алғашқы х0 мәнімен ең соңғы хk мәніне дейін тұрақты шамаға (dx) өзгеріп отырады. Осының нәтижесінде х мынадай мәндерді қабылдайды: х0, х0+ dx, х0+2dx, … , х0+(n+1)dx, xk, мұндағы n – циклдің қайталану саны, ол былай анықталады:
иә
1.7-сурет
жоқ
1.6-сурет
Арифметикалық цикл үшін y=f(x) функциясының есептелу жолы алгоритм ретінде 1.6-суретте көрсетілген. Мұндағы 3-ші, 6-шы, 7-блоктар циклді ұйымдастыру үшін қажет. Олар цикл параметрінің алғашқы мәнін, өзгеру қадамын белгілеп және оның ең соңғы мәніне жеткен-жетпегенін тексереді. Ал 4- және 5-блоктар бірнеше рет қайталанып циклдің өзін құрайды. 7-блок шартты тексеру жолымен қайталану процесін ұйымдастырады.
Алгоритм схемасын салуды және программаны жазуды жеңілдету үшін цикл алгоритмдері ықшамдалған түрде «модификатор» немесе «цикл басы» блогын пайдалану арқылы жазылады. Онда 1.7-суретте көрсетілген 3-ші, 6-шы, 7-блоктардың орнына «цикл басы» блогы орналасады. Ол алтыбұрыш тәрізді геометриялық фигурадан тұрады және оның міндетті түрде екі кіру және шығу сызығы болуға тиіс. Осы блокты пайдалану арқылы жоғарыда келтірілген 1.7-суретте көрсетілген түрде кескінделеді. Параметрдің алғашқы мәні оның қадамы dx оң сан болады. Керісінше, параметрдің алғашқы мәні оның соңғы мәнімен артық болса, онда қадам теріс сан болады.
иә
жоқ
1.8-сурет
Қадамдық циклдер. Алгоритмдік құрылымның ең маңыздысының бірі цикл болып табылады. Цикл операторлардың қайталануын көрсетеді. Мәліметтерді өңдеумен немесе есептеумен байланысты программада циклді қайталанатын іс-әрекеттерді жиі орындауға тура келеді.
Циклді орындаудың алдында, оның қайталану саны белгісіз болған жағдайда қадамдық циклдер пайдаланылады. Мұнда циклді жазу үшін тек қана «шартты тексеру» блогын қолдану қажет, ол циклді аяқтау үшін белгілі бір шартты тексереді. Қадамдық циклдердің схемасын сызғанда модификаторды (алтыбұрышты) қолдана алмаймыз, себебі алдын ала циклдің неше рет қайталанатыны, бізге белгісіз.
3-мысал. Z=xk/k2 функциясының мәндерін k=1, 2, 3, … және Z 0.0001-ден артық болған жағдайда есептейік, мұндағы 0х1. Бұл мысалда алдын ала цикл неше рет қайталанатынын айта алмаймыз, өйткені бізде тек k параметрінің алғашқы мәні мен қадамы ғана белгілі. Сонымен қатар Z функциясының 0.0001-ден артық болуы циклді қайталау шарты болып есептеледі. 1.8-суретте осы есептің алгоритм схемасы көрсетілген.
4-мысал. қатарының мүшелеріне дейінгі шексіз қатар мүшелерінің мәнін есептеуге арналған блок-схема құру керек (1.9-суретте көрсетілген).
1.9-сурет
Студенттің өзін тексеру сұрақтары
-
Алгоритм дегеніміз не?
-
Алгоритмдерді жазудың қандай тәсілдері бар?
-
Алгоритмді блок – схема ретінде жазуда қандай блоктар қолданылады?
-
Алгоритмдердің қасиеттері нені білдіреді: түсініктілік, анықтылық, орындалушылық, массалылық?
-
Сызықтық алгоритм деген не?
-
Тармақталған алгоритм деген не?
-
Циклдық алгоритм деген не?
-
Компьютерде есептерді шешу этаптары?.
Әдебиеттер: (2) бет. 5-19
2 апта
Тақырып 2. Программалау тілдері
Дәріс жоспары
1
|
Тілдің жалпы суреттемесі
|
|
2
|
Алфавит, сөздер, синтаксис, тілдің негізгі элементтері. Константалар, айнымалылар
|
|
3
|
Программаның жалпы құрылымы. Мәліметтер түрлері
|
|
4
|
Стандартты айнымалыларды суреттеу
|
|
5
|
Студенттердің өздік жұмысы (СРС)
|
|
Сабақ мақсаты
Білімділік
-
Студенттерге программалау тілі жайлы жалпы мағлұмат беру арқылы программа элементтерімен таныстыру
-
Тілдің негізгі ұғымдары алфавит, сөздер, синтаксис, өрнектер және мәндер типтері, константалар, айнымалылар туралы мағлұмат беру
Дамытушылық
-
Студенттердің өрнектерді Паскаль тілінде құра алатынын қадағалау және өздігінен тапсырмаларды орындауы
-
Логикалық өрнектің нәтижесін анықтай алатынын қадағалау
-
Студенттердің қабілетін дамыту.
І. Тілдің жалпы суреттемесі
Алгоритмдерді ЭЕМ-ге түсінікті текст ретінде жазуға арналған қарапайым жасанды тіл программалау тілі болады, оны командалар тілі немесе кодтар (арнайы таңбалау) тілі дейді. ЭЕМ тек өз ана тілінде, яғни машиналық тілде жазылған программаларды ғана орындай алады. Алайда, машина тілінде программа жазу өте күрделі жұмыс, өйткені ол тек екілік (он алтылық) жүйедегі кодтардан тұрады және әр машинада әр түрлі машиналық тіл қолданылады.
Программа жазуды жеңілдету үшін математикалық формулаларды кеңінен қолданатын, ағылшын тілінің негізінде жасалған алгоритмдік тілдер Бейсик, Фортран, Паскаль, СИ т.б. кеңінен қолданылады. Алгоритмдік немесе программалау тілі – жазу ережелері қарапайым жасанды тіл. Оның машина тілдерінен айырмашылығы – табиғи ағылшын тілі негізге алынып, кең тараған математикалық таңбалармен толықтырылып жасалған. Сондықтан алгоритмдік тілдерде программа жасау адамдарға әрі жеңіл, әрі ыңғайлы болып келеді. Алгоритмдік тілдер автоматты түрде ЭЕМ-нің көмегімен аудармашы программалар арқылы машиналық тілге көшіріледі. Алгоритмдік тілді машина тіліне тікелей аударатын үлкен программаларды жеңілдете отырып, ЭЕМ-де есеп шығару процесін оңайлатады, алайда онда есеп шығару уақыты көбейеді.
Алгоритмдік тілдер машинаға және мәселеге бағытталған болып екіге бөлінеді. Машинаға бағытталған тілдердің машина тілінен айырмашылығы, олар ЭЕМ-нің ерекшеліктерін есепке ала отырып әріптерді де пайдаланады. Қазіргі кезде машинаға бағытталған тілдерде тек маман программалаушылар ғана жұмыс істейді. Оларға – автокод, макроассемблер, ассемблер тәрізді тілдер жатады.
Мәселеге бағытталған тілдер шығарылатын есептердің ерекшеліктерін еске ала отырып, есептің математикада жазылу тіліне жақындастырылады. Бұларға – Бейсик, Фортран, Паскаль, СИ тағы сол сияқты тілдер жатады.
Негізінде ЭЕМ-де кез келген программалау тілінде жазылған есеп машина тіліне аударылып барып орындалады. Есептің орындалу кезеңдерін төмендегі суретте көрсетілген схема түрінде кескіндеуге болады.
Қазіргі кезде үш жүзге жуық алгоритмдік тілдер тараған. Олардың әрқайсысы белгілі бір мақсаттарда қолданылады. Мысалы, Фортран ғылыми-техникалық (инженерлік) есептерді шешу үшін, ПЛ/1 экономикада қолдану үшін, Паскаль - өндірісте, оқуда, ал Бейсик - дербес компьютерлерде диалог режимінде жұмыс істеуге қолданылады.
Электрондық есептегіш машиналар – алуан түрлі есептерді шешуге арналған ақпараттарды өңдеудің жоғары өнімді құралы. Алайда ЭЕМ – бар болғаны адам құрастырған жарлықтарды тез және дәл орындайтын автомат. Мұндай жарлықтарды дайындау, яғни есептерді шешудің барлық жолын біле тұра жобалау – есептегіш машинаны пайланумен байланысты әрекетінің ажырамас бөлігі. Жетілдірілген есептегіш машиналар есептеу программаларының зердесін сақтайды, сонда адамға тек программаны құрастырып және машина зердесіне орналастыру ғана қалады, ал барлық қалғанын – тікелей есеп шешуді – машина автоматты түрде, яғни адамның араласуынсыз жүзеге асырады. Бұл жағдайда машина программалы есептегіш техникаға айналады да, онда есепті шешу процесі тікелей программаны құрастыруға байланысты болады. Демек, есептегіш машинаға арналған программа негізінде берілген есепті шешу алгоритмі, яғни нәтижеге жеткізуші әрекеттер тізбегінен тұратын дәл жарлықтар құрайды. Алгоритм программаға қарағанда өте жалпы ұғым, ал программа берілген есептегіш машинаға түсінікті тілде жазылған алгоритм. Бұдан программалы басқарылатын техника көмегімен есептерді шешу процесінің негізгі бөлігі - осы есепті шешу алгоритмдерді дайындау екендігі көрінеді. Есепті шешу алгоритмі айқындалғанда, ол еш қиындықсыз программалау тілінде беріледі. Басқа сөзбен айтқанда, программалы басқарылатын есептегіш машинада есепті шығарудағы негізгі процесс – алгоритмдеу, яғни алгоритмдік жарлықтарды белгілі бір ережеге сәйкес қарастырып жазу. Алгоритм құру мәселесі алгоритм жазуға қандай тілді пайдаланатынымызға байланысты болатындығы бұрын айтылғандардан көруге болады.
Жалпы айтқанда, тіл – кейбір мағлұматтарды өрнектеу және жеткізу құралы. Осы мағынада адамдардың қатынасу тілі, математика тілі, автоматтар мен адамдардың қатынасу тілі туралы айтуға болады. Автоматтар өзара қатынастың ерекше тілдердің бар екендігі туралы да айтуға болады.
Жоғарыда атап көрсетілгендей, алгоритмдерді жазу үшін пайдаланатын тілдің сипаты орындаушының мүмкіндіктеріне байланысты. Орындаушылардың мүмкіндігі тіл құралдарының бірнеше деңгейін анықтайды деп те айтуға болады.
Тексеру сұрақтары 2 апта
-
Программалау тілі деген не?
-
Машиналық тіл деген не?
-
Төменгі деңгейдегі программалау тілі деген не? Мысал келтіріңіз.
-
Жоғары деңгейдегі программалау тілі деген не? Мысал келтіріңіз.
-
Программа деген не?
-
Трансляция деген не?
-
Транслятор деген не?
-
Компилятор деген не?
-
Интерпретатор деген не?
-
Қандай файлдар ИСП TP үшін негізгі болып табылады?
-
ИСП TP – да файлдармен қандай негізгі операциялар орындау қажет: жаңа файл құру, сақтау, ашу?
-
ИСП TP – да файлдармен қандай негізгі операциялар орындау қажет: жабу, орын ауыстыру, екпінді терезені ауыстыру, көлемін өзгерту?
-
Қалай программаны орындауға жібереміз, нәтижені қарау?
3 апта
Достарыңызбен бөлісу: |