Пример:

If x>0 then

Begin

x:=x*2;

write (x);

end;

Такая группа (begin x:=x*2; write (x); end) называется составным оператором и рассматривается как единое целое.

Общий вид составного оператора может выглядеть следующим образом:

Begin

Оператор1;

Оператор2;

……………

End;

Зарезервированные слова Begin и End часто называют открывающей и закрывающей операторными скобками.

Рассмотрим примеры, демонстрирующие использование составного оператора.

Пример 4. Пусть дано некоторое целое число. Составить программу, которая выводит на экран монитора сообщение о том, какое это число: положительное либо отрицательное. И если это число положительное, уменьшает его в 2 раза, в противном случае возводит его в квадрат.

Алгоритм решения данной задачи в виде блок-схемы представлен на рисунке 1.5.

Рис. 1.5

Программа, реализующая данный алгоритм, имеет вид:

program chislo;

var a, r:integer;

begin

write('Введите целое число: ');

readln(a);

if a > 0 then

begin writeln('положительное');

r:=a div 2;{число уменьшается в 2 раза }

end

else

begin writeln('отрицательное');

r:=a*a;{число возводится в квадрат}

end;

write ('r=',r)

end.

Результат выполнения программы при вводе числа -5:

Введите целое число: -5

отрицательное

r=25

Результат выполнения программы при вводе числа 8:

Введите целое число: 8

положительное

r=4

Важно помнить:

Ø  Нельзя ставить «;» перед словом else.

Ø  При записи составных операторов каждое зарезервированное слово begin должно быть «закрыто» словом end, то есть следует соблюдать правила вложенности операторных скобок.

НЕ нашли? Не то? Что вы ищете?

Пример 5. Ввести целое число и, если оно двузначное, найти его цифры, в противном случае вывести сообщение «Не могу найти цифры».

Алгоритм решения этой задачи в виде блок-схемы представлен на рисунке 1.6.

Рис.1.6

Программа, реализующая данный алгоритм, имеет вид:

program cifry;

var a, c1,c2:integer;

begin

write('Введите целое число: ');

readln(a);

if (a > 9)and (a<100) then

begin c1:=a div 10;

c2:=a mod 10;

write (c1,' ',c2)

end

else write('Не могу найти цифры');

end.

Результат выполнения программы при вводе числа 27:

Введите целое число: 27

2 7

Результат выполнения программы при вводе числа 345:

Введите целое число: 345

Не могу найти цифры

1.  В каких случаях в программе используется условный оператор if?

2.  Какой вид имеет полная форма условного оператора if?

3.  Какой вид имеет сокращенная форма условного оператора if?

1.  Как на блок-схеме изображается полная форма алгоритмической конструкции с ветвлением?

2.  Какие операции сравнения используют для записи простых условий?

3.  Как образуются составные условия?

4.  Что такое составной оператор?

Упражнения

1.  Составьте программу, которая проверяет знание даты основания города Минска. Программа должна запросить: «В каком году был основан город Минск (например, в 1067 либо в 993 либо в 1147) ?» и в случае верного ответа сообщать «Верно», в противном случае «Вы ошиблись».

2.  Составьте программу, которая определяет, является ли данное число нечетным.

3.  Составьте программу, которая вводит число с клавиатуры, и если оно отрицательное возводит его в квадрат.

4.  Составьте программу, которая выводит пример на умножение двух однозначных чисел, запрашивает ответ пользователя, проверяет его и выводит сообщение «Правильно!» или «Вы ошиблись» и правильный результат.

5.  Составьте программу, которая проверяет, делится ли на 3 данное число.

6.  Составьте программу, которая проверяет, равны ли 3 данных целых числа.

7.  Составьте программу, которая вычисляет оптимальный вес пользователя, сравнивает его с реальным весом и выдает рекомендации о необходимости поправиться или похудеть. Оптимальный вес вычисляется по формуле: рост (в сантиметрах) – 100.

§2. Составление и реализация алгоритмов с ветвлением

