c++ Базовый. Занятие 02

37
Модуль 1 : Базовые понятия языка программирования С++ Темы лекции : Форматированный ввод/вывод. Основные операции языка С++. Операторы языка С++. Практическое задание : Операторы языка С++. Тренер: Игорь Шкулипа, к.т.н. C++ Базовый. Занятие 2

Upload: igor-shkulipa

Post on 12-Apr-2017

83 views

Category:

Education


0 download

TRANSCRIPT

Модуль 1: Базовые понятия языка программирования С++

Темы лекции: Форматированный ввод/вывод. Основные операции языка С++. Операторы языка С++.

Практическое задание: Операторы языка С++.

Тренер: Игорь Шкулипа, к.т.н.

C++ Базовый. Занятие 2

http://www.slideshare.net/IgorShkulipa 2

Тема 1. Форматированный ввод/вывод

http://www.slideshare.net/IgorShkulipa 3

Функция стандартного вывода printf()

Функция printf() является функцией стандартного вывода. С помощью

этой функции можно вывести на экран монитора строку символов,число, значение переменной и т.д.

Функция printf() имеет прототип в файле stdio.h

int printf(char *управляющая строка, аргументы);

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

символов.

Управляющая строка содержит два типа информации: символы, которыенепосредственно выводятся на экран, и спецификаторы формата,определяющие, как выводить аргументы.

Функция printf() это функция форматированного вывода. Это

означает, что в параметрах функции необходимо указать форматданных, которые будут выводиться. Формат данных указываетсяспецификаторами формата. Спецификатор формата начинается ссимвола % за которым следует код формата.

Пример: printf(“Average mark=%d”, 5)

Результат: Average mark=5

http://www.slideshare.net/IgorShkulipa 4

Спецификаторы формата

Формат Значение

%с Символ

%d Целое десятичное число со знаком

%i Целое десятичное число со знаком

%e Десятичное число в виде x.xx e+xx

%E Десятичное число в виде x.xx E+xx

%f Десятичное число с плавающей точкой xx.xxxx

%F Десятичное число с плавающей точкой xx.xxxx

%gИспользует код %е или %f — тот из них, который короче (при использовании

%g используется е нижнего регистра)

%GИспользует код %Е или %f — тот из них, который короче (при использовании

%G используется Е верхнего регистра)

%o Восьмеричное число

%s Строка символов

%u Беззнаковое десятичное число

%x Шестнадцатеричное число (буквы нижнего регистра)

%X Шестнадцатеричное число (буквы верхнего регистра)

%% Символ %

%p Выводит на экран значение указателя

http://www.slideshare.net/IgorShkulipa 5

Спецификаторы формата

%ld печать long int

%hu печать short unsigned

%Lf печать long double

Кроме того, к командам формата могут быть примененымодификаторы l и h

http://www.slideshare.net/IgorShkulipa 6

Управляющие символы

Символ Значение

\b BackSpace

\f Новая страница, перевод страницы

\n Новая строка, перевод строки

\r Возврат каретки

\t Горизонтальная табуляция

\v Вертикальная табуляция

\" Двойная кавычка

\' Апостроф

\\ Обратная косая черта

\0 Нулевой символ, нулевой байт

\a Сигнал

\N Восьмеричная константа

\xN Шестнадцатеричная константа

\? Знак вопроса

http://www.slideshare.net/IgorShkulipa 7

Функция стандартного ввода scanf()

Функция scanf() - функция форматированного ввода. С её помощью

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

Функция scanf() имеет прототип в файле stdio.h

int scanf(char *управляющая строка, аргументы);

Функция возвращает число переменных которым было присвоенозначение.

Управляющая строка содержит три вида символов: спецификаторыформата, пробелы и другие символы.

Пример: scanf(“%d”, &iNumber)

Результат: iNumber=введенное число;

http://www.slideshare.net/IgorShkulipa 8

Спецификаторы формата

Формат Значение

%c Чтение символа

%d Чтение десятичного целого

%i Чтение десятичного целого

%e Чтение числа типа float

%h Чтение short int

