Читайте также:
|
|
Оператор присваивания имеет вид: V=A;
y=5*x+sqrt(7*x+3);
Любой оператор присваивания, заключенный в круглые скобки, является выражением с определенным значением, которое получается в результате этого присваивания.
Например: выражение вида ((S=13+12)<=30) будет иметь значение истина.
Составные операторы (блоки). Составные операторы представляют собой два или более операторов, объединенных с помощью фигурных скобок; он называется также ''блоком''. Составные операторы используются в условном операторе, операторах цикла.
Основная литература: 1осн[63-77], 2осн[23-133]
Дополнительная литература: 11доп[84-106 ]
Контрольные вопросы:
1. Назовите тип данных для работы с беззнаковыми целыми числами?
2. Какие существуют формы записи операций увеличения и уменьшения и чем они отличаются?
3. Назовите директиву препроцессора для определения символьных и строковых констант?
4. Какие спецификации формата являются эквивалентными при их использовании в функции scanf?
5. В каком случае происходит «повышение» типа?
Тема 2. Управляющие структуры. Выбор вариантов. Структура выбора If, If – Else, логические операции, операция условия, множественный выбор.
Язык Си предоставляет три типа структур выбора. В структуре выбора if некоторое действие либо выполняется (выбирается), если условие истинно, либо пропускается, если это условие ложно. В структуре выбора if/else некоторое действие выполняется, если условие истинно, и выполняется другое действие, если это условие ложно. В структуре выбора switch выполняется одно из набора действий в зависимости от значения некоторого выражения.
Структура if называется структурой с единичным выбором, поскольку в ней выбирается или игнорируется одно действие. Структура if/else называется структурой с двойным выбором, поскольку в ней выбор происходит между двумя альтернативными действиями. Структура switch называется структурой с множественным выбором, поскольку в ней выбор происходит из нескольких различных действиями.
Общий вид структуры выбора if:
if (выражение) оператор1;
Общий вид структуры выбора if/else:
if (выражение) оператор1;
else оператор2;
Если выражение истинно (отлично от нуля), то выполняется оператор 1, в противном случае оператор 2.
В языке Си предусмотрена условная операция (?:), которая тесно связана со структурой if/else. Для нее необходимо три операнда. Операнды вместе с условной операцией образуют условное выражение. Первый операнд является условием, второй операнд значением для всего условного выражения, если условие истинно, и третий операнд значением для всего условного выражения, если условие ложно. Например,
x>y? printf(“max=%d\n”, x): printf(“max=%d\n”, y);
Вложенные структуры if/else служат для проверки составных условий, при этом одни структуры if/else помещаются внутри других структур if/else.
Приведем следующую форму записи:
if (выраж. 1)
оператор 1;
else if (выраж. 2)
оператор 2;
else
оператор 3
Если выражение 1 истинно, выполняется оператор 1. Если выражение 1 ложно, но выражение 2 истинно, выполняется оператор 2. В случае, когда оба выражения ложны, выполняется оператор 3.
Логические операции. При объединении двух или более условных выражений используются логические операции. В языке Си имеются три логические операции: & & (и),!! (или),! (не).
1. fl1 && fl2 истинно в том и только в том случае, когда оба выражения fl1 или fl2 истинны.
2. fl1 || fl2 истинно в том и только в том случае, когда оба выражения fl1 или fl2 истинно или оба истинны.
3.!fl1 истинно, если выражение fl1 ложно, и наоборот.
Пример: 15>12 && 8>10 - ложно (истинно таким образом одно подвыражение)
15>12 | | 8>10 – истинно (по крайней мере одно подвыражение истинно)
! (8>10) истинно
Операция! имеет очень высокий приоритет, только круглые скобки имеют более высокий приоритет. Приоритет операции && выше, чем операции ||, а обе эти операции имеют более низкий приоритет, чем операция присваивания.
При использовании операции && и || необходимо отметить следующее: выполнение этих операций прекращается, как только становится ясно, будет ли результат иметь значение истина или ложь. Предположим, что имеется выражение вида: fl1 && fl2.
Если fl1 – ложь, значит и все выражение ложь, таким образом, fl2 не будет вычисляться.
Аналогично, если мы имеем выражение вида fl1 || fl2,
То fl2 не будет вычисляться, если fl1 – верно.
В следующей программе показан пример использования структуры выбора if/else с двойным выбором.
// Вычисление стоимости покупки с учетом скидки
#include <stdio.h>
#include <conio.h>
void main()
{
float sum; /* сумма покупки */
printf(“\nВычисление стоимости покупки с учетом ”);
printf(“скидки\n”);
printf(“Введите стоимость покупки ->”);
scanf(“%f”, &sum);
if (sum<1000) printf(“Скидка не предоставляется.\n”);
else { printf(“Вам предоставляется скидка ”);
if (sum>3000) { printf(“5%\n”);
sum = 0.95 * sum; }
else { printf(“3%\n”);
sum = 0.97 * sum; };
printf(“Сумма с учетом скидки %.2f тг\n”, sum); }
printf(“\nДля завершения нажмите <Enter>”);
getch(); }
Результат программы:
Вычисление стоимости покупки с учетом скидки
Введите стоимость покупки -> 2250
Вам предоставляется скидка 3%.
Стоимость покупки с учетом скидки: 2182.50 тг.
Оператор выбора switch (переключатель)
Если в программе необходимо произвести выбор одного из нескольких вариантов используется оператор выбора switch.
Общий вид оператора switch:
switch (выражение)
{
case метка 1:
операторы;
case метка 2:
операторы;
---------------------------------
default:
операторы;
}
Выражения и метки должны иметь значения целого типа (включая тип char); метки должны быть константами или константными выражениями. Вначале вычисляется выражение в скобках, затем происходит сравнение вычисленного значения выражения с каждым значением метки. Если они совпадают, начинается выполнение операторов данной метки, которое продолжается либо до конца оператора switch. Оператор break используется для выхода из switch и осуществляется переход к следующему за ним оператору. Если значения выражения не совпадает ни с одной из меток, но в операторе switch существует метка default, то будут выполняться операторы этой метки. Если метки default нет, происходит переход к оператору, расположенному за оператором switch.
В операторе switch нельзя использовать вещественные типы данных, строки и других структуры данных, но разрешает использовать элементы структур данных совместимых с целыми значениями.
main ()
{char ch;
while ((ch=getchar ())!='#'
{ switch (ch){
case f:
case 'F': do_file_menu; break;
case 'r':
case 'R': run_program (); break;
case 'c':
case 'C':do_compile (); break;
default: Ex (); break; }
printf (“Введите букву или #”); }
Основная литература: 1осн[94-101], 2осн[168-209], 3осн[53-57]
Дополнительная литература: 10доп[108-115]
Контрольные вопросы:
1. Назовите логическую операцию самого высокого приоритета?
2. Какой оператор используется для выбора одного варианта из нескольких?
3. В каком случае используется операторы метки default?
4. Какие структуры используются для проверки составных условий?
5. Какой тип данных используются для выражений и меток в операторе выбора switch?
Дата добавления: 2015-11-04; просмотров: 97 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Использование функции printf( ) и scanf( ). | | | Тема 3. Управляющие структуры. Структуры повторения While, do – While, For. Управляющие операторы break и continue. |