Как написать программу на паскале ветвление

if

В предыдущих уроках мы рассмотрели наиболее простой, линейный тип алгоритмов. Напомню, что всего существует три типа: линейные, разветвляющиеся и циклические (алгоритмы с повторениями). В этом уроке я расскажу вам о втором типе алгоритмов — об алгоритмах с ветвлениями.

Ветвления

Ветвление – это команда алгоритма, в которой делается выбор, выполнять или не выполнять какую-нибудь группу команд в зависимости от условий.

Ветвление используется в двух случаях:

  1. Когда требуется пропустить определенную команду или группу команд.
  2. Когда нужно записать выбор тех или иных действий в зависимости от условия.

В блок-схеме условие ветвления изображается в ромбе, из которого обязательно выходят ДВЕ стрелки – первая (стрелка «Да») указывает на команды, которые будут выполняться в случае, если условие соблюдено; вторая (стрелка «Нет») – на команды, которые будут выполнены, если условие не соблюдено. Даже если команда, на которую указывает одна из стрелок (Чаще всего «Нет») отсутствует, стрелка все равно имеет место быть.

Алгоритм ветвления

Алгоритм с ветвлением, представленный в виде блок-схемы.

В словесной формулировке запись ветвления выглядит так:

ЕСЛИ <условие выбора > ТО <команды, выполняемые при соблюдении условия> ИНАЧЕ <команды, выполняемые при несоблюдении условия>

Реализация ветвления в Паскаль.

Как же реализовать ветвление в Паскаль? Проще, чем вы думаете:
if <условие выбора > then <команды, выполняемые при соблюдении условия> else <команды, выполняемые при несоблюдении условия>

Запомните! Перед else никогда не ставят точку с запятой!

Давайте поговорим об условии выбора. Понятно, что этологическое выражение. Если оно является правдой, то выполняется главная ветвь, если ложь, то боковая ветвь.

Рассмотрим несколько задач из сборника М.Э.Абрамяна «1000 задач по программированию».

If1. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное число.

В данной программе даже не надо реализовывать боковую ветвь.

sXr13UnZ7bE

program if1;

var
  a: integer;

begin
  read(a);
  if a > 0 then Inc(a);
  write(a);
end.

If2. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае вычесть из него 2. Вывести полученное число.

if2

program if2;

var
  a: integer;

begin
  read(a);
  if a > 0 then Inc(a) else a -= 2;
  write(a);
end.

If3. Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10. Вывести полученное число.

Для того чтобы решить эту задачу мы должны использовать вложенный if.

if3 510x648

Мы работаем в PascalABC.NET. Только в этой СР есть возможность написать а -= 2.
program if3;

var
  a: integer;

begin
  read(a);
  if a >= 0 then 
    if a = 0 then a := 10 else Inc(a) {перед else нет точки с запятой.}
   else a -= 2;
  write(a);
end.

If5. Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе.

if5

Длиннющая блок-схема. 🙂
program if5;

var
  a, b, c, plus, minus: integer;

begin
  write('Введите три целых числа: ');
  read(a, b, c);
  plus := 0;
  minus := 0;
  if a > 0 then Inc(plus) else Inc(minus);
  if b > 0 then Inc(plus) else Inc(minus);
  if c > 0 then Inc(plus) else Inc(minus);
  writeln('Количество положительных чисел - ', plus);
  writeln('Количество отрицательных чисел - ', minus);
end.

If30. Дано целое число, лежащее в диапазоне 1–999. Вывести его строку-описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.

if30

program if30;

var
  a: integer;

begin
  write('Введите число: ');
  read(a);
  if Odd(a) then write('Нечетное ') else write('Четное ');
  if a >= 100 then write('трехзначное число') else
    if a < 10 then write('однозначное число') else write('двухзначное число');
end.

Вот и все! Не забывайте кликать по кнопочкам и добавлять наш сайт в закладки!

Структура ветвления. Условный оператор


  • 1. Какая целесообразность применения структуры ветвления в программах?
  • 2. Какой вид имеет полная форма оператора условного перехода if в языке Паскаль?
  • 3. Какой вид имеет сокращенная форма оператора условного перехода?
  • 4. Примеры использования оператора условного перехода, который имеет полную форму представления.
  • 5. Примеры использования оператора условного перехода, который имеет сокращенную форму представления.
  • 6. Примеры использования вложенных операторов условного перехода.

1. Какая целесообразность применения структуры ветвления в программах?

