ЕСЕП ШЫҒАРУ АЛГОРИТМІНІҢ
ӘРТҮРЛІ НҰСҚАЛАРЫН ЖАЗУДЫ
БІЛІМДІ БЕКІТУДЕ ЖӘНЕ ТЕРЕҢДЕТУДЕ ПАЙДАЛАНУ
Б.Мүсілімов, ф-м.ғ.к.,
доцент
Тараз мемлекеттік педагогикалық институты, Тараз,
Қазақстан
Информатика
курсын оқытуда тармақталыну және циклдық
құрылымды алгоритмдер және программалар тақырыптарын
оқып-үйренуде біраз күрделіліктер туындайды.
Нәтижесінде оқушылардың көбісі бұл
тақырыптарды жеткілікті деңгейде меңгермейді, шала
түсініп шығады.
Жалпы,
тармақталынған құрылымды алгоритмдер мазмұнын
және маңызын оқушылар жете түсінуі үшін
сабақ үстінде өмірден алынған мысалдарды (мысалы,екі
объектіні салыстыру алгоритмі, таңертең үйден ауа-райына
сәйкес киініп шығу алгоритмі, кофе немесе шай дайындау алгоритмі,
күні бойы іске асырылатын жұмыстарды орындау алгоритмі, көшеден
өтуге светафорды пайдалану ережесі алгоритмі, т.с.с.) көптеп
келтіруге және сол бағытта оларға жеке тапсырмаларды үйге
өз беттерінше орындауға беруге (ұсынуға) болады. Ондай бір-біріне
ұқсас мысалдарға арнап алгоритм құру барысында
оқушылар тармақталынған құрылымды (структуралы)
алгоритмдер мазмұнын жете саналы түсіне бастайды, оларды
жазуға машықтанады және олардың ерекшелігін,
маңыздылығын терең түсінетін болады. Мысалы, берілген
екі санның үлкенін (кішісін) табу есебін қарастырғаннан
кейін бірден үйге үш санның үлкенін (кішісін) табуды
жаттығу есебі ретінде берген жөн, тиімді.
Мұндай
есептерді шығаруда бастапқыда басты назарды есептің
қойылуына және оның моделін жазуға, содан кейін барып
оқушыларға есепті шығарудың алгоритмінің
әртүрлі нұсқаларын жаздыртуға назар
аударған жөн. Егерде оқушылар есепті шығарудың
алгоритмінің әртүрлі нұсқаларын өз
беттерінше жазып жатса, онда олар тақырыпты және оқулық
материалды дұрыс түсініп отыр деген қорытынды жасауға
болады.
1 – сурет
Мысалы,
берілген екі санның және үш санның үлкенін
табудағы сәйкес ұқсастықтарға назар
аударалық:
-
есептің қойылуы:
а)
бастапқы берілгендер – a, b және a, b,c;
б) аралық
нәтиже – жоқ және max;
в) нәтиже
(шешім) – екі жағдайда да max.
-
есеп моделі: a>b
және max=a, max<b, max<c;
- осы модель негізінде есепті шығару
алгоритмін берілген екі сан үшін былайша жазуға болар еді (1 –
суретті қараңыз).
Енді жаттығу
ретінде мына тұрғыдағы тапсырмаларды өз бетінше орындауға
үйге беруге болады:
1. Осы
алгоритмнің алгоритмдік тілдегі нұсқасын жазыңыз.
2. Берілген
үш санның үлкенін (кішісін) табудың алгоритмін блок-схема
және алгоритмдік тіл формаларында жазыңыз.
Тармақталынатын
құрылымды алгоритмдердің ерекшеліктерін саналы түсінген
оқушы болашақта өмірлік және практикалық
есептерді компьютер көмегімен шешу
кезінде жүргізілетін қажетті талдауларды, есеп моделін
құруды, алгоритм және программаны тестілеуден өткізуді
қиналмай ұйымдастыра алатын болады.
Мысалы, жоғарыдағы
қарастырған есептерге ұқсас жарықшам (светафор)
туралы есепті өз беттерінше жаттығуға ұсынуға
болады. Мұнда бастапқы берілгендер ретінде JS айнымалысы
мәндері (қызыл, сары, жасыл түстері) алынатын болады.
Нәтиже (жауап) ретінде Z – тің мәні алынады. Есеп моделін
былай құруға болады: JS= ‘қызыл’, JS= ‘сары’ және
JS = ‘жасыл’ шарттарының орындалуын тексеру.
Осы есепті
шығарудың алгоритмін блок-схема формасында жазуды
2 – сурет.
талдап және түсініп
алғаннан кейін барып, оқушыларға мына
тұрғыдағы тапсырмаларды өз беттерінше орындауға
ұсынуға болады:
1. Осы алгоритмді
жазудағы өз нұсқаңызды ұсынып
көріңіз.
2. Блок-схема
формасындағы алгоритмді алгоритмдік тілде жазыңыз.
3. Осы
алгоритм негізінде есепті шығарудың программасын
құрыңыз.
Келесі, мысалы,
жоғарыдағы есептерге қарағанда математикалық
тұрғыда сәл күрделірек, бірақ түсінуге
жетімді – қарапайым микрокалькулятор жұмысын имитациялайтын есепті шығаруды
ұсынуға болады. Бұл есепті шығару жолын талдауды
(есептің қойылуын) былайша жүргізуге болар еді:
-
бастапқы берілгендер ретінде а және b
операндалары, арифметикалық амалдар таңбалары – ор (+, –, *, /) алынады;
-
нәтиже ретінде у – тің мәні алынады;
-
қосымша шарт ретінде бөлу амалы орындалатын
кезде b операндасы мәнінің (бөлімінің) нөлге
тең болмауын тексеруді енгізуге болады.
Есептің
моделі ретінде y=a+b, y=a-b, y=a*b, y=a/b және b≠0
қатынастарын алуға болады.
Тиімді есептеу тізбегін
былайша анықтаймыз: 1. y=a+b; 2. y=a-b; 3. y=a*b; төртінші –
бөлу амалын орындау алдында b≠0 шартының орындалуын тексеруді
қоямыз; 5. y=a/b.
Осы есептеу
тізбегі негізінде есепті шығару
алгоритмін жазуға болады. Біз алдымен есепті шығару
алгоритмінің мына бір қарапайымдау нұсқасын келтірейік:
3 – сурет.
Осы алгоритмді
алгоритмдік тілде мына төмендегі нұсқаларда жазуға
болады:
алг Калькулятор(нақ
a,b, лит op, нақ y, лит z)
арг a,b,op
нәт y, z
басы
Таңдау
ор
’+’ жағдайы:
y:= a + b;
’-’ жағдайы: y:= a – b;
’*’ жағдайы: y:= a*b;
’/’
жағдайы: y:= a/b;
әйтпесе z:=’Амалдың
таңбасы қате көрсетілген’
бітті
соңы
немесе
алг Калькулятор(нақ
a,b, лит op, нақ y, лит z)
арг
a,b,op
нәт y, z
басы
егер
ор=’+’
онда
y:= a + b
әйтпесе егер ор=’-’
онда y:= a - b
әйтпесе егер ор=’*’
онда y:= a*b
әйтпесе егер ор=’/’
онда y:= a/b
әйтпесе z:=’Қате
амал, түсінбеймін’
бітті
бітті
бітті
бітті
соңы
Осы жерде
оқушылардың өз беттерінше үйде орындап келуіне мына
тапсырмаларды ұсынуға болады:
- осы алгоритмнің
блок-схема формасындағы басқаша бір нұсқасын жазып
көріңіз;
- сол
нұсқаға сәйкес оны алгоритмдік тілде жазыңыз;
-
төмендегі келесі алгоритмдер және программалар
нұсқаларын жазуды талдап және түсініп алғаннан
кейін барып, өзіңіз жазған алгоритмдер негізіндегі
программаны жазып жаттығыңыз.
4 – сурет
Есепті шығару алгоритмінің
бірінші нұсқасына сәйкес оның программасының бір
нұсқасын былайша жазуға болар еді:
program Саlc;
uses crt;
var
a,b,y:real;
op:char;
begin
clrscr;
writeln('a, b мәндерін
енгіз:');
readln(a,b);
writeln('
op – орындалатын амал таңбасын енгіз:');
readln(op);
сase op of {Арифметикалық амалды таңдау}
‘+’: y:=a+b;
‘-‘: y:=a-b;
‘*’: y:=a*b;
‘/’: y:=a/b;
end;
writeln('Нәтиже =', y:6:3);
readln
end.
Өзіндік
жұмысқа тапсырма: осы программаны жоғарыдағы
жазылған алгоритмге тура сәйкестендіре отырып және оның
қайталанатындай бөлігі бар нұсқасын жазыңыздар.
Мысалы, ондай нұсқаның бірін былайша жазуға болар еді:
program Саlc;
uses crt;
var
a,b,y:real;
op:char;
stop: Boolean; {Қате таңба
болғанның және тоқтау белгісі }
begin
clrscr;
stop:= false;
Repeat
{Қайталауды ұйымдастыру}
writeln;
writeln('a, b мәндерін
енгіз:');
readln(a,b);
writeln('
op – орындалатын амал таңбасын енгіз:');
readln(op);
сase op of
‘+’: y:=a+b;
‘-‘: y:=a-b;
‘*’: y:=a*b;
‘/’: y:=a/b;
еlse stop:= true;
end;
if not
stop then writeln('Нәтиже =', y:6:3);
until stop;
readln
end.
Осы
нұсқаға асықпай талдау жүргізе отырып,
жақсылап түсініп алуға тырысыңыз.
Енді мына
мазмұндағы тапсырмаларды
жаттығу ретінде оқушылардың өз беттерінше орындауларына
ұсынуға болады:
1.Осы
программаны тармақталыну командасын (алгоритмдік тілдегі екінші
нұсқасына сәйкес) пайдаланып жазыңыз.
2. Жоғарыдағы
жазылған алгоритмдер және программаларға b≠0 шартын
тексеруді қай жерден және қалайша қосуға болады,
соны жазыңыз, мысалы, мына структураны:
5 –
сурет
3. Осы
келтірілген есепті шығару алгоритмінің тағы да қандай басқаша
нұсқаларын жазуға болады? Көрсетіңіз,
жазыңыз.
Жоғарыдағы
жазылған алгоритмдердің және программалардың келтірілген
нұсқаларын жақсылап түсініп алғаннан кейін барып,
басқа да ұқсас нұсқаларын жазып
жаттығудың өзінің оң тиімділігі едеуір.
Мұндай жаттығулар жүргізу, практикалық машықтану
оқушыға көп мәселелерді (кейбір
ұқсастықтарды, заңдылықтарды, тәсілдерді,
типтес ережелерді, т.с.с.) байқауға және оларды сенімдірек
түсінуге, келешекте жаңа алгоритмдер және программаларды
жазуда оларды тиімді пайдалануға мүмкіндік береді. Сондықтан
оқушыларға жоғарыдағы көрсетілген тұрғылардағы
тапсырмаларды, өздерінше өз нұсқаларын жазуды
жүйелі түрде ұсынып отырған олардың алгоритмдеу
негіздерін сенімді саналы түрғыда сапалы меңгерулеріне
мүмкіндік береді.
Информатика және
математика курстарын оқытуда осындай тұрғыдағы
тәсілдерді жүйелі қолдану (әсіресе алгоритмдеу
және программалау негіздерін оқып-үйренуде) – ұқсастық,
типтік, заңдылық, негізгі ережелерді қайтара пайдалану – оқулық
материал мазмұнын тереңірек түсінуге, саналы бекітуге тиімді
көмектеседі. Оқушылар алгоритм және программалардың
әртүрлі ұқсас өз нұсқаларын жазып
машықтанады, олар материалды сенімді түсіне түскен сайын
қанағаттанарлық сезіммен арықарата қызығып
өз беттерінше жұмыс істеулерін жалғастыратын болады.
Оқыту
үрдісінде мұндай әдістерді және тәсілдерді жүйелі
пайдаланып отыру оқушылардың күрделі тақырыптарды оқуға,
білуге деген ынталарын қолдайды және пәнге деген
қызығушылығын арттырады, мотивациялық жағдайлар
тудырады.
Әдебиеттер
1. Ершов А.П.
және басқалар. Информатика және есептеуіш техникасы
негіздері. – Алматы, 1986
2. Полат Е.С., Бухаркина М.Ю.,
Моисеева М.В., Петров А.Е. Новые педагогические и информационные технологии в
системе образования. – М.: ACADEMA, 2003