- •Структура программы на языке с
- •Int main(список параметров)
- •Библиотека и компоновка
- •Словарь терминов
- •Выражения
- •Переменные
- •Инициализация переменных
- •Константы
- •Строковые константы
- •Специальные символьные константы
- •Оператор присваивания
- •Множественные присваивания
- •Арифметические операции
- •Операции увеличения (инкремента) и уменьшения (декремента)
- •Сводка приоритетов операций
- •Выражения
- •Явное преоразование типов: операция приведения типов
- •Операция определения размера sizof
- •Операторы
- •Int a, b, c; // объявление переменных
- •Пробелы и круглые скобки
- •Логические значениия истина (True) и ложь (False) в языке с
- •Условные операторы Оператор if
- •If (выражение) оператор;
- •Int magic; /* магическое число */
- •Int guess; /* попытка игрока */
- •Int magic; /* магическое число */
- •Int guess; /* попытка игрока */
- •If(k) statement 2; /* этот if */
- •Int magic; /* магическое число */
- •Оператор выбора - switch
- •Вложенные операторы switch
- •Цикл for
- •Бесконечный цикл
- •Варианты цикла for
- •Бесконечный цикл
- •Цикл for без тела цикла
- •Цикл while
- •Случае цикл требует повторить ввод. Цикл do-while
- •Цикл do-while часто используется в функциях выбора пунктов меню. Если пользователь вводит допустимое значение, оно возвращается в качестве значения функции. В противном
- •Оператор перехода
- •Оператор return
- •Оператор goto
- •Оператор break
- •Функция exit()
- •Void exit (int код_возврата);
- •Оператор continue
- •Int n, sum; // sum - сумма цифр числа
- •Оператор-выражение
- •Далее адреса Операция получения адреса (&) и раскрытия ссылки (*)
- •Одномерные массивы
Int magic; /* магическое число */
Int guess; /* попытка игрока */
magic = rand(); /* генерация магического числа */
printf("Угадай магическое число: ");
scanf("%d", &guess);
if(guess == magic) printf("** Верно **");
return 0;
}
В следующей версии программы для игры в "магическое число" иллюстрируется использование оператора else. В этой версии выводится дополнительное сообщение в случае ложного ответа.
/* Магическое число, программа N2. */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
Int magic; /* магическое число */
Int guess; /* попытка игрока */
magic = rand(); /* генерация магического числа */
printf("Угадай магическое число: ");
scanf("%d", &guess);
if(guess == magic) printf("** Верно **");
else printf("Неверно");
return 0;
}
Оператор ifявляется вложенным, если он вложен, т.е. находится внутри другого оператораifилиelse. В практике программирования вложенные условные операторы используются довольно часто. Во вложенном условном операторе фразаelseвсегда ассоциирована с ближайшимifв том же блоке, если этотifне ассоциирован с другой фразойelse.
Например:
if(i)
{
if(j) statement 1;
If(k) statement 2; /* этот if */
else statement 3; /* ассоциирован с этим else */
}
else statement 4; /* ассоциирован с if(i) */
Последняя фраза else не ассоциирована с if(j) потому, что она находится в другом блоке. Эта фраза else ассоциирована с if(i). Внутренняя фраза else ассоциирована с if(k), потому что этот if — ближайший.
Стандарт С89 допускает 15 уровней вложенности условных операторов, В следующем примере вложенный оператор if используется в модернизированной программе для игры в магическое число. С его помощью играющий получает сообщение о характере ошибки:
/* Магическое число, программа N3. */
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
Int magic; /* магическое число */
int guess; /* попытка игрока */
magic = rand(); /* генерация магического числа */
printf("Угадай магическое число: ");
scanf("%d", &guess);
if (guess == magic) {
printf("** Верно **");
printf("Магическое число равно %d\n", magic);
}
else {
printf("** Неверно, ");
if(guess > magic) printf("слишком большое\n");
/* вложенный if */
else printf("слишком малое\n");
}
return 0;
}
Лестница if-else-if
В программах часто используется конструкция, которую называют лестницей if-else-if.
Общая форма лестницы имеет вид
if (выражение) оператор;
else
if (выражение) оператор;
else
if (выражение) оператор;
.
.
.
else оператор;
Операция ?
В языке С определен мощный и удобный оператор, который часто можно использовать вместо оператора вида if-then-else. Этотернарный оператор ?,общий вид которого следующий:
Выражение1 ? Выражение2 : Выражение3;
Обратите внимание на использование двоеточия. Оператор ? работает следующим образом:
сначала вычисляется Выражение1,
если оно истинно, то вычисляется Выражение2 и его значение присваивается всему выражению;
если Выражение1 ложно, то вычисляется Выражение3 и его значение присваивается всему выражению.
В примере
x = 10;
y = x>9 ? 100 : 200;
переменной у будет присвоено значение 100.
Если бы хбыло меньше 9, то переменнойубыло бы присвоено значение 200. Эту же процедуру можно написать, используя оператор if-else:
x = 10;
if(x>9) y = 100;
else y = 200;