Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab2.doc
Скачиваний:
12
Добавлен:
05.06.2015
Размер:
286.72 Кб
Скачать

Тернарная операция ветвления.

Тернарная операция имеет три операнда, её форма :

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

Последовательность выполнения операции следующая:

  • выражение1 сравнивается с нулем ;

  • если выражение1 не равно нулю, то вычисляется выражение2 и его значение является результатом операции.

  • если выражение1 равно нулю, то вычисляется выражение3, и его значение является результатом операции.

Заметим, что вычисляется один из операндов после знака ?, но не оба.

Блок-схема тернарного (условного) оператора.

Пример: Переменной max присваивается максимальное значение из двух переменных а и b.

max = (a<=b) ? b : a;

Согласно общим правилам языка С сначала будет выполняться выражение справа от знака присваивания, то есть тернарный оператор (a<=b) ? b : a, который выполняет следующие действия:

  • если (a<=b), то возвращается b (результат равен b)

  • иначе возвращается a (результат равен a)

  • полученный результат пересылается (записывается) в переменную max

Если в условной операции операнд2 и операнд3 являются адресными выражениями, то тернарная операция может стоять слева от знака присваивания:

Пример:

a< b? a:b = c*x+d;

В данном примере значение выражения c*x+d присваивается меньшей из переменных a , b, если a<b, то вычисляется выражение a = c*x+d, иначе b = c*x+d

В заключении приведем таблицу приоритетов операций языка С. Операции расположены по убыванию их приоритетов, таким образом, самый высокий приоритет имеют операции ( ) [ ] -> . , а самый низкий – операция «запятая»

Вид операции

Знак операции

Ассоциативность

Первичные

( ) [ ] -> .

слева направо

Унарные

! ~ - + ++ -- (type) * & sizeof

справа налево

Мультипликативные

* / %

слева направо

Аддитивные

+ -

слева направо

Сдвиги

<< >>

слева направо

Отношения

< <= > >= == !=

слева направо

Побитовые

& ^ |

слева направо

Логические

&& ||

слева направо

Тернарная (условная)

? :

справа налево

Присваивание

=

справа налево

Запятая

,

слева направо

Ввод-вывод текста.

В первой лабораторной работе мы познакомились с функциями классического С:

printf() (вывод на экран) и scanf() (ввод с клавиатуры)

Сейчас на примерах рассмотрим функции ввода-вывода языка С++ :

cout - поток вывода (экран)

cin - поток ввода (клавиатура)

Пример: Вывести на экран числовую информацию с комментариями

#include "stdafx.h"

#include <iostream> // библиотека ввода-вывода С++

using namespace std;

void main()

{ int i=10;

double pi=3.14;

cout<<"output data : i="<<i<<"\tpi="<<pi<<endl;

cin>>i;

}

После запуска программы, на экране увидим:

output data : i=10 pi=3.14

В отличии от функции printf(), cout не требует явного указания типов данных

(он определяет их автоматически). Управляющие последовательности \n, \t и т. п. можно использовать, заключив их в «кавычки». Элемент endl делает ту же работу, что \n, то есть переводит курсор на новую строку.

cin>>i; вводит данные с клавиатуры, в данном случае используется для задержки после выполнения программы, если этого не сделать, то мы не успеем посмотреть результат — экран очень быстро закроется.

Эту (или подобную ей по функциям) строку необходимо писать в конце всех ваших программ.

Пример: Ввести вещественное число с клавиатуры, провести вычисления и вывести результат на экран

#include "stdafx.h"

#include <iostream> // библиотека ввода-вывода С++

using namespace std;

void main()

{ int r;

double pi=3.14, rez ;

cout<< endl<<"r="; // вывод «приглашения»

cin>>r; // ввод с клавиатуры в переменную r

rez=2*pi*r;

cout<<"rez="<<rez<<endl; // вывод результата с комментариями

cin>>r;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]