Бывает, что в программах возникает необходимость организовать ветвление. В этом случае процесс решения задачи происходит на основе выполнения или не выполнения некоторого условия.

В языке Паскаль выбор действия, в зависимости от некоторого условия, может быть реализован с помощью конструкции

if ... then ... else ...

или

if ... then ... 


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

Полная форма оператора условного перехода if:

if условие then
  оператор1
else
  оператор2;

Действие оператора состоит в следующем: сначала вычисляется значение выражения условие. Если оно истинное (равное TRUE), то выполняется оператор, который следует за словом then (оператор1). Если значение ложное (FALSE), то выполняется оператор, который следует за словом else (оператор2).

Операторы оператор1 и оператор2 могут быть составными, то есть содержать несколько строк кода. Такие операторы берутся в операторные скобки beginend. Такая необходимость возникает, если после зарезервированных слов then или else нужно указать несколько операторов.

В этом случае общий вид оператора условного перехода может иметь, например, следующий вид:

if условие then
begin
  // несколько операторов
  ...
end
else
begin
  // несколько операторов
  ...
end;


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

Сокращенная форма оператора условного перехода не содержит блока else и имеет вид:

if условие then
  оператор;

В этом случае оператор работает следующим образом. Сначала вычисляется значение логического (булевого) выражения условие. Если результат логического выражения условие истинный (равный TRUE), то выполняется оператор, который следует за словом then. Если результат равный FALSE, то выполняется оператор, который следует за оператором if (в операторе if…then ничего не выполняется).



Если при выполнении условия нужно выполнить несколько операторов, то общий вид оператора условного перехода может быть таким:

if условие then
begin
  // два или больше оператора
  ...
end;


4. Примеры использования оператора условного перехода, который имеет полную форму представления.

Пример 1. Фрагмент программы нахождения максимального значения между двумя вещественными числами.

var
  a,b:real; // a, b - переменные, для которых ищется максимум
  max:real; // максимум

...

begin

  ...

  // a, b - задаются

  if a>b then
    max:=a
  else
    max:=b;

  ...

end;

Пример 2. Вычисление значения функции согласно условию. Пусть необходимо найти значение функции:

formula_01r

Фрагмент программного кода, решающего эту задачу:

...

var
  x,f:real;
 
begin

  ...

  // x - задается

  if -5<x then
    f := x*x+8
  else
    f := -x*x*x+2;

  // в переменной f - результат

  ...

end;


5. Примеры использования оператора условного перехода, который имеет сокращенную форму представления.

Пример 1. Фрагмент кода, который находит минимальное значение между двумя вещественными числами x и y.

...

var
  min:real;

...

begin

  ...

  // x, y - заданы

  min := x;
  if min<y then
    min := y;

  ...

end;

Пример 2. Вычисление значения функции согласно условию. Пусть необходимо найти значение функции:

formula_02r

var
  x, f:real;

begin

  ...

  // x - задано

  if x<-6 then
    f:=3*x*x-x;
  if (-6<=x) and (x<=5) then
    f:=sqrt(7-x);
  if x>5 then
    f:=8*x-3;

...

end;


6. Примеры использования вложенных операторов условного перехода.

Операторы условного перехода могут быть вложенными. Степень их вложенности неограничена.

Пример. Поиск максимального значения среди трех заданных чисел, которые сохраняются в переменных a, b, c. Максимальное значение записывается в переменную max.

...

var
  a, b, c:integer;
  max:integer; // максимальное значение, которое нужно вычислить

...

begin

  ...

  // a,b,c - задается
  if a<b then
  begin
    if b<c then
      max:=c
    else
      max:=b;
  end
  else
  begin
    if a<c then
      max:=c
    else
      max:=a;
  end;

  ...

end;

Условный оператор.

В общем виде оператор условия в Паскаль имеет вид:

If   УСЛОВИЕ then

Begin

БЛОК_ОПЕРАТОРОВ_1;

End

Else

Begin

БЛОК_ОПЕРАТОРОВ_2;

End;

Где УСЛОВИЕ – это проверяемое логическое условие,
которое должно быть либо истинным, либо ложным; БЛОК_ОПЕРАТОРОВ_1 – код,
который должен быть выполнен, в случае, если УСЛОВИЕ истинно; БЛОК_ОПЕРАТОРОВ_2
– код, который должен быть выполнен, в случае, если УСЛОВИЕ ложно.

Напишем программу, которая делит одно число на другое.

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

var
a,
b, c : real;

Begin

WriteLn(‘Введите
делимое и делитель ‘);

