Similar presentations:
Основы языка СИ. Часть 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.
Пример 3int 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 и whilefor (выраж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.