333.21K
Category: programmingprogramming

Лекция 2

1.

Лекция 2
Вопрос 7 – Константы

2.

Виды констант
Кроме переменных данные могут храниться в константах.
Константы бывают двух различных видов: именованные и литералы
(неименованные).
Именованная константа – это поименованная область
оперативной памяти определённого размера, которая содержит
конкретное значение, неизменяемое в течение работы программы.
Оператор объявления именованной константы выглядит
следующим образом:
const тип<имя_константы> = <значение_константы>;
<Значение константы> является литералом, то есть записью явного
значения при помощи символов разрешенного для данного типа
данных алфавита.

3.

Примеры литералов для различных типов
данных
Тип
Примеры литералов
char, signed char или
unsigned char
‘A’, ‘Z’,‘8’,‘*’
wchar_t
int
unsigned int
long
unsigned long
float
double
long double
bool
L’A’, L’Z’, L’8’, L’*’
-77, 65, 012345, 0x9FE
10U, 64000U
-77L, 65L, 12345L
5UL, 999999999UL
3.14f, 34.506f
1.414, 2.71828, 5.67е-4
1.414L, 2.71828L
true, false

4.

Алфавиты для литералов
Символы-модификаторы констант можно использовать
в любом регистре и любой последовательности.
Однако при указании таких значений желательно
придерживаться какого-то согласованного стиля.
Для каждого типа литералов строго определен
алфавит, символы которого можно использовать для
записи литералов конкретного типа.
Внимание!!!! Тип литерала определяется по его записи,
то есть какой алфавит используется, такого типа будет
литерал.

5.

Используемая спецификация
Буква L указывает на то, что это значения типа long. Для той же
цели можно применять и прописную букву l, но ее недостаток в том, что
ее легко спутать с цифрой 1. Целые литералы без добавленной буквы L
имеют тип int. Может быть использована не только с целочисленными
значениями, но ее применяют к значениям типа double.
Буква U (или u), добавленная к константе – это спецификатор для
unsigned – положительное, целое.
Эти спецификации добавляются в конец цифрового литерала и
ставятся перед литералом символьным или строковым.
F (или f) спецификация для обозначения дробного числа типа
float, без этой спецификации литерал определяется как double.
Следует учитывать что все литералы являются положительными, если
перед литералом ставится знак - , то это унарная операция минуса.

6.

Литералы целочисленных типов:
int
Разрешенный алфавит:
1.
10-я запись – цифры ( 0, 1, 2, 3, 4, 5, 6, 7 ,8, 9) , спецификация
типа - нет;
2.
16-я запись– на первом месте 0X(0x) , цифры ( 0, 1, 2, 3, 4, 5, 6, 7
,8, 9) , буквы в любом регистре (A,B,C,D,E,F), спецификация типа – нет.
3.
8-я запись– на первом месте 0, цифры ( 0, 1, 2, 3, 4, 5, 6, 7 ) ,
спецификация типа - нет;
const int i1=71, i4=-80;
const int i2=0107;
const int i3=0x47;
Унарный минус не применим к 16-ой и 8-ой записи целого числа.
Обратите внимание константы i1, i2, i3 имеют одно и тоже значение 71 !!

7.

Литералы целочисленных типов:
long
Разрешенный алфавит:
знак (+ или -) , цифры ( 0, 1, 2, 3, 4,
5, 6, 7 ,8, 9) , спецификация типа (L,
LU, UL) в конце;
const long Li=-71L;

8.

Литералы целочисленных типов:
char
Разрешенный алфавит:
любой одиночный символ, заключенный в апострофы (‘ ‘), либо код символа в
диапазоне от 0 до 255, допустимы управляющие символы в апострофах –
‘/0’, ‘/n’, ‘/a’,’/t’.
При добавлении спецификации L(l) перед записью значения литерала тип его
меняется с char на wchar_t.
const char letter = ‘A’;
wchar_t letter1= L‘A’;
Поскольку символ A в кодировке ASCII представлен десятичным значением 65,
можно написать этот оператор следующим образом:
const char letter = 65;
// эквивалент символа А
16-ая запись кода, для символьного типа данных:
char letter = 0x41;
// эквивалент символа А

9.

