Added missing files and removed unnessesary ones

This commit is contained in:
2023-07-16 16:44:42 +03:00
parent c3fa5367c3
commit 199dd693e4
41 changed files with 1442 additions and 50 deletions

View File

@ -1,50 +0,0 @@
{
"files.associations": {
"algorithm": "cpp",
"iostream": "cpp",
"numeric": "cpp",
"array": "cpp",
"atomic": "cpp",
"bit": "cpp",
"*.tcc": "cpp",
"cctype": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"compare": "cpp",
"concepts": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"deque": "cpp",
"string": "cpp",
"unordered_map": "cpp",
"vector": "cpp",
"exception": "cpp",
"functional": "cpp",
"iterator": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"random": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"initializer_list": "cpp",
"iosfwd": "cpp",
"istream": "cpp",
"limits": "cpp",
"new": "cpp",
"numbers": "cpp",
"ostream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"typeinfo": "cpp",
"ctime": "cpp",
"cstring": "cpp"
}
}

View File

@ -545,3 +545,243 @@ void boo(int* ptr) {
## Структуры
> Структура - тип данных, позоляющий объединить несколько переменных в одной еденице.
```C++
#include <iostream>
struct Employee {
short id;
int age;
double salary;
};
Employee john = {5, 20, 30.0};
std::cout << john.id << ' ' << john.age << ' ' << john.salary << '\n';
```
## Перечисления
> Перечисление - это пользовательский тип данных, который представляет собой набор именованных констант, которым присваиваются целочисленные значения. Весит как *int*
```C++
#include <iostream>
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday,
};
enum Weekday2 {
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7,
};
Weekday today = Saturday;
```
Weekday полностью аналогичен Weekday2
## Объединение
> Объединение - это пользовательский тип данных, позволяющий хранить различные типы данных в одной области памяти. Объединение занимает память, достаточную для хранения переменной имеющий самый большой размер.
```C++
union MyUnion{
int intValue;
char charValue;
};
MyUnion val = 65;
int a = val.intValue; // 65
char b = val.charValue; // 'A'
```
## Передача значений в функцию (Подробнее)
* Передача по значению (создаётся копия, может быть медленно, используется для примитивов)
```C++
void increment(int a) {
a++;
}
int a = 5;
increment(&a); // a остаётся 5
```
* Передача по ссылке (копия не создаётся, используется для больших значений / структур, аналогична передаче по значению, но синтаксис проще)
```C++
void increment(int& a) {
a++;
}
int a = 5;
increment(a); // a становится 6
```
* Передача по указателю (копия не создаётся, используется в основном для массивов)
```C++
void increment(int* a) {
(*a)++;
}
int a = 5;
increment(&a); // a тоже становится 6
```
## Классы
> Классы - шаблон или описание, определяющее структуру поведения объектов.
> Объект - экземляр класса
```С++
class ClassName{
// Поля и методы класса
};
```
> Поля класса - переменные, котроые представляют состояие объетогв класса
> Методы класа - функции, которые определяют поведение объектов класса
```С++
ClassName objectName; // создание объекта класса просто
ClassName objectName = new ClassName(); //создание объекта класса сложно
delete objectName;
```
## Пример
```С++
#include <iostream>
#include <string>
class Person{
public:
std::string name;
int age;
void displayInfo(){
std::count << "Name: " << name << ", Age: " << age << '\n';
}
}
int main(){
Person person1;
person1.name = "Alice";
person1.age = 25;
person1.displayInfo();
Person* person2 = new Person();
person2 -> name = "Bob";
person2 -> age = 30;
person2 -> displayInfo();
delete person2;
return 0;
}
```
> Пользовательский тип данных
### Модификаторы доступа
* public - доступно всем (по умолчанию в struct)
* private - доступно только внутри класса (по умолчанию в class)
* protected - достпуно внутри класса и наследникам
### Конструктор и деструктор
> Конструктор - функция, которая вызывается при инициализации класса (может быть несколько)
> Деструктор - функция, которая вызывается при уничтожении объекта
```C++
#include <iostream>
class MyClass {
public:
MyClass() {
std::cout << "Constructed\n";
}
MyClass(int val) {
std::cout << "Constucted" << val << '\n';f
}
~MyClass() {
std::cout << "Destroyed\n";
}
};
```
### this
> this - указатель на объект вызвовший метод
```C++
#include <string>
class Foo{
public:
Person(std::string val) {
this->name = val;
}
};
```
## ООП
> Инкапсуляция - данные класса скрыты от прямого доступа и манипулиций извне класса
> Наследование - создаёт классы-потомки
> Полимарфизм - разные классы используют один и тот же интерфейс
```C++
#include <iostream>
class Figure {
public:
virtual void draw() {
std::cout << "Draw figure\n";
}
};
class Circe: public Figure {
public:
void draw() override {
std::cout << "Draw circle\n";
}
};
class Rectangle: public Figure {
public:
void draw() override {
std::cout << "Draw rectangle\n";
}
};
int main() {
Figure* figure = new Figure();
Figure* circle = new Circle():
Figure* rectangle = new Rectangle();
figure->draw();
circle->draw();
rectangle->draw();
delete figure;
delete circle;
delete rectangle;
}
```

BIN
C++/a.out

Binary file not shown.

16
C++/lesson6/task1.cpp Normal file
View File

@ -0,0 +1,16 @@
#include <iostream>
#include <string>
class Person {
private:
std::string name;
public:
Person(const std::string& name) {
this->name = name;
}
void printName() {
std::cout << this->name << '\n';
}
};

47
C++/lesson6/task2.cpp Normal file
View File

@ -0,0 +1,47 @@
#include <iostream>
#include <string>
class Student {
std::string name;
int age;
double average_grade;
public:
Student(std::string name, int age, double average) {
this->name = name;
this->age = age;
this->average_grade = average;
}
std::string& get_name() {
return name;
}
int get_age() {
return age;
}
double get_average_grade() {
return average_grade;
}
void status() {
if (average_grade >= 4 && average_grade < 5) {
std::cout << "Student is хорошист" << '\n';
} else if (average_grade = 5) {
std::cout << "Student is отличник" << '\n';
} else if (average_grade < 3) {
std::cout << "Student is двоечник" << '\n';
}
}
};
int main() {
Student student1("George", 19, 3.5);
Student student2("Paul", 14, 4.8);
Student student3("Vasyok", 17, 5);
student1.status();
student2.status();
student3.status();
}

40
C++/lesson6/task3.cpp Normal file
View File

@ -0,0 +1,40 @@
#include <iostream>
struct Account {
int number;
int money;
int percentage;
public:
Account(int number, int money, int percentage) {
this->number = number;
this->money = money;
this->percentage = percentage;
}
void refill(int amount) {
money += amount;
}
void withdraw(int amount) {
money -= amount;
}
void PrintInformation() {
std::cout << number << ' ' << money << ' ' << percentage << '\n';
}
};
int main() {
Account* account1 = new Account(21213, 500, 15);
account1->PrintInformation();
account1->refill(200);
account1->withdraw(50);
account1->PrintInformation();
Account* account2 = new Account(1934, 800, 10);
account2->PrintInformation();
account2->refill(150);
account2->withdraw(23);
account2->PrintInformation();
}