%o Чтение восьмеричного числа

%s Чтение строки

%x Чтение шестнадцатеричного числа

%p Чтение указателя

%n Чтение указателя в увеличенном формате

http://www.slideshare.net/IgorShkulipa 9

Потоки ввода- вывода

В C++ ввод и вывод информации можно осуществлять через потоки cin

и cout. Они находятся в библиотеке с заголовочным файлом <iostream>.

Для их использования необходимо использовать пространство имен std

using namespace std;

Либо операцию доступа “::”

std::cin; std::cout;

Ввод информации осуществляется с помощью потока cin.

cin>>a1>>a2>>a3>>...>>an;

a1, a2,..., an– имена переменных, которые нужно ввести

<<– операция извлечения

Вывод информации осуществляется с помощью потока cout.

cout<<a1<<a2<<a3<<...<<an;

a1, a2,..., an– имена переменных или строковые константы, которые

нужно вывести на монитор.

>>– операция вставки.

http://www.slideshare.net/IgorShkulipa 10

Тема 2. Основные операции языка С++.

http://www.slideshare.net/IgorShkulipa 11

Операция присваивания

Простая форма операции присваивания.

=

Левый операнд операции присваивания является изменяемымвыражением.

В качестве правого операнда операции присваивания может выступатьлюбое выражение. Значение правого операнда присваивается левомуоперанду.

Правый операнд может состоять из множества выражений, соединенныхоперациями присваивания:

An=…=A3=A2=A1;

Операции присваивания группируются справа налево:

An=(An-1=…=(A3=(A2=A1))…);

В таком выражении все операнды, кроме самого правого, должны быть модифицируемыми выражениями.

http://www.slideshare.net/IgorShkulipa 12

Арифметические операции

+ Сложение

- Вычитание

* Умножение

/ Деление

% Остаток от деления

http://www.slideshare.net/IgorShkulipa 13

Арифметические операции с присваиванием

+= Операция присваивания сложения

-= Операция присваивания вычитания

*= Операция присваивания умножения

/= Операция присваивания деления

%= Операция присваивания остатка от деления

http://www.slideshare.net/IgorShkulipa 14

Логические операции

&& Логическое «И» (AND)

|| Логическое «ИЛИ» (OR)

! Логическое «НЕ» (NOT)

http://www.slideshare.net/IgorShkulipa 15

Поразрядные логические операции

& Логическое «И» (AND)

^ Исключающее «ИЛИ» (XOR)

| Логическое «ИЛИ» (OR)

~ Инвертирование битов (NOT)

Пример: x = 180; // 10110100

y = 166; // 10100110

x | y == 182

10110100

10100110

-----------

10110110

http://www.slideshare.net/IgorShkulipa 16

Поразрядные логические операции с присваиванием

&= Логическое «И» (AND)

^= Исключающее «ИЛИ» (XOR)

|= Логическое «ИЛИ» (OR)

http://www.slideshare.net/IgorShkulipa 17

Операции сдвига

>> Сдвиг вправо

<< Сдвиг влево

>>= Сдвиг вправо с присваиванием

<<= Сдвиг влево с присваиванием

Сдвиг влево – умножение на 2Сдвиг вправо – целочисленное деление на 2

http://www.slideshare.net/IgorShkulipa 18

Операции проверки равенства/неравенства

== Равенство

!= Неравенство

> Больше

< Меньше

>= Не меньше

<= Не больше

http://www.slideshare.net/IgorShkulipa 19

Инкремент, декремент

++ Инкремент - увеличение переменной на единицу

-- Декремент - уменьшение переменной на единицу

Различают два вида этих операций: операции преинкремента ипредекремента и операции постинкремента и посткинкремента.

x=5;

y = ++x; // y = 6, x = 6

y = --x; // y = 5, x = 5

y = x++; // y = 5, x = 6

y = x--; // y = 6, x = 5

При преникременте сначала происходит увеличение переменной наединицу, и потом это увеличенное значение участвует в выражении.

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

http://www.slideshare.net/IgorShkulipa 20

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

«? :»

