Лабораторная работа № 2

Тема : Условный оператор if.

Цель : научиться применять условный оператор.

Для принятия решений в компьютерных программах очень часто приходится проверять условия. Для этих целей предусмотрена специальная инструкция языка программирования - условный оператор if-else.

В полной форме:

C++

if ( условие )

... // операторы, выполняемые если результат условия!=0
else
... // операторы, выполняемые если результат условия ==0

Pascal

if ( условие ) then

... // операторы, выполняемые если результат условия =true

else
... // операторы, выполняемые если результат условия =
false

В краткой форме:

C++

if ( условие )

... // операторы, выполняемые если результат условия!=0

Pascal

if ( условие ) then

... // операторы, выполняемые если результат условия =true

C++

Краткая форма

Полная форма

if ( a == b )

printf( “a и b - равны” );

if ( a == b )

printf( “a и b - равны” );

else

printf( “a и b – не равны” );

Pascal

Краткая форма

Полная форма

if ( a = b ) then

write(‘a и b – равны’);

if ( a = b ) then

write(‘a и b – равны’)

else

write(‘a и b – не равны’);

ПРИМЕР :

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

Соотношение

Обозначение в

C++

Pascal

Меньше, меньше или равно

<, <=

<, <=

Больше, больше или равно

>, >=

>, >=

Равно

==

=

Не равно

!=

<> 

Условие представляет из себя некоторое выражение. Обычно применяются выражения дающие результат логического (true/false) типа. Условия могут быть как простыми, так и составными.

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

ПРИМЕР (простое логическое выражение)

C++

( a == b )

- читается “a равно b

Pascal

( a = b )

- читается “a равно b

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

Логическая операция

Обозначение в

C++

Pascal

И

&&

and

ИЛИ

||

or

НЕ

!

not

Полезно вспомнить таблицы истинности для логических операций -

a

b

a && b

a || b

!a

!b

0

0

0

0

1

1

0

1

0

1

1

0

1

0

0

1

0

1

1

1

1

1

0

0

ПРИМЕР (составного логического выражения)

Записать на языке программирования математическое соотношение
a < b < c

C++

( a<b && b<c )

- читается как “a меньше b и b меньше c

Pascal

( ( a<b) and ( b<c ) )

- читается как “a меньше b и b меньше c

ПРИМЕР: фрагмент программы для расчета y= a/b/c выглядит так

C++

...

printf (“расчет выражения y= a / b / c. Введите a,b,c ...”);

float a, b,c ; // объявляем переменные

scanf( “%f %f %f”, &a, &b, &c );

if ( b!=0 && c!= 0 )

{

float y; // создаем еще переменную - y

y = a / b / c; // считаем...

printf(“Результат %f / %f / %f = %f”, a, b,c, y );

} else

printf(“на нуль делить нельзя: %f / %f / %f”, a,b,c );

...

Pascal

...

var a,b,c : real; // объявляем переменные

y :real;

...

write(‘расчет выражения y= a / b / c. Введите a,b,c->’);

read(a,b,c);

if ( b <> 0 and c <> 0 ) then

begin

y := a / b / c; // считаем...

write(‘Результат ‘,a,’ / ‘,b,’ / ‘,c,’ = ‘, y );

end

else

write(‘на нуль делить нельзя: ‘,a,’ / ‘,b,’ / ‘,c );

...

ПРИМЕР :

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

C++

#include <stdio. h>

void main()

{

printf( "Введите исходное число >" );

int x;

scanf( “%i”, &x );

// раскладываем число на цифры - как остатки от деления на 10

int c1, c2,c3,c4; // объявляем несколько переменных

c1= x % 10; // - получили 1-ю цифру

x =x/10; // отбросили 1-ю цифру

c2= x % 10; // 2-ю...

x =x/10;

c3= x % 10; // 3-ю...

x =x/10;

c4= x % 10; // 4-ю ...

if ( c1+c2 > c3+c4 ) // выясняем что больше -

printf("сумма первых двух > суммы последних \n" );

else

if ( c1+c2 < c3+c4 )

printf("сумма первых двух < суммы последних \n" );

else

printf( " сумма первых двух == сумме последних \n");

}

Pascal

program _4_digits_number ;

var x :integer ;

c1, c2,c3,c4 : integer;

begin

write(‘Введите исходное число >’);

read( x );

// раскладываем число на отдельные цифры - как остатки от деления на 10-ку

c1= x mod 10; // - получили 1-ю цифру

x =x div 10; // отбросили 1-ю цифру

c2= x mod 10; // 2-ю ...

x =x div 10;

c3= x mod 10; // 3-ю ...

x =x div 10;

c4= x % 10; // 4-ю...

// выясняем что больше -

if ( c1+c2 > c3+c4 ) then

writeln (‘сумма первых двух > суммы последних’);

else

if ( c1+c2 < c3+c4 )

writeln(‘сумма первых двух < суммы последних’);

else

writeln (‘сумма первых двух == сумме последних’);

end.

ПРИМЕР :

Реализовать алгоритм работы калькулятора. Программа должна позволять ввести простое арифметическое выражение в формате -

значение1 знак значение2
т е типа - “1 + 1”, “3 / 2” и т д. Результат вычислений вывести в формате -

значение1 знак значение2 = результат

C++

#include <stdio. h>

void main()

{

printf("Введите арифметическое выражение вида a oper b >" );

float a; char op; float b; // переменные для введенных данных

scanf ( "%f %c %f" , &a, &op, &b ); // ввод

float r; // переменная для результата

if (op == '+' )

r =a+b;

if ( op == '-' )

r =a-b;

if ( op == '*' )

r =a*b;

if ( op =='/' )

r =a/b;

printf( "Результат %f %c %f = %f\n", a, op, b, r );

}

Pascal

program a_oper_b_is_r ;

// переменные для хранения введенных данных

var a: integer;

op : char;

b: integer;

// переменная для результата

r : real;

begin

printf("Введите арифметическое выражение вида a oper b >" );

read(a, op, b ); // ввод

if (op = '+' ) then

r:= a+b;

if ( op = '-' ) then

r:= a-b;

if ( op = '*' ) then

r:= a*b;

if ( op= '/' ) then

r:=a/b;

writeln(‘Результат ‘,a,’ ’, op,’ ’,b,’ = ’,r );

end.

ЗАДАНИЯ:

1. Известны две скорости: одна в километрах в час (V_kmh), другая в метрах в секунду (V_ms). Какая из скоростей больше?

2. Дан радиус (r) круга и сторона (a) квадрата. У какой фигуры площадь больше?

3. Известны площади круга (sc) и квадрата (ss). Определить уместится ли круг в квадрате.

4. Известны площади круга(sc) и квадрата (ss). Определить уместится ли квадрат в круге

5. Даны объемы(v1, v2) и массы(m1,m2) двух тел из разных материалов. Какое из тел имеет большую плотность?

6. Дано трехзначное число. Определить, какая из его цифр больше первая или вторая;

7. Дано трехзначное число. Определить - кратна ли пяти сумма его цифр.

8. Дано трехзначное число. Определить - верно ли, что все его цифры одинаковые?

9. Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник.

10. Даны вещественные числа x и y, не равные друг другу. Меньшее из этих двух чисел заменить половиной их суммы, а большее - их удвоенным произведением.

КОНТРОЛЬНЫЕ ВОПРОСЫ :

1. Для чего служит условный оператор

2. Простая форма записи условного оператора

3. Полная форма записи условного оператора

4. Какие знаки соотношений вы можете назвать

5. Назвать основные логические операции