4864

Условные операторы и операторы цикла

Лекция

Информатика, кибернетика и программирование

Условные операторы и операторы цикла. Условные операторы. Язык С++ располагает несколькими условными операторами, позволяющими организовать ветвление в программе. Оператор if реализует простое ветвление, относительно выполнения условия: if ( условие...

Русский

2012-11-28

40.5 KB

6 чел.

Условные операторы и операторы цикла.

Условные операторы.

Язык С++ располагает несколькими условными операторами, позволяющими организовать ветвление в программе.

Оператор if реализует простое ветвление, относительно выполнения условия:

if ( условие )

 оператор

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

if ( x > 0 )

 x++;

 if ( x < 0 )

{

 x--;

 y++;

}

Кроме того, существует расширенный вариант условного оператора:

if ( условие )

 оператор_1

 else

 оператор_2

 

Если условие истинно (т.е значение выражения условие отлично от 0), выполняется оператор_1, в противном случае  оператор_2. Следующий пример демонстрирует использование условного оператора в программе, реализующей отыскание действительных корней квадратного уравнения:

#include <iostream>

int main()

{

setlocale( 0, "Rus" );

 double a, b, c;

std::cout << "Коэффициенты полинома:" << std::endl;

std::cin >> a >> b >> c;

 double D = b*b - 4*a*c;

 if ( D > 0.0 )

{

 double x1 = ( -b + std::sqrt( D ) ) / ( 2*a );

 double x2 = ( -b - std::sqrt( D ) ) / ( 2*a );

 std::cout << "Два простых корня: " << x1 << " " << x2 << std::endl;

 }

 else if ( D == 0.0 )

{

 double x = -b / ( 2*a );

 std::cout << "Один корень кратности 2: " << x << std::endl;

}

 else

 std::cout << "Действительных корней нет" << std::endl;

system( "pause" );

 return 0;

}

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

условие ? выражение_1 : выражение_2;

В такой форме его действие аналогично оператору ifelse, однако, в отличие от последнего, тернарный оператор возвращает значение. В следующем примере переменная x получит значение a+b или a-b в зависимости от четности переменной y:

double x = ( y % 2 ) ? ( a + b ) : ( a - b );

В случае необходимости реализации множественного ветвления, удобно использовать оператор switch:

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

{

 case ( выражение_1 ):

 блок_из_одного_или_нескольких_операторов_1;

 break;

 case ( выражение_2 ):

 блок_из_одного_или_нескольких_операторов_2;

 break;

 default:

 блок_из_одного_или_нескольких_операторов_n;

 break;

}

Принцип его действия следующий: значение выражение поочередно сравнивается (на равенство) с каждым из значений выражение_i, в случае совпадения с одним из них выполняется соответствующий блок операторов, в противном случае выполняется блок операторов секции default (если она присутствует).

 Операторы цикла.

Циклы позволяют организовать повторное выполнение однотипных действий.

Цикл for имеет следующий синтаксис:

 for ( выражение_1; выражение_2; выражение_3 )

 оператор

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

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

 int N = 1234321; // Заданное число

 

 for ( int T = N, i = 2; i <= T; )

 {

 if ( T % i == 0 ) // i - делитель

 {

  std::cout << i << " ";

  T /= i; // Делим T на i

 }

 else  // i не является делителем

  ++i; // переходим к следующему i

}

Цикл while описывается следующим образом:

while ( условие )

 оператор

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

char c = 0;

while( ! isalpha( c )  )

{

 std::cout << "Введите c: ";

 std::cin >> c;

}

Цикл dowhile выглядит так:

do

 оператор

 while ( условие );

и действует подобно while, разница заключается в том, что здесь проверка выражения условие выполняется после каждой итерации цикла, поэтому оператор (тело цикла) dowhile в любом случае будет выполнено, по крайней мере, один раз.


 

А также другие работы, которые могут Вас заинтересовать

12924. Наші права – щасливе дитинство 35.5 KB
  Виховна година на тему: Наші права – щасливе дитинство Мета:розповісти учням про їхні права й свободивизначені Конституцією про права дитини; навчити правильно реалізовувати свої прававиховувати в учнів поважне ставлення до власної особистості інших. Обла...
12925. Виховний захід. Дружба 51 KB
  Тема: Дружба Мета: розкрити зміст понять дружба дійсний друг; показати його відмінність від понять приятель і знайомий; прищепити учням повагу до цінностей дружби; сприяти розвиткові критичного ставлення до себе і своїх особистих якостей терпимості й коректно...
12926. Виховна година на тему «Європейські університети» 308 KB
  Виховна година на тему Європейські університети Ведучий 1 Доброго дня шановні викладачі студенти гості. Ведучий 2 Омар Хаям говорив: Знання для духу світоч найясніший знання для тіла панцир найміцніший. Ведучий 1 Знання нам дарують вихователі вчителі
12927. Виховна година на тему: «Шкідливість алкоголю» 62 KB
  Виховна година на тему: Шкідливість алкоголю Мета: Виховання свідомого ставлення до свого здоров’я та здоров’я громадян як найвищої соціальної цінності; формування валеологічного світогляду; формування та пропаганда здорового способу життя; профілактика шкідливих ...
12928. Виховна година на тему: «СНІД. Небезпека і профілактика» 54.5 KB
  Виховна година на тему: СНІД. Небезпека і профілактика Мета: дати учням елементарні знання про СНІД основні шляхи зараження цією хворобою та заходи щодо її профілактики. Обладнання: роздавальний матеріал анкета Перевір свої знання про СНІД; плакат із відпові
12929. Виховна година на тему «Наркоманія» 88 KB
  Виховна година на тему Наркоманія Мета: дати учням елементарні знання про хворобу наркоманію основні наркотичні речовини їх дію на організм людини та шляхи профілактики наркозалежності; розглянути наркоманію в моральному правовому і медичному аспектах; привести...
12930. Про шкоду паління та алкоголізму 64.5 KB
  Про шкоду паління та алкоголізму Виховна година для підлітків 12–15 років Мета заходу: формування в учнів правильного уявлення про здоров’я здоровий спосіб життя; виховання дбайливого ставлення до свого здоров’я здоров’я оточуючих; пропаганда здорового способу життя;...
12931. Збірка Виховних годин 422 KB
  Виховна година Доброта. Мета: виховувати в підлітках доброту; довести що можливість зробити світ трохи кращим знаходиться в кожному з нас. Обладнання: папір для відповідей на тести й малюнків фломастери; музичний центр диск Світлани Копилової Прит
12932. Разработка технологии изготовления высокоплотных изделий сложной формы из Al2О3 5.36 MB
  Области применения и виды изделий высокоглиноземистой керамики –различны. Их применяют: в режущих инструментах, в различных двигателях, в контейнерах для хранения радиоактивных отходов, в микроэлектронике, в ракето космической промышленности, в виде брони.