4864

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

Лекция

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

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

Русский

2012-11-28

40.5 KB

9 чел.

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

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

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

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


 

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

23603. Сущность прикладной лингвистики как особого подхода к языковым явлениям. Характерные черты прикладных методик 12.5 KB
  Методология прикладного исследования должна учитывать многоаспектность многоуровневость открытость языкового механизма. Методология совокупность общих принципов определяющая способ исследования какоголибо явления; определяет взгляд на объект как к нему подойти; философские принципы исследования явлений. Метод определенный тип способа исследования определяемый инструментами которые используются при изучении объекта исследования метод компьютерного моделирования статистический метод Собственно лингвистические методы:...
23604. Понятие репрезентации в науках о языке и мышлении человека 16 KB
  Операционная система MSDOS основные группы команд. Функции ОС: управление памятью управление вводомвыводом управление файловой системой управление взаимодействием процессов диспетчеризация процессов защита и учет использования ресурсов обработка командного языка MSDOS Microsoft: PCDOS IBM вариант MSDOS DRDOS Digital Research совместима с MSDOS; OS2 для машин IBM PS2 series UNIX Macintosh OS MAINFRAMES . Модульная структура MSDOS: 1. IBMDOS.
23605. СЕМАНТИЧЕСКИЕ СЕТИ 46.5 KB
  Выразительная сила больше не является решающим аргументом в пользу выбора сетей или линейных форм записи поскольку идеи записанные с помощью одной формы записи могут быть легко переведены в другую. Надписи над дугами означают что собака является агентов гложения кость является объектом гложения а жадность это манера гложения. В этом предложении сообщено что когда предложение While a dog was eating a bone являлось истинным второе предложение A cat passed unnoticed также является истинным. На рисунке 3 показано что собака...
23606. Теория фреймов 22.5 KB
  Впервые была представлена Минским как попытка построить фреймовую сеть или парадигму с целью достижения большего эффекта понимания . Минский разработал такую схему в которой информация содержится в специальных ячейках называемых фреймами объединенными в сеть называемую системой фреймов . Новый фрейм активизируется с наступлением новой ситуации .
23607. Различные наименования области прикладной лингвистики и их смысловые различия. Универсальные прикладные проблемы 15.5 KB
  Прикладная лингвистика это комплексная научная дисциплина изучающая язык в различных ситуациях его применения и разрабатывающая методы совершенствования языковых систем и языковых процессов. Термин прикладная лингвистика появился в конце 20 гг. За рубежом под ПЛ часто понимают совершенствование методов преподавания языка дидактическая лингвистика. Лингвистика входит в ядро складывающегося в настоящее время комплекса когнитивных наук объединяемых по их интересу к проблемам организации представления обработки и использования знаний.
23608. Понятие уровня в теоретической и прикладной лингвистике 13.5 KB
  Членение на уровни в рамках теоретической лингвистики: фонемный морфемный лексический уровень слова синтаксический уровень предложения Уровнеобразующими свойствами обладают только те единицы языка которые подчиняются правилам уровневой сочетаемости т. Уровень языка следует отличать от уровня анализа языка фаз или этапов рассмотрения языка. В лингвистической практике онтологический уровень языка и процедурный уровень анализа операционный нередко смешиваются хотя между ними нет прямого соответствия. Городецкий К проблеме...
23609. Мысль и язык 1.03 MB
  Потебня излагая взгляды Гумбольдта и его школы на отношение языкознания к психологии и логике выставил ряд своих собственных выводов как по этим общим так и по многим привходящим сюда частным вопросам выводов ставящих задачи русского и вообще славянского языкознания на широкую основу истории мысли. Это особенно может относиться к его Запискам по русской грамматике где рассыпая поражающие меткостью и новизной выводы при анализе отдельных явлений он мало заботится об общей связи между частными своими обобщениями полагая повидимому...
23610. ЯЗЫКОЗНАНИЕ ФОРМЫ СУЩЕСТВОВАНИЯ, ФУНКЦИИ, ИСТОРИЯ ЯЗЫКА 1.82 MB
  В книге специально отражен вопрос о коммуникативной функции языка и его знаковой природе освещены основы психофизиологического механизма речи а также вопросы связанные с особенностями литературного языка и явлениями нормы. Прежде всего авторы поставили своей 5 основной задачей изложить основные сущностные характеристики языка в их целостной и общей совокупности. Понять сущность языка как особого явления это значит уяснить его главную функцию и те многочисленные следствия которые она вызывает понять особенности его внутренней...
23611. ВВЕДЕНИЕ В ЯЗЫКОВЕДЕНИЕ 3.98 MB
  Ушаков обессмертивший свое имя редактированием Толкового словаря русского языка в обиходе именуемого ушаковским был для А. дорожил и гордился своим научным родством но верность учителям никогда не становилась для него основанием чураться нового и в своих лекциях из которых вырос учебник он стремился сочетать классику российского и мирового язковедения с сегодняшним видением основных проблем языка в том числе и со своими собственными представлениями. Он стал легендарным лектором благодаря умению пленять слушателей отточенностью...