Основы языка СИ. Часть 2.
Оператор if( ) { } else { }
Цепочки if-else-if
Тернарный оператор ? :
Оператор switch
Циклы
Вложенные циклы
Операторы break и continue
Оператор goto
376.62K
Категория: ПрограммированиеПрограммирование

Основы языка СИ. Часть 2. Оператор IF-ELSE, SWITCH. Циклы. GOTO

1. Основы языка СИ. Часть 2.

ОПЕРАТОР IF-ELSE, SWITCH. ЦИКЛЫ. GOTO.

2. Оператор if( ) { } else { }

if (выражение)
оператор1
else
оператор2
Необязательная часть
Вначале вычисляется выражение; если оно истинно (т.е. имеет ненулевое
значение), то выполняется оператор1. Если оно ложно (т.е. имеет нулевое
значение) и присутствует блок else, то выполняется оператор2.
Выражение в общем случае может состоять из нескольких операторов:
if( k > 0 && L<0 || x * x > 25)
Если в оператор1(или 2) входит несколько инструкций, то их
необходимо заключать в {}. Чтобы избежать ошибок, лучше делать
так ВСЕГДА.

3. Цепочки if-else-if

if (выражение)
оператор
else if (выражение)
оператор
else if (выражение)
оператор
else
оператор
Каждый следующий блок if-else
должен выделяться отступом!
Используется для
принятия
многовариантного
решения.

4. Тернарный оператор ? :

Следующий код берет большее из двух чисел, а и b, и помещает его
в переменную z:
if (a > b) z = а;
z = (а > b) ? а : b;
else z = b;
Эту и аналогичные конструкции можно записать другим способом,
прибегнув к условному выражению с трехместной операцией ? :
Условное выражение имеет следующий вид:
выраж1 ? выраж2 : выражЗ
Вначале вычисляется выраж1. Если оно не равно нулю (т.е.
истинно), то вычисляется выражение выраж2, которое и становится
значением всей условной конструкции. В противном случае
вычисляется выражЗ, значение которого считается значением
всего условного выражения. Всегда вычисляется только одно из
выраж2 и выражЗ.

5. Оператор switch

Используется для выбора одного из нескольких вариантов
действий в зависимости от того, с какой из набора целочисленных
констант совпадает значение некоторого выражения. В зависимости от
Все метки
найденного соответствия выполняется ветвление программы.
должны быть
метка
switch (выражение)
разными
целыми
{
числами!
case констант-выраж: операторы
case констант-выраж: операторы
default: операторы
}
Оператор break предназначен для выхода из
switch. Должен присутствовать в конце
каждого блока операторов! (иначе будут
выполняться и все следующие операторы)
Необязательная
часть, операторы
после default
выполнятся, если
не было
совпадения ни с
одним case.

6. Циклы

используются для многократного
повторения кусков кода
а) цикл for
for (инициализация П-ых; условие продолжения; изменение
значения П-ых)
{
// тело цикла (тут код, который будет повторяться)
}
Пример 1
int main()//Программа печатает цифры от 0 до 9
{
int i;
for ( i = 0; i < 10; i++) {
printf( "%d %d\n", i );
}
}

7.

Список инициализации П-ых может
состоять из нескольких П-ых. В этом
случае переменные разделяются
запятыми. Причем некоторые из них
(или все) могут быть инициализированы
до цикла.
Условие
продолжения
цикла может
быть сложным
выражением!
Пример 2
int main()
{
int i, j, k = 5;
for (i = 0, j = 9; i < 10 || j>-5; i = i+2, j--, k++)
{
printf( "%d %d\n", i, j );
}
}
Список изменяемых П-ых также может состоять из
нескольких П-ых. В этом случае переменные разделяются
запятыми. Список инициализации и список изменения
могут не совпадать!

8.

Пример 3
int main()
{
int i = 0, j = 9;
for (; i < 10; i = i + 2)
{
printf( "%d %d\n", i, j );
}
}
В некоторых случаях отдельные*
элементы могут отсутствовать, но ;
ставится обязательно!
* Цикл for может выглядеть и так: for(;;),
тогда он будет выполняться бесконечно.

9.

б) цикл while (пока)
while (выражение)
{
оператор // тело цикла (тут код, который будет повторяться)
}
Вначале вычисляется выражение. Если оно не равно нулю, то выполняется
оператор, а затем выражение вычисляется снова. Эти действия повторяются
до тех пор, пока выражение не станет равным нулю.
Пример:
//Вывод чисел от 10 до 1
int i = 10;
while ( i > 0)
{
printf( "%d\n", i );
i--;
}

10.

Сравнение for и while
for (выраж1; выраж2; выражЗ)
{
оператор
}
выраж1;
while (выраж2)
{
оператор;
выражЗ;
}
В большинстве случаев без разницы, какой из этих циклов использовать.
Цикл for выбирают в случаях, когда необходимо последовательно
выполнить однотипные операции над набором данных N раз (посчитать
сумму, вывести числа от 1 до N и т.п.). См. ЛР №4.
Цикл while чаще всего используют, когда число итераций цикла заранее
неизвестно. Например, считывать текст, пока не встретится определенный
символ. См. ЛР №6.

11.

в) цикл do { } while();
do
оператор
while (выражение);
Пример:
проверяет условие в конце, после
выполнения тела цикла => тело цикла
всегда выполняется как минимум один
раз!
//выведется 0, т.к. условие проверяется после вывода i
int i = 0;
do
{
printf( "\t%d\n", i );
}
while ( i > 0);

12. Вложенные циклы

Все циклы могут находится в любом месте программы, в том числе
внутри другого цикла.
Пример (вывод таблицы умножения):
int i, j;
for(i = 1; i<10; i++)
{
for(j = 1; j<10; j++)
{
printf( "\t%d", i * j);
}
printf("\n");
}

13. Операторы break и continue

Оператор break вызывает принудительный выход из циклов
for, while и do — аналогично выходу из оператора switch. Выход
выполняется из ближайшего (самого внутреннего) цикла или
оператора switch.
Оператор continue передает управление на следующую итерацию
(проход) ближайшего цикла for, while или do. В цикле while или do
это означает немедленную проверку условия, тогда как в цикле for
дополнительно выполняется инкрементирование. Оператор continue
применим только к циклам, но не к оператору switch.

14. Оператор goto

for ( ... )
for (...)
{
}
error:
метка
if (disaster)
goto error;
решить проблему
Нельзя использовать!
Никогда!
Вообще никогда!
Оператор goto передает
управление из любого
места программы в
определенное место,
отмеченное меткой.
В примере используется
для выхода из нескольких
вложенных циклов.
Любую программу можно
переписать без goto.
English     Русский Правила