Лабораторная работа № 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. Назвать основные логические операции


