Базовые конструкции языка программирования С++
2.44M
Категория: ПрограммированиеПрограммирование

Базовые конструкции языка программирования С++

1. Базовые конструкции языка программирования С++

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

2.

Алфавит языка С++ состоит из:
прописных и строчных букв латинского алфавита,
арабских цифр и специальных символов.
Внимание!
В языке С/С++ строчные и прописные буквы имеют
различные коды, т.е. PI, Pi и pi – различные идентификаторы.

3.

Служебные слова. В С++ есть служебные (или ключевые) слова. Это
зарезервированные слова в языке С++ для специального использования.
Эти слова необходимо запомнить и ни в коем случае нельзя использовать в
качестве произвольных имен переменных и функций.
asm
double
new
switch
auto
else
operator
template
break
enum
private
this
case
extern
protected
throw
catch
float
public
try
char
for
register
typedef
class
friend
return
typeid
const
goto
short
union
continue
if
signed
unsigned
default
inline
sizeof
virtual
delete
int
static
void
do
long
struct
volatile
while

4.

Тип данных
Для объявления переменной, нам нужно обязательно указать ее тип. Это делается
для того, чтобы определить сколько нужно выделить памяти для конкретной
переменной. В таблице ниже приведены основные типы данных с размером и
диапазоном значений.
Переменные
Тип данных
Логический
bool
char
Символьные
unsigned char
unsigned int
int
unsigned long int
Целочисленные
long int
unsigned short int
short int
float
Вещественные long float
double
Размер,
бит(байт)
Диапазон значений
8(1 байт)
0...255
8 бит(1 байт)
-128...127
8 бит(1 байт)
0..255
32(4 байта)
0...4 294 967 295
32 (4 байта)
-2 147 483 648...2 147 483 647
32(4 байта)
0...4 294 967 295
32(4 байта)
-2 147 483 648...2 147 483 647
16(2 байта)
0...65 535
16(2 байта)
-32 768...32 767
32(4 байта)
-2 147 483 648.0...2 147 483 647.0
64(8 байт)
-9 223 372 036 854 775 808.0...9 223 372 036 854 775 807.0
64(8 байт)
-9 223 372 036 854 775 808.0...9 223 372 036 854 775 807.0

5.

bool
char
int
float
double

6.

Константы
Константа — это величина, которая при выполнении программы остаётся
неизменной. Для объявления константной переменной, нужно перед всей
стандартным объявлением поставить ключевой слово const.
Синтаксис объявления следующий:
const Тип_данных Имя_переменной = Значение_переменной;
Для константных переменных нужно значение переменной задавать при
объявлении. Константы нужны для того, чтобы обеспечить от случайное изменение
значений.
Например:
const float pi = 3.1415926;
pi = 0;// Так нельзя!
float pi2 = 3.1415926;
pi2 = 0;//Так можно
Особенности С++:
float p = 3.1415926;
cout << р;
3.1415926
int p = 3,1415926;
cout << р;
3

7.

В C++ существует два способа записи комментариев:
Две косые черты //— однострочный комментарий. Такие
комментарии комментируют всю строчку, не более и не менее.
Многострочный комментарий. Такой комментарий начинается с
символов /* и заканчивается символами */.
Комментирование: /* */
выделяем область
Ctrl+K
Ctrl+C
Раскомментирование:
выделяем область
Ctrl+K
Ctrl+U

8.

Некоторые управляющие последовательности и их описания
Управляющая
последовательность
Описание
\n
Новая строка. Позиционирование курсора к началу следующей строки.
\t
Символ горизонтальной табуляции. Перемещение курсора к следующей
позиции табуляции. В зависимости от библиотек одна позиция табуляции
равна 8 пробелов.
\r
\f
Возврат каретки. Позиционирование курсора к началу текущей строки;
запрет перехода к следующей строке.
Перевод страницы
\a
\b
Сигнал тревоги. Звук системного звонка.
Возврат на шаг
\v
Вертикальная табуляция
Горизонтальная табуляция
\\
Обратный слэш. Используется для печати символа обратного слэша.
\”
Двойные кавычки. Используют для печати символа двойных кавычек.
\t

9.

В языке С/С++ существуют операции инкремента (++) и
декремента (--), т.е. уменьшения или увеличения значения
переменной на 1. Операции могут быть префиксные (++i и --i)
и постфиксные (i++ и i--).
При использовании данной операции в выражении в
префиксной форме, сначала выполняется сама операция
(изменяется значение i), и только потом вычисляется
выражение.
В постфиксной форме – операция применяется после
вычисления выражения, например, для значений b = 7 и n = 1
будут получены следующие результаты:
1) c = b*++n; – порядок выполнения: n = n+1, c = b*n,
т.е. c = 14;
2) c = b*n++; – в этом случае: c = b*n, n = n+1,
т.е. c = 7 .

10.

Арифметические операции.
Операция делению по модулю (%) определяет остаток от деления.
Пример её применения: если нам необходимо поделить по модулю 9 на 4 (9 % 4),
результат будет равен 1 (это остаток – то, что на 4 уже не делится на цело). Еще
примеры: 20 % 8 = 4.
Важно:
деление по модулю применяется только к целочисленным переменным ;
нельзя делить по модулю на 0;

11.

Пример: Выделить цифры у двухзначного числа.
int a=25;
a1=a/10;
a2=a%10;
// 2
// 5

12.

Возведение в степень: pow(a,b)
#include <math.h>
(в Visual Studio 2019 не используется)

13.

Главная функция программы
Функция main() — это главная функция программы, присутствие этой функции в
программе обязательно. Практически весь основной код программы должен быть
описан в этой функции. Функцию нужно писать только малыми латинскими
буквами, после слова main обязательно должны присутствовать круглые скобки .
Основной код программы должен размещаться внутри фигурных скобок {}, которые
пишутся сразу после main(). Всё, что находится внутри фигурных скобок
называется «телом функции».
int main()
Если перед именем главной функции программы будет написано слово int, то это
означает, что функция, по завершению работы, должна вернуть целое число, то есть
целочисленный результат. Для возврата результата обязательно должно
присутствовать зарезервированное слово return, после которого нужно написать
переменную типа int или целое число.
void main()
Если перед именем главной функции программы будет написано слово void, то это
означает, что функция ничего возвращать не будет.
int main()
void main()
{
{
//тело функции
//тело функции
return 0;
}
}

14.

Директивы препроцессора
Перед компиляцией программы с помощью директив препроцессора
выполняется предварительная обработка текста программы.
Директивы начинаются с символа #; за которым следует наименование
операции препроцессора.
Чаще всего используются директивы include и define.
Директива #include используется для подключения к программе
заголовочных файлов с декларацией стандартных библиотечных функций,
например:
#include <stdio.h> – стандартные функции ввода-вывода;
Директива #define (определить) создает макроконстанту и ее действие
распространяется на весь файл, например:
#define PI
3.1415927
– в ходе препроцессорной обработки идентификатор PI везде заменяется
указанным значением 3,1415927.

15.

Стандартные библиотечные функции:
#include <iostream>
для ввода с консоли и вывода на консоль
#include <iomanip>
библиотека для использования манипуляторов
#include <math>
библиотека математических функций

16.

По умолчанию язык C++ не содержит встроенных средств
для ввода с консоли и вывода на консоль,
эти средства предоставляются библиотекой iostream.
В ней определены два типа:
istream и ostream.
istream представляет поток ввода, а ostream - поток вывода.
Для записи или вывода символов на консоль применяется объект cout, который
представляет тип ostream.
А для чтения с консоли используется объект cin
Для использования этих объектов в начало исходного файла необходимо
подключить библиотеку iostream
#include <iostream>

17.

Вывод на консоль
Для вывода на консоль применяется оператор <<. Этот оператор получает два
операнда. Левый операнд представляет объект типа ostream, в данном случае объект
cout. А правый операнд - значение, которое надо вывести на консоль.
#include <iostream>
using namespace std;
int main()
{
int age = 33;
double weight = 81.23;
cout << "Name: " << "Tom" << '\n';
cout << "Age: " << age << endl;
cout << "Weight: " << weight << endl;
system("pause");
return 0;
}
в Visual Studio 2019 можно system("pause") не прописывать

18.

Вывод на консоль
Для вывода на консоль применяется оператор <<. Этот оператор получает два
операнда. Левый операнд представляет объект типа ostream, в данном случае объект
cout. А правый операнд - значение, которое надо вывести на консоль.
#include <iostream>
using namespace std;
int main()
{
int age = 33;
double weight = 81.23;
cout << "Name: " << "Tom" << '\n';
cout << "Age: " << age << endl;
cout << "Weight: " << weight << endl;
cout << endl;
system("pause");
return 0;
}
Name: Tom
Age: 33
Weight: 81,23

19.

Вывод на консоль
Для вывода на консоль применяется оператор <<. Этот оператор получает два
операнда. Левый операнд представляет объект типа ostream, в данном случае объект
cout. А правый операнд - значение, которое надо вывести на консоль.
#include <iostream>
//библиотека ввода, вывода на консоль
using namespace std;
//полигон имен
int main()
{
int age = 33;
//переменная age целого типа
double weight = 81.23;
//переменная weight вещественного типа
cout << "Name: " << "Tom" << '\n';
cout << "Age: " << age << endl;
cout << "Weight: " << weight << endl;
cout << endl;
system("pause");
return 0;
}
// \n, endl – новая строка
ЗАДАНИЕ. откорректируйте код программы: Name: Tom
Age: 33

20.

Ввод с консоли
Для считывания с консоли данных применяется оператор ввода >>, который
принимает два операнда.
Левый операнд представляет объект типа istream (в данном случае объект cin), с
которого производится считывание, а правый операнд - объект, в который
считываются данные.
#include <iostream>
using namespace std;
int main()
{
int age;
double weight;
cout << "Input age: ";
cin >> age;
cout << "Input weight: ";
cin >> weight;
cout << "Your age: " << age << "\t your weight: " << weight << endl;
cout << endl;
system("pause");
return 0;
}

21.

ЗАДАНИЕ.
Для значений b = 7 и n = 1 получите следующие результаты:
1) c = b*++n;
порядок выполнения: n = n+1, c = b*n, т.е. c = 14;
2) c = b*n++;
в этом случае: c = b*n, n = n+1, т.е. c = 7 .
#include <iostream>
using namespace std;
int main()
{
int b;
int n;
cout << "Input b: ";
cin >> b;
cout << "Input n: ";
cin >> n;
int c = b*++n;
cout << “Otvet: " << c << endl;
cout << endl;
system("pause");
return 0;
}

22.

ЗАДАНИЕ.
Использование русского языка.
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int b;
int n;
cout << "Input b: ";
cin >> b;
cout << "Input n: ";
cin >> n;
int c = b*++n;
cout << "Ответ: " << c << endl;
cout << endl;
system("pause");
return 0;
}

23.

ЗАДАНИЕ.
Вычислить значение выражения:c=a/b
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int a,b;
cout << "Введите a: "<< '\n';
cin >> a;
cout << "Введите b: " << endl;
cin >> b;
double c;
c=a/b;
cout << "Ответ= " << c << endl;
cout << endl;
system("pause");
return 0;
}
Введите а
1
Введите b
2
Ответ=0

24.

Неявные преобразования типов
double m = 5.4, n = 2;
int а = m * n;
//а = 10
5.4 * 2 = 10.8
переменная c получит значение 10, хотя истинное значение должно быть
равно 10.8. Это значение действительно будет вычислено в результате
умножения а * b, но затем дробная часть будет отброшена, поскольку с — целая
переменная.
int m = 1, n = 2;
double a = m / n;
//a = 0.0
1 / 2 = 0.5
будет значение a = 0. Поскольку m и n — целые переменные, то деление m /
n сведется к целочисленному делению с отбрасыванием дробной части,
результат которого равен нулю.
int m = 1;
double n = 2;
double a = m / n;
даст правильный результат – a = 0.5.
//0.5
1 / 2 = 0.5

