Материал: Программирование на языке высокого уровня Лекции 09.03.01

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

else

else

n=n-m;

n=n-m;

При необходимости многоступенчатого принятия решений удобно использовать конструкцию else – if. Условия проверяются по порядку; как только встречается истинное условие, выполняется соответствующая ему инструкция и последовательность проверок завершается. Если ни одно из условий не оказалось истинным, то срабатывает последняя else часть.

if (r >= 45)

printf(“Выплачивается повышенная стипендия\n”); else if (r >= 35)

printf(“Выплачивается стипендия\n”); else if(r >= 25)

printf(“Нет стипендии\n”);

else

printf(“Пора гнать\n”);

Инструкция switch используется для выбора одного из многих путей и называется переключателем. Она проверяет, совпадает ли значение некоторого выражения с одной из целых констант, и выполняет соответствующую этому занчению ветвь, а также последующие ветви, соответствующие константам.

switch (выражение) {

case константа : инструкции case константа : инструкции

. . . . . . . . . . . . . .

default : инструкции }

Если ни одна из констант не совпала со значением выражения, то выполняются только инструкции, стоящие после ключевого слова default.

Так как в языке С символьный тип является подмножеством целого типа, то в конструкции switch разрешается использование символьных переменных и констант.

При необходимости немедленного выхода из переключателя после выполнения соответствующей ветви следует использовать инструкцию break. После ее выполнения управление передается на инструкцию, следующую за обязательной закрывающей фигурной скобкой оператора switch.

i=4;

 

 

switch (i+2) {

 

 

case 4 : i=i+4;

 

case 6

: i=i+6; break;

 

case 8

: i=i+8;

 

 

}

 

Программирование на языке высокого уровня 09.03.01

11

Структуры, реализующие повторение.

В языке С существует три основных конструкции для реализации циклов. Для представления циклов с постусловием используется

конструкция do – while, а

для циклов

с

предусловием –

конструкции while и for.

 

 

 

while (условие)

i=2;

 

 

действие;

while (i<=5)

действие;

{ . . . .

 

 

 

 

i=i+1;}

 

t=4;

 

 

do

i=3;

 

 

действие;

do{

 

 

while (условие);

. . .

 

 

 

i=i+1;

 

 

. . .}

 

 

while (i<=10);

При организации циклов с

предусловием

и

с постусловием

условие необходимо формулировать так, чтобы выполнение цикла

продолжалось по ветви “да”.

 

 

При написании циклов с предусловием

более

компактным

способом записи является использование цикла

for,

поскольку в

его заголовке помимо условия окончания цикла

содержатся, если

это необходимо, и задание начального значения счетчика, и предписание по изменению значения счетчика.

for (выражение 1; выражение 2; выражение 3) действие;

действие;

for (i=2; i<=5; i=i+1) {. . .

. . .

}

t=4;

Первое выражение из заголовка цикла for воспринимается как действие и выполняется только 1 раз. Второе выражение воспринимается как условие. До тех пор, пока это условие истинно, выполняется тело цикла. После каждого выполнения тела выполняется третье выражение, которое воспринимается как действие. Затем управление вновь передается на проверку условия.

Любое из трех выражений, находящихся в заголовке цикла for, может быть пропущено, а может присутствовать, но не являться действием или условием. Обязательными с точки зрения синтаксиса

Программирование на языке высокого уровня 09.03.01

12

являются только обе точки с запятой. Тем не менее, компилятор воспринимает второе выражение как условие. Если оно на самом деле условием не является, то вычисляется его числовое значение. Условие считается ложным, если это значение равно 0, и истинным во всех остальных случаях. Это правило распространяется на любые места в программах на С, где ожидается условие.

В заголовке цикла for часто используется оператор “,”. Выражения, разделенные запятой выполняются слева направо.

for (i=0, j=3; i<j;)

{i=i+1;

j=j+0.5;

}

Структуры безусловного перехода.

В языке С существуют три оператора реализующие безусловный переход – break, continue, goto. Несмотря на термин “безусловный”, управление обычно передается на эти операторы при выполнении некоторого условия.

