Лекции по проге / 6_Комбинирование операторов
.pdf
Лекция №6. Комбинирование операторов
●Комбинации управляющих операторов
●Алгоритмическая сложность
●Разбиение сложной задачи на простые
1
Комбинации операторов
●Сложные алгоритмы строятся путем комбинирования операторов языка Си двумя способами:
●последовательным расположением операторов;
●вложением одних операторов в другие.
●При последовательном расположении один оператор следует за другим
●При вложении оператор помещается внутрь другого (управляющего) оператора
2
Последовательное расположение операторов
При последовательном расположении операторов важно следить за порядком их выполнения, т.к. обычно одни операторы используют данные, подготовленные другими операторами
3
Задание
Определите, что появится на экране при выполнении следующих операторов:
int x = 7; |
int x = 7; |
x++; |
printf("%d", x); |
printf("%d", x); |
x++; |
4
Последовательное расположение операторов
В |
первом |
случае |
на |
экране |
появится |
8, |
т.к. инкремент произойдет до печати |
|
|
||||
Во |
втором |
случае |
на |
экране |
появится |
7, |
т.к. инкремент произойдет после печати |
|
|||||
5
Задание. Вложенные альтернативы
Определите, при каких условиях будут выполняться действия, помеченные комментариями:
if (x > 0)
{
// действие 1
if(y > 0)
{
// действие 2
}
else
{
// действие 3
}
6 }
Вложенные альтернативы
действие 1 |
при |
x > 0 |
|
|
||
действие |
2 |
при |
x > |
0 |
&& y |
> 0 |
действие |
3 |
при |
x > |
0 |
&& y |
<= 0 |
7
Преобразование вложенных альтернатив в один оператор выбора
if (x > 0 && y > 0)
{
//действие 1
//действие 2
}
else if (x > 0 && y <= 0)
{
//действие 1
//действие 3
}
8
Использование вложенных альтернатив
● Использование вложенных альтернатив предпочтительнее использования одного оператора выбора (с множеством альтернативных веток) в следующих случаях:
●в двух или более ветках имеются одинаковые действия (в пример это действие 1);
●в альтернативных ветках встречается само условие и его отрицание (в пример это y > 0 и
y <= 0).
9
Задание
Определите, что выполняет следующая программа:
int arr[10] = {3, -1, 4, 5, 0, 7, -2, 8, 2, 0};
i = 0;
if (arr[i] > 0)
{
while (i < 10)
{
printf("%d ", arr[i]); i++;
}
10 }