25.

В таблице подробно описаны флаги форматирования, а также показаны примеры использования флагов
Флаг
boolalpha
oct
dec
hex
showbase
uppercase
showpos
scientific
fixed
right
left
Назначение
Вывод логических величин в текстовом виде (true, false)
Пример
Результат
cout.setf(ios::boolalpha);
bool log_false = 0,
log_true = 1;
cout << log_false << endl
<< log_true << endl;
cout.setf(ios::oct, ios::basefield);
Ввод/вывод величин в восьмеричной системе счисления
int value = 17;
cout << value << endl;
Ввод/вывод величин в десятичной системе счисления (флаг cout.setf(ios::dec, ios::basefield);
int value = 17;
установлен по умолчанию)
cout << value << endl;
cout.setf(ios::hex, ios::basefield);
Ввод/вывод величин в шестнадцатеричной системе
int value = 17;
счисления
cout << value << endl;
int value = 17;
Выводить индикатор основания системы счисления (по
cout.setf(ios::showbase);
умолчанию не выводится)
cout.setf(ios::dec, ios::basefield);
cout << value << endl;
cout.setf(ios::oct, ios::basefield);
cout << value << endl;
cout.setf(ios::hex, ios::basefield);
cout << value << endl;
int value = 17;
В шестнадцатеричной системе счисления использовать
буквы верхнего регистра(по умолчанию установлены буквы cout.setf(ios::showbase);
cout.setf(ios::uppercase);
нижнего регистра)
cout.setf(ios::hex, ios::basefield);
cout << value << endl;
int value = 17;
Вывод знака плюс + для положительных чисел
cout.setf(ios::showpos);
cout << value << endl;
cout.setf(ios::scientific);
Вывод чисел с плавающей точкой в экспоненциальной
double value = 1024.165;
форме
cout << value << endl;
cout.setf(ios::fixed);
Вывод чисел с плавающей точкой в фиксированной
double value = 1024.165;
форме(по умолчанию)
cout << value << endl;
Выравнивание по правой границе (по умолчанию). Сначала cout << "|";
необходимо установить ширину поля (ширина поля должна cout.width(7);
cout.setf(ios::right);
быть заведомо большей чем, длина выводимой строки).
cout << "text" << endl;
false
true
Выравнивание по левой границе. Сначала необходимо
установить ширину поля(ширина поля должна быть
заведомо большей чем, длина выводимой строки).
text |
cout.width(7);
cout.setf(ios::left);
cout << "text";
cout << "|" << endl;
21
17
11
17
021
0x11
0X11
+17
1.024165e+03
1024.165000
| text

26.

Манипуляторы ввода/вывода показаны в таблице
endl
Манипулятор
Назначение
Переход на новую строку при выводе
Пример
cout << "using;" << endl << "int main()";
boolalpha
Вывод логических величин в текстовом виде (true, false)
noboolalpha
Вывод логических величин в числовом виде (true, false)
oct
Вывод величин в восьмеричной системе счисления
dec
Вывод величин в десятичной системе счисления (по умолчанию)
hex
Вывод величин в шестнадцатеричной системе счисления
showbase
Выводить индикатор основания системы счисления
noshowbase
Не выводить индикатор основания системы счисления (по умолчанию).
uppercase
В шестнадцатеричной системе счисления использовать буквы верхнего
регистра (по умолчанию установлены буквы нижнего регистра).
bool log_true = 1;
cout << boolalpha << log_true << endl;
bool log_false = 0;
cout << boolalpha << log_false << endl;
bool log_true = true;
cout << noboolalpha << log_true << endl;
bool log_false = false;
cout << noboolalpha << log_false << endl;
int value = 64;
cout << oct << value << endl;
int value = 64;
cout << dec << value << endl;
int value = 64;
cout << hex << value << endl;
cout << showbase << oct << value << endl;
cout << showbase << dec << value << endl;
cout << showbase << hex << value << endl;
int value = 64;
cout << noshowbase << oct << value << endl;
cout << noshowbase << dec << value << endl;
int value = 255;
cout << uppercase << hex << value << endl;
nouppercase
showpos
В шестнадцатеричной системе счисления использовать буквы нижнего
регистра (по умолчанию).
Вывод знака плюс + для положительных чисел
noshowpos
Не выводить знак плюс + для положительных чисел (по умолчанию).
scientific
Вывод чисел с плавающей точкой в экспоненциальной форме
fixed
Вывод чисел с плавающей точкой в фиксированной форме (по
умолчанию).
Установить ширину поля, где number – количество позиций, символов
(выравнивание по умолчанию по правой границе). Манипулятор с
параметром.
Выравнивание по правой границе (по умолчанию). Сначала необходимо
установить ширину поля(ширина поля должна быть заведомо большей чем,
длина выводимой строки).
Выравнивание по левой границе. Сначала необходимо установить ширину
поля (ширина поля должна быть заведомо большей чем, длина выводимой
строки).
Задаёт количество знаков после запятой, где count – количество знаков
после десятичной точки
Установить символ заполнитель. Если ширина поля больше, чем выводимая
величина, то свободные места поля будут наполняться символом symbol –
символ заполнитель
setw(int number)
right
left
setprecision (int count)
setfill(int symbol)
Результат
using;
int main()
true
false
1
0
100
64
40
0100
64
0x40
100
64
40
FF
int value = 255;
cout << nouppercase << hex << value << endl;
int value = 255;
cout << showpos<< value << endl;
int value = 255;
cout <<noshowpos<< value << endl;
double value = 1024.165;
cout << scientific << value << endl;
double value = 1024.165;
cout << fixed << value << endl;
cout << "|";
cout << setw(7) << "text" << endl;
ff
cout << "|";
cout << setw(7) << right << "text" << endl;
| text
cout << setw(7) << left << "text";
cout << "|" << endl;
text |
cout << fixed << setprecision(3) << (13.5 / 2) << endl;
6.750
cout << setfill('0') << setw(4) << 15 << ends << endl;
0015
+255
255
1.024165e+03
1024.165000
| text

27.

Манипуляторы ввода/вывода показаны в таблице
Манипулятор
right
left
scientific
Назначение
Пример
Выравнивание по правой границе (по
cout << "|";
умолчанию).
cout << setw(7) << right
Сначала необходимо установить ширину
поля(ширина поля должна быть заведомо << "text";
большей чем, длина выводимой строки).
Выравнивание по левой границе.
cout << setw(7) << left <<
Сначала необходимо установить ширину
"text";
поля (ширина поля должна быть заведомо
большей чем, длина выводимой строки). cout << "|";
Вывод чисел с плавающей точкой в
double a = 1024.165;
экспоненциальной форме
Результат
| text
text |
1.024165e+03
cout << scientific << a;
Вывод чисел с плавающей точкой в
double a = 1024.165;
1024.165000
fixed
фиксированной форме (по умолчанию).
cout << fixed << a;
количество знаков после запятой, cout << fixed <<
0.3333
setprecision Задаёт
где count – количество знаков после
setprecision(4) << (1 / 3);
десятичной точки
(int count)

28.

ЗАДАНИЕ.
Вычислить значение выражения:c=a/b
#include <iostream>;
#include <iomanip>
//библиотека для использования манипуляторов
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
double a,b;
cout << "Введите a: "<< '\n';
cin >> a;
cout << "Введите b: " << endl;
cin >> b;
double c;
c=a/b;
cout << "Ответ = " << fixed << setprecision(3) << c << endl;
cout << endl;
system("pause");
return 0;
}
fixed Вывод чисел с плавающей точкой в фиксированной форме
setprecision(int count) Задаёт количество знаков после запятой, где count –
количество знаков после десятичной точки

29.

30.

31.

32.

33.

34.

35.

Расположение ошибки:
1) По номеру строки
2) Двойной щелчок по ошибке

36.

Почему ошибка не исправилась?
doublе
е – на русском языке

37.

Деление на ноль

38.

F11 – шаг с заходом (выполнять в программе, но не на черном экране ввода)
Alt+Tab – переход между окнами
Alt+F11 – завершить отладку

39.

F11 – шаг с заходом

40.

F11 – шаг с заходом

41.

F11 – шаг с заходом

42.

F11 – шаг с заходом

43.

F11 – шаг с заходом

44.

F11 – шаг с заходом
Можно вписать имя той переменной (переменных),
значение(ия) которой(ых) вам необходимо протестировать

45.

Вычислите значения выражений.
1)
а=
2)
2
y
а=b + x
3)
d
c
4
6
3
-3
b
4
6
x
2
3
d
8
3
y
3
-2
c
6
-2
a
12
4

46.

Найти сумму цифр двухзначного числа.
Число
25
83
Пример:
int a=25;
a1=a/10;
a2=a%10;
Cумма цифр
7
11
// 2
// 5

47.

Вычислите значения выражений.
1. Дана сторона квадрата a. Найти его периметр P = 4 * a.
2. Дана сторона квадрата a. Найти его площадь S = СТЕПЕНЬ(a;2).
3. Дан диаметр окружности d. Найти еѐ длину L = π * d. В качестве значения π
использовать 3.14.
4. Дана длина ребра куба a. Найти объем куба V = СТЕПЕНЬ(а;3).
5. Дана длина ребра куба a. Найти площадь его поверхности S = 6 *
СТЕПЕНЬ(а;3).
6. Даны стороны прямоугольника a и b. Найти его площадь S = a * b.
7. Даны стороны прямоугольника a и b. Найти его периметр P = 2 * (a + b).
8. Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его
объем V = a * b * c.
9. Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти
площадь поверхности S = 2 * (a * b + b * c + a * c).
10. Найти длину окружности L заданного радиуса R: L = 2 * π * R.
11. Найти площадь круга S заданного радиуса R: S = π * СТЕПЕНЬ(R;2).
12. Найти площадь круга S заданного диаметра: S = π * (СТЕПЕНЬ(D;2) / 4).

48.

Комбинированные (или составные) операторы. Помимо
выполнения своей арифметической роли, они одновременно
выполняют роль присваивания значения переменным.

49.

Результат:
Пример.
#include <iostream>;
#include <iomanip>;
#include <math.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int number1 = 10;
int number2 = 4;
cout << "number1 = " << number1 << endl;
cout << "number2 = " << number2 << endl;
number1 += number2;
// эквивалентно записи number1 = number1 + number2
cout << "Результат от += : " << "number1 = " << number1 << endl;
number1 -= number2;
// number1 = number1 - number2 и т.д.
cout << "Результат от -= : " << "number1 = " << number1 << endl;
number1 *= number2;
cout << "Результат от *= : " << "number1 = " << number1 << endl;
number1 /= number2;
cout << "Результат от /= : " << "number1 = " << number1 << endl;
number1 %= number2;
cout << "Результат от %= : " << "number1 = " << number1 << endl;
cout << endl;
system("pause");
return 0;
}

50.

ЗАДАНИЕ.
Вычислить значение выражения:c=a/b
#include <iostream>
using namespace std;
int main()
{
double a,b;
cout << "Input a: ";
cin >> a;
cout << "Input b: ";
cin >> b;
double c;
if (b==0) {cout << “error” ;}
else {
c=a/b;
cout << "c = " << c << endl;
}
cout << endl;
system("pause");
return 0;
}

51.

ЗАДАНИЕ.
Вычислить значение выражения:c=a/b
#include <iostream>
#include <iomanip>
//библиотека для использования манипуляторов
using namespace std;
int main()
{
double a,b;
cout << "Input a: ";
cin >> a;
cout << "Input b: ";
cin >> b;
double c;
if (b==0) {cout << “error” ;}
else {
c=a/b;
cout << "c = " << fixed << setprecision(3) << c << endl;
}
cout << endl;
system("pause");
return 0;
}
English     Русский Правила