Мегаобучалка Главная | О нас | Обратная связь


Оператор разветвления (if)



2019-12-29 186 Обсуждений (0)
Оператор разветвления (if) 0.00 из 5.00 0 оценок




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

 

if <логическое_выражение > then -- последовательность инструкций end if; if <логическое_выражение > then -- последовательность инструкций 1 else -- другая последовательность инструкций 2 end if;

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

Если результат - истина (любое отличное от нуля значение), то выполняется оператор 1.

Если результат анализа условия - ложь (равен 0), то выполняется оператор2. Если слово else отсутствует, то оператор1 пропускается, а управление передается на следующий после if оператор.

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

Если условие задано целым числом или переменной, то условие, не равное 0, всегда истинно, а равное 0, всегда ложно.

Вложенные (else if) и (if else)

При помощи if и else можно составлять else - if конструкции, которые могут осуществляют проверку нескольких выражений.

Свойства конструкции:

-         условия проверяются в том порядке, в котором они перечислены в программе;

-         если одно из условий истинно, то выполняется оператор соответствующий этому условию, а проверка оставшихся условий не производится;

-         если ни одно из проверенных условий не дало истинного результата, то выполняются операторы, относящиеся к последнему else;

-         последний else является необязательным, следовательно, он

и относящийся к нему оператор может отсутствовать. Для сокращения инструкций вида "else if ... ", и в целях улучшения читабельности, введена конструкция else if, которая может быть использована столько раз, сколько это будет необходимо.

 

if <логическое_выражение > then -- последовательность инструкций 1 els e if <логическое_выражение > then -- последовательность инструкций 2 els e if <логическое_выражение > then -- последовательность инструкций 3 else -- последовательность инструкций end if;

 

В этой форме инструкции if, заключительная конструкция else - опциональна. Необходимо также заметить, что результат вычисления логического выражения всегда должен иметь предопределенный тип.

Оператор выбора (switch)

В программировании часто встречается задача выбора одного варианта решения задачи из многих возможных. Это можно сделать с помощью вложенных if…else. Однако более удобный способ - использование оператора SWITCH, общий формат которого следующий:

SWITCH (выражение )

{

case const1: орегаtог1; bгеак;

c а s е count2: орега t ог 2; b геак ;

case count3: operator3; b геак ;

default: operator4; bгеак;

 }

 

Свойства:

-         выражение должно иметь целочисленный тип.

-         оператор, указанный после case выполняется, если значение выражения равно соответствующей константе. Если ни с одной из констант совпадений нет,

то управление передается оператору, стоящему после default, если, конечно, defoult есть, так как его существование не обязательно.

-         константы сравниваются с выражением в той последовательности, в какой они перечислены в программе;

-         символьные константы в switch автоматически преобразуются в целочисленные;

-         break передает управление за пределы оператора switch;

-         если после какого-либо из операторов отсутствует break, то константа в следующем case считается подходящей условию и соответствующие операторы выполняются;

 

-         не может быть двух констант в одном операторе switch, имеющих одинаковое значение;

 

ОПЕРАТОРЫ ЦИКЛА

Оператор while

Оператор while организует повторное выполнение одного оператора или нескольких операторов, заключенных в операторные (фигурные) скобки, до тех пор, пока логическое выражение   <условие> не примет значение ЛОЖЬ (0). Оператор while называют оператором цикла с предусловием, так как истинность <условие> проверяется перед входом в цикл. Следовательно, возможна ситуация, когда тело цикла не выполнится ни разу,, если на запрос ввести 0

Оператор do ... while

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

do <оператор> while (<условие>);

или

do {<оператор_1>; <оператор_2>;…<оператор_n>;

} while(<условие>);

 

Здесь сначала выполняется <оператор> или группа операторов, а затем проверяется значение выражения <условие>. Повторение тела цикла (<оператор>) происходит до тех пор, пока <условие>не примет значение ложь.

Оператор for

При организации цикла, когда его тело должно быть выполнено фиксированное число раз, осуществляются три операции: инициализация счетчика, сравнение его величины с некоторым граничным значением и изменение значения счетчика при каждом прохождении тела цикла. Условное выражение, имеющееся в цикле while,берет на себя заботу о сравнении, а приращение значения счетчика осуществляется с помощью операции увеличения. Так же, как это делалось раньше, можно объединить эти два действия в одно выражение, используя запись i++<=n. Но инициализация счетчика осуществляется вне цикла. Сейчас мы рас смотрим управляющий оператор, использование которого позволяет избежать этих проблем.    В операторе for используются три выражения, управляющие работой цикла. Они разделены символами "точка с запятой". Инициализирующее выражение вычисляется только один раз до начала выполнения какого-нибудь из операторов цикла. Рассмотрим детально работу этого оператора.