ReadLn(a, b);

If b<>0 then

Begin

c:=a/b;

WriteLn(‘Результат деления = ‘, c);

End

Else

Begin

WriteLn(‘Делить
на ноль нельзя!’);

End;

End.

Перед ключевым словом условного
оператора точка с запятой не ставится никогда!

Участок кода, который должен выполняться в случае,
если УСЛОВИЕ неверно, не является обязательным.

Условные операторы в Pascal можно вкладывать друг в
друга. Для этого используется вложенный оператор IF. Рассмотрим это на примере
программы, которая будет считать количество корней квадратного уравнения.

var
A, B, C, D:real;

begin

write (‘Введите коэффициенты A,B,C: ‘);

readln (A,B,C);

D:=((B*B)-4*A*C);

if
D=0 then

begin

writeln (‘Один
вещественный корень’);

end

else

begin

if D>0 then

begin

writeln (‘Два
вещественных корня’);

end

else

begin

writeln (‘Нет вещественных корней‘);

 
        end;

end;

end.

Значения для проверки:

http://mypresentation.ru/documents/1e219ded329de1190a6e0c78ee3220f9/img3.jpg

Оператор множественного выбора.

В случае, если ветвление более сложное и зависит,
например, от значения одного выражения (или переменной), то использование оператора
If приведет к довольно громоздким конструкциям в исходном тексте
программы.

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

Case ВЫРАЖЕНИЕ
Of

value 1 : Begin

БЛОК_ОПЕРАТОРОВ_1;

End;

            value1 : Begin

БЛОК_ОПЕРАТОРОВ_1;

End;

valueN : Begin

БЛОК_ОПЕРАТОРОВ_N;

End;

Else

Begin

БЛОК_ОПЕРАТОРОВ;

End;

End;

Здесь, в качестве ВЫРАЖЕНИЯ
может быть использовано любое выражение, которое приводит либо к
целочисленному результату, либо к символьному (т.е. результат – один символ).
Недопустимо использовать выражения или переменные, которые, например, возвращают
целую строку или вещественное число.

value1, value2, …,
valueN
– это значения, которые может принимать ВЫРАЖЕНИЕ;

БЛОК_ОПЕРАТОРОВ_1,
БЛОК_ОПЕРАТОРОВ_2, …, БЛОК_ОПЕРАТОРОВ_N
– это операторы,
которые необходимо выполнять в зависимости от значения
ВЫРАЖЕНИЯ.

Блок Else здесь
используется в том же самом смысле, что и в условном операторе. Он предваряет
блок операторов, который необходимо выполнить, если среди перечисленных значений
value1, …, valueN не нашлось такого, которому бы
равнялось
ВЫРАЖЕНИЕ.

Case operation Of

1: Begin

{выполняется сложение}

End;

2: Begin

{выполняется вычитание}

End;

3: Begin

{выполняется умножение}

End;

4: Begin

{выполняется деление}

End;

End;

Еще одно преимущество
оператора множественного выбора заключается в том, что вместо одиночного
значения
ВЫРАЖЕНИЯ можно использовать несколько, а также
целые диапазоны.

Пример 1

В этом примере мы
покажем, как можно указывать несколько значений
ВЫРАЖЕНИЯ.
Как видно, каждое из значений, для которого должен выполняться один и тот же
блок операторов, записываются через запятую.

Case
number Of

1,3,5,7,11,13,17,19:
WriteLn(‘
Число ‘, number,’ – простое‘);

2,4,6,8,10,12,14,16,18,20:
WriteLn(‘
Число ‘, number,’ – четное‘);

Else

WriteLn(‘Число
‘,
number,’ –
нечетное и не является простым’);

End;

Пример 2

В этом примере мы
рассмотрим способ указания целого диапазона, в который может попадать значение
ВЫРАЖЕНИЯ
оператора множественного выбора. Диапазон значений указывается
начальным и конечным значениями, разделенными двумя точками (без всяких
пробелов):

Case
age Of

0..6:
WriteLn(‘Учащийся детского сада’);

7..16:
WriteLn(‘Учащийся школы’);

17..22:
WriteLn(‘Учащийся МГТУ им. Н. Э. Баумана’);

Else

WriteLn(‘Уже не учащийся’);

End;

Напишем программу, реализующую функции калькулятора.

Program
kalkulator;

Var a,c,d: real;

b:
char;

Begin

Write(‘Введите
первое число:’);

readln (a);

Write (‘Введите
знак’);

readln (b);

Write (‘Введите
второе число:’);

