Автор: Пользователь скрыл имя, 09 Февраля 2013 в 16:18, реферат
Силер Паскалда сызыктуу жана бутактуу программаларды түзгөндү үйрөндүңөр. Эми циклди программалоону өздөштүрүшүңөр керек. Конкреттүү маселени чыгаруунун мисалына кайрылабыз. Бирок мурунку мисалдардан айырмаланып, муну чыгаруу ыкмасы башкача болот.
ЭЭМде маселени чыгаруунун технологиясы. Көп учурда чече турган маселе математикалык эмес тилде берилет. Аны компьютерде чыгаруу үчүн адегенде математикалык формага келтирип алып, андан кийин программалоо керек.
ЦИКЛДЕРДИ ПРОГРАММАЛОО
Силер Паскалда сызыктуу жана бутактуу программаларды түзгөндү үйрөндүңөр. Эми циклди программалоону өздөштүрүшүңөр керек. Конкреттүү маселени чыгаруунун мисалына кайрылабыз. Бирок мурунку мисалдардан айырмаланып, муну чыгаруу ыкмасы башкача болот.
ЭЭМде маселени чыгаруунун технологиясы. Көп учурда чече турган маселе математикалык эмес тилде берилет. Аны компьютерде чыгаруу үчүн адегенде математикалык формага келтирип алып, андан кийин программалоо керек.
Мындай маселелерди компыотердин жардамы менен чечүү иши төмөндөгү этаптардан турат:
Бул ырааттуулукту ЭЭМде маселе чечуунун технологиялык тизмеги деп айтабыз. Мында программалоонун өзү, б. а. алгоритмди жана программаны иштеп чыгуу болуп 3-, 4-, 5-этаптары гана эсептелет.
Маселенин коюлуш этабында эмне берилди? эмнени табуу керек? экендиги айкын аныкталышы керек.
Экинчи этап - математикалык формага келтирүү. Бул жерде маселе математикалык формулалар, тендемелер, катыштар тилине которулат. Бул формулалар дайыма эле ачык-айкын көрүнүп турбайт. Көп учурда аларды өз алдыңча чыгарууга же атайын адабияттардан издеп табууга туура келет. Эгер маселенин чечилиши кандайдыр бир реалдуу объекттин, кубулуштун же процесстин математикалык жазып көрсөтүлүшүн талап кылса, анда формага келтирүү ага туура келүүчү математикалык моделди алганга барабар.
Үчүнчү этап - алгоритм түзүү. Силер алгоритмди сыпаттоонун эки жолун билесиңер: блок-схема жана Алгоритм тили.
Биринчи үч этап - компьютерсиз аткарылуучу иштер. Андан ары белгилүү тилдин программалоо системасында программалоо жүзөгө ашырылат.
Акыркы алтынчы этап - иштелип чыккан программаны практикалык максатта колдонуу.
Технологиялык тизмектин этаптарынын баарын конкреттүү маселени чечүү мисалында карап чыгалы.
1.Маселенин коюлушу. Ар кандай
тамгалар жазылган N сандагы
кубиктер берилген. Бул кубиктерден N тамгалуу
канча сөздү (сөздөр мааниге ээ болбошу
деле мүмкүн) түзсө болот?
Изделип жаткан бүтүн сандуу чоңдукту F тамгасы менен белгилейбиз. Анда маселенин коюлушу төмөндөгүдөй болот:
Берилди: N
Табуу керек: F
2.Математикалык формага келтирүү. Эсептөө формуласын алабыз.
Адегенде бир нече мисалдарды карайлы. И, Ч тамгалары
жазылган эки
кубик болсун дейли. Алардан ИЧ жана ЧИ деген эки сөз түзсө болот.
Аларга П тамгасы жазылган үчүнчү кубикти кошобуз. Эми ар түрдүү сөздүн саны мурункуга караганда үч эсе көп болот, б. а. 6 га барабар.
ИЧП ЧИП ИПЧ ПЧИ ЧПИ ПИЧ
Эгерде төртүнчү А тамганы кошсок, анда сөздөрдүн саны 4 эсеге көбөйөт да 24кө барабар болуп калат:
ЧИПА ЧИАП ЧПИА ЧПАИ ЧАИП ЧАПИ ИЧПА ИЧАП
ИПЧА ИПАЧ ИАЧП ИАПЧ ПЧИА ПЧАИ ПИЧА ПИАЧ
ПАЧИ ПАИЧ АЧИП АЧПИ АИЧП АИПЧ АПЧИ АПИЧ.
Беш тамгадан турган бардык сөздөрдүн варианттарын жазганга аракет кылып көргүлө: И, Ч, П, А, Н. Бул оңой жумуш эмес. Мындай сөздөрдүн саны 24төн 5 эсеге көбөйтсө 120га барабар болот. Алты тамгадан ар кандай 720 сөз түзүлөт. Тамгалардын көбөйүшү менен сөздөрдүн саны да тез өсүп отурат. Мисалы, он тамгадан 3628800 сөз түзсө болот.
Буга окшогон маселелерди математиканын комбинаторика деп аталган бөлүмү чечет.
N сандагы предметтердин иретин өзгөртүп түзүү аркылуу алынуучу ар түрдүү комбинациялардын саны орун алмаштыруулардын саны деп аталат. Бул сан N дин функциясы деп туюндурулуп, факториал деп аталат да, N! түрүндө жазылат.
«N факториалы» деп окулат. Ар кандай TV натуралдык саны үчүн N! мааниси 1ден N гe чейинки ырааттуу натуралдык сандардын көбөйтүндүсү катары берилет. Мисалы:
1!=1
2! = 1x2 = 2
3! = 1x2x3 = 6
4! = 1x2x3x4 = 24
5! = 1x2x3x4x5 = 120 ж. б.
Эми маселенин формулировкасына кайрылалы. Эгер тамгалардын саны N, ал эми ошол тамгалардан түзүлгөн сөздөрдүн саны F болсо, анда эсептөөчү формула мындай болот:
F = N! = lx2x...xN.
3. Алгоритмди түзүү. Алгоритм N дин берилген маанилерине көзкаранды болбошу керек, ошондуктан аны сызыктуу кылууга мүмкүн эмес. Себеби, ар кандай N үчүн түрдүү сандагы көбөйтүүлөрдү аткаруу зарыл болот. Мындай учурда N дин өзгөрүшүнөн улам сызыктуу программанын узундугу да өзгөрүүгө тийиш.
Берилген маселенин чыгарылыш алгоритми циклдик турдө болот. Графикалык аткаруучулар менен иштөө учурунда силер мурун эле циклдик алгоритмдер менен таанышкансынар.
76-сүрөттөгү блок-схеманы жана Алгоритм тилиндеги алгоритмди карап көрөлү.
Мында силерге белгилүү алгоритмдик структура «алдына шарт коюлган цикл» колдонулду. Ал төмөндөгүчө аткарылат: циклдин шарты канча жолу аткарылса, ошого чейин циклдин телосунун аткарылышы кайталана берет.
Циклдин телосун цб жана ца деген кызматчы сөздөрдүн ортосунда турган эки ыйгаруу командасы түзөт. Циклдин шарты R<=N катышы болуп саналат (R өзгермөсү Nден кичине же ага барабар).
Бул алгоритмде R өзгөрмөсү көбөйтүүчүнүн ролун аткарат да, анын мааниси 1ден N ге чейин улам 1ге көбөйүп аткарылат. Көбөйтүндүлөр баштапкы мааниси 1ге барабар болгон F өзгөрмөсүнө чогултулат. Цикл качан F=N+1 болгондо гана токтойт. Бирок бул мааниси көбөйтүүгө кирбей калат.
алг СӨЗ
бүт F,N,R
башы киргиз N
F:=l
R:=l
азырынча R<N, кайтала
цб
F:=FxR
R:=R+1
ца
чыгар F
аягы
76-сүрөт. Факториалды эсептөө алгоритмы.
Алгоритмдин тууралыгын текшерүү үчүн трассировка таблицасын түзөбүз.
Төмөндөгү трассировка таблицасы N=3 болгон учур үчүн түзүлгөн.
Бул таблицадан өзгөрмөнүн маанилери кандайча өзгөргөндүгү жакшы көрүнүп турат. Өзгөрмөгө ыйгарылган жаңы маани анын эски маанисин өчүрөт (бул жерде өзгөрмөнүн мааниси эч жерде жазылбагандыктан, таблица сандар менен жык толтурулган эмес). F тин акыркы мааниси 6га барабар. Ал натыйжа катары чыгарылат. Чындыгында эле, натыйжа туура: N=6.
4. Программа түзүү. Маселенин чечилишинин программасын түзүү үчүн Паскалда циклдерди программалаганды үйрөнүү керек. Негизги циклдик структура болуп (азырынча-цикл) алдына шартп коюлган цикл эсептелет. Бул структуранын жардамы менен каалагандай циклдик алгоритмди түзүп алса болот. Алдына шарт коюлган циклдик оператордун Паскалдагы форматы төмөндөгүдөй:
while < логикалык туюнтма > do <оператор>.
while деген кызматчы сөз «азырынча», do деген кызматчы сөз «аткар» дегенди билдирет.
do сөзүнөн кийин турган оператор циклдин телосу деп аталат. Циклдин телосу жөнөкөй жана курамдуу оператор, б. a. begin жана end сөздөрүнүн ортосундагы операторлордун ырааты болушу мүмкүн.
Эми маселенин чечилишин Паскалда программалайлы (ага маек уюш-турууну кошобуз).
Program Sozdor;
Var F, N, R
begin
write ('Тамгалардын санын киргизгиле');
readln (N);
F:=l;
R=l;
while R<=N do begin
F:=F*R R:=R+1
end;
write ('Берилген', М’,тамгадан', F’ сөз түзүүгө болот') end.
Алгоритм тили менен Паскалдагы алгоритмдердин окшоштугун кайрадан байкаса болот. Паскалда циклдин башын жана аягын белгилөөчү атайын кызматчы сөздөр (бутактануунун аягына, башына коюлуучу) жок экендигине көңүл бургула. Бардык жерде зарыл учурларда begin и end сөздөрү колдонулат.
5. Жөндөө жана тест жургүзүү. Программанын
иштөөсун текшерүү
жана табылган каталарды оңдоо программаны
жөндөө деп аталат. Паскалда
программанын жазуу эрежелерине (синтаксистик
жана семанти-калык) байланышкан каталарды
табууга программалоо
системасы көмөктөшөт.
Колдонуучу ката тууралуу билдирүүну
кабыл алат, катаны оңдойт жана программаны
кайрадан аткарууга аракеттенет.
Компьютердеги алгоритмдин тууралыгын текшерүү тесттер аркылуу жүргүзүлөт. Тест - бул кутулүүчу натыйжа белгилуу болгон баштапкы маалыматтардын маанилеринин конкреттуу варианты. Тест жүргүзүү - программанын туура болушунун эң керектүү шарты. Тестте мурунтан пландаштырылган сценарийди туура программанын жүзөгө ашырышы текшерилет.
Мисалга, биз түзгөн программаны N=6 маанисинде тест жүргүзүүгө болот. Экранда төмөндөгүдөй натыйжа чыгышы керек:
Тамганын санын киргизгиле: 6
Берилген 6 тамгадан 720 сөз түзүүгө болот.
6.Эсептөөлөрдү жүргүзүү жана алынган натыйжаларды анализдөө -
технологиялык тизмектин бул этабы практикалык пайдалуу программаларды (окуу программалары эмес) түзүүдө иш жүзүнө ашырылат. Мисалы, «Аба ырайын алдынала айтуунун эсептөө программасы». Албетте, бул программа көп убакыт колдонулат, демек анын туура иштешинин практикалык зор мааниси бар. Ошондуктан мындай программалардын тактыгы эң маанилүү болуп саналат. Эксплуатациялоо процессинде программа кемчиликтерден улам арылып, өркүндөтүлүп турушу мүмкүн.