Составление программы линейной структуры

Содержание

Слайд 2

Язык С++ Компилируемый статически типизированный язык программирования общего назначения Совместим с

Язык С++

Компилируемый статически типизированный язык программирования общего назначения
Совместим с языком C
Но

не C99
Поддержка разных парадигм
Процедурное, объектно-ориентированное, обобщенное, функциональное, метапрограммирование
Слайд 3

Программа Hello, World! /* Программа, выводящая строку "Hello, world!" в стандартный

Программа Hello, World!

/*
Программа, выводящая строку "Hello, world!"
в стандартный поток вывода

*/ комментарий
#include подключает стандартную библиотеку языка С++. Это подключение необходимо для работы функции system.
 Содержимое третьей строки — using namespace std; указывает на то, что мы используем по умолчанию пространство имен с названием «std». 
void main() определение функции main()
что находится внутри фигурных скобок функции int main() {} будет автоматически выполняться после запуска программы.
{
// Вывод в стандартный поток вывода
std::cout << "Hello, world!" << std::endl; говорит программе выводить сообщение с текстом «Hello, world» на экран
Оператор cout предназначен для вывода текста на экран командной строки. После него ставятся две угловые кавычки (<<). Далее идет текст, который должен выводиться. Он помещается в двойные кавычки. Оператор endl переводит строку на уровень ниже.
}
Слайд 4

Константы

Константы

Слайд 5

Константы Числовые константы Целые числа и числа с плавающей запятой Логические

Константы

Числовые константы
Целые числа и числа с плавающей запятой
Логические константы
true и false
Символьные

константы
Строковые константы
Документация
Слайд 6

Числовые константы Десятичные 12345, -34021 999999L, 99983UL Шестнадцатеричные 0xFeedBeef, 0x328aadb Восьмеричные

Числовые константы

Десятичные
12345, -34021
999999L, 99983UL
Шестнадцатеричные
0xFeedBeef, 0x328aadb
Восьмеричные
003, 0723
Вещественные
1.35, 8.45f
2e+10f, -3.835e-6L

Слайд 7

Логические константы Логическая константа true служит для обозначения логического значения «Истина»,

Логические константы

Логическая константа true служит для обозначения логического значения «Истина», а

константа false – значения «Ложь»
Слайд 8

Пример – определение чётности числа #include int main() { int n;

Пример – определение чётности числа

#include
int main()
{
int n;
std::cout <<

"Enter a number:";
std::cin >> n;
bool isEven = false;
if (n % 2 == 0)
isEven = true;
if (isEven)
std::cout << n << " is an even number\n";
else
std::cout << n << " is an odd number\n";
return 0;
}
Слайд 9

Символьные константы Записывается в виде символа, обрамленного одиночными кавычками 'A', '1'

Символьные константы

Записывается в виде символа, обрамленного одиночными кавычками
'A', '1'
Значение символьной константы

– числовой код символа из набора символов на данной машине
Некоторые символы записываются в виде escape-последовательностей, начинающихся с символа \
'\'', '\0', ‘\n', '\177', '\xff'
Слайд 10

Строковые константы (строковые литералы) Нуль или более символов, заключенных в двойные

Строковые константы (строковые литералы)

Нуль или более символов, заключенных в двойные кавычки
"Hello,

world\n"
""
"Hello " "world\n" эквивалентно "Hello world\n”
Во внутреннем представлении строковая константа – массив символов, завершающийся символом с кодом 0 (‘\0’)
Есть возможность объявления «сырых строковых литералов» (raw string literals), не требующих использования escape-последовательностей
Слайд 11

#include #include int main() { std::string x = "Apple" "\n" "Dog"

#include
#include
int main()
{
std::string x = "Apple" "\n" "Dog" ","

"Banana\n";
// Что выведет программа?
std::cout << x << "---";
return 0;
}

Что выведет программа?

Apple
Dog,Banana
---

Слайд 12

Типы данных int — целочисленный тип данных. float — тип данных

Типы данных

int — целочисленный тип данных.
float — тип данных с плавающей запятой.
double — тип

данных с плавающей запятой двойной точности.
char — символьный тип данных.
bool — логический тип данных.
Слайд 13

Типы данных языка C++ Целые числа различных размеров со знаком или

