I. Цикъл
Цикълът е основна управляваща структуара, която осигурява възможност за многократно изпълняване на едно или поредица от няколко действия (съставен оператор).
В блок схема на алгоритъм цикълът има следният вид:
Всеки цикъл има две части- тяло и условие. Тялото е поредицата от действия, които трябва да се изпълнят многократно, а условието е булев израз определящ кога да приключи изпълнението на тялото. В зависимост от това кога се прави проверка на условието и кога се изпълнява тялото на цикъла, той може да бъде с постусловие (фиг. а) или предусловие (фиг. б). При цикъл с постусловие тялото се изпълнява преди да се направи проверка на условието, т.е. такъв цикъл е подходящо да се използва тогава, когато поредицата от действия е необходимо да се изпълнят поне един път. При цикъл с предусловие най- напред се прави проверка на условието, а след това се изпълнява тялото. И в двата случая в тялото на цикъла трябва дя има действие, което да указва влияние на стойността на булевия израз, определящ края на цикъла.
II. Оператор Repeat …until
Операторът Repeat …Until е оператор за цикъл с постусловие, т.е. при него първо се изпълнява тялото на цикъла, а след това се прави проверка за край на цикъла. Общия вид на този оператор е:
Repeat
‹оператор›;
‹оператор›;
‹оператор›;
...
‹оператор›;
Until ‹булев израз›;
и действието му е следното: операторите между служебните думи Repeat и Until ще се изпълняват докато се изпълни условието, т.е. докато булевият израз не приеме стойност true. В тялото на цикъла може да имаме произволен брой оператори.
Операторът Repeat …Until има следната синтактична диаграма:
Пример1: Да се сътави програма за пресмятане сумата на целите числа от 1 до 10.
Program Suma1_10;
Var
Sum, I : Integer;
Begin
Sum := 0;
I := 1;
Repeat
Sum := Sum + I;
I := I + 1;
Until I > 10;
writeln (‘ Sumata e ‘, Sum);
End.
III. Оператор While … Do
Операторът While … Do е оператор с предусловие. Той позволява многократно изпълнение на последователност от действия докато дадено условие, представено с булев израз е вярно. Общият вид на оператора е следния:
While ‹булев израз› Do
‹оператор›;
Действието на оператора While се състои в многократно изпълнение на оператора след служебната дума Do.Този оператор представлява тялото на цикъла. Тук може да имаме само един оператор и за това когато се налага многократно изпълнение на поредица от действия се използва съставен оператор. Всеки път преди да се изпълни тялото на цикъла се изчислява булевият израз, ако резултатът е false цикълът завършва, а ако е true се изпълнява тялото на цикъла.
Операторът While … Do има следната синтактична диаграма:
Пример2: Да се сътави програма за пресмятане сумата на целите числа от M до N, където M и N се въвеждат от клавиатурата.
Program SumaM_N;
Var
Sum, I, M, N : Integer;
Begin
write (‘ M = ‘); readln (M);
write (‘ N = ‘); readln (N);
Sum := 0;
I := M;
While I <=N Do begin Sum := Sum + I; I := I + 1; end; writeln (‘ Sumata e ‘, Sum); End. ЗАДАЧИ 1. Съставете програма, която пресмята функцията факториел n!=1.2.3. … .n. 2. Съставете програма която пресмята приближено функцията cos х с помощта на безкрайната сума: Сумирането да се извърши с абсолютна грешка Eps. 3. Съставете програма, която намира първите N (N>2) члена на реда на Фибоначи. Всеки член на този ред се получава като сума на предишните два, а първите два члена се 1. (1 1 2 3 5 8 13 21 34 …)
4. Съставете програма, която пресмята сумата на реципрочните стойности на целите числа от 1 до N (N≤100) Задачата да се реши по два начина, като се използват двата различни оператора за цикъл.
5. Съставете програма която пресмята приближено следната сума
Сумирането да продължи докато бъдат събрани първите N члена (3≤N≤10);
РЕШЕНИЯ
ЗАДАЧА1
Функцията факториел съпоставя на всяко неотрицателно цяло число n стойност n! по следните правила:
• 0!=1;
• n!=n.(n-1)! или n!=1.2.3. … .n
• За отрицателните числа функцията е неопределена
За да състави програма за намиране на стойността на функцията факториел, ще използваме следния алгоритъм:
Програмата има следната реализация:
program Faktoriel;
Var
F, n, i : integer;
Begin
Write('N='); Readln(n);
If N>0 then
begin
F:=1;
i:=1;
While i<=n do begin F:=F*i; i:=i+1; end; end else if n=0 then F:=1 Else F:=0; writeln('n!=',F); End. ЗАДАЧА2 Да пресметнем дадена сума с абсолютна грешка eps означава сумирането да приключи тогава, когато разликата между два последователни члена стане по- малка от eps. Всеки следващ член от сумата се получава от предишния с умножаване с множителя , където k е спомагателен индекс, който помага да се формира знаменателя. За реализирането на програмата е използван следния алгоритъм: Програмата е следната: program cosinosX; var cosX:real; {cos(x)} x:real; {argument} eps:real; {tochnost} u:real; k:integer;{indeks} Begin repeat writeln('Vavedete tochnost'); write('eps='); readln(eps); until (0
begin
k:=k+2;
u:=-u*sqr(x)/((k-1)*k);
cosX:=cosX + u;
end;
writeln('cos(',x:7:5,')=',cosX:7:5);
End.
ЗАДАЧА3
Редът на Фибоначи се получава, като всеки негов член е сума на предходните два, като първия и втория са единици. Началото на реда има следния вид:
1 2 3 5 8 13 21 34......
При съставянето на програмата да се използва следния алгоритъм:
This entry was posted
at 12:03
and is filed under
Компютърни системи и технологии
. You can follow any responses to this entry through the
.
0 comments
Запиши се и чети този блог
Категории
- Икономика (16)
- Компютърни системи и технологии (37)
- Маркетинг (38)