Форма записи:

"условие" ? "выражение 1" : "выражение 2";

Если условие истинно, то выполняется выражение 1, иначевыполняется выражение 2.

Пример:

a > b ? cout << a : cout << b;

Если а > b, то выполняется cout << a, иначе выполняетсяcout<< b

http://www.slideshare.net/IgorShkulipa 21

Операция определения размера

sizeof Операция определения размера объекта или типа

Различают два варианта этой операции:

1. В первом случае операндом может быть любое l-выражение (лево-допустимое выражение, т.е. ссылка на константу, переменную илифункцию).

2. Во втором случае операндом является имя типа.

Результатом этой операции является константа типа size_t. Этот

производный целочисленный беззнаковый тип определяетсяконкретной реализацией.

sizeof ( type name );

sizeof ( object );

sizeof object;

http://www.slideshare.net/IgorShkulipa 22

Операции динамического распределения памяти

new - операция выделения памяти.

Позволяет выделить и сделать доступным участок вдинамической памяти. В качестве операнда используется имятипа и, возможно, выражение инициализатор. Операциявозвращает адрес размещённого в памяти объекта.

delete - операция освобождения памяти.

Освобождает ранее выделенную с помощью операции new

область динамической памяти. В качестве операндаиспользуется адрес освобождаемой области памяти.

http://www.slideshare.net/IgorShkulipa 23

Операция доступа

:: Операция доступа

Обеспечивает обращение к именованной глобальной области памяти,находящейся вне области видимости. Эта операция применяется приработе с одноимёнными объектами, расположенными во вложенныхобластях действия имён. Когда объект во внутренней областидействия имени скрывает одноименный объект, областью действиякоторого является файл.

int iNumber; // Глобальная переменная

int func()

{

int iNumber; // Локальная переменная

iNumber = 100; // Присвоение значения локальной

::iNumber = 125; // Присвоение значения глобальной

}

http://www.slideshare.net/IgorShkulipa 24

Операции обращения к компонентам класса и объекта

Операции выбора компонентов объекта :

Операции обращения к компонентам класса:

. Операция прямого выбора - точка

-> Операция косвенного выбора

.* Операция обращения к компонентам класса по имени объекта или ссылки на объект (левый операнд операции) и указателю на компонент класса (правый операнд операции)

->* Операция обращения к компонентам класса по указателю на объект (левый операнд операции) и указателю на компонент класса (правый операнд операции)

:: Операция доступа к компонентам класса по имени класса и имени компонента

http://www.slideshare.net/IgorShkulipa 25

Операция управления процессом вычисления значений

выражение1 , выражение2

Пара выражений, разделенных запятой, вычисляется слева направо,значение левого выражения теряется. Тип и значение результатаявляются типом и значением правого операнда. Эта операциягруппирует слева направо.

В контексте, где запятая имеет специальное значение, как например всписке фактических параметров функции и в списке инициализаторовоперация запятая, как она описана в этом разделе, может появлятьсятолько в скобках;

Например:

f (a,(t=3,t+2),c)

функция имеет три параметра, вторым из которых является значение 5

http://www.slideshare.net/IgorShkulipa 26

Другие операции

Операция явного преобразования типа

()

Операция индексации

[]

Операция typeid

Операция typeid обеспечивает динамическую идентификацию

типов. Возвращает id указанного типа.

http://www.slideshare.net/IgorShkulipa 27

Приоритет операцийОперация Приоритет

Индексация массива [] 16

Вызов функции func(); 16

Прямого выбора . 16

Косвенного выбора -> 16

Постинкремент/декремент ++ -- 16

Прединкремент/декремент ++ -- 15

sizeof 15

Инверсия битов ~ 15

Отрицание ! 15

Взятие адреса & 15

Ссылка * 15

Приведение типов (тип) 14

Умножение, деление * / % 13

Сложение, вычитание + - 12

Сдвиг << >> 11

Сравнение < > <= >= 10

Равенство, неравенство == != 9

Битовый «AND» & 8

Битовый «XOR» ^ 7

Битовый «OR» | 6

