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

На занятии рассматривается условный оператор в Паскале (if). Объясняется, как использовать несколько условий в одной конструкции (AND и OR). Рассмотриваются примеры работы с оператором

Напоминаем, что данный сайт не претендует на полное изложение информации по теме. Целью портала является предоставление возможности усваивания материала на основе готовых решенных примеров по теме «Язык программирования Pascal» с практическими заданиями для закрепления материала. Представленные на сайте labs-org.ru задания по Паскалю выстроены последовательно по мере увеличения их сложности. Сайт labs-org.ru может быть использован учителями и преподавателями в качестве вспомогательного наглядного пособия.

Содержание:

  • Условный оператор в Паскале
    • Составной оператор
    • Логические операции в Паскале (в логическом выражении)
  • Построение блок-схем по коду Паскаль

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

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

Блок-схема условного оператора:
условный оператор в паскале блок-схема
Условный оператор в Паскале имеет следующий синтаксис:

Сокращенный вариант:

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

Полный вариант:

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

Условный оператор в Паскале — if — служит для организации хода задачи таким образом, при котором изменяется последовательность выполнения операторов в зависимости от какого-либо логического условия. Логическое условие может принимать одно из двух значений: либо true (истина), либо false (ложь), соответственно, оно может быть либо истинным, либо ложным.

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

Составной оператор

Если при истинном условии необходимо выполнять несколько операторов, то их по правилам языка Pascal необходимо заключать в блок, начинающийся со служебного слова begin и заканчивающегося служебным словом end. Такой блок принято называть операторными скобками, а данную конструкцию — составным оператором:

Операторные скобки и составной оператор в Паскале:

if логическое выражение then
begin
     оператор1;
     оператор2;
end
else
begin
     оператор1;
     оператор2;
end;

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

IF THEN ELSE
ЕСЛИ ТО ИНАЧЕ

Условный оператор в Паскале
В условии (в логическом выражении) используются операторы отношения.
Рассмотрим список операторов отношения Паскаля:

  • больше >
  • меньше <
  • больше или равно в Pascal >=
  • меньше либо равно в Pascal <=
  • сравнение в Pascal =
  • не равно в Pascal <>

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

Подробно разобраться в работе условного оператора в Паскале можно, просмотрев видеоурок:

Пример: вычислить значение переменной у по одной из двух ветвей

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

Показать решение:

Pascal PascalABC.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
var
 x,y:real;
begin
writeln ('введите х');
read(x);
if x>0 then
 y:=ln(x)
else
 y:=exp(x);
writeln ('y=', y:6:2) 
{итоговое число будет занимать 6 позиций,
и в нем будет 2 знака после запятой}
end.
1
2
3
4
5
6
7
8
9
begin
var x:=readReal('введите х');
var y: real;
if x>0 then
 y:=ln(x)
else
 y:=exp(x);
writeln ('y=', y:6:2)
end.

Обратите внимание на то, как в данном примере выводится y. При выводе переменных типа real в pascal, можно использовать так называемый форматированный вывод, или запись с двумя двоеточиями:
y:6:2
– цифра после первого двоеточия (6) указывает на то, сколько знаков будет занимать число при выводе на экран
– цифра после второго двоеточия (2) указывает на то, сколько знаков после запятой вещественного числа будет выводиться

Таким образом, использование такой записи в pascal практически позволяет выполнить округление до сотых, тысячных и т.п.

Задача 0. Вычислить значение переменной у по одной из двух ветвей:
условный оператор в паскале

[Название файла: L2task0.pas]

Задача 1. В компьютер вводятся два числа. Если первое больше второго, то вычислить их сумму, иначе – произведение. После этого компьютер должен напечатать результат и текст ЗАДАЧА РЕШЕНА

[Название файла: L2task1.pas]

Задача 2. Дракон каждый год отращивает по три головы, но после того, как ему исполнится 100 лет – только по две. Сколько голов и глаз у дракона, которому N лет?

[Название файла: L2task2.pas]

Логические операции в Паскале (в логическом выражении)

Когда необходимо использовать двойное условие в Pascal, то понадобятся логические операции.

  • Логическая операция AND (И), поставленная между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия (должны быть истинными). Логический смысл операции – “конъюнкция”.
  • Поставленный между двумя условиями, знак OR (ИЛИ) говорит о том, что достаточно, если будет выполняться хотя бы одно из них (одно из двух условий истинно). Логический смысл операции – “дизъюнкция”.
  • На языке Паскаль XOR – знак логической операции, имеющий смысл “строгая дизъюнкция” и указывающий на то, что необходимо, чтобы одно из двух условий выполнялось (истинно), а другое – не выполнялось (ложно).
  • Логическая операция NOT перед логическим выражением или переменной имеет смысл “отрицание” или “инверсия” и указывает на то, что если данная переменная или выражение истинны, то их отрицание — ложь и наоборот.
  • Таблица истинности, содержащая все возможные комбинации операндов:

    A B not A A or B A and B A xor B
    False False True False False False
    False True True True False True
    True False False True False True
    True True False True True False