Инструкция break используется в ситуации, когда необходимо прервать выполнение переключателя switch или цикла, организованного при помощи операторов цикла. После выполнения инструкции break управление будет передано на оператор, стоящий после цикла или после переключателя. При этом выход будет осуществлен только из одного цикла или переключателя.

Использование оператора break вне циклов или переключателей приводит к синтаксической ошибке.

for(..;..;..)

{. . .;

. . .; for(..;..;..)

{. . .; if(..)

break;

. . .; }

. . .;

}

. . .;

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

Программирование на языке высокого уровня 09.03.01

13

При использовании инструкции continue в циклах while и do while существует опасность зацикливания в случае, когда изменение счетчика цикла находится ниже conyinue.

i=5;

while (i<=10)

{. . .; if(i==7)

continue;

. . .;

. . .;}

Инструкция goto используется для передачи управления в помеченную строку программы. Имена меткам даются по тем же правилам, что и имена переменных, но метки не нужно описывать. Метка ставится в начале строки, на которую осуществляется переход, а после метки ставится двоеточие. Переход при помощи оператора goto принято использовать для передачи управления вниз по программе.

for (..;..;..) {. . .;

for (..;..;..) {. . .;

if(условие) goto t;

. . .;

}

. . .;

}

t:. . .;

Тема 16. Основные операции языка программирования С/С++.

Арифметические операторы.

К бинарным арифметическим операторам относятся +,-,*,/, и %. Оператор % вычисляет остаток от деления своего левого

операнда на правый. Он применим только к целым типам. int a=4,b=7,c,d;

c=b%a;

d=b/a;

Деление целых чисел сопровождается отбрасыванием дробной части. Бинарные операторы + и – имеют одинаковый приоритет, который ниже приоритета операторов *,/,%. Еще выше приоритет унарных операторов + и -. Арифметические операции одного приоритетного уровня выполняются слева направо.

Программирование на языке высокого уровня 09.03.01

14

Операторы отношения и логические операторы.

К операторам отношения относятся <,<=,>,>=, которые имеют одинаковый приоритет. Ровно на одну ступень ниже приоритет операторов сравнения на равенство == и !=.

Все операторы отношения имеют приоритет ниже арифметических операторов.

К бинарным логическим операторам относятся && и ||. Особенностью языка С является то, что выполнение цепочки выражений, соединенных логическими && или || прекращается, как только становится известной истинность или ложность результата.

while (i<n && a[i]<a[i+1])

Приоритет оператора && выше, чем оператора ||, но ниже, чем приоритет операторов отношения и проверки на равенство.

Если же в сложном выражении встречается присваивание, то скобки могут понадобиться, так как у присваивания один из самых низких приоритетов.

while (i<a+3 && (c=t[i])!=a)

Численным результатом вычисления выражения отношения или логического выражения является 1 в случае, если оно оказалось истинным, и 0 в случае, если оно ложно.

В С также существует унарный оператор отрицания !, который преобразует истину в ложь, а ложь в истину.

Например, if(!a) аналогично if (a==0).

Инкрементные и декрементные операторы.

Инкрементный оператор ++ добавляет 1 к своему операнду, а декрементный оператор -– вычитает 1 от своего операнда.

Операторы ++ и – можно использовать в двух формах: префиксной, помещая их перед переменной (++i), и постфиксной, помещая их после переменной (i++). Значение переменной i будет увеличено на единицу при любой из этих форм записи, но в префиксной форме это изменение происходит до использования значения переменной, а в постфиксной форме уже после использования. Таким образом, разница в этих формах видна при использовании инкрементных и декрементных операторов в составе выражений, а не в качестве отдельных операторов.

i=3;

i=3;

a=i++;

a=++i;

d=++i;

d=i++;

Инкрементные и декрементные операторы можно

применять

только к переменным. Запись (a+b)++ не допускается.

 

Побитовые операторы.

 

Программирование на языке высокого уровня 09.03.01

15

Источник: https://studfile.net/preview/16415559/