Есептердішығарумысалдары.«Айнымалы», «меншіктеу» ұғымдарын бекітуге арналған бірнеше есептерді қарастырайық.
-мысал. Алгоритмге көп нүктенің орнына бірнеше меншіктеу бұйрықтарын жазыңыз. Нәтижесінде енгізілген санды 4-дәрежеге шығаратын алгоритм пайда болады. (А–айнымалысынанбасқақосымшаайнымалынықолдануғаболмайды):
енгізуА ...шығаруА Шешімі. енгізуА
А:= А*А (А2) А:= А*А (А4)
шығаруА
-мысал. Алгоритмдік тілде Y=(1-X2+5Х4)2формуласы бойынша
Y-ті есептейтін алгоритмді жазу керек, мұндағы Х – берілген бүтін сан. Мына шектеулерді ескеру қажет:
арифметикалық өрнектерде тек қосу, алу және көбейту амалдарын қолдануға болады;
өрнекте тек бір ғана амал болуы керек. Х=2 мәнінде алгоритмнің ізсалуын орындау керек.
Шешімі. Оқушылар бұл есепті шешудің әртүрлі нұсқаларын құрулары мүмкін. Аралық нәтижелер үшін қосымша айнымалы қолдануға болды. Есепті талдау барысында тек Хжәне Yайнымалыларын ғана қолданып, яғни қосымша айнымалы қолданбай құрылған алгоритмді қарастыру пайдалы. Онда компьютердің жады үнемделеді.
Бұл алгоритмнің өзі және оның ізсалуы мынадай болады:
Бұйрық
X
Y
Енгізу X
2
X := X*X
4
Y := 1 -X
-3
X := X * X
16
X := 5 * X
80
Y := Y + X
77
Y := Y * Y
5929
Шығару Y
5929
-мысал. Алдындағы есептің шектеулерін пайдаланып, мына есепеулердің ең қысқа алгритмдерін жазу керек:
а) Y=X8; б) Y= Х10; в) Y= X15;г) Y=X19. Қосымша айнымалының санын минималды аз қолдануға тырысу қажет. Алгоритмдердің ізсалуын орындау керек.
Шешімі. Тапсырманың г) нұсқасын орындаймыз. Алгоритмді мына теңдікті: X19=Х16*Х3ескере отырып құрамыз. XKмәндері (мұнда k= 2n) айнымалының өзіне өзі n-еселі көбейту арқылы тез есептеледі.
Алгоритм:
Y := X*X (X2)
Z := Y*Y (X4)
Z := Z*Z (X8)
Z := Z*Z (X16)
Z := Z*Y (X18)
Z := Z*X (X19)
Шығару Z
-мысал. Үш А,В,Сайнымалыларының мәндерінің циклдік ауысу алгоритмін жазу керек. Циклдік ауысу схемасы:
A B C
Мысалы, егер ауысуға дейін А=1,В=2,С=3болса, ауысқаннан кейін А=3,В=1, С=2болуға тиіс. Ізсалуды орындау керек.
Шешімі. Мәндерді ауыстыру үшін қосымша айнымалы керек, оны – Х деп белгілейік. Алгоритмнің өзі және оның ізсалуы мынадай болады:
Паскаль бағдарламалау жүйесі ортасымен жұмыс істеу тәсілдерін игеру.
Бағдарламалау–информатиканыңбөлімі,оныңміндеті–ЭЕМүшінбағдарламалыққамсыздандыруды жасау. Шын мәнінде, «бағдарламалау» сөзі – белгілі бағдарламалау тілінде бағдарлама жасау үрдісін белгілейді.
Жүйелік БҚ құралдарын және жүйелік бағдарламалауды жасауды жүйелікбағдарламалау, қолданбалы бағдарламаны жасауды қолданбалыбағдарламалаудеп атайды. Бағдарламаушыларда жасайтын бағдарламаларына байланысты осы принцип бойынша бөлінеді.
Қазір бағдарламалаудың әртүрлі парадигмаларыдамыған және олардың әрқайсысын оқытудың өзіндік ерекшеліктері бар. Бағдарламалаудың негізгі парадигмаларына мыналар жатады (1-қосымша, 4-сызба):
Жақша ішінде сәйкес парадигмасы жүзеге асырылған бағдарламалау тілдерінің мысалдары келтірілген.
Классикалық, әмбебапты және ең көп тараған процедуралықпарадигмаболып табылады. Мектепте көбінесе процедуралық Паскаль немесе Бейсик тілі оқытылады. Ары қарай «бағдарламалау» сөзін дәл осы процедуралық парадигма деп түсінеміз.
Бағдарламалауды оқу және практика жүзінде игеру үрдісі үш бөліктен тұрады (5.6-сурет):
берілген бағдарламалау жүйесін оқу және практика жүзінде игеру.
«Есептеуалгоритмдері» терминін орындаушы ЭЕМ бағытталған, кезкелгентиптішамаларменжұмысжасайтыналгоритмдердеген кең мағынада түсіну қажет.
БАҒДАРЛАМАЛАУ
Алгоритмдеу
Бағдарламалау тілдері
Бағдарламалау жүйелері
-сурет. Бағдарламалаудыоқудыңнегізгібөлімдері
Мұғалімің алдында мына проблема пайда болады: шамаларменжұмысістеуалгоритмдерінқұруәдістеріноқытуды және бағдарламалаутілін қалай байланыстыруға болады? Қарастырудың екі нұсқасы болуы мүмкін:
алдымен әртүрлі алгоритмдер қарастырылады, оларды сипаттау үшін блок-схемалар және АТ қолданылады; одан соң – бағдарламалау тілдерінің ережелері, құрылған алгоритмдерді бағдарламаға аудару әдістері қарастырылады.
алгоритмдеу және бағдарламалау тілі қатар игеріледі.
Біз екінші нұсқамен қарастыру әдістемесін қолдануды ұсынамыз. Себебі алгоритмдеуді және бағдарламалауды тек теориялық түрде оқу тиімсіз екені белгілі. Сондықтан оқушылар құрған алгоритмдерінің дұрыстығын компьютерде тексеруге ертерек мүмкіндік алулары қажет. Бағдарламалаутіліментанысужәнебағдарламалаужүйесіортасындажұмысжасаутәсілдерінигеруалгоритмдеумен қатар жүругетиіс.
Бағдарламалауға үйретуді типтікесептердіңмысалдары негізінде және алгоритмдердіңқұрылымынбіртіндеп күрдендіру арқылы өткізу қажет.
Алгоритмдердіңнегіздікқұрылымдарыдегеніміз - шектелген блоктардыңжинақталымыжәне әрекеттердің әдетті тізбектерін орындау үшін оларды қосудыңстандарттыәдістері.
Құрылымдық белгісі бойынша алгоритмдер мына негіздікқұрылымдарғажіктелетіні белгілі:
Сызықтықұрылымды– алгоритмнің бұйрықтары үзілістітізбекпен, бірінен кейін бірі орындалады. Әдетте, формула бойынша есептеу ұйымдастыруға қолданылады.
Тармақталуқұрылымдыалгоритмбелгілі шартқатәуелдіұйымдастырылады. Мұндай алгоритмде, әдетте, логикалық шартты тексеру блогы болады. Егер шарт орындалса, онда әрекеттер тізбегінің бір тармағы орындалады, ал орындалмаса, екінші тармағы орындалады. Яғни, шартқа тәуелді, әлде бір серияны, әйтпесе басқа серияны орындау керек болғанда пайдаланылады. Мысалы, бірнеше мәндердің ең кішісін немесе ең үлкенін іздеу, тармақталған диалог құру, т.с.с. типтік есептердің алгоритмін ұйымдастыру үшін.
Циклдікқұрылымдыалгоритмдердеп, циклденесідеп аталатын әрекеттер тізбегін көпретқайталануынжүзеге асыратын алгоритмдерді атайды. Мысалы, циклдік типті алгоритмдерінің қатарына, сандық тізбектерінің қосындысын және көбейтіндісін есептеу, деректерді циклдік әдіспен енгізу және өңдеу, т.с.с. жатады.
Есептердішығарумысалдары[26, 42]. Бағдарламалау тілінің жаңа амалдары, операторлары, т.б. күрделі құрылымдарды, есептердің мына типтерін шығару үшін керектігіне қарай біртіндеп енгізіліп, бекітіліп отырады.
Паскаль тілі қолданылған бірнеше есептерді қарастырайық. Бұл мысалдар алгоритмдік тіл мен Паскаль тілінің арасындағы ұқсастық әдісін қолдануды көрсетеді.
1-мысал.Берілген үш x,y,zсанның ең үлкенін табу алгоритмін жазу керек. Бұл есепті шешу үшін құрылымы бойынша нұсқасы әртүрлі алгоритмдерді құруға болады. Соларды көрсетейік.
-шешім.Алдымен алғашқы x,yекі санның арасындағы үлкені, одан соң табылған kжәне zарасындағы үлкені анықталады. Алгоритмнің құрылымы тізбектелген екі толық тармақталудан тұрады.
алг 3-сан-мах (нақx,y,z,k,max) Program max_3_san;
арг x,y,z Var x, y,z,k: real;
нәт max max : real;
басы begin writeln(‘вв.3 числа’); енгізу x,y,z readln(x,y,z);
егер x >y if x > y
онда k: = x then k:= x
әйтпесе k : =y else k:= y;
бітті if k > z
егер k >z then max:= k
онда max: = k else max:= z;
әйтпесе max : =z wrіreln(max );
бітті readln;
шығару max end.
соңы
-шешім. Алгоритмде қабаттасқан толық тармақталуды
қолданамыз. Паскаль тіліндегі алгоритмнің нұсқасын көрсетейік:
Program max_3_san;
Var x, y,z,max: real;
begin
write(‘вв.3 числа’);
readln(x,y,z);
if x > y
thenif x >= z then max := x else max := z elseif y >= z then max := y else max := z; wrіreln(‘максимальное значение’, max); end.
-шешім. Алгоритмді күрделі логикалық өрнектерді пайдаланып, толықеместармақталуды тізбекпен қолдану арқылы құрамыз. Паскаль тіліндегі алгоритмнің нұсқасы: