Похожие презентации:
Основы работы с файлами и ООП в C++
1. Функция создания файла
#include <cstdio>FILE *stream; //FILE Структура, описывающая файловый поток (буферы, позиция,
режим)
//*stream Указатель на файл
int main() {
fopen_s(&stream, "word.txt", "w");//где w – режим доступа write(запись)
// также существует read(только чтение)
}
2. Ввод данных в созданный файл
int main() {fopen_s(&stream, "word.txt", "w");
int a = 10;
float b = 3.14;
char
c = '\n';
char
s[] = "my_file";
fprintf_s(stream, "%d %.2f %c%s", a, b, c, s);
fclose(stream);
}
3. Чтение данных из файла и передача в переменную
int main() {FILE* stream;
int a = 10;
float b = 3.14;
char s[] = "my_file";
// запись
fopen_s(&stream, "word.txt", "w");
fprintf_s(stream, "%d %.2f %s", a, b, s);
fclose(stream);
// чтение
fopen_s(&stream, "word.txt", "r");
int a_read;
float b_read;
char s_read[50];
fscanf_s(stream, "%d %f %49s", &a_read, &b_read, s_read,
50);
fclose(stream);
// вывод
printf_s("%i\n", a_read);
printf_s("%.2f\n", b_read);
printf_s("%s\n", s_read);
return 0;
}
4. Особенности объявления переменных
Глобальные переменныеОпределение:
Объявляются вне всех функций и классов. Доступны во всём файле (и в других
файлах через модификатор extern).
Жизненный цикл:
Создаются при запуске программы, уничтожаются при завершении.
Преимущества:
•Доступность из любой части программы
•Удобны для конфигураций и констант
5.
#include <cstdio>int counter = 0; // глобальная переменная
void increment() {
counter++;
}
int main() {
increment();
increment();
printf_s ("%d", counter);
}
6.
Локальные переменныеОпределение:
Объявляются внутри функции или блока {}
Жизненный цикл:
Создаются при входе в блок, уничтожаются при
выходе.
Преимущества:
•Изоляция данных
•Предсказуемый жизненный цикл
•Безопасность
Ограничения:
•Недоступны вне области объявления
7.
#include <cstdio>void func() {
int x = 10; // локальная переменная
printf_s("%d", x);
}
int main() {
func();
//printf_s("%d", x); ошибка компиляции
}
8.
Динамические переменныеОпределение:
Создаются во время выполнения через new / delete
Жизненный цикл:
Существует, пока явно не освобождена.
Преимущества:
•Гибкий размер
•Управление временем жизни объектов
•Подходит для больших структур
9.
int main() {int* p = new int(25);
переменная
printf_s("%d", *p);
delete p;
памяти
}
// динамическая
// освобождение
10.
КритерийГлобальная
Локальная
Динамическая
Область видимости
Вся программа
Блок/функция
По указателю
Время жизни
Всё время работы
Внутри блока
До delete
Память
Data Segment
Stack
Heap
Риск утечки
Нет
Нет
Да
Контроль доступа
Слабый
Высокий
Средний
Рекомендуемость
Ограниченно
Да
Через smart ptr
11. Структуры и классы С++
Критерийstruct
class
Уровень абстракции
Структуры данных (dataoriented)
Объектно-ориентированная
модель
Доступ по умолчанию
public
private
Типовой сценарий
использования
DTO, POD-типы, пакеты
Поведение + состояние,
параметров, конфигурации бизнес-логика
Инкапсуляция
Возможна, но не
приоритет
Базовый принцип
Наследование, методы,
конструкторы
Поддерживаются
Поддерживаются
12.
Структура (struct) —агрегирование данных
#include <cstdio>
// Определение структуры Point (точка на плоскости)
struct Point {
double x; // Координата X
double y; // Координата Y
// Метод вывода точки на экран
void print() const {
printf_s("Point %.1f %.1f", x, y);
}
};
int main() {
Point p{ 3.5, 7.2 }; // Создание объекта структуры и инициализация полей
p.print();
// Вызов метода структуры
}
13. Класс — инкапсуляция и контроль состояния
class Counter {private:
int value; // Хранит текущее значение счётчика
public:
Counter(int start) {
value = start;
}
void increment() {
value++;
}
// Конструктор
// Увеличение на 1
int getValue() const { // Получение значения
return value;
}
};
int main() {
Counter c(10);
// Создание объекта со значением
10
c.increment();
// Увеличение
printf_s("%i",c.getValue()); // Вывод результата
}
Программирование