Ветвление – базовая алгоритмическая конструкция, являющаяся одним из самых популярных средств, изменяющих естественный порядок выполнения операторов программы. Алгоритмы, содержащие конструкцию ветвления, называют алгоритмами с ветвлением.

Составляя алгоритмы с ветвлениями, можно решать различные задачи, требующие анализа создавшихся условий, в зависимости от которых программа будет выполнять ту либо иную ветвь операторов.

Например, с помощью алгоритма с ветвлением можно найти большее из двух, из трех и более заданных чисел.

Пример 1. Найти большее из двух заданных разных чисел.

Программа решения задачи может иметь вид:

program bid;

var a, b:integer;

begin

writeln('Введите два разных числа');

write('a=');

readln(a);

write('b=');

readln(b);

if a>b then writeln('большее число=',a)

else writeln('большее число=',b);

end.

Результат выполнения программы при вводе a=15 и b=12:

Введите два числа

a=15

b=12

большее число=15

Программа выполнила оператор, принадлежащий ветке then, так как условие (a>b) верно.

Результат выполнения программы при вводе a=11 и b=18:

Введите два числа

a=11

b=18

большее число=18

Во втором случае программа выполнила оператор, принадлежащий ветке else, так как условие (a>b) неверно.

Пример 2. Используя составные условия и логические операции, по номеру месяца определить время года.

Программа решения задачи может иметь вид:

Program seasons;

var nm:integer;

begin

write('Введите номер месяца ');

readln(nm);

if (nm>=3)and(nm<=5) then

writeln('весна');

if (nm>=6)and nm<=8) then

writeln('лето');

if (nm>=9)and(nm<=11) then

writeln('осень');

if (nm=12)or(nm<=2) then

writeln('зима');

end.

Результат выполнения программы при вводе номера месяца 7:

Введите номер месяца 7

Лето

В программе seasons выполняется только один из четырех операторов if, в зависимости от введенного номера месяца.

Вспомним графические возможности языка программирования Pascal и следующие две задачи решим с помощью графики.

Пример 3. Нарисовать на экране монитора зеленую линию, если на запрос компьютера «Введите число» введем 1, в противном случае нарисовать красный прямоугольник.

Программа решения задачи может иметь вид:

program Line_or_rectangle;

uses graphabc;

var k:integer;

begin

writeln ('Введите число');

readln(k);

if k = 1 then begin

SetPenColor(clGreen);

Line (200,200,400,200);

end

else begin

SetBrushColor(clRed);

Rectangle(200,200,450,350);

end;

end.

Запустите программу на выполнение и введите какое-нибудь число. Если введете число 1, результат - зеленая линия, иначе - красный прямоугольник.

Пример 4. Имеется квадрат со стороной a. Можно ли поместить круг радиуса r в данный квадрат?

Программа, представленная ниже, решает данную задачу и результат подтверждает рисунком.

Program krug_v_kvadr;

uses graphabc;

var a, r:integer;

begin

write('введите строну квадрата ');

readln(a);

write('введите радиус круга ');

readln(R);

if a >=2*R then writeln('круг входит в квадрат')

else writeln('круг не входит в квадрат');

setWindowSize(640,480);

setBrushStyle (bsclear);

setPenWidth(5);

setPenColor(clRed);

circle(320,240,r);

setPenColor(clGreen);

rectangle(320-(a div 2),240-(a div 2),320+(a div 2),240+(a div2));

end.

Результат выполнения программы при вводе a=300 и r=100:

Рис. 1.7.

А теперь рассмотрим задачу, которая демонстрирует вложенность одного оператора if в другой оператор if.

Пример 5. Даны коэффициенты a и b линейного уравнения ax+b=0. Требуется найти его корни, если они есть.

Известно, что решение данной задачи зависит от значений a и b. Если а не равно 0, то x=-b/a. Если же а=0, то необходимо проверить равно ли b нулю. При b=0 корнем является любое число, в противном случае корней нет.

Программа, представленная ниже, реализует данный алгоритм решения задачи.

program Lin_ur;

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7