1.        Выполняется поле <инициализация>. Оно служит для присваивания начальных значений переменным, используемым в цикле.

2.        Проверяется значение <условие>, если ЛОЖЬ, то завершается выполнение цикла.

3.        Выполняется тело цикла (<оператор> или группа операторов).

4.        Выполняется поле <изменение параметров>. Служит для изменения значений переменных, используемых в цикле, и значений переменных, управляющих циклом.

5.        Далее возвращаемся к пункту 2.

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

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

Оператор break, стоящий в теле цикла, немедленно прекращает выполнение цикла и передает управление на уровень выше, а точнее на следующий оператор, стоящий после данного цикла, содержащего break. Поэтому для прекращения выполнения многоуровневого цикла по «инициативе» на самом глубоком уровне приходится выполнять не один, а несколько операторов break.

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

Оператор goto

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

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

goto part2;

Чтобы этот оператор работал правильно, в программе должен присутствовать другой оператор с присвоенной ему меткой part2. В этом случае этому второму оператору предшествует метка, за которой идет двоеточие:

part2: printf("Уточненный анализ :\n");

Использование операторов goto в ситуации, когда в операторе if требуется выполнить сразу несколько операторов:

 

if (size > 12)

goto a;

goto b;

a: cost=cost*1.05;

flag=2;

b: bill=coct*flag

 

В ранних версиях языков программирования BASIC и FORTRAN к оператору if относился только один оператор, непосредственно следующий за условием. Операторы break и continue, по сути, представляют собой специализированные формы оператора goto. Преимущество их использования заключается в том, что их названия говорят, для чего они предназначены, и в том, что можно не опасаться, что метки будут расставлены не там, где надо, поскольку они вообще не имеют дела с метками.

 

 МАССИВЫ

 Одномерные массивы

Массив - это группа расположенных друг за другом в памяти элементов одного типа и имеющих одно общее имя. Определение массива должно включать его имя и содержать информацию о типе и количестве составных элементов. Доступ к элементам массива осуществляется по имени массива и индексу элемента. Индекс - это порядковый номер элемента в массиве; индекс первого элемента всегда 0, далее следуют целые положительные числа (1, 2 и т. д.).

Массивы объявляются так же, как и обычные переменные, но после имени следуют квадратные скобки, в которых может быть заключена константа или константное выражение, которое задает количество элементов массива:

float аггау12];      // массив  аггау, содержащий 12 элементов

                                   // типа float

int buffer[10*5];        // массив  buffer, содержащий 50 элементов

                               // типа int

int п=15; int bad[n]; /* ошибочное объявление, так как переменная не может задавать размер массива  */

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

Как и обычные переменные, массивы при объявлении могут быть явно проинициализированы. Для этого при объявлении помещается список начальных значений элементов, заключенный в фигурные скобки:

Char array[5]={'А', 'Е', 'Г, 'О', 'U'};

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

int array[15]={3, 5, 10, 16};

Все остальные одиннадцать элементов будут проинициализированы нулями (и в функциях, в случае такого объявления). Если же значений в фигурных скобках будет больше, чем указано в квадратных скобках, то компилятор выдаст сообщение об ошибке.

Допустимо также объявлять массивы только со списком начальных значений. В этом случае число элементов массива компилятор определяет по списку инициализации:

int array[]={34, 78, 3, 98}; // массив из четырех элементов

Чтобы получить доступ к определенному элементу массива, нужно указать его порядковый номер в массиве, заключенный в квадратные скобки. Самый первый элемент массива имеет порядковый номер 0. В качестве индекса разрешается использовать любое выражение целого типа, а также любое выражение, значение которого можно преобразовать в целый тип. В остальном вы работаете с массивом, как с обычной переменной. Следующий оператор присваивает значение 125 четвертому элементу массива аггау:

array[3]=125;

Так же можно присвоить значение некоторого элемента массива переменной или другому элементу массива, например:

 tmp = array[3];

array[0]=array[2];

Здесь значение переменной tmp не определено. Для упрощения контроля границ индекса массива удобно использовать оператор sizeof, который применительно к массивам возвращает количество байт памяти, зарезервированных для массива:

int array[1 б ];

int quant;

quant = sizeof(array)/sizeof(int); // quant = = 16

Вы не ограничены использованием в индексах массивов только численных выражений. Рассмотрим такой пример.

index=2;

array[index]=5;

Здесь второй оператор ссылается на третий элемент массива. Можно сделать даже так:

array[3]=4;        

buffer[array[3]]=7;

Оператор во второй строке присваивает значение пятому элементу массива.

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



2019-12-29 186 Обсуждений (0)
Оператор разветвления (if) 0.00 из 5.00 0 оценок









Обсуждение в статье: Оператор разветвления (if)

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (186)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.009 сек.)