Важно: Каждое из простых условий обязательно заключать в скобки.

Пример: Рассмотрим примеры логических операций в логических выражениях в Паскале

1
2
3
4
5
6
7
8
var n:integer;
begin
n:=6;
if (n>5) and (n<10) then writeln('истина');
if (n>7) or (n<10) then writeln('истина');
if (n>7) xor (n<10) then writeln('истина');
if not(n>7) then writeln('истина');
end.

Пример: Компания набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он для данной компании (вывести ответ «подходит» или «не подходит»).
Особенность: надо проверить, выполняются ли два условия одновременно.

Пример: Дано целое число A. Проверить истинность высказывания: «Число A является нечетным».

Открыть решение:

1
2
3
4
5
6
7
8
9
10
11
var
  a,b: integer;
begin
  write('Введите A: ');
  read(a);
  b := a mod 2;
  if b>0 then
     writeln('true')
  else
      writeln ('false')
end.

Или проще:

1
2
3
4
5
6
7
8
var
  a,b: integer;
begin
  write('Введите A: ');
  read(a);
  b := a mod 2;
  writeln(b>0);
end.

Задача 3. Дано целое число A. Проверить истинность высказывания: «Число A является положительным».

[Название файла: L2task3.pas]

Задача 4. Человек вводит в компьютер число. Если оно находится в интервале от 28 до 30, то нужно напечатать текст ПОПАЛ, если оно больше или равно 30 – то ПЕРЕЛЕТ, если оно находится на отрезке от 0 до 28, то НЕДОЛЕТ, если число меньше нуля — НЕ БЕЙ ПО СВОИМ

[Название файла: L2task4.pas]

  

Рассмотрим функции pascalABC.NET, которые возвращают логическое значение true или false:

n.Divs(m) возвращает True, если целое n делится на m без остатка (n mod m = 0);
n.DivsAll(m1, m2, ... mn) возвращает True, если целое n делится без остатка на каждое из m1, m2, ... mn;
n.DivsAny(m1, m2, ... mn) возвращает True, если целое n делится без остатка хотя бы на одно из m1, m2, ... mn;
n.InRange(a, b) - возвращает True, если для целого n верно, что a ≤ n ≤ b;
n.IsEven возвращает True, если целое n имеет четное значение;
n.IsOdd возвращает True, если целое n имеет нечетное значение;
n.NotDivs(m) возвращает True, если целое n не делится на m без остатка (n mod m <> 0).

Построение блок-схем по коду Паскаль

Теперь настало время вспомнить о том, что такое блок-схемы.
Блок схема – ориентированный граф, указывающий на последовательность операций, приводящую к решению поставленной задачи.

Существуют управляющие структуры трех типов:

Две из трех представленных структур блок-схемы мы уже можем перевести в код Pascal.

Пример: Составить блок-схему вычисления значения величины С, определяемое по формулам: С=A+B, если A<=B и C=A-B, если A>B.

Результат:
блок схема ветвление

Задача 5. Составить блок-схему решения задачи 3

Пример: автобусный билет считают счастливым, если сумма трех первых цифр билета равна сумме трех последних цифр. Требуется составить блок-схему алгоритма определения билета, имеющего счастливый номер.

Открыть решение:

блок-схема с ветвлением

Задача 6. По составленной выше блок-схеме решить задачу на Pascal

[Название файла: L2task6.pas]

Задача 7. Дано двузначное целое число. Вывести сумму и произведение его цифр. Проверьте правильность вашей программы. Для нахождения цифр числа использовать операцию взятия остатка mod и операцию целочисленного деления div. Модуль числа – функция abs().

Пример результата:

Введите двузначное число: -12
Сумма цифр = 3
Произведение цифр = 2

[Название файла: L2task7.pas]

Задача 8. Дано трёхзначное целое число. Вывести все его цифры (порядок не имеет значения). Проверьте правильность вашей программы. Для нахождения цифр числа использовать операцию взятия остатка mod и операцию целочисленного деления div.

Пример результата:

Введите трёхзначное число: -123
Разряд сотен: 1
Разряд десяток: 2
Разряд единиц: 3

[Название файла: L2task8.pas]

Использование функции Assert (pascalAbc.net)

Пользовательский ввод практически всегда должен проверяться на корректность. Чтобы избежать в программе ошибки, необходимо использовать функцию assert(), в качестве параметра которой указывается условие, которое должно возвращать значение true.

Пример:

Выполнить: Даны координаты точки (x,y) на координатной плоскости ( ≠ 0, ≠ 0). Вывести номер четверти:

✍ Решение:

    var (x,y) := ReadInteger2;
    var quarter: integer;
    Assert((x<>0) and (y<>0), 'некорректный ввод'); //  True
    if x>0 then
      if y>0 then
        quarter := 1
      else 
        quarter := 4
    else
      if y>0 then
         quarter := 2
      else 
         quarter := 3;

11 ноября, 2015 Andrey K

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

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

Условие бывает:

  1. Неполное
  2. Полное

Неполное условие

Блок-схема неполного условия выглядит следующим образом:

Неполное условие Паскаль

Неполное условие

ЕСЛИ УСЛОВИЕ ИСТИННО, ТО ВЫПОЛНЯЕТСЯ ДЕЙСТВИЕ, ИНАЧЕ НИЧЕГО НЕ ПРОИСХОДИТ

На языке Паскаль данная алгоритмическая конструкция выглядит следующим образом:

IF условие THEN действие;

Если условие, стоящее после IF истинно,  то выполняется действие, стоящее после слова THEN.

Что такое условие?

Условие — это выражение, которое может быть либо истинным, либо ложным. Условие обязательно содержит логические операторы <, >, =, <=, >=, <> (не равно).

Например:

var a:integer;
begin
readln(a);
if a=7 then writeln('Привет!');
end.

Если введенное значение переменной a равно 7, то на экране мы увидим слово Привет! Если не равно — то на экран ничего выводится не будет.


Рассмотрим другой пример:

var a:integer;
begin
readln(a);
if a=7 then writeln('Привет!'); writeln('До встречи');
end.

Что мы увидим на экране, введя число 7? Увидим:

Привет!
До встречи

Что мы увидим на экране, введя число 10?

До встречи

Почему так? Почему До встречи выводится на экран в любом случае? Команда 

writeln('До встречи');

не относится к конструкции If-Then

var a:integer;
begin
readln(a);
if a=7 then writeln('Привет!'); writeln('До встречи'); // условие подсвечено голубым цветом end.

Как сделать так, чтобы оба действия относились к конструкции If-Then?

Необходимо заключить эти действия в так называемые операторные скобки: begin… end;

Получим:

var a:integer;
begin
readln(a);

if a=7 then begin                                            writeln('Привет!');

                writeln('До встречи');
            end;

end.
Теперь, если мы введем число 10, то на экране ничего не увидим.

Составное (сложное) условие

Иногда приходится использовать сложное условие. Для его составления используются логические союзы: and или or.

  • Если мы используем and, то составное условие будет истинно, когда все простые условия  истинны.
  • Если мы используем or, то составное условие будет истинно, когда хотя бы одно простое условие будет истинно.

Например:

a>7    и    a<15  на языке паскаль будет записываться

(a>7) and (a<15)

т.е. оба условия должны выполняться одновременно, чтобы составное условие было истинно

Или:

(a=7) or (a>15)

Составное условие будет истинно, если: либо a=7, либо a>17.

Задача:

Используя конструкцию If-Then, найти максимальное среди трех введенных чисел.

Решение

var a, b, c:integer;
begin
readln(a);
readln(b);
readln(c);
if (a>b) and (a>c) then writeln('число ', a, ' максимальное');
if (b>a) and (b>c) then writeln('число ', b, ' максимальное');
if (c>a) and (c>b) then writeln('число ', c, ' максимальное');
end.

Полное условие

Блок-схема полного условия выглядит так:

Полное условие. Блок-схема

Полное условие. Блок-схема

IF условие THEN действие_1 ELSE действие_2;

  • Если условие истинно, то выполняется действие, стоящее после слова Then.
  • Если условие ложно, то выполняется действие, стоящее после слова Else.

Если действий, которые выполняются, если условие истинно  или  ложно несколькоиспользуются операторные скобки.

if условие then 
begin
      действие;
      действие;
...............
end
            else
begin
       действие;
       действие;
................
end;

(перед else точка с запятой не ставится)

