Циклды ұйымдастыру және матрицаны өңдеу
Кіріспе
Қазақстан
Республикасындағы білімді
Қазіргі кезде электрондық басылымдарды әзірлеу және пайдалану мәселелерін зерттеу өзекті іске айналды. Электронды оқулықтарды құрастыру технологиясы оқыту процесінің заңдылықтарына негізделіп жасалып, бір – бірімен тығыз байланыстағы төрт бөліктен тұрады, олар: мотивациялы – мақсаттық, мазмұндық операциялық және нәтижелік бақылау болып табылады.
(Электронды оқулықтың мазмұндық компоненті гипермәтін арқылы жүзеге асырылады. Гипермәтін – терминдерден, ұғымдардан, әртүрлі концепциялардан, кестелерден, графиктерден және диаграммалардан тұратын мәліметтер базасы ретінде берілетін ақпараттық оқыту ортасы. Гипермәтін бейне материалдармен толықтырылған.)
Электронды оқулықтың операциялық компоненті интерактивті формада берілген тапсырмаларды орындау арқылы іске асырылады.
Электронды оқулықтың нәтижелік бақылау компоненті тест алу жолымен жүргізіледі.
Электронды
оқулықтармен жұмыс істеу әрбір
оқушының өз мүмкіндігін есепке ала
отырып, оқып үйрену ісін жеке дара жүргізуі
болып саналады.
І. Жалпы бөлім
- Турбо Паскаль тілінің шығу тарихы
Паскаль тілін Стэнфордско универститетінің информатика кафедрасың қызметкері, атақты щвец ғалымы Никлаус Вирт 1968 – 1971 жылдары жасаған болатын. Аталмыш бағдарламаға француз математигі Паскальдың есімі берілген. Қазіргі таңда бұл бағдарлама өте кең көлемде қолдау тапқан. Бұл бағдарлама өзінің көптеген қасиеттерімен ерекшеленеді, атап айтқанда: қарапайымдылығымен, алгоритмдерінің құрылымдылығымен, ыңғайлылы-ғымен, бағдарламаны тексеру мен жөндеудің жылдамдылығымен ерекшеленеді.
Паскаль тілінің қасиеттеріне:
- Тілдің қарапайым синтаксисі. Негізгі ұғымдардың аз қолданылуы мен Паскаль тілінің жеңіл оқылуы;
- Төменгі дәрежелі аппараттық және жүйелік талаптың құрастырушыға байланысты болуы;
- Тілдің әмбебаптығы. Пасккаль тілін практикалық бағдарламалардағы барлық мақсатқа жету жолында қолданылуы;
- Құрылымдық бағдарламаға «жоғарыдан – төмен» жобалауының, сонымен қатар объектті – хабарланған бағдарламаның сүйеу болуы.
Паскаль тілінің шығу тарихы. Жоғарыда көрсетілгендей Турбо Паскаль тілі 1968 жылы щвецариялық ғалым Никлаус Вирттың көмегімен жарыққа шыққан.
Паскаль тілі айналымға шыққан кезде, оны қоғам бірден қабылдай қойған жоқ. 80 – шы жылдардың ортасында америкалық Borland International фирмасы Inc Pascal тілін іске асырды, соның арқасында фирма мәтін редакторын өте жылдам құрастырушы бірліктер мен қуатты кеңейту стандартын паскальға қосты. Бұл тілдің бірінші жетістігіне жетуге жол ашты. 1985 жылы ПЭВМ айналымында Паскаль тілінің жаңа нұсқасы Турбо Паскаль 3.0 стандартты құрастырушысымен жарыққа шықты. Сол кезеңнен бастап Паскаль тілі кәсіптік білім беру, орта білім беру салалары мен қатар жоғарғы оқу орындарында да бірінші бағдарламалау тілі болып келеді. Паскаль тілі өзінің қарапайымдылығының арқасында кез- келген салада кең тарады. Турбо Паскаль тілінің әйгілілігінің арқасында өмірге кішігірім төтенше жағдайларды тез шешуге мүмкіндік беретін бағдарламалар келді(Toos). Бұл бағдарламалар Турбо Паскаль тарапынан, сонымен кәсіптік бағдарламашылар тарапынан да өте жоғары болып бағаланған. Мәтін қоса салынған редактор жүйесін әлем жеткілікті кең көлемде қолданып отыр, және де WordStar қапшығы баршамызға белгілі болғандықтан, бұл қапшық ПЭВМ аумағында ерекше қарқынмен қолданылып келеді.
Сыншылырдың ойынан шықпаған Турбо Паскальдің бұл қапшығына көптеген шек қойылғандықтан, уақыт өте келе Турбо Паскаль 4.0 қапшығы жойылған болатын, алайда ол қапшықтың жүйе өнімділігі жоғары болатын. Сонымен қатар 4.0 қапшығы өзінің өте маңызды айырмашылытарымен ерекшеленетін. Ең маңызды жаңалықпен INIТ-концепциясы ерекшеленді, ол ірі бағдарламалық өнімдердің өңделуін Турбо Паскаль рамкаларында мүмкіндік туғызды. Турбо Паскаль 5.0 нұсқасы кәсіптік пайдаланушылар тарапынан үлкен ұсыныстарға ие болып, бағдарламалау ортасында интеграцияланған жөндеушіге еңбек өнімділігін жоғарылатуға рұқсат етті. Кіші жадыларды үлкейтуге мүмкіндік берген оverlay аппараты Турбо Паскальдың техникалық мінездерінің жақсаруына мүмкіндік берді. Механизм мәні бағдарламаға алма – кезек белгілі бір қажет мөлшерде дискіден немесе қатты дискі аумағынан сол жад облысында бағдарлама бөлімімен ауыстырылып орындалып отырды. Сонымен қатар, Турбо Паскальда бағдарламалардың жөндеу мүмкіншіліктері 5.0 нұсқасында үлкейтілген болатын және Lotus – Intel – Microsoft стандартында үлкейтілген жад сүйеулерінің мүмкіншіліктері қамсыздандырылған (SLIMS/EMS 4.0).Қысқартылған түрде EMS деп белгілегенмен, жалпы толық атауы Expanded Memory Specification, яғни үлкейтілген жадтың толық ашылуы деген маңызға ие. Бұл жадты Extended Memory қосымша жадымен шатастыруға болмайды.
Турбо Паскаль пакеттерін одан әрмен жақсарту барысында техникалық мінездемелердің одан арғы өзгертулері 5.5 нұсқасында жүзеге асқан болатын. Сонымен қатар, ішкі жақсартулармен Help жаңа мүмкіншіліктері қоса салынған мәлімет жүйелері, оқу үлгілерінің үлкен жүйесі, ең маңызды жаңалығы объектті – хабарланған бағдарламалау концепцияларын осы тілде жүргізуге мүмкіндік берді.
Біраз уақыт өткеннен кейін айналымға Турбо Паскальдың техникалық мінездемелерді өзгерту мақсатымен жаңа нұсқасы 5.5 өмірге келді. Бұл версия қолданбалы мақсаттардың шешімі үшін қлданылды. Сонымен қатар, меню жүйесінің стандартымен сәйкестендірілген, жаңа мүмкіншіліктерді қолданудың практикалық үлгісі, мәтіндік редактор іске асырылып, Integrated Development Environment – интеграцияланған аспаптық қабықты қоса салған. Көп терезелі мәтіндік редактормен жұмыс істеу Турбо Паскальың 6.0 версиясында бағдарламалаудың жаңа мүмкіншіліктері пайдаланушы жұмысын жеңілдетіп отыр. Артықшылықтардың барлығын бойына жинаған Турбо Паскальдың соңғы нұсқасы 7.0 1992 жылы Borland Internation фирмасы пайдаланушыларға ұсынды.
Турбо
Паскальдың 7.0 нұсқасында көптеген
өзгертулер мен жақсы жаңалықтар
көп болды: біріншіден – негізгі
мәтін элементтерін әр түрлі
айқын түспен белгілеу мүмкіншілігі,
екіншіден - тәжірбиесіз пайдаланушыларға
мәтін енгізу кезінде қателерді
жоюға мүмкіншілік берді; үшіншіден
– құрастырушы жақсарған болатын;
төртіншіден – пайдаланушы интерфейсі
жақсарды.
- Турбо Паскаль ортасы
Кез келген тіл (соның ішінде алгоритмдік тіл де) алфавиттен басталады. Алфавитті қолдана отырып, біз сөздер құрамыз: сол тілдің синтаксистік ережелерін сақтай отырып, сөздерді фразаларға біріктіреміз. Алгоритмдік тілдің алфавиті негізгі символдардың тіркелген құрамынан тұрады, сонымен қатар белгілі бір литерлер комбинациясы да қолданылады.
Паскаль
тілінің алфавитінде
Әріптер ретінде латының А-дан Z-ке дейінгі бас әрптері қолданылады. Тілдің кейбір нұсқаларында әріптер құрамын орыс не қазақ алфавитінің әріптері есебінен кеңейтуге болады, бірақ орыс не қазақ сөздері тек қана комментарий ретінде қолданылады. Цифрлар ретінде кәдімгі ондық цифрлар қолданылады: 0,1,2,3,4,5,6,7,8,9.
Арнаулы символдардың тобы едәуір көп және одан үш негізгі топшаны бліп алуға болады: арифметикалық операциялар белгілері, салыстыру операциясы белгілері (және т.с.с.)
Алған білімді тәжірибеде қолданып көрелік және екі санның қосындысын есептейік. Есеп шешудегі біздің әркетімізді компьютердің көмегінсіз-ақ кәдімгі әдіспен модельдеп көрелік.
Ең алдымен бізге бірінші және екінші қосылғыштың мәні неге тең екенін біліп алу қажет. Бұл мәліметтерді біз не мысал текстінен аламыз (ақпарат көз арқылы қабылданады) немесе керекті сандарды біреу айтып тұрады (ақпарат есту мүшесі арқылы қабылданады).
Қосылғыштардың
мәнін біз қайда сақтаймыз? Қағазда
не өзіміздің жадымызда. Сонан соң
<<қосу>> нұсқауын алғаннан кейін
біз керекті әрекетті орындап, жауабын
аламыз. Ал, жауап қайда сақталады? Біздің
жадымызда не қағаз бетінде.
Машина (компьютер) тура осы амалдарды орындайды:
- қосылғыштардың мәндерін қабылдайды (қорытынды жасайық, машина –бұл техникалық құрылғы болғандықтан, оған сандардың мәнін енгізу болатын блок қажет);
- қосылғыштардың мәндерін келесі нұсқауға дейін сақтайды (осыдан блоктың сандарды сақтау үшін қажеттігі туады);
- берілген қосылғыштарға қажетті амалдар қолданып, оларды сақтайды, бұл жағдайда қосындыны сақтайды (келесі қорытынды –санау білетін блок қажет);
- адамға жауабын хабарлайды, яғни жауапты көрсетуге мүмкін болатын блок не құрылғы қажет.
- Неге тағы бір пункт? Тағы не қажет болды? Адам өзіне-өзі қожа: қосқысы келсе-қосады, көбейткісі келсе-көбейтеді, қандай операцияны қай кезде орындайтынын өзі біледі. Машина да белгілі бір амалдар тізбегін сақтауы және оларды шатастырмауы керек. Әрне, ол үшін машина жұмысын басқарушы блок не құрылғы қажет.
- Осы жерде бізге Паскаль тілінен назарымызды компьютер құрылысына аударуымыз керек. ЭЕМ-нің қандай блоктардан тұратынын және олардың қалай жұмыс істейтінін түсінбейінше біз бағдарламалау тілін саналы түрде қолдана алмаймыз.
II. Негізгі бөлім
Программаның белгілі бір бөлігінің орындалуын бірнеше рет қайталау үшін қолданылатын командаларды қайталану командалары деп атайды. Көптеген есептеулерде айнымалылардың әртүрлі мәндері үшін кейбір операторлар бірнеше рет қайталанып орындауды қажет етеді. Бұл операторларды, қайталап орындалуы үшін, программаға қайта –қайта жаза берсек, онда программа құру үшін көп уақыт кетеді, әрі программалық текст өте ұзақ және оқуға ыңғайсыз болып жазылады. Сондықтан программалық текстер қысқа әрі оқуға жеңіл болу үшін қайталану процесін циклдық операторлар қолданып ұйымдастырады. Циклдік процесс ұйымдастыру үшін келесі операторлар қолданылады:
1.FOR – параметрлі циклдік оператор;
2.WHILE – алдын – ала циклдің орындал шартын тексеретін оператор;
3.REPEAT – соңында циклдің тоқтау шартын тексеретін оператор.
Егер шартын алдын ала
Циклдік операторлар структуралық операторлар тобына жатады, өйткені құрамына бірнеше операторлар кіреді. Программада алдымен циклдің тақырыбы жазылады, онан кейін қайталанатын операторлар бөлімі – цикл денесі жазылады. Цикл денесі бір немесе бірнеше операторлардан тұруы мүмкін. Барлық циклдық операторлардың келесі ерекшелігі бар:
а) Қайталанатын операторлар ( циклдің денесі ) бір – ақ рет жазылады;
ә) Циклге тек қана басынан ( тақырыбы ) ғана кіруге болады;
б) Циклің айнымалылары алдын – ала циклге дейін анықталуы тиіс;
в) Цикл денесінде көшу операторын ( Goto ) қолданып программаның басқа бөліктеріне шығуға болады.
д) Цикл ұйымдастырғанда, міндетті түрде циклден шығу шарты орындалатынын қарастыру керек, әйтпесе программа орындалуы циклге келгенде тоқтап тұрып қалады ( программа «мәңгі циклденіп» қалады ).
Цикл денесінің әр қайталауында цикл айнымалыларының мәндері де өзгеріп, жаңа мән қабылдап отырады. Қайталану саны циклдің тақырыбында және цикл денесінде берілетін айнымалылардың мәндеріне байланысты болады.
2.2 WHILE операторы
Алдын ала берілген шарт бойынша қайталауды жүзеге асыратын бұл оператор WHILE (оқылуы: yайл, аударылуы: әзірше) және DO (оқылуы: ду, орындау болып аударылады) түйінді сөздері қолданылып орындалады. Оның синтаксистік диаграммасы 1-суретте кескінделген.
1-сурет. WHILE операторының синтаксистік диаграммасы
Жазылу пішімі мынадай:
WHILE <қайталану шарты> DO <цикл тұлғасы>;
WHILE оператордың жазылу пішімі мен орындалуын төмендегідей түрде де оңай бейнелеуге болады.
WHILE <шарт> DO
<1-оператор>;
<2-оператор>;
Егер алгоритмдік тілмен салыстырып қарайтын болсақ, онда жолдар сәйкестігі былай көрсетіледі:
Алгоритмдік тілде
әзірше шарт
цб
1-оператор;
2- оператор;
. . .
n- оператор;
цс
Ескерту: Егер шарт бірінші тексергеннен-ақ жалған болса, онда цикл
орындалмайды.
Енді WHILE операторына бір-екі мысал келтірейік:
1-мысал. Пернетақтадан енгізілген кез келген он бүтін санның қосындысын табатын программа құру қажет.
Program kosindi;
const
limit=5; {енгізілген сандардың шектелуі}
var
count, item, sum:integer;
Begin
count:=0; {Енгізілген сандарды санау}
sum:=0; {Сандар қосындысы}
while(count<limit) do {Циклдің қайталану шарты}
begin
count:=count+1;
Write(count,’-shi butin sandi engizinder: ’);
readln(item); {Кезекті санды пернетақтадан енгізу}
sum:=sum+item;
end;
Writeln(‘Engizilgen sandardin kosindisi=’,sum);
end.
Нәтижесі:
1-shi butin sandi engizinder: 3
2-shi butin sandi engizinder: 7
3-shi butin sandi engizinder: 6
4-shi butin sandi engizinder: 5
5-shi butin sandi engizinder: 9
Engizilgen sandardin kosindisi=30
Бұл мысалда тұрақтыларды сипаттау бөліміндегі limit тұрақтысы енгізілетін сандарды шектеу рөлін атқарады. Айнымалыларды сипаттау бөліміндегі count, item, sum айнымалыларды бүтін сандық типте көрсетілген.
Программа басында енгізілген сандарды санайтын count(санауыш) айнымалысы мен қосындысы-sum нөлге теңестіріледі де, одан кейін 5 сан енгізіліп, оларды біртіндеп санау мен жинақтап қосу жүзеге асырыла бастайды.
Алдын ала WHILE операторы count<5 шартын тексереді. Шарт ақиқат болса, яғни орындалса, цикл тұлғасы болып келетін құрама оператор атқарылады, онда кезекті сан енгізіліп, қосындысы осы сан мөлшеріне көбейеді. Сонан соң қайтадан цикл операторы орындалып шарт тексеріледі, ол ақиқат болса, тағы да цикл қайталанады т.с.с.
Санауыш мәні 10-нан асқанда, қайталау топталып, қосынды мәні экранға writeln операторы арқылы «Eнгізілген сандардың қосындысы=» деген сөз тіркесінен кейін шығарылады.
2-мысал.
Евклид алгоритмі бойынша
Бұл есептің блок-схемасын да (2-сурет) келтіре кетейік. Блок-схема есептің шығару жолын көрнекі түрде бейнелеп, оның программасын құру кезінде қате жібермеуді қамтамасыз етеді.
2-сурет. Евклид алгоритмнің блок- схемасы
Program EYOB; {Екі санның ең үлкен ортақ бөлгішін табу}
Var n,x,m,e,y:integer;
Begin
Write(‘m,n sandarin engizinder:’);
Readln(m,n);
x:=m; y:=n;
While x<>y do
if x>y then x:=x-y else y:=y-x; e:=x;
Writeln(‘En ulken ortak bolgish=’,e);
End.
Нәтижесі:
m,n sandarin engizinder: 4 6
En ulken ortak bolgish= 2
2.3 Repeat операторы
Repeat қайталау операторы While операторына ұқсас, айырмашылығы-қаталану шартты цикл соңында тексеріледі, сондықтан ол кем дегенде бір рет орындалатын болады. Екінші өзгешелігі – цикл тұлғасы шарт жалған болғанда қайталанып, ол ақиқат болған кезде циклді орындау доғарылады (while операторында керісінше болатын).
Бұл оператор Repeat (оқылуы: репит, қайталау болып аударылады) және Until(оқылуы:антил, дейін, шейін болып аударылады) түйінді сөздерін пайдаланып орындалады. Оператор Repeat сөзінен тұратын оның тақырыбынан, цикл тұлғасынан және қайталау шартынан құрастырылады да, синтаксистік диаграммасы 3-суреттегідей кескінделеді:
3-сурет. Repeat операторының диаграммасы
REPEAT <оператор 1>;
<оператор 2>;
<оператор n>;
UNTIL <шарт>;
Repeat операторының блок-схемасы
Repeat операторының циклі ішінде оның орындалу шартына әсер ететін кем дегенде бір оператор болуы тиіс, әйтпесе ол шексіз қайталана беруі мүмкін. Егер қаталау кезінде цикл ішінде көшу операторы болып, ол басқаруды цикл сыртындағы операторға берсе, онда циклдің орындалуы әрі қарай жалғаспайды.
Цикл тұлғасы болып келген оператор жай немесе құрама оператор (4-сурет) бола береді.
Бұл операторды да While операторын пайдаланған есептерде қолдануға болады, қай операторды қолдану әркімнің өз еркіне байланысты шешіледі. While операторы көмегімен шығарылған 2-суретте көрсетілген 2-мысалды енді Repeat операторымен қайталап шығарайық, программада қандай оператор қолданатынмызға байланысты алгоритм схемасы да (4-сурет) программа да өзгеріске ұшырайды.