- •Лекція 3. Програмування основних алгоритмічних структур.
- •Алгоритми процесів з розгалуженнями та їх програмування. Оператор вибору case. Алгоритми циклічних процесів: «до», «поки», «для». Регулярні та ітераційні цикли. Програмування циклів.
- •Програмування процесів з розгалуженнями.
- •Алгоритми з розгалуженням.
- •Умовний оператор.
- •Var a, b, y: real;
- •Var X, y, k: real;
- •Оператор вибору.
- •Var a:byte;
- •X, y, c:real;
- •Оператор безумовного переходу.
- •1: Write (‘*’);
- •Програмування циклічних процесів. Алгоритми циклічних процесів.
- •Var і, s: integer;
- •Var I,n, y :integer;
- •Var a,b,c,d,e,f: byte;
- •Var a, X, w: real;
- •Var a, X, w: real;
- •Var X, y, a, b, hx, max, xmax: real;
- •Алгоритми ітераційних процесів.
Var і, s: integer;
begin
s:=0;
for i:=1 to 100 do s := s + i;
writeln (‘s=’,s);
readln;
end.
Приклад 3.11. Знайдемо y=n!(див. приклад 2.11)
var i,n :integer;
y: longint;
begin
writeln(‘вв. n’);
readln(n);
y:=1;
for i:=1 to n do y:= y*i;
writeln (n,’!=’,y);
readln;
end.
Приклад 3.12. Знайдемоy=.(див. приклад 2.12)
var x,y:real;
i,n :integer;
begin
writeln(‘вв. x, n’);
readln(x, n);
y:=1;
for i:=1 to n do y:= y*x;
writeln (’y=’,y);
readln;
end.
Увага! Обов’язково розберіться та вивчіть програми, розглянуті у прикладах 2.10, 2.11, та 2.12. Вони надалі будуть використовуватися у різних програмах як фрагменти.
Розглянемо ще декілька прикладів регулярного циклу.
Приклад 3.13.Вивести на екран літери англійського алфавіту в оберненому порядку.
var i: char; {параметр циклу і є символьною величиною}
begin
for i:= ’z’ dounto ‘a’ do
write(i,’,’);
end.
Приклад 3.14. Знайти значення виразу y=
Приведений вираз є сумою дробів, в чисельнику яких перебирається значення синусу, а в знаменнику береться косинус від попереднього значення знаменника. У зв’язку з тим, що значення змінної-параметру циклу змінюється з 1 до n, то можна використати оператор for. Введемо додаткову змінну для знаменника: zn. Отримуємо таку програму:
var ch,zn,y:real;
i,n :integer;
begin
writeln(‘вв. n’);
readln(n);
y:=0;
zn:=1;
for i:=1 to n do
begin
zn:=cos(zn);
y:=y+sin(i)/zn;
end;
writeln (’st=’,st);
readln;
end.
Приклад 3.15. Знайти y=. Відомо, що число коренів дорівнюєn. Алгоритм цього прикладу достатньо простий. В регулярному циклі відбуваються наступні дії: до деякої величини додається 2 та з результату береться корінь від цієї величини. Ця дія відбувається n раз.
var y:real;
i,n :integer;
begin
writeln(‘вв. n’);
readln(n);
y:=0;
for i:=1 to n do y:=sqrt(y+2);
writeln (’y=’,y);
readln;
end.
Оператори мови Pascal можуть бути вкладеними, причому глибина вкладеності необмежена. Як приклад розглянемо задачу на виведення на екран таблиці множення Піфагора. Перший множник позначемо змінною i, другу змінну позначемо j. Для кожного значення першої змінної, яка перебирає значення від 1 до 10, треба відповідно вибрати всі значення другої змінної Тому в середині циклу по першій змінній i використовуємо регулярний цикл для другої змінної j. Таким чином отримуємо вкладені цикли.
Var I,n, y :integer;
begin
writeln(‘таблиця множення’);
writeln(‘ , 1 2 3 4 5 6 7 8 9 10’);
for i:=1 to 10 do
begin
write(i, ‘ ‘);
for j:=1 to 10 do
begin
y:=i*j;
write(y:4);
end;
writeln;
end;
readln;
end.
Приклад 3.16. Знайти кількість «щасливих» білетів з номерами від 000000 до 999999 включно. Білет є щасливим, якщо сума лівих трьох цифр номера дорівнює сумі правих трьох цифр. В цьому випадку кількість вкладених циклів дорівнює 6 – кількості цифр у числі.
-
величина
ідентифікатор
тип
вхідні величини
перша цифра
a
ціле
друга цифра
b
ціле
третя цифра
c
ціле
четверта цифра
d
ціле
п’ята цифра
e
ціле
шоста цифра
f
ціле
вихідні величини
кількість щасливих білетів
k
ціле
Для розв’язку задачі будемо перебирати всі можливі номери білетів, таким чином кожна цифра змінюється від 0 до 9: