1. Модуль 1: Базовые понятия языка программирования С++
Темы лекции: Форматированный ввод/вывод. Основные операции
языка С++. Операторы языка С++.
Практическое задание: Операторы языка С++.
Тренер: Игорь Шкулипа, к.т.н.
C++ Базовый. Занятие 2
3. http://www.slideshare.net/IgorShkulipa 3
Функция стандартного вывода printf()
Функция printf() является функцией стандартного вывода. С помощью
этой функции можно вывести на экран монитора строку символов,
число, значение переменной и т.д.
Функция printf() имеет прототип в файле stdio.h
int printf(char *управляющая строка, аргументы);
В случае успеха функция printf() возвращает число выведенных
символов.
Управляющая строка содержит два типа информации: символы, которые
непосредственно выводятся на экран, и спецификаторы формата,
определяющие, как выводить аргументы.
Функция printf() это функция форматированного вывода. Это
означает, что в параметрах функции необходимо указать формат
данных, которые будут выводиться. Формат данных указывается
спецификаторами формата. Спецификатор формата начинается с
символа % за которым следует код формата.
Пример: printf(“Average mark=%d”, 5)
Результат: Average mark=5
4. 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 Выводит на экран значение указателя
6. http://www.slideshare.net/IgorShkulipa 6
Управляющие символы
Символ Значение
b BackSpace
f Новая страница, перевод страницы
n Новая строка, перевод строки
r Возврат каретки
t Горизонтальная табуляция
v Вертикальная табуляция
" Двойная кавычка
' Апостроф
Обратная косая черта
0 Нулевой символ, нулевой байт
a Сигнал
N Восьмеричная константа
xN Шестнадцатеричная константа
? Знак вопроса
7. http://www.slideshare.net/IgorShkulipa 7
Функция стандартного ввода scanf()
Функция scanf() - функция форматированного ввода. С её помощью
можно вводить данные со стандартного устройства ввода
(клавиатуры). Вводимыми данными могут быть целые числа, числа с
плавающей запятой, символы, строки и указатели.
Функция scanf() имеет прототип в файле stdio.h
int scanf(char *управляющая строка, аргументы);
Функция возвращает число переменных которым было присвоено
значение.
Управляющая строка содержит три вида символов: спецификаторы
формата, пробелы и другие символы.
Пример: scanf(“%d”, &iNumber)
Результат: iNumber=введенное число;
8. http://www.slideshare.net/IgorShkulipa 8
Спецификаторы формата
Формат Значение
%c Чтение символа
%d Чтение десятичного целого
%i Чтение десятичного целого
%e Чтение числа типа float
%h Чтение short int
%o Чтение восьмеричного числа
%s Чтение строки
%x Чтение шестнадцатеричного числа
%p Чтение указателя
%n Чтение указателя в увеличенном формате
9. 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– имена переменных или строковые константы, которые
нужно вывести на монитор.
>>– операция вставки.
11. http://www.slideshare.net/IgorShkulipa 11
Операция присваивания
Простая форма операции присваивания.
=
Левый операнд операции присваивания является изменяемым
выражением.
В качестве правого операнда операции присваивания может выступать
любое выражение. Значение правого операнда присваивается левому
операнду.
Правый операнд может состоять из множества выражений, соединенных
операциями присваивания:
An=…=A3=A2=A1;
Операции присваивания группируются справа налево:
An=(An-1=…=(A3=(A2=A1))…);
В таком выражении все операнды, кроме самого правого, должны быть
модифицируемыми выражениями.
13. http://www.slideshare.net/IgorShkulipa 13
Арифметические операции с присваиванием
+= Операция присваивания сложения
-= Операция присваивания вычитания
*= Операция присваивания умножения
/= Операция присваивания деления
%= Операция присваивания остатка от деления
19. 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
При преникременте сначала происходит увеличение переменной на
единицу, и потом это увеличенное значение участвует в выражении.
При постинкременте переменная сначала участвует в выражении, а только
затем она увеличивается.
20. http://www.slideshare.net/IgorShkulipa 20
Условная операция
«? :»
Форма записи:
"условие" ? "выражение 1" : "выражение 2";
Если условие истинно, то выполняется выражение 1, иначе
выполняется выражение 2.
Пример:
a > b ? cout << a : cout << b;
Если а > b, то выполняется cout << a, иначе выполняется
cout<< b
21. http://www.slideshare.net/IgorShkulipa 21
Операция определения размера
sizeof Операция определения размера объекта или типа
Различают два варианта этой операции:
1. В первом случае операндом может быть любое l-выражение (лево-
допустимое выражение, т.е. ссылка на константу, переменную или
функцию).
2. Во втором случае операндом является имя типа.
Результатом этой операции является константа типа size_t. Этот
производный целочисленный беззнаковый тип определяется
конкретной реализацией.
sizeof ( type name );
sizeof ( object );
sizeof object;
22. http://www.slideshare.net/IgorShkulipa 22
Операции динамического распределения памяти
new - операция выделения памяти.
Позволяет выделить и сделать доступным участок в
динамической памяти. В качестве операнда используется имя
типа и, возможно, выражение инициализатор. Операция
возвращает адрес размещённого в памяти объекта.
delete - операция освобождения памяти.
Освобождает ранее выделенную с помощью операции new
область динамической памяти. В качестве операнда
используется адрес освобождаемой области памяти.
23. http://www.slideshare.net/IgorShkulipa 23
Операция доступа
:: Операция доступа
Обеспечивает обращение к именованной глобальной области памяти,
находящейся вне области видимости. Эта операция применяется при
работе с одноимёнными объектами, расположенными во вложенных
областях действия имён. Когда объект во внутренней области
действия имени скрывает одноименный объект, областью действия
которого является файл.
int iNumber; // Глобальная переменная
int func()
{
int iNumber; // Локальная переменная
iNumber = 100; // Присвоение значения локальной
::iNumber = 125; // Присвоение значения глобальной
}
24. http://www.slideshare.net/IgorShkulipa 24
Операции обращения к компонентам класса и объекта
Операции выбора компонентов объекта :
Операции обращения к компонентам класса:
. Операция прямого выбора - точка
-> Операция косвенного выбора
.* Операция обращения к компонентам класса по имени объекта или
ссылки на объект (левый операнд операции) и указателю на
компонент класса (правый операнд операции)
->* Операция обращения к компонентам класса по указателю на объект
(левый операнд операции) и указателю на компонент класса
(правый операнд операции)
:: Операция доступа к компонентам класса по имени класса и имени
компонента
25. http://www.slideshare.net/IgorShkulipa 25
Операция управления процессом вычисления значений
выражение1 , выражение2
Пара выражений, разделенных запятой, вычисляется слева направо,
значение левого выражения теряется. Тип и значение результата
являются типом и значением правого операнда. Эта операция
группирует слева направо.
В контексте, где запятая имеет специальное значение, как например в
списке фактических параметров функции и в списке инициализаторов
операция запятая, как она описана в этом разделе, может появляться
только в скобках;
Например:
f (a,(t=3,t+2),c)
функция имеет три параметра, вторым из которых является значение 5
31. http://www.slideshare.net/IgorShkulipa 31
Условный оператор
Если <условие>==true, то выполнится <оператор1> , в ином случае -
<оператор2>.
Блок <else> может быть опущен. В таком случае при истинном условии
выполнится <оператор1> , а за ним – оператор, следующий после
условного.
Вместо <оператор1> и <оператор2> может использоваться любой
оператор, включая составной оператор ({}), операторы циклов,
операторы выбора и условный, вызова функции, пустой оператор (;)
и др.
if (условие)
оператор1;
else
оператор2;
32. 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>;
}
33. http://www.slideshare.net/IgorShkulipa 33
Схема выполнения оператора switch
● вычисляется выражение в круглых скобках после оператора switch
(предварительная стадия);
● это значение последовательно сравнивается со значениями
константных выражений за метками case (стадия определения
начальной точки выполнения оператора);
● если значения совпадают, управление передаётся соответствующему
помеченному оператору (стадия выполнения);
● если ни одно значение не совпадает и в теле оператора case есть
оператор, помеченный меткой default, управление передаётся этому
оператору (стадия выполнения);
● если ни одно значение не совпадает, и в теле оператора case нет
оператора, помеченного меткой default, управление передаётся
оператору, следующему за оператором switch (стадия выполнения).
На стадии выполнения все операторы от точки выполнения и до конца
тела оператора выполняются независимо от меток, если только какой-
нибудь из операторов не передаст управление за пределы оператора
выбора.
34. http://www.slideshare.net/IgorShkulipa 34
Оператор цикла «for»
for (<выражение1>; <выражение2>; <выражение3> )
<оператор>;
Цикл состоит из следующих этапов:
1. Выполняется оператор инициализации цикла (выражение1). Этот этап
можно назвать этапом инициализации цикла. Он выполняется один
раз, в самом начале работы цикла.
2. Затем вычисляется значение выражения2. Это выражение называется
выражением условия продолжения цикла.
3. Если значение этого выражения истинно, выполняется оператор
цикла.
4. После этого вычисляется значение выражения3.
5. Далее см. пункт 3
36. http://www.slideshare.net/IgorShkulipa 36
Операторы
Возвращение значения и выход из функции
return <выражение>;
Безусловный переход
goto <метка>;
Оператор прекращения. Прерывает выполнение текущего блока.
break;
Оператор продолжения. Прерывает выполнение текущей итерации
цикла и переходит к следующей.
continue;
Оператор вызова функции
<имя функции>(аргументы)
Оператор «typedef»
typedef <тип> <имя>;
typedef (unsigned char) byte;
37. http://www.slideshare.net/IgorShkulipa 37
Лабораторная работа №2. Операторы языка С++.
Создать консольный калькулятор, который выполняет
арифметические действия над числами в:
⚫ Десятичной системе исчисления
⚫ Двоичной системе исчисления
⚫ Шестнадцатеричной системе исчисления
Реализовать меню для управления вычислениями.