Логический «AND» && 5

Логический «OR» || 4

Условная операция ?: 3

Операции присваивания = += -= *= /= %=<<= >>= &=^= |= 2

Операция управления процессом вычисления значений , 1

http://www.slideshare.net/IgorShkulipa 28

Тема 3. Операторы языка С++

http://www.slideshare.net/IgorShkulipa 29

Пустой оператор

http://www.slideshare.net/IgorShkulipa 30

Составной оператор

{

оператор1;

оператор2;

...

операторN;

}

http://www.slideshare.net/IgorShkulipa 31

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

Если <условие>==true, то выполнится <оператор1> , в ином случае -<оператор2>.

Блок <else> может быть опущен. В таком случае при истинном условиивыполнится <оператор1> , а за ним – оператор, следующий после

условного.

Вместо <оператор1> и <оператор2> может использоваться любойоператор, включая составной оператор ({}), операторы циклов,операторы выбора и условный, вызова функции, пустой оператор (;)

и др.

if (условие)

оператор1;

else

оператор2;

http://www.slideshare.net/IgorShkulipa 32

Оператор выбора

Синтаксис выбирающего оператора допускает пустой составной оператори пустой оператор в качестве операторов, следующих за условиемвыбирающего оператора:

switch (i) ;

switch (j) {}

switch (r) i++;

Общий вид оператора выбора:

switch (условие)

{

case <константное выражение 1>: <оператор 1>;

case <константное выражение 2>: <оператор 2>;

...

case <константное выражение N>: <оператор N>;

default: <оператор N+1>;

}

http://www.slideshare.net/IgorShkulipa 33

Схема выполнения оператора switch

● вычисляется выражение в круглых скобках после оператора switch(предварительная стадия);

● это значение последовательно сравнивается со значениямиконстантных выражений за метками case (стадия определенияначальной точки выполнения оператора);

● если значения совпадают, управление передаётся соответствующемупомеченному оператору (стадия выполнения);

● если ни одно значение не совпадает и в теле оператора case естьоператор, помеченный меткой default, управление передаётся этомуоператору (стадия выполнения);

● если ни одно значение не совпадает, и в теле оператора case нетоператора, помеченного меткой default, управление передаётсяоператору, следующему за оператором switch (стадия выполнения).

На стадии выполнения все операторы от точки выполнения и до конца

тела оператора выполняются независимо от меток, если только какой-

нибудь из операторов не передаст управление за пределы оператора

выбора.

http://www.slideshare.net/IgorShkulipa 34

Оператор цикла «for»

for (<выражение1>; <выражение2>; <выражение3> )

<оператор>;

Цикл состоит из следующих этапов:

1. Выполняется оператор инициализации цикла (выражение1). Этот этап

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

2. Затем вычисляется значение выражения2. Это выражение называется

выражением условия продолжения цикла.

3. Если значение этого выражения истинно, выполняется оператор цикла.

4. После этого вычисляется значение выражения3.

5. Далее см. пункт 3

http://www.slideshare.net/IgorShkulipa 35

Циклы с условием

Цикл с предусловием

while (<условие>)

{

<оператор>

}

Цикл с постусловием

do

{

<оператор>

}

while (<условие>)

http://www.slideshare.net/IgorShkulipa 36

Операторы

Возвращение значения и выход из функции

return <выражение>;

Безусловный переход

goto <метка>;

Оператор прекращения. Прерывает выполнение текущего блока.

break;

Оператор продолжения. Прерывает выполнение текущей итерации цикла и переходит к следующей.

continue;

Оператор вызова функции

<имя функции>(аргументы)

Оператор «typedef»

typedef <тип> <имя>;

typedef (unsigned char) byte;

http://www.slideshare.net/IgorShkulipa 37

Лабораторная работа №2. Операторы языка С++.

Создать консольный калькулятор, который выполняетарифметические действия над числами в:

⚫ Десятичной системе исчисления

⚫ Двоичной системе исчисления

⚫ Шестнадцатеричной системе исчисления

Реализовать меню для управления вычислениями.