Примечания к типу char
Важно! Стандарт ISO/ANSI C++ не требует, чтобы тип char
представлял однобайтные целые со знаком. Тип wchar_t назван
так, поскольку это расширенный символьный тип (wide char type) и
переменные этого типа сохраняют 2-байтные символьные.
Диапазон значений, которые могут быть сохранены в переменной
типа char, находится в пределах от -128 до +127, что
совпадает с диапазоном допустимых значений переменных типа
short char. Но как это ни прискорбно, тип char и тип signed
char трактуются как разные типы, поэтому не стоит допускать
ошибку, думая, что это одно и то же.
Это выбор реализации компилятора: представлять char как
целые со знаком в диапазоне от -128 до 127 либо как целые без
знака в диапазоне от 0 до 255. Следует иметь это в виду, если
может потребоваться переносить код C++ в другую среду.

10.

Литералы логического типа bool
Разрешенный алфавит – true , false, любое целое число.
Переменные типа bool используются для сохранения результата
проверок, которые могут принимать значения либо «истина»
(true), либо «ложь» (false).
На самом деле тип bool представляется в коде программы как
int. При этом нулевые значения трактуются как «ложь», а
ненулевые – как «истина».
Символы TRUE и FALSE все еще применяются в MFC, где они
представляют ненулевые целые значения и 0, соответственно. Стоит
обратить внимание но то, что TRUE и FALSE, записанные заглавными
буквами, не являются ключевыми словами в C++, это просто константы,
определенные внутри MFC и, следовательно, они не являются допустимыми
значениями типа bool, потому не стоит путать TRUE и true.
bool yra=true, ups=0;

11.

Строковые литералы – константные строки
Строка символов – это последовательность отдельных
значений типа char, которая сгруппирована в единое
целое. Может быть как типа char* так и string.
Разрешенный алфавит: последовательность любых
символов, заключенная в двойные кавычки(“…”);
const char* str1={"привет мир\0"};
const char str2[]={"привет мир\0"};
string str3="привет мир";
string str3("привет мир");

12.

Литералы для вещественных типов:
double
Числовые переменные, не относящиеся к целым, хранятся как числа
с плавающей точкой. Число с плавающей точкой может быть выражено в
виде десятичного значения, наподобие 112.5, либо в экспоненциальном
виде, таком как 1.125Е2, где десятичная часть умножается на 10 в степени,
указанной после Е (экспонента). Таким образом, последнее число – это
1.125×102, что равно 112.5.
Разрешенный алфавит : знак (+ или -) , цифры ( 0, 1, 2, 3, 4, 5, 6,
7 ,8, 9) , разделитель для целой и дробной части – ! точка ( . ) , при
использовании записи с плавающей запятой – разделитель экспоненты числа
(E или e), спецификации нет;
Внимание!! Константы с плавающей точкой должны включать десятичную
точку, либо экспоненту, либо и то, и другое. Если они будут записаны без них,
то получится целое значение.
const double Dx1 = 25.4;
const double Dx2 = 2.5E-2;
const double Dx3 = 25.;

13.

Литералы для вещественных типов:
float
Если к литералу типа double добавить в конце
спецификацию f, тип литерала сменится на float.
Разрешенный алфавит : знак (+ или -) , цифры ( 0, 1, 2,
3, 4, 5, 6, 7 ,8, 9) , разделитель для целой и
дробной части – точка ( . ) , при использовании записи с
плавающей запятой – разделитель экспоненты числа (E или
e), спецификация - F(f);
const float Fx1 = 25.4f;
const float Fx2 = 2.5E-2f;

14.

Литералы для вещественных типов:
double double
Существует тип с двойной точностью double double.
Разрешенный алфавит : знак (+ или -) , цифры ( 0, 1,
2, 3, 4, 5, 6, 7 ,8, 9) , разделитель для целой и
дробной части – точка ( . ) , при использовании записи с
плавающей запятой – разделитель экспоненты числа (E
или e), спецификация - L(l);
const double double DDx1 = 25.4L;
const double double DDx2 = 2.5E-2l;

15.

Вопрос 8
Базовые операции языка С

16.

Под операцией в языке С понимают
какое-либо действие над данными.
Каждая операция однозначно характеризуется знаком
операции и количеством операндов.
Знак операции – это символ или служебное слово,
которые приводят к выполнению того или иного действия.
Примером знака операции могут служить +, *, =,
sizeof() и т.д.
Операнд – это данные, участвующие в операции.
Операнды, над которыми выполняется операции, могут
быть константами, переменными или вычисляемыми
выражениями.

17.

Важно!!!
Операция не является аналогом оператора.
Оператор – это законченная команда компьютера на
языке программирования для получения
однозначного результата.
Операция является частью оператора, а не наоборот.

18.

Последовательность правил
преобразования операндов в выражении
(операции)
Если в одном выражении встречаются данные разных типов, то
преобразование идет последовательно от «коротких» к более «длинным».
целые типы преобразуются в типы с плавающей точкой, если в
выражении встречаются и те и другие типы;
типы char и short преобразуются в int, а float в double;
если один из операндов имеет тип double, то другой преобразуется
в double, и результат имеет тип double;
если один из операндов имеет тип long, то другой преобразуется в
long, и результат имеет тип long;
все переменные типа float в выражениях преобразуются в
double;
в языке C вся плавающая арифметика выполняется с двойной
точностью.
Длинные целые преобразуются в более короткие целые и в
переменные типа char посредством отбрасывания лишних бит
высокого порядка.

19.

Операции можно группировать , по разным
признакам:
1.
2.
по области применения;
по количеству операндов.
Правильное (выполняемое) объединение
операндов и знаков операций называют
выражением.

20.

Группировка операций по области применения
Операции бывают:
математические – используются для математических вычислений;
логические – используются для построения сложных условий;
отношений (сравнения) – используются для сравнения данных (те же
условия);
побитовые – выполняющие преобразования данных по битам;
доступа – позволяющие получить данные из сложных типов данных;
некоторые другие – сюда можно отнести операции приведения к
типу, выделение и очистку памяти, определения размера данных и т.д.

21.

Группировка операций по количеству
операндов
Различают операции:
1. унарные – работают с одним операндом (-f,a++) ;
2. бинарные – имеют два операнда
( 2*b, cin>>b);
3. тернарный – использует три оператора (f<a?2*a:-f);

22.

Базовые математические операции
+ сложение: операция сложения приводит к сложению
двух значений, размещенных слева и справ от знака
сложения.
- вычитание: операция вычитания приводит к
вычитанию числа, следующего за знаком минус, из числа,
предшествующего этому знаку.
* умножение: вычисляет произведение двух операндов.
/ деление: величина, расположенная слева от знака
деления /, делится на значение, указанное справа от этого
знака.
% получение остатка от деления нацело (деление по
модулю).

23.

Базовые математические операции
Бинарными арифметическими операциями являются +, -,
*, / и операция деления по модулю %.
Имеется унарные операции -, и +. Унарный + не изменяет
значение своего операнда.
Унарный минус меняет знак своего единственного операнда
на противоположный. Пример применения: -2.0

24.

К математическим операциям относят и две необычные
операции для увеличения и уменьшения значений
переменных. Операция увеличения ++ (инкремент)
добавляет 1 к своему операнду, а операция уменьшения - (декремент) вычитает 1. Это унарные операции.
Необычный аспект заключается в том, что ++ и -- можно
использовать либо как префиксные операции (перед
переменной ++n;), либо как постфиксные (после
переменной: n++;). Эффект в обоих случаях состоит в
увеличении n. Но выражение ++n увеличивает переменную
n до использования ее значения, в то время как n++
увеличивает переменную n после того, как ее значение
было использовано.

25.

Приоритет выполнения операция в
выражениях
Очень часто операции с операндами группируются в выражения. Операции в
выражении выполняются в порядке приоритета, причем некоторые операции
выполняются справа налево, а некоторые наоборот.
Приоритет представляет собой основное правило определения порядка вычисления
выражений.
Операции + и - имеют одинаковое старшинство, которое младше одинакового
уровня старшинства операций *, / и %, которые в свою очередь младше унарного
минуса. Арифметические операции группируются слева направо →.
Приоритет операции можно повысить если применить () – они имеет самый
высокий приоритет. Операция = имеет самый низкий приоритет (выполняется
последней) и выполняется справа налево ←.
Например, в нижеприведенных выражениях цифрами показана последовательность
выполнения операций
a * b

c / d
* f
+ g
+ h
1
4
2
3
5
6
При этом скобки меняют последовательность выполнения операций:
a * b

( c / (d * f )
+ g ) + h
4
5
2
1
3
6

26.

Порядок выполнения операций в C++
Операции
Наименование
::
Контекста
Первичные
Ассоциативно
сть
Левая
Левая
Унарные
Правая
Мультипликативные
Аддитивные
Сдвиг
Левая
Левая
Левая
Отношение
Левая
Побитовое и
Побитовое
исключающее или
Побитовое
включающее или
Логическое и
Логическое или
Условная
Простое и составное
присваивание
Перечисление
Левая
( )
~
-- sizeof
[ ]
!
*
&
++
приведение типа
*
<
<=
-> .
/
%
+
-
<<
>>
>=
>
!=
==
&
^
|
&&
||
?: (условная операция)
-=
=
&=
*=
^=
/=
|=
,
%=
<<=
+=
>>=
Левая
Левая
Левая
Левая
Правая
Правая
Левая

27.

Вопрос 9
Линейные операторы

28.

Определение
Оператором в языке С называют наименьшую
автономную часть языка С, команду или инструкцию,
которая однозначно приводит к устойчивому
результату. Его можно рассматривать как базовый
элемент того, что должна делать программа.
Каждый оператор языка С заканчивается точкой с
запятой ;.
Программа обычно представляет собой
последовательность операторов.
Операторы, выполняемые последовательно друг за
другом, называются линейными.

29.

Оператор объявления переменных
тип_данных список_имен_переменных;
double d;
float f;
int I, j, n;
Обычно, любая функция начинается с области описания
локальных переменных этой функции. На самом деле описывать
переменные (определять их) можно в любом месте программы,
но в этом случае необходимо учитывать такое понятие как
область видимости переменных: переменная, описанная
внутри оператора или блока операторов (набор операторов,
заключённых в фигурные скобки {} ), может быть использована
только внутри этого блока. Вне его, компилятор такую
переменную не увидит, это необходимо учитывать.
Локальная переменная – это переменная объявленная внутри
тела функции.

30.

Операторы вывода:
имя_потока >>
выводимое_значение;
Оператор вывода: символ операции - <<, два операнда:
левый имя потока, куда помещаются значения,
правый - значения для вывода.
cout<<"Hello!\n";
cout<<"d=“<<d<< ", f= "<<2.*d+5.3<<"\n";
!! Важно!! Если на вывод подается несколько отдельных
значений, то они разделяются знаком операции вывода <<.

31.

Оператор ввода:
имя_потока << имя_переменной;
Оператор ввода : символ операции ->>, два операнда:
левый - имя потока, откуда считываются значения,
правый , переменная в которую помещаются
введенные значения.
cin>>d>>f>>i;
!!Важно!! Если требуется считать несколько значений, то
переменные для них пишутся через знак операции, как
разделитель. Справа от оператора >> может стоять
только имя переменной. Никаких выражений, констант
или функций использовать в операторе << нельзя!

32.

Оператор присваивания
переменная = выражение;
Знак операции - =, два операнда:
левый – всегда!! имя переменной, куда
помещается значение;
правый – значение, может быть переменной,
константой, литералом, вызовом функции или
вычисляемым выражением.
x=y;
x=-8.;
x=2*y/(3*y);
X=pow(y,2. );

33.

Разновидности оператора присваивания
В языке С существует разновидности оператора
присваивания, используемые в случаях когда необходимо
изменить значение той же переменной куда заносится
результат изменений.
Следующие операторы эквивалентны по результату
работы. Они различаются лишь формой записи.
a=a+5;
a+=5;
a=a-5;
a-=5;
a=a*5;
a*=5;
a=a/5;
a/=5;
a=a%5;
a%=5;
a=a+1;
a++, ++a

34.

Вопрос 10
стандартные функции языка С

35.

Функции
Функция — это самостоятельная единица программы, которая
спроектирована для реализации конкретной подзадачи.
Функция является подпрограммой, которая может содержаться в
основной программе, а может быть создана отдельно (в библиотеке).
Каждая функция выполняет в программе определенные действия.
Различают системные (в составе систем программирования) и
собственные функции..
Системные функции хранятся в стандартных библиотеках, и пользователю
не нужно вдаваться в подробности их реализации. Достаточно знать
лишь их сигнатуру. Очень часто их называют – стандартные.
Собственные функции — это функции, написанные пользователем для
решения конкретной подзадачи, и соответственно их еще называют
пользовательскими.

36.

Сигнатура функции
(объявление функции):
тип_возврата имя_функции (список
формальных параметров);
Сигнатура функции определяет правила использования
функции. Обычно сигнатура представляет собой объявление
функции, включающее имя функции, перечень формальных
параметров с их типами и тип возвращаемого значения.

37.

Семантика функции
(описание функции):
тип_возврата имя_функции (список
формальных параметров) - заголовок
{
//тело функции
}
Семантика функции определяет способ реализации
функции. Обычно представляет собой описание функции в
виде запрограммированного в языке программирования
алгоритма, решающего поставленную перед функцией
задачу. Представляет из себя заголовок с телом функции.

38.

Что необходимо знать при использовании
стандартных функций языка С
1. имя заголовочного файла, в котором содержится
объявление нужной функции.
2. имя функции и ее характеристики- какой тип
возвращает функция, сколько у нее параметров и
какого они типа.

39.

Вызов функции :
Вызов функции это оператор, который запускает алгоритм
функции на выполнение.
Вызов функции может быть частью вычисляемого выражения,
стоять справа от оператора присваивания или операторы
вывода в том случае, если функция имеет возвращаемое
значение.
Если функция не имеет возвращаемого значения, то вызов
функции становится отдельным оператором и имеет вид –
имя_функции(список фактических параметров);

40.

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

41.

Вопрос 11
Математические функции и константы
заголовочного файла math.h

42.

Математические функции
Функция
double sin( double X);
double cos(double X);
double tan( double X);
double asin( double X);
double cosh( double X);
double atan(double X);
double exp( double X);
double log( double X);
double log10( double X);
double pow( double X, double Y);
double sqrt( double X);
double fabs(double X);
double abs( double X);
int abs(int X);
double fmod( double X, double Y);
double ceil(double X);
double floor(double X);
Назначение функции
синус x
косинус x
тангенс x
арксинус x
косеканс x
арктангенс x
еx
ln(x), x>0
lg(x), x>0
xy
квадратный корень от х
модуль |x|
остаток от / для типов double
округление в меньшую сторону
округление в большую сторону

43.

Особенности использования
тригонометрических функций
Важно!! Все тригонометрические функции по умолчанию
используют радианы, а не градусы. При желании
использовать градусы необходимо вспомнить формулу
преобразования.
И в языке С++ НЕТ функции логарифма по свободному
основанию – в этом случае необходимо узнать формулу
вычисления такого логарифма при помощи натурального или
десятичного .

44.

Математические константы
При желании использовать математические
константы, объявленные с VS необходимо в код
программы добавить строку:
#define _USE_MATH_DEFINES
перед подключением заголовочного файла math.h.

45.

Математические константы
Название
M_E
Значение
2.71828182845904523536
Описание
e
M_LOG2E
1.44269504088896340736
log2(e)
M_LOG10E
0.434294481903251827651
log10(e)
M_LN2
0.693147180559945309417
ln(2)
M_LN10
2.30258509299404568402
ln(10)
M_PI
3.14159265358979323846
M_PI_2
1.57079632679489661923
/2
M_PI_4
0.785398163397448309616
/4
M_1_PI
0.318309886183790671538
1/
M_2_PI
0.636619772367581343076
2/
M_2_SQRTPI
1.12837916709551257390
2/sqrt( )
M_SQRT2
1.41421356237309504880
sqrt(2)
M_SQRT1_2
0.707106781186547524401
1/sqrt(2)

46.

Попробуйте записать на языке С,
следующие формулы
ln x 1 x
1 y
2
2 cos x 6
,
1 2 sin y
2
x y x 2 4
e
x 2
1 x 4
2
,
2
,
и
x 1 3 y
2
3
x
y
1
2
3
.

47.

Вопрос 12
Условия

48.

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

49.

Чаще всего условия формируются про помощи операций сравнения.
Существует шесть фундаментальных операций для сравнения двух
доступных значений:
Операция
Отношение
<
Первый операнд меньше, чем второй операнд
>
Первый операнд больше, чем второй операнд
<=
Первый операнд меньше или равен второму
операнду
>=
Первый операнд больше или равен второму
операнду
= =
Первый операнд равен второму операнду
! =
Первый операнд не равен второму операнду

50.

Каждая из этих операций сравнивает значения двух
своих операндов и возвращает одно из двух
возможных значений типа bool: true – если
сравнение истинно, и false – если нет.

51.

Примеры условий
Если:
char first=‘A’, last=‘Z ’;
int i=10, j=5;
Если:
int i = -10, j = 20;
double x = 1.5,
у = 0.25E-10;
То:
То:
first == 65
first<last
‘E’<=first
first!=last
i>j
i!=j
j>-8
i>=j+15
-1<у
j<=(10i)
2.0*x>= (3+у)

52.

необходимо помнить:
желательно сравнивать операнды одного типа
все ненулевые значения приводятся к true, а нулевые –
к false.
Приоритеты операций отношения и логических операций
от высшего к низшему - на одном уровне располагаются
одноранговые операции, в этом случае выполнение
происходит по порядку слева на право, если нет , то ( ) :
!
>
>=
==
!=
&&
||
<
<=

53.

Логические операции
Простое и четкое решение для создания сложных условий
обеспечивают логические операции. Применяя логические
операции, можно комбинировать серии сравнений в одно
логическое выражение так, что все сведется в конечном итоге к
выбору из двух альтернатив (true или false).
Этих операторов всего три: && (и), || (или) и !(не). Логические
операторы нельзя путать с похожими побитовыми операциями
&, | и ^.

54.

Таблица истинности для
логических операций
Первый
операнд А
Второй
операнд В
A && B
И
A || B
или
!A
не
true
true
true
true
false
true
false
false
true
false
true
false
true
false
false
false
false
true

55.

Вопрос 13
Операция выбора и оператор ветвления

56.

Условная операция
Для реализации выбора в языке С предусмотрена тернарная
операция – это условная операция ? .
Она имеет следующее синтаксическое представление:
<operand_1 = условие > ? <operand_2> :
<operand_3>;
Типом результата является тип операнда_1 после
преобразования.

57.

Пример
Задача вида
может быть записана следующим образом:
y=x<0 ? 2*x : x/2;
Для наглядности можно расставить скобки
y=(x<0) ? (2*x) : (x/2);
**
**Операнд 1, условие, операнд 2, операнд 3

58.

Базовый оператор ветвления
Базовый оператор if позволяет
программировать выполнение
единственного оператора или блока
операторов, заключенных в
фигурные скобки, если данное
условное выражение оценено как
истинное, или же пропустить
оператор или блок операторов, если
условие оценено как ложное.
Конструкция базового оператора if
имеет вид:
if(условие)
оператор;
Его еще называют оператором
одиночного выбора

59.

Расширенный оператор ветвления
Конструкция расширенного
оператора if-else имеет вид:
if(условие)
оператор1;
else
оператор2;
Если требуется выполнить
несколько операторов внутри
любой ветви оператора то из них
формируется блок при помощи
{ …}.

60.

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

61.

Вопрос 14
оператор множественного выбора

62.

Существует оператор множественного выбора
switch
Его форма записи имеет вид
switch (переменная или выражение)
{
case константное выражение1:
{ группа операторов; break; }
case константное выражение2:
{ группа операторов; break; }
и т.д. до нужного количества значений
default:
{ группа операторов; }
}

63.

Работа оператора switch
1. Анализируется выражение или переменная. Важно
помнить что этот оператор может работать только с
целочисленными данными .
2. Осуществляется переход к той ветви программы, для
которой значение переменной или выражения
совпадает с указанным константным выражением.
3. Выполняется оператор или группа операторов пока не
встретится break или }.
4. Если значение переменной или выражения не совпадает
ни с одним константным выражением, то передается
управление ветви программы содержащей
зарезервированное слово default. После чего
выполняется оператор или группа операторов данной
ветви.

64.

Пример
#include <iostream>
using namespace std;
int main(void)
{
Setlocale(0,””);
char letter =0;
cout <<endl<<“Введите английскую букву: ";
cin >>letter;
switch (letter* (letter >= 'a' && letter <= 'z'))
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u': cout <<endl <<“Это гласная.\n"; break;
case 0 : cout <<endl << “Это не маленькая английская буква\n."; break;
default: cout <<endl <<“Это согласная.\n";
}
return 0;
}

65.

(letter* (letter >= 'a' &&
letter <= 'z'))
Самое интересное здесь!!!
Попробуйте объяснить почему это условие приводит
к нужному нам результату.

66.

Спасибо за внимание.
English     Русский Rules