Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по С++.doc
Скачиваний:
27
Добавлен:
20.08.2019
Размер:
2.26 Mб
Скачать

Блок-схема оператора разветвления

если x > 0

  то y := sin(x)

Все

если a > b

  то a := 2*a; b := 1

  иначе b := 2*b

Все

Условная операция.

Язык С++ включает операцию, которая может использоваться вместо оператора if else. Она называется условной операцией и записывается как ? :

Формат 1:

Выражение1 ? Выражение2 : Выражение3

Это единственная операция С++, которая требует трех операндов.

Описание алгоритма формата 1:

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

Пример 1:

5 > 3 ? 10 : 12 //т.к. 5 > 3 истинно, поэтому значение всего выражения – 10, а если было бы ложно то результат равен 12;

3 == 9 ? 25 :18 //т.к. 3 == 9 ложно, поэтому значение всего выражения – 18, а если бы было истина то результат равен 25;

Формат 2:

a = (B) ? s1:s2;

Где

a - идентификатор переменной левой части оператора присвоения.

B - условие принятия решения, выражение любого типа (круглые скобки вокруг условия не обязательны ).

s1:s2 - выражения с помощью которых вычисляется значение a.

Описание алгоритма формата 2:

Вычисляем значение В;

  • Если В! = 0 , т.е. true, то вычисление значения переменной a производится с помощью выражения s1.

  • Если В = 0 , т.е. false, то с помощью выражения s2.

Если типы, переменной левой части оператора присвоения и результата выражений s1 и s2 разные, то тип результата вычисления выражения преобразуется к типу переменной a в соответствии с правилами преобразования.

Пример 2:

#include <iostream>

Int main ()

{

using namespace std;

int a,b;

cout << “Введите два числа:”;

cin >>a >> b;

cout << “Большее из ” << a << “ и ” << b;

int c = a > b ? a : b; // с = а если а > b, иначе с =b

cout << “ – “ << c << endl;

return 0;

}

Иначе это выглядит с оператором if:

int c;

if ( a > b)

c = a;

else c = b;

Операция «запятая» в операторе if.

Операция «запятая» в операторе if принимается, если надо группу операторов рассматривать как один оператор, как в описании условия, так и в перечислении списка операторов.

I случай

Список операторов и выражений трактуется как единое выражение и вычисляется слева на право:

Условие

if ( с = a + b , c > d ) {список операторов}

Оператор

    1. Вычисляем с = a + b.

    2. Анализ c > d.

Если два условия: с равно сумме а и b - истина, а так же с больше d тоже истина, то выполняется список операторов.

II случай

if (a > b) q = 1, printf (……);

если а > b истина, то выполняются два оператора, разделенные запятой.

Список операторов рассматривается как один составной оператор.

Преобразование и привидение типов.

Автоматически преобразования производятся перед:

  • Выполнением арифметических операций.

  • Присвоением значения выражения правой части оператора присвоения, переменной левой части оператора присвоения.

  • Передачей фактических параметров функции.

  • Возвратом результата функции.

Система ввода/вывода определяет, соответствует ли код цифре или символу.

Схема иерархии типов.

Стрелки задают порядок автоматического приведения типов.

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

Можно принудительно преобразовать типы явным образом через механизм приведения типов: имяТипа (значение); происходит преобразование значения в тип имяТипа.

Например:

#include <iostream>

int mane ()

{

using namespace std;

int auks, coots;

auks = 19.99 + 11.99;//результат усекается до целого - 31

//следующий оператор суммирует целочисленные значения

coots = int (19.99) + int (11.99);

cout << “auks = ” <<auks << “ , coots = ” << coots << endl;

char ch = ‘Z’;

cout << “The code for ” << ch << “ is ”; // вывод в формате char

cout << int(ch) << endl; // вывод в формате int

return 0;

}

Результат выполнения программы:

auks = 31, coots = 30

The code for Z is 90