4864

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

Лекция

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

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

Русский

2012-11-28

40.5 KB

7 чел.

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

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

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

Оператор 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 в любом случае будет выполнено, по крайней мере, один раз.


 

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

48645. Створення поліграфічного комплексу 2.76 MB
  До цього слід додати ще такі фактори як зменшення трудомісткості монтажу і демонтажу друкарських форм; регулювання суміщення форм з пульта дистанційного керування; застосування автоматизованих систем миття фарбових апаратів і циліндрів а також систеи сканування форм які дають змогу видавати інформацію про потребу у фарбі лдя програмування балансу фарби та води систем автоматичного регулювання зволожування та ін. Зенефельдером в 1796 відтвореного зображення за допомогою спеціальної фарби наносилося на камінь. Нанесення шару лаку і фарби....
48646. Расчет структуры электромагнитных полей 508 KB
  Цель работы – расчет структуры полей внутри и вне цилиндра, а также в волноводе для приведенных в задании геометрических и электрических параметров
48647. Расчет структуры электромагнитных полей. Общее задание 210 KB
  Решение проводится в цилиндрической системе координат связанных с центром основания цилиндра где r радиусвектор точки наблюдения ось x направлена вдоль приложенного магнитного поля рис.1 методом разделения переменных в соответствии с которым решение  будем искать в виде произведения двух функций каждая из которых зависит только от одной координаты:...
48648. Расчет структуры электромагнитных полей 575 KB
  Метод исследования – метод разделения переменных при интегрировании дифференциальных уравнений для получения аналитических выражений потенциалов и напряженностей полей с последующим построением на ЭВМ структуры этих полей
48649. Расчет структуры электромагнитных полей 209.5 KB
  Параметры задачи Бесконечный проводящий цилиндр в магнитной среде R=8см=008м H0=20 і=5102 е=8 Координаты точки M: r=7см=007м =90 Решение Решение проводится в цилиндрических координатах связанных с центром основания цилиндра r радиусвектор точки наблюдения ось x направлена вдоль приложенного магнитного поля рис.1 в методом разделения переменных в соответствии с которым решение  будем искать в виде произведения двух функций каждая из которых зависит только от одной координаты:...
48650. Расчет структуры осесимметричных стационарных электромагнитных полей 203 KB
  Решение производится в цилиндрических координатах связанных с центром основания цилиндра r радиусвектор точки наблюдения ось x направлена вдоль приложенного магнитного поля рис.1 методом разделения переменных методом Фурьев соответствии с которым решение будем искать в виде произведения двух функций каждая из которых зависит только от одной координаты: 1.4 Этим самым решение уравнения 1.
48651. ПСИХОЛОГІЧНІ ВАЖЕЛІ ЗАБЕЗПЕЧЕННЯ БЕЗПЕКИ ЛЮДИНИ. МОДЕЛІ ФОРМУВАННЯ ЗДОРОВ’Я 278 KB
  Фактично люди мають дві нервові системи: центральну і вегетативну. Центральна нервова система керує відносинами людини із зовнішнім світом. Вона включає: спинний мозок, великі півкулі головного мозку, які зв’язані з проміжним мозком, середній мозок, задній мозок, довгастий мозок, мозочок. Вегетативна нервова система керує діяльністю внутрішніх органів.
48652. Расчет структуры электромагнитных полей 780 KB
  Задача настоящей работы – теоретическое исследование электромагнитного поля, основывающееся на классических представлениях о нём, и численное нахождение его характеристик.
48653. Перспективы и состояние разработок распределительных трансформаторов массовых серий 384.5 KB
  Распределительные трансформаторы мощностью 25 630 кВ А напряжением 6 10 кВ наиболее массовая серия ид производимых и эксплуатируемых трансформаторов в СССР. Производство и эксплуатация этих трансформаторов требует значительных материальных и трудовых затрат любое снижение затрат дает существенную экономию в народном хозяйстве. Снижение затрат на производство и эксплуатацию трансформаторов является основной задачей изготовителей для решения которой необходимо: снизить расход активных материалов при использовании...