Автор: Пользователь скрыл имя, 06 Января 2012 в 21:54, реферат
Кез келген есепті шешу - берілген алғашқы мәліметтерді пайдаланып, нәтиже алуды талап етеді, яғни есепті шешу алгоритмі алғашқы мәліметтерді бірте-бірте түрлендіру арқылы нәтиже алу жолын сипаттайды.
Көздеген мақсатқа жетуге, қойылған мәселені шешуге бағытталған әрекеттер тобын іске асыру үшін атқарушыға түсінікті әрі дәл нұсқаулар жиынтығы алгоритм деп анықталады.
Енді әр құрылымның анықтамасын келтіреміз.
«Ілесу»
алгоритмі деп бірнеше
«Тармақталу» алгоритмінде есептің шешімі қойылған шартқа байланысты болса, онда әрекеттер тізбегінің таңдауы ұйымдастырылады.
«Таңдау» алгоритмінде көп сериялы тармақталу командасы пайда болады.
«Қайталану» алгоритмі (циклдық) деп кейбір әрекеттердің қойылған шартқа байланысты бірнеше рет қайталануын айтады.
Осы құрылымдарын пайдаланып құрылған алгоритмдерді құрылымдық алгоритмдер деп атайды. Алгоритм құрылымының негізгі ерекшелігі – оның бір ғана ену және шығу нүктелері болады.
Алгоритмге
енгізілетін түрлі сериялық командалардың
әр сериясының бір блок деп қарастырып,
оларды S1, S2, ... арқылы белгілеп алайық.
«Ілесу» құрылымы – ретімен орындалатын
блоктар:
Оның
жеке түрінен құрылған (денесі тек
ретімен орындалатын
«Ілесу»
алгоритмнің блок-схемасын көрсетейік.
Сурет 1. Ретімен
орындалатын блоктар
Алгоритмді
жазу ережесі төмендегідей болады:
алг <алгоритмнің аталуы>
басы
шамаларды енгізу
есептеу жүргізу
нәтижесін шығару
соңы
Сызықты
структуралы алгоритмді Паскаль тілінде
құрылған программа түрінде келесі мысалда
қарастырамыз.
Program Hello;
const vopros=’Атыңыз кім?’;
var name:string;
begin
writeln(vopros);
readln(name);
writeln(‘Hello,’,name,’!’);
readln
end.
Программаның
бірінші жолында аталуы көрсетіледі
(Hello). Программаның аты резервтелінген
program сөзінен басталады.Әр жолдың соңында
үтірлі нүкте қойылады. Келесі жолда қолданылатын
деректер: мәні ’Атыңыз кім?’ деген мәтіндік
тұрақты және символдық типті name айнымалысы.
Программада қолданылатын деректер ең
басында айтылып кетеді. Айнымалылар бөлімі
резервіленген var сөзінен басталады.
Const
<тұрақтының аты>=<тұрақтының
мәні>;
Var
<айнымалы аты>,…,<айнымалы аты>:<типтің
аталуы>;
Программаның басталуын begin сөзі білдіреді. Программаның денесінде 2 команда орындалады. Біріншісі writeln мониторға ’Атыңыз кім?’ сөйлемін шығарады. Келесі readln командасы пернетақтадан ақпараттың енгізілуін күтеді.
Келтірілген программа сызықты программа деп аталады, өйткені мұнда тек енгізу мен шығару амалдары орындалады. Бұндай программаларда тек Read немесе Readln ақпаратты енгізу операторлары, меншіктеу операторлары және Write немесе Writeln нәтижені шығару операторлары пайдаланады.
Программаны
теріп болғаннан кейін
Атыңыз кім?
Меңзер жаңа жолдың басына тұрып, Сіздің пернетақтадан атыңызды енгізгенін күтеді, (мысалы Қайрат), Enter басып, экранда:
Қайрат
Hello, Қайрат!
Енді
Enter пернесін басып Сіз рограммалау
ортасына қайтасыз.
Басқарушы
базалық структуралар.
«Тармақталу» базалық
структурасы
«Тармақталу» алгоритмда міндетті түрде шарт қойылады. Шарт – тексеру нәтижесінде «иә» (ақиқат) немесе «жоқ» (жалған) логикалық мәндерін қабылдайтын логикалық өрнек (пікір). Мысалы, “x<1”, “x>5”, “x+2=x”, “5+3=8” сияқты ой-пікірлер. Мұндағы 5+3=8 – шын пікір, x+2=x – жалған пікір. Осы сияқты, x-тің бір мәні үшін x>5 шарты сақталса, шартты тексеру «ақиқат» деп, сақталмаса «жалған» деп нәтижеленеді.
Сонымен,
тармақталу командасы – шарттың
сақталуына байланысты екі сериялы
әрекеттердің бірін орындауға берілетін
нұсқау. Ол егер қызметші сөзден басталып,
бітті қызметші сөзімен аяқталады және
оның толық және қысқа түрлері болады.
«Тармақталу» структурасында егер,
онда, әйтпесе, бітті қызметші
сөздер қолданылады.
егер Р егер Р
онда S1 онда S
әйтпесе S2 бітті
бітті
«Тармақтың»
толық түрі «Тармақтың» қысқа түрі
Енді
осы түрлерін блок-схемада көрсетейік.
Алгоритмдік
тілде шарттың да екі түрі бар:
Паскаль
программалау тілінде тармақ құрылымды
программаны ұйымдастыру үшін
өту, шартты және
таңдау операторлары пайдаланады.
▲ Шартты оператордың жазылу үлгісі:
if <шарт> then <оператор1> else <оператор2>; - тармақтың толық түрі
немесе
if
<шарт> then <оператор1>; - тармақтың
қысқаша түрі
Мысал
1.
функцияның мәнін анықтайтын программа
құрыңыз. b-y=0 шартын тексеруді қарастырыңыз.
Program Func;
label 2,4;
var b,y,z:real;
begin
readln(b,y);
if b-y=0 then goto 2;
z:=ln(b-y)/sqrt(b-
goto 4;
2:z:=0.0;
4:write(z)
end.
Мысал
2. Тармақты пайдаланатын программаны
ұсынамыз.
Program Dialog;
const vopros=’Атыңыз кім?’;
otvet1=’Сіз жассыз!’;
otvet2=’Сіз жассыз және таланттысыз!’;
otvet3=’Сіз ақылдысыз және әдемісіз!’;
otvet4=’Сіз өмірді көргенсіз!’;
var name:string;
age:byte;
begin
writeln(vopros);
readln(name);
writeln(‘Hello’,
writeln(‘Жасыңыз нешеде?’);
readln(age);
if age <15 then writeln(otvet1)
else if age<20 then writeln(otvet2)
else if age<30 then writeln(otvet3)
else writeln(otvet4)
end.
«Таңдау» базалық структурасы.
Көп
сериялы (екі сериядан артық) тармақталу
командасын таңдау командасы деп
атайды. Бұндай «Таңдау» алгоритмінде
командалар тізіміне әйтпесе нұсқауын
енгізбеуде мүмкін. ЭЕМ таңдау командасында
сақтаған шартқа сәйкес блокты орындайды
да, құрылымнан тыс берілген кезекті команданы
орындауға кіріседі. «Таңдау» структурасында
таңдау, жағдай, әйтпесе, бітті
қызметші сөздер қолданылады.
таңдау
жағдай S1
жағдай S2
...................
жағдай Sn
әйтпесе S(n+1)
бітті
«Таңдау» командасының
құрылымы
Енді
«таңдау» құрылымның блок-схемасын қарастырамыз.
▲
Паскаль алгоритмдік тілінде программа
құру кезінде таңдау операторының жазылу
үлгісі:
Case <селектор> of
<жағдай1>:<оператор 1>;
<жағдай2>:<оператор 2>;
…
<жағдай n>:<оператор n>
else <else бөлімінің операторы>
end;
Мысал
ретінде 5 лекцияда көрсетілген программаның
таңдау операторымен құрылғанын қарастырайық.
Бұл программада селектор ретінде age айнымалыны
аламыз. Осы айнымалыға байланысты тармақ
ұйымдастырылады.
Program Dialog 1;
const vopros=’Атыңыз кім?’;
otvet1=’Сіз жассыз!’;
otvet2=’Сіз жассыз және таланттысыз!’;
otvet3=’Сіз ақылдысыз және әдемісіз!’;
otvet4=’Сіз өмір көргенсіз!’;
var name:string;
age:byte;
begin
writeln(vopros);
readln(name);
writeln(‘Hello’,
writeln(‘Жасыңыз нешеде?’);
readln(age);
case age of
0..14: writeln(otvet1);