Задачи для самостоятельного выполнения:

  1. Сумма покупки составляет а рублей. Если а больше 1000 рублей, то предоставляется скидка 15%. Вывести на экран сумму покупки с учетом скидки либо сообщение о том, что скидка не предоставляется.
  2. Известны площади круга и квадрата. Определить:
    • уместится ли круг в квадрате
    • уместится ли квадрат в круге
  3. Определить, является ли число а делителем числа b
  4. Проверить, принадлежит ли число введенное с клавиатуры, интервалу (-5;3).
  5. Дано двузначное число. Определить:
    • входит ли в него цифра 3
    • входит ли в него цифра а
  6. Определить, является ли треугольник со сторонами a, b, c равнобедренным
  7. Даны три различных числа. Определить, какое из них (первое, второе или третье)
    • самое большое
    • самое маленькое
    • является средним

(список задач будет пополняться)

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий


An if-then statement can be followed by an optional else statement, which executes when the Boolean expression is false.

Syntax

Syntax for the if-then-else statement is −

if condition then S1 else S2;

Where, S1 and S2 are different statements. Please note that the statement S1 is not followed by a semicolon. In the if-then-else statements, when the test condition is true, the statement S1 is executed and S2 is skipped; when the test condition is false, then S1 is bypassed and statement S2 is executed.

For example,

if color = red then
   writeln('You have chosen a red car')

else
   writeln('Please choose a color for your car');

If the boolean expression condition evaluates to true, then the if-then block of code will be executed, otherwise the else block of code will be executed.

Pascal assumes any non-zero and non-nil values as true, and if it is either zero or nil, then it is assumed as false value.

Flow Diagram

Pascal if-then-else statement

Example

Let us try a complete example that would illustrate the concept −

program ifelseChecking;
var
   { local variable definition }
   a : integer;

begin
   a := 100;
   (* check the boolean condition *)
   if( a < 20 ) then
      (* if condition is true then print the following *)
      writeln('a is less than 20' )
   
   else
      (* if condition is false then print the following *) 
      writeln('a is not less than 20' );
      writeln('value of a is : ', a);
end.

When the above code is compiled and executed, it produces the following result −

a is not less than 20
value of a is : 100

The if-then-else if-then-else Statement

An if-then statement can be followed by an optional else if-then-else statement, which is very useful to test various conditions using single if-then-else if statement.

When using if-then , else if-then , else statements there are few points to keep in mind.

  • An if-then statement can have zero or one else’s and it must come after any else if’s.

  • An if-then statement can have zero to many else if’s and they must come before the else.

  • Once an else if succeeds, none of the remaining else if’s or else’s will be tested.

  • No semicolon (;) is given before the last else keyword, but all statements can be compound statements.

Syntax

The syntax of an if-then-else if-then-else statement in Pascal programming language is −

if(boolean_expression 1)then 
   S1 (* Executes when the boolean expression 1 is true *)

else if( boolean_expression 2) then 
   S2 (* Executes when the boolean expression 2 is true *)

else if( boolean_expression 3) then 
   S3 (* Executes when the boolean expression 3 is true *)

else 
   S4; ( * executes when the none of the above condition is true *)

Example

The following example illustrates the concept −

program ifelse_ifelseChecking;
var
   { local variable definition }
   a : integer;

begin
   a := 100;
   (* check the boolean condition *)
   if (a = 10)  then
      (* if condition is true then print the following *)
      writeln('Value of a is 10' )
   
   else if ( a = 20 ) then
      (* if else if condition is true *)
      writeln('Value of a is 20' )
   
   else if( a = 30 ) then 
      (* if else if condition is true  *)
      writeln('Value of a is 30' )
   
   else
      (* if none of the conditions is true *)
      writeln('None of the values is matching' );
      writeln('Exact value of a is: ', a );
end.

When the above code is compiled and executed, it produces the following result −

None of the values is matching
Exact value of a is: 100

pascal_decision_making.htm

Общий вид условного оператора:

Screenshot_5.png


Неполная форма условного оператора:

Screenshot_6.png

Условный оператор предназначен для выбора к исполнению одного из возможных действий в зависимости от некоторого условия. Если условие после слова if верно, то выполняется оператор 1 после команды then, в другом случае оператор 2 после команды else.

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

Screenshot_3.png

Найдём минимальное из трёх введенных с клавиатуры чисел.

 

Screenshot_4.png

Просмотров 14.1к. Обновлено 23 ноября 2020

Урок из серии: «Язык программирования Паскаль»

Один из важнейших операторов Паскаля – условный оператор. Он позволяет изменять порядок выполнения операторов в зависимости от некоторого условия, представляющего собой логическое выражение типа Boolean. Если значение равно True, то выполняется одна группа операторов, если False, то другая группа операторов или не выполняется ничего.