Типы данных языка C++

Целые числа различных размеров со знаком или без
int,

short, char
Числа с плавающей запятой различной размерности
float, double, long double
Логический тип
bool
Перечисляемые типы (enum)
Структуры (struct)
Объединения (union)
Массивы
Слайд 14

Базовые типы данных Типы данных целых чисел char int модификаторы short/long

Базовые типы данных

Типы данных целых чисел
char
int
модификаторы
short/long
unsigned/signed
Логический тип
bool
Типы данных вещественных чисел
float
double

Слайд 15

Объявления переменных Переменные объявляются раньше их использования int lower, upper, step;

Объявления переменных

Переменные объявляются раньше их использования
int lower, upper, step; char c, line[1000]; bool

success;
При объявлении переменные могут быть инициализированы
char esc = '\\'; int i = 0; int limit = MAXLINE + 1; float eps = 1.0e-5f; bool success = true;
Модификатор const указывает, что значение переменной не будет далее изменяться
const double e = 2.71828182845905; const char msg[] = "предупреждение: "; int strlen(const char str[]);
Слайд 16

Объявление локальных переменных и констант void main() { // Объявление переменной

Объявление локальных переменных и констант

void main()
{
// Объявление переменной carSpeed типа

double
double carSpeed;
carSpeed = 45.8;
// Объявление переменной можно совместить с ее инициализацией
int userAge = 20;
float x = 12.6f;
// Объявление константной переменной - переменной,
// значение которой не может быть изменено после инициализации
// Константа при объявлении всегда должна быть проинициализирована
const double SPEED_OF_LIGHT = 299792458.0;
const int SECONDS_IN_HOUR = 3600;
const int HOURS_IN_DAY = 24;
// Константа может быть также проинициализирована в результате выражения
const int SECONDS_IN_DAY = SECONDS_IN_HOUR * HOURS_IN_DAY;
}
Слайд 17

Автоматическое определение типа переменной void main() { // double auto PI

Автоматическое определение типа переменной

void main()
{
// double
auto PI = 3.14159265;
//

const float
const auto E = 2.71828f;
// float
auto e2 = E * 2;
// const double
const auto halfPI = PI / 2;
// long double
auto sqrtPi = sqrt(PI);
}
Слайд 18

Область видимости переменной void main() { // Область видимости переменной ограничена

Область видимости переменной

void main()
{
// Область видимости переменной ограничена блоком, внутри

которого она объявлена
std::string userName = "Ivan Petrov";
int age = 10;
{
// Переменная из внутренноего блока может иметь имя, совпадающее с именем из внешнего блока
// При этом внутри этого блока она замещает собой одноименную переменную из внешнего блока
std::string userName = "Sergey Ivanov";
assert(userName == "Sergey Ivanov");
// Тип переменной из вложенного блока может быть другим
double age = 7.7;
// Лучше избегать объявления переменных, имя которых совпадает с именем из внешнего блока
}
// При возврате во внешний блок видимой снова становится внешняя переменная
assert(userName == "Ivan Petrov");
}
Слайд 19

Объявление глобальных переменных #pragma once // Объявление глобальной переменной как внешней

Объявление глобальных переменных

#pragma once
// Объявление глобальной переменной как внешней
// Это

позволяет ссылаться на нее из файлов,
// отличных от того, где она фактически определена
extern int someOtherGlobalVariableDeclaredInVariablesCpp;

#include "variables.h"
// Глобальная переменная. Из других файлов к ней можно обратиться объявив ее внешней (extern)
int globalVariableDeclaredInVariablesCpp = 12345;
// Еще одна глобальная переменная. В файле variable.h она объявлена как extern
int someOtherGlobalVariableDeclaredInVariablesCpp = 54321;
// Статическая глобальная переменная. Ее область видимости - текущий .cpp файл
// В разных .cpp файлах одной и той же программы могут быть объявлены разные
// статические глобальные переменные. Они будут полностью изолированы друг от друга
static int staticVariable = 66;

variables.h

variables.cpp

Слайд 20

#include "variables.h" // Переменная, объявленная вне функции является глобальной. // Ее

#include "variables.h"
// Переменная, объявленная вне функции является глобальной. // Ее область

видимости - вся программа
int someGlobalVariable = 38;
// По умолчанию глобальные переменные инициализируются нулями
int someZeroInitializedGlobaleVariable;
void main()
{
assert(someZeroInitializedGlobaleVariable == 0);
// Локальная переменная замещает собой одноименные глобальные переменные
int someGlobalVariable = 22;
assert(someGlobalVariable == 22);
// К глобальной переменной все же можно обратиться по ее полному имени
assert(::someGlobalVariable == 38);
// Глобальные переменные, объявленные в других cpp-файлах
// Переменная globalVariableDeclaredInVariablesCpp объявлена в файле variables.cpp
// Чтобы обратиться к ней из других файлов, нужно предварительно объявить
// ее внешней при помощи ключевого слова extern
extern int globalVariableDeclaredInVariablesCpp;
assert(globalVariableDeclaredInVariablesCpp == 12345);
// А эта переменная была объявлена внешней в подключенном нами заголовочном файле variables.h
assert(someOtherGlobalVariableDeclaredInVariablesCpp == 54321);
}

Использование глобальных переменных

main.cpp

Слайд 21

Ключевое слово typedef Язык Си++ предоставляет оператор typedef, позволяющий давать типам

Ключевое слово typedef

Язык Си++ предоставляет оператор typedef, позволяющий давать типам данных

новые имена
После этого новое имя типа может использоваться в качестве синонима оригинала
Причины использования typedef
Решение проблемы переносимости
На разных платформах/компиляторах один и тот же тип может иметь различный размер
Желание сделать текст программы более ясным
Слайд 22

Пример использования оператора typedef typedef int Length; Length len, maxlen; len

Пример использования оператора typedef

typedef int Length;
Length len, maxlen;
len = 1;
typedef

double real;
typedef int int32;
typedef short int16;
typedef char int8;
int32 counter = 0;
real x = 0.3;
Слайд 23

Using – альтернатива typedef int main() { using Coordinate = double;

Using – альтернатива typedef

int main()
{
using Coordinate = double;
Coordinate x0 =

35;
return 0;
}
Слайд 24

Целочисленные типы данных Служат для хранения целых чисел различного размера char

Целочисленные типы данных

Служат для хранения целых чисел различного размера
char
short (short int)
int
long

(long int)
Целые числа могут быть как со знаком, так и без него
signed
unsigned
Гарантируется следующее соотношение размеров целочисленных типов:
sizeof(char) <= sizeof(short)
sizeof(short) <= sizeof(int)
sizeof(int) <= sizeof(long)
Слайд 25

Знаковые и беззнаковые целые числа Типы int и short (без модификатора)

Знаковые и беззнаковые целые числа

Типы int и short (без модификатора) являются

знаковыми
int = signed int
short = signed short
Тип char, как правило, тоже знаковый
char = signed char
Это поведение может изменяться при помощи настроек некоторых компиляторов
Слайд 26

Представление целых чисел в памяти компьютера Тип char занимает одну ячейку

Представление целых чисел в памяти компьютера

Тип char занимает одну ячейку памяти

(байт) размером, как правило, 8 бит
Возможны системы, в которых разрядность байта не равна 8 битам
Типы short и int, занимают размер, кратный размеру типа char
Размер типа short <= Размер типа int
При этом число записывается в позиционной системе счисления с основанием 2разрядность байта
Порядок записи байтов, представляющих число в памяти, зависит от архитектуры системы
Little-endian, big-endian, middle-endian
Слайд 27

Пример представления числа 666 в виде типа short и int Дано:

Пример представления числа 666 в виде типа short и int

Дано:
разрядность типа

char = 8 бит
разрядность типа short = 16 бит
разрядность типа int = 32 бита

666256 = 2 * 256 + 154 * 1

154

2

0

0

0

0

2

154

Little-endian

Big-endian

int

short

154

2

2

154

Слайд 28

Типы данных с плавающей запятой Позволяют задавать вещественные числа различного размера

Типы данных с плавающей запятой

Позволяют задавать вещественные числа различного размера и

точности
float
double
long double
Гарантированы следующие соотношения размеров вещественных типов данных
sizeof(float) <= sizeof(double)
sizeof(double) <= sizeof (long double)