readln (c);

case b of

‘+’:
d:=a+c;

‘-‘:
d:=a-c;

‘*’:
d:=a*c;

‘/’:
d:=a/c;

end;

Write
(‘Результат ‘,a,b,c,’ равен ‘,d);

End.

Контрольная работа:

№1. Напишите программу, в которой значение переменной
вычисляется по формуле: a + b, если a – нечетное и a*b, если a – четное.

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

№3. Если целое число M делится нацело на целое число
N, то вывести на экран частное от деления, в противном случае – сообщение ”M на
N нацело не делится”.

№4. Написать программу, которая выводит на экран
большее из двух данных чисел.

Программирование ветвлений на Паскале Оператор ветвления на Паскале

В
языке Паскаль имеется оператор
ветвления
.
Другое его название — условный оператор.
Формат полного оператора ветвления
следующий:

if
<логическое выражение> then
<оператор1>

else
<оператор2>

Здесь
if
— «если», then
— «то», else
— «иначе».

Программирование полного и неполного ветвления

Сравните
запись алгоритма БИД1 из предыдущего
параграфа с соответствующей программой.

алг
БИД1

вещ
А, В, С

нач
ввод А, В

если
А>В

то
С:=А

иначе
С:=В

кв

вывод
С

кон

Program
BID1;

var
А,
В,
С
: real;

begin
readln(А,
В);

if
A>B

then
C:=A

else
C:=B;

writeln(С)

end.

Очень
похоже на перевод с русского языка на
английский. Обратите внимание на
следующее отличие: в программе нет
специального служебного слова,
обозначающего конец ветвления. Здесь
признаком конца оператора ветвления
является точка с запятой. (Разумеется,
оставлять в программе пустую строку
совсем не обязательно. Здесь это сделано
только ради наглядности.)

Простой
формой логического выражения является
операция
отношения
.
Как и в АЯ, в Паскале допускаются все
виды отношений (ниже указаны их знаки):

<
(меньше);

> (больше);

< = (меньше
или равно);

<=
(больше или равно);

= (равно);

<>
(не равно).

А
теперь запрограммируем на Паскале
алгоритм БИД2, в котором использовано
неполное ветвление.

алг
БИД2

вещ
А, В, С

нач
ввод А, В

С:=А

если
В > А

то
С:=B

кв

вывод
С

кон

Program
BID2;

varА,
В,
С
: real;

begin
readln(А,
В);

С:=А;

if
B>A

then
C:=B;

write(С)

end.

Опять
все очень похоже. Ветвь else в операторе
ветвления может отсутствовать.

Программирование вложенных ветвлений

Запишем
на Паскале программу определения
большего из трех чисел, блок-схема
которой показана на рис. 3.10. Структура
этого алгоритма — вложенные ветвления.
Алгоритм на АЯ (БИТ2) приведен в предыдущем
параграфе.

Рис.
3.10. Блок-схема алгоритма «БИТ» с
вложенными ветвлениями

Program
BIT2;

var
А,
В,
С,
D: real;

begin
readln(А,
В,
С);

if
A>B

then
if

A>C then
D:=A else
D:=B

else
if

B>C then
D:=B else
D:=C;

writeln(D)

end.

Обратите
внимание на то, что перед else
точка с запятой не ставится. Вся ветвящаяся
часть структуры алгоритма заканчивается
на точке с запятой после оператора D:=C.

Составим
программу упорядочения значений двух
переменных.

алг
СОРТИРОВКА

вещ
X, Y, С

нач
ввод X, Y

если
X>Y

то
С:=Х

X:=Y

Y:=C

кв

вывод
X, Y

кон

Program
SORTING;

var
X, Y, С
: real;

begin
readln(X, Y) ;

if
X>Y

then
begin

С
: =X;

X:=Y;

Y:=C

end;

write(X,Y)

end.

Этот
пример иллюстрирует следующее правило
Паскаля: если на какой-то из ветвей
оператора ветвления находится несколько
последовательных операторов, то их
нужно записывать между служебными
словами begin
и end.
Конструкция такого вида:

begin
<Последовательность операторов> end

называется
составным
оператором
.
Следовательно, в описанной выше общей
форме ветвления <оператор1> и
<опера-тор2> могут быть простыми
(один) и составными операторами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Понравилась статья? Поделить с друзьями:
  • Как написать программу для распознавания речи
  • Как написать программу на пайтон
  • Как написать программу для проекта
  • Как написать программу на ноутбуке
  • Как написать программу для подборов паролей