В языке Паскаль имеются два условных оператора: if (оператор ветвления) и case (оператор выбора). Оператор if обеспечивает  выбор из двух альтернатив, оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов.

На этом уроке рассмотрим оператор If.

Содержание

  1. Условный оператор If (оператор ветвления)
  2. Задачи для самостоятельного выполнения
  3. Проверь себя!

Условный оператор If (оператор ветвления)

Полная формы условного оператора называется If-then-else, имеет вид:

If условие 
Then [оператор1]
Else [оператор2];

Если в качестве оператора должна выполняться серия операторов, то они объединяются в операторные скобки Begin-End.

If  then
   Begin
   [операторы1]
   End
Else
   begin
   [операторы2]
   End;

Слова if (если) и Then (то) – зарезервированные.

Замечание. Перед ключевым словом else (иначе) точка с запятой не ставится, она ставиться после всего оператора If.

Условие представляют собой логические выражение. Простые условия  записываются в виде равенств или неравенств. В сложных условиях несколько простых условий объединяются с помощью логических операций or, and. В этом случае простые условия заключаются в круглые скобки.

На рисунке показана блок-схема полной формы оператора.

Блок-схема оператора if-then-else

Алгоритм выполнения полного условного оператора:

  1. Проверяется значение логического выражения, записанного в условии после слова If
  2. Если условие истинно (значение выражения условие равно True), то выполняется оператор 1, указанный после слова Then
  3. Если условие ложно, то выполняется оператор 2, записанный после слова  Else.

Неполная форма условного оператора называется if-then, имеет вид:

If условие 
Then [оператор];

Если в качестве оператора должна выполняться серия операторов, то они объединяются в операторные скобки Begin-End.

If условие Then 
Begin
[операторы]
End;

В неполном ветвлении ветвь Else отсутствует.
На рисунке показана блок схема оператора if-then.

Блок-схема оператора if-then

Алгоритм выполнения неполного условного оператора

  1. Проверяется значение логического выражения, записанного в условии после слова If
  2. Если условие истинно (значение выражения условие равно True), то выполняется операторы, указанный после слова Then
  3. Если условие ложно, то ничего делать не надо. Происходит переход к следующему оператору.

Операторы ветвления могут быть вложенными, т.е. один оператор if можно расположить внутри другого. В этом случае он позволяет производить выбор более чем из двух вариантов. При написании исходного кода с вложенными операторами для удобочитаемости  кода вложенные операторы выделяются отступами.

If  then begin
   [операторы 1;]
end
Else if eckjdbt 2 then begin
   [операторы2;]
End
   .
   .
   .
else if условиеN
   [операторыN;]
end
else begin
   ;
 end;

Применение условного оператора if рассмотрим на примерах.

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

Решение

В этом примере нужно произвести выбор одного из двух вариантов, для этого используется оператор ifthenelse.

program primer6_1;
   var a, b, m:integer;
begin
   writeln('Введите два числа: ');
   readln(a, b);
   if a>b then m:=a
          else m:=b;
   writeln('Большее из них: ', m);
end.

Пример 2. Даны три отрезка. Можно ли из них построить треугольник?

Решение. Для любого треугольника сумма его двух сторон  должна быть больше третьей стороны (неравенство треугольника). Если a, b, c – стороны предполагаемого треугольника, то нужно сравнить длину каждого отрезка с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольник из таких отрезков не построить.

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

program primer6_2;
var a, b, c: integer;

begin
    write (' Введите длины отрезков: ');
    readln (a,b,c);

    if (a < b+c) and (b < a+c) and (c < a+b) then
        writeln ('Можно построить треугольник.')
    else
        writeln ('Нельзя построить треугольник.');

end.

Задачи для самостоятельного выполнения

  1. Найти наибольшее из трех данных чисел.
  2. Запишите условный оператор, в котором значение переменной вычисляется по формуле: a + b, если a — нечетное и a*b, если a — четное.
  3. Вывести на экран номер четверти, которой принадлежит точка с координатами (x, y), при условии, что x и y отличны от 0.
  4. После выполнения операторов
    a := 0;
    If a<>0 Then; a := 2
    значение переменной равно двум. Объясните почему.
  5. Если целое число M делится нацело на целое число N, то вывести на экран частное от деления, в противном случае — сообщение »M на N нацело не делится».

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

ТестПроверь себя!

Следующий урок: Оператор выбора Case

Добавить комментарий