Алгоритмическая конструкция ВЕТВЛЕНИЕ
Коротко о главном:
Условный оператор if в программе используется в случаях, когда компьютеру необходимо принимать решения в зависимости от некоторого условия.
Полная форма условного оператора if в общем виде:
If then
else .
If then .
= (равно),
(больше),
= (больше либо равно),
(не равно).
and – логическое «и»;
or – логическое «или»;
not – логическое отрицание.
Составьте программу, которая рисует картинку «Звёздное небо»: n маленьких разноцветных кругов («звёзд»), радиус которых определяется случайным образом в диапазоне от 4 до 14, на тёмно – синем фоне.
Ответ:
uses graphabc;
Var n, i, x, y: integer;
Begin
writeln ('Ведите n');
readln (n); {ввод числа звёзд}
SetWindowSize (640,480);
ClearWindow(clBlue);
for i:=1 to n do
begin
SetBrushColor (rgb(i*100,i*25,i*50)); {цвет кисти разных оттенков}
x:=random(640); y:=random(480);
Circle (x, y, random(11)+4);
end;
End.
Результат работы программы может выглядеть так:
В
едите n
80
Упражнение 5
Составьте программу, которая рисует 10 окружностей зелёного цвета разных радиусов с одним центром.
Ответ:
uses graphabc;
Var n, i, x, y: integer;
Begin
SetWindowSize (640,480);
ClearWindow;
SetBrushColor (clGreen); {зелёный цвет кисти}
for i:=10 downto 1 do {изменение параметра i от 10 до 1 с шагом 1}
Circle (320, 240, 20*i);
{рисование окружностей разного радиуса, начиная с самой большой}
End.
Результат работы программы может выглядеть так:

Упражнение 6
Составьте программу, которая определяет, являются ли два данных натуральных числа взаимно простыми, и выводит на экран соответствующее сообщение: «Да» либо «Нет». (Натуральные числа называются взаимно простыми, если их наибольший делитель равен 1).
Ответ:
Var i, a, b: integer;
Begin
writeln ('Ведите a');
readln (a); {ввод первого числа}
writeln ('Ведите b');
readln (b); {ввод второго числа}
while ab do {Проверка равенства чисел}
if ab then a:=a-b else b:=b-a;
{Всегда из большего вычитаем меньшее}
if a=1 then writeln ('Да')else writeln ('Нет');
{Поскольку после выполнения цикла a и b равны, то мы одно из них сравниваем с 1}
End.
Результат работы программы может выглядеть так:
Ведите a
5
Ведите b
4
Да
Ведите a
20
Ведите b
4
Нет
Упражнение 7
Составьте программу, которая определяет, является ли данное натуральное число простым, и выводит на экран соответствующее сообщение: «Да» либо «Нет». (Простое число делится на 1 и на само себя).
Ответ:
Var i,a, k: integer;
Begin
write ('Ведите a = '); readln (a); {ввод числа}
k:=0;
for i:=2 to (a div 2) do
if a mod i = 0 then k:=1;
{Если остаток от деления а на i равен нулю, то значит найден делитель}
if k=1 then writeln ('Нет')else writeln ('Да');
{Если найден делитель и число соответственно не простое, то выводится сообщение "Да", иначе - "Нет"}
End.
Результат работы программы может выглядеть так:
Ведите a = 20
Нет
Ведите a = 17
Да
Упражнение 8
Составьте программу, которая определяет, через сколько лет сумма в S р., положенная в банк под P% годовых с капитализацией, увеличится в 3 раза.
Ответ:
Var s0, p, i, k: integer; s: real;
Begin
writeln ('Ведите сумму вклада '); readln (s0);
{ввод первоначальной суммы вклада}
writeln ('Ведите процентную ставку '); readln (p);
{ввод процентной ставки}
s:=s0; k:=0;
while s
begin
s:=s+s*p/100; k:=k+1;
{Ежегодное увеличение суммы и счётчика }
end;
writeln('Через ', k,' лет');
End.
Результат работы программы может выглядеть так:
Ведите сумму вклада
3000000
Ведите процентную ставку
15
Через 8 лет
Упражнение 9
Составьте программу вывода на экран n первых чисел Фибоначчи. (Числа Фибоначчи – это члены числовой последовательности 1, 1, 2, 3, 5, 8, 13, …, которые вычисляются по следующему правилу: а1=1, а2=1, а3=а2+а1, … аn=an-1+an-2).
Ответ:
Var i, a, b, n: integer;
Begin
writeln ('Ведите n '); readln (n); {ввод n}
a:=1; b:=1;
if n mod 2 0 {Проверка чётности введённого числа n}
then
for i:=1 to n div 2+1 do
{Параметр цикла изменяется от 1 до n делённое нацело надвое плюс 1, например: для n=9 параметр цикла изменяется до 5, с шагом 1}
begin
write(a,' ');
if in div 2 {Проверка условия: параметр цикла меньше либо равен n делённое нацело надвое}
then write(b,' ');
a:= a+b; b:=b+a; {Изменение значений первого и второго слагаемого}
end
else
for i:=1 to n div 2 do {Параметр цикла изменяется от 1 до n делённое нацело надвое с шагом 1}
begin
write(a,' '); {Печать первого слагаемого}
a:= a+b; write(b,' '); b:=b+a;
{Печать второго слагаемого и изменение значений первого и второго слагаемого}
end ;
End.
Результат работы программы может выглядеть так:
Ведите n
9
1 1 2 3 5 8 13 21 34
Ведите n
10
1 1 2 3 5 8 13 21 34 55
Упражнение 10
Составьте программу «Угадай!» . Программа «задумывает» случайное число в диапазоне от 0 до 99. После каждой попытки играющего угадать число программа выводит на экран одно из сообщений: «Больше», «Меньше» или «Угадано». На отгадывание числа даётся 10 попыток. Программа завершается после выполнения одного из условий: дан правильный ответ либо все попытки исчерпаны.
Ответ:
Var x, i, a, k: integer;
Begin
x:=random(100); {Случайное число от 0 до 99 помещается в переменную х}
writeln ('Задумано число от 1 до 99. Угадайте его!');
writeln ('У вас есть 10 попыток.');
i:=1; k:=0; {Номер попытки и количество сделанных попыток}
while i
begin
write('Попытка №',i,'. Введите предполагаемое число: ');readln (a);
{ввод числа}
i:=i+1;
if ax
then write('Меньше')
else if aБольше')
else begin write('Угадано'); i:=11; end;
writeln; {Переход на следующую строку}
k:=k+1;
end;
write('Число попыток: ',k);
End.
Результат работы программы может выглядеть так:
Задумано число от 1 до 99. Угадайте его!
У вас есть 10 попыток.
Попытка №1. Введите предполагаемое число: 50
Меньше
Попытка №2. Введите предполагаемое число: 25
Меньше
Попытка №3. Введите предполагаемое число: 12
Меньше
Попытка №4. Введите предполагаемое число: 6
Меньше
Попытка №5. Введите предполагаемое число: 3
Меньше
Попытка №6. Введите предполагаемое число: 2
Меньше
Попытка №7. Введите предполагаемое число: 1
Угадано
Число попыток: 7