Programmirovanie_-_1_kurs / Лекции (опорный конспект)
.pdf4.4.Составной оператор
•Составной оператор используется в тех случаях, когда необходимо выполнить несколько различных команд, но семантика языковой конструкции предполагает наличие единственного оператора
//Составной оператор
{
оператор1;
оператор2;
оператор3;
}
41
4.5.Условные операторы
4.5.1Условный оператор if (1)
•Оператор if позволяет реализовать конструкцию ветвления в программе и обеспечить выбор одного из альтернативных путей работы алгоритма в зависимости от результата проверки некоторого условия
|
1) if (a!=0) |
||
if (условное_выражение) оператор; |
{ |
|
|
x1 |
= x2/a; |
||
|
|||
|
y1 |
= y2/a; |
|
|
z1 |
= z2/a; |
|
|
} |
|
2) if (a<0) a=0;
3) if (a!=0 && b!=0) x = c/(a*b);
4) if (a!=0)
{
x = x/a;
if (b!=0) y = y/(a*b);
} |
42 |
|
4.5.1 Условный оператор if (2)
if (условное_выражение) оператор1;
else
оператор2;
1) // Определение максимального значения (a, b) if (a>b)
max = a;
else
max = b;
2) // Определение максимального значения (a, b, c) if (a>b && a>c)
max = a;
else
{
if (b>a && b>c) max = b;
else
max = c;
}
3) // Определение максимального значения (a, b, c) if (a>b && a>c)
max = a;
else if (b>a && b>c) max = b;
else
max = c;
43
4.5.2Условный оператор switch (1)
•Оператор switch позволяет реализовать алгоритмическую конструкцию «выбор»
switch (выражение)
{
case значение1: оператор1.1; оператор1.2;
...
case значение2:
оператор2.1;
оператор2.2;
...
...
case значениеN: операторN.1; операторN.2;
...
default:
операторD.1;
операторD.2;
...
}
1) switch (a)
{
case 1:
cout << "Block 1\n"; case 2:
cout << "Block 2\n"; default:
cout << "Block Default\n";
}
a == 1 |
да |
Вывод сообщения: |
||||||
|
|
«Block 1» |
||||||
|
|
|
|
|
|
|||
нет |
|
|
|
да |
|
|
||
|
|
|
|
|||||
|
|
|
||||||
|
|
|
|
|
|
|||
|
|
|
|
|
|
|||
a == 2 |
Вывод сообщения: |
|||||||
|
|
|||||||
|
|
|
|
|
|
«Block 2» |
||
нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Вывод сообщения: |
|
|
|
|
||||
«Block Default» |
|
|
|
|
44
4.5.2Условный оператор switch (2)
3)switch (a)
{
case 1:
cout << "Block 1\n"; break;
case 2:
cout << "Block 2\n"; break;
default:
cout << "Block Default\n";
}
2) switch (a)
{
case 1: case 2:
cout << "Block 1 or 2\n"; break;
case 3:
cout << "Block 3\n";
}
45
4.5.3Условная операция
•Условная операция ? используется для определения альтернативных значений внутри выражения
(условное_выражение)?значение1:значение2
//Определение максимального значения (a, b)
//Используем оператор if
if (a>b)
max = a;
else
max = b;
//Определение максимального значения (a, b)
//Используем условную операцию
max = (a>b)? a : b;
46
4.5.4. Пример программы с условным оператором
ax |
2 |
+ bx + с = 0 |
|
|
#include <iostream> |
|
|||||
|
|
|
#include <math.h> |
|
|||||||
|
|
|
|
|
|
|
|
|
#include <conio.h> |
|
|
|
|
|
|
|
|
|
|
|
using namespace std; |
|
|
|
|
|
|
|
|
|
|
|
void main() |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
{ |
|
|||
|
|
|
|
|
|
|
|
|
|
double a, b, c; |
|
|
|
|
|
|
|
|
|
|
|
cout << "Введите a:\n"; |
|
|
|
|
|
|
|
|
|
|
|
cin >> a; |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
cout << "Введите b:\n"; |
|
|
|
|
|
|
|
|
|
|
|
cin >> b; |
|
|
|
|
|
|
|
|
|
|
|
cout << "Введите c:\n"; |
|
|
|
|
|
|
|
|
|
|
|
cin >> c; |
|
|
|
|
|
|
|
|
|
|
|
float D = b*b - 4*a*c; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
if (D<0) |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
cout << "Корней нет\n"; |
|
|
|
|
|
|
|
|
|
|
|
else if (D==0) |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
double x1 = -b/(2*a); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cout << "x = " << x1; |
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
double d = sqrt(D); |
|
|
|
|
|
|
|
|
|
|
|
double x1 = (-b+d)/(2*a); |
|
|
|
|
|
|
|
|
|
|
|
double x2 = (-b-d)/(2*a); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cout << "x1 = " << x1 << "\nx2 = " << x2; |
|
|
|
|
|
|
|
|
} |
47 |
|||
|
|
|
|
|
|
|
|
|
|
getch(); |
|
}
4.6.Операторы цикла
4.6.1.Оператор цикла for (1)
•Оператор for позволяет реализовать арифметический цикл
Результат работы:
0
1
2
3
4
48
4.6.1. Оператор цикла for (2)
1)
2)
3)for (int i=2 ; i<10 ; i++
{
int i2 = i*i;
cout << i << " x " << i << " = " << i2 << "\n";
}
Результат работы: 2 x 2 = 4
3 |
x 3 = 9 |
|
||
4 |
x 4 = 16 |
|
||
5 |
x 5 = 25 |
|
||
6 |
x 6 |
= 36 |
|
|
7 |
x 7 |
= 49 |
|
|
8 |
x 8 |
= 64 |
49 |
|
9 |
x 9 |
= 81 |
||
|
4.6.2.Вложенные циклы
•Цикл, содержащийся внутри другого цикла, принято называть вложенным циклом
1)
2)
for (int i=2; i<=5 ; i++)
{
for (int j=2; j<=5; j++)
{
int prv = i*j;
cout << i << " x " << j
<< " = " << prv << "\n";
}
}
1) 2 x 2 = 4 2) 2 x 2 = 4
2 |
x 3 = 6 |
2 |
x 3 = 6 |
||
2 |
x 4 = 8 |
2 |
x 4 = 8 |
||
2 |
x 5 = 10 |
2 |
x 5 = 10 |
||
3 |
x 2 = 6 |
3 |
x 3 = 9 |
||
3 |
x 3 = 9 |
3 |
x 4 = 12 |
||
3 |
x 4 = 12 |
3 |
x 5 |
= 15 |
|
3 |
x 5 = 15 |
4 |
x 4 |
= 16 |
|
4 |
x 2 = 8 |
4 |
x 5 |
= 20 |
|
4 |
x 3 = 12 |
5 |
x 5 |
= 25 |
|
4 |
x 4 = 16 |
|
|
|
|
4 |
x 5 = 20 |
|
|
|
|
5 |
x 2 |
= 10 |
|
|
|
5 |
x 3 |
= 15 |
|
|
|
5 |
x 4 |
= 20 |
|
|
|
5 |
x 5 |
= 25 |
|
|
|
|
|
|
|
|
50 |