1.65M
Category: programmingprogramming

Лекція 2 Потокове та форматоване введення-виведення

1.

ЛЕКЦІЯ
Потокове та форматоване
введення-виведення
Лекція для студентів спеціальності «Комп'ютерні науки»
Програмування на C/C++

2.

Зміст лекції
01
Вступ до потоків введення-виведення
02
Потокове введення-виведення в C++
04
Форматні специфікатори
Основні концепції та принципи роботи потоків даних
03
05
Форматоване введення-виведення в C
Функції printf() та scanf() з прикладами
Робота з файлами
Файлові потоки та операції з файлами в C++
Використання iostream, cin, cout та операторів << >>
Повний перелік та використання специфікаторів формату
06
Практичні приклади
Комплексні приклади коду з поясненнями

3.

Р О З ДІЛ 0 1
Вступ до потоків
введення-виведення
Основні концепції та принципи роботи потоків

4.

01
Що таке потік (stream)?
Визначення потоку
Стандартні потоки
Потік (stream) — це абстракція, що представляє послідовність байтів, яка передається від
джерела до приймача. Потоки дозволяють уніфікувати операції введення-виведення незалежно
від конкретного пристрою.
stdin
вхідний
Стандартний вхід — зазвичай клавіатура
Потік — це канал передачі даних, через який інформація послідовно передається від одного компонента
до іншого.
stdout
Типи потоків
Вхідний потік
Дані надходять від пристрою (клавіатура, файл) до
пам'яті комп'ютера
вихідний
Стандартний вихід — зазвичай екран
Вихідний потік
Дані передаються з пам'яті до пристрою (екран,
файл, принтер)
stderr
Стандартний потік помилок — небуферизований
помилки

5.

Р О З ДІЛ 0 2
Потокове введеннявиведення
в C++
Використання iostream, cin, cout та операторів << >>

6.

02
Стандартні потоки C++: cout та cin
cout
cin
standard output stream
standard input stream
Об'єкт класу ostream, призначений для виведення даних на стандартний
Об'єкт класу istream, призначений для зчитування даних зі стандартного
пристрій виведення (екран).
пристрою введення (клавіатура).
Оператор вставки:
<<
Вставляє дані у вихідний потік
#include
using namespace std;
intmain() {
cout << "Hello, World!" << endl;
Оператор вилучення:
>>
Вилучає дані з вхідного потоку
int age;
cout << "Enter age: ";
cin >> age;
cout << "You are " << age << " years old";
return0;
}
Важливо: заголовний файл iostream
Для використання cin та cout необхідно підключити заголовний файл #include . Цей файл містить визначення класів istream, ostream та об'єктів cin, cout, cerr,
clog.

7.

02
Оператори вставки та вилучення
Оператор вставки <<
Оператор вилучення >>
Оператор << використовується для вставки даних у вихідний потік. Він
Оператор >> використовується для вилучення даних з вхідного потоку та
перегружений для різних типів даних.
збереження їх у змінних.
Ланцюжкове виведення:
Ланцюжкове введення:
int x = 10;
int age;
double y = 3.14;
double salary;
char c = 'A';
char grade;
cout << "x = " << x << ", y = "
cout << "Enter age, salary, grade: ";
<< y << ", c = " << c << endl;
cin >> age >> salary >> grade;
Результат: x = 10, y = 3.14, c = A
Переваги
Типобезпечність — компілятор перевіряє типи даних
Введення: 25 50000.50 A
Розширюваність
Можна перегружати для власних типів даних
Ланцюжок
Можна об'єднувати кілька операцій в один рядок

8.

Р О З ДІЛ 0 3
Форматоване введеннявиведення
вC
Функції printf() та scanf() з прикладами

9.

03
Функція printf() для форматованого виведення
Синтаксис printf()
Приклади використання printf()
1. Виведення цілих чисел:
printf("format_string", arg1, arg2, ...);
format_string
Рядок з текстом та специфікаторами формату
arg1, arg2...
Змінні, значення яких підставляються
int age = 25;
printf("Age: %d years\n", age);
// Результат: Age: 25 years
2. Виведення чисел з плаваючою точкою:
Основні специфікатори
%d
%f
int
float
%lf
%c
double
char
float pi = 3.14159;
printf("Pi = %.2f\n", pi);
// Результат: Pi = 3.14
3. Комбіноване виведення:
%s
%p
string
pointer
Важливо: заголовний файл stdio.h
Для використання printf() необхідно підключити #include
char name[] = "John";
int score = 95;
printf("%s scored %d points\n", name, score);
// Результат: John scored 95 points

10.

03
Функція scanf() для форматованого введення
Синтаксис scanf()
scanf("format_string", &arg1, &arg2, ...);
Приклади використання scanf()
1. Зчитування одного значення:
int age;
Оператор & (амперсанд)
Передає адресу змінної, куди scanf запише значення
printf("Enter age: ");
scanf("%d", &age);
printf("You are %d\n", age);
format_string — рядок зі специфікаторами, що визначають типи даних для зчитування
2. Зчитування кількох значень:
int x, y;
Особливості scanf()
float z;
scanf("%d %d %f", &x, &y, &z);
Пропускає пробіли при зчитуванні чисел
Зупиняється на першому невідповідному символі
Для рядків зчитує до першого пробілу
Повертає кількість успішно зчитаних значень
3. Зчитування рядка:
char name[50];
scanf("%s", name);
// Зчитує до пробілу!

11.

03
Таблиця форматних специфікаторів
%d
integer
Цілі числа (int)
float
printf("%lf", 3.1415926535);
string
%u
Беззнакове ціле
printf("%u", 42);
%X
printf("%X", 255); // FF
unsigned
%p
Адреса пам'яті
int x = 10;
printf("%p", &x);
Додаткові модифікатори
%.2f — точність (2 знаки після коми), %10d — ширина поля (10 символів), %-10d — вирівнювання вліво
HEX
Шістнадцяткове (верхній регістр)
printf("%s", "Hello");
double
hex
printf("%x", 255); // ff
Рядок символів
printf("%.2f", 3.14159); // 3.14
Подвійна точність
%s
%x
Шістнадцяткове (нижній регістр)
printf("%c", 'A'); // A
Числа з плаваючою точкою
%lf
char
Один символ
printf("%d", 42); // 42
%f
%c
pointer

12.

Р О З ДІЛ 0 4
Робота з файлами
Файлові потоки та операції з файлами

13.

04
Файлові потоки в C++
Класи файлівих потоків
Приклад: запис у файл
ifstream
#include
Input File Stream — читання з файлу
#include
using namespace std;
intmain() {
ofstream
ofstream outFile("data.txt");
if (outFile.is_open()) {
Output File Stream — запис у файл
outFile << "Hello, File!" << endl;
outFile << 42 << " " << 3.14 << endl;
outFile.close();
fstream
cout << "File written successfully!";
File Stream — читання та запис
} else {
cout << "Error opening file!";
}
return0;
}
Основні методи
open()
close()
is_open()
Відкрити файл
Закрити файл
Перевірка
Приклад: читання з файлу
ifstream inFile("data.txt");
string line;
if (inFile.is_open()) {
while (getline(inFile, line)) {
cout << line << endl;
}

14.

04
Режими відкриття файлів
Таблиця режимів відкриття
ios::in
Комбінування режимів
читання
// Читання та запис
fstream file("data.txt",
ios::in | ios::out);
Відкриває файл для читання. Файл повинен існувати.
// Додавання у бінарний файл
ofstream binFile("data.bin",
ios::out
запис
ios::app | ios::binary);
Відкриває файл для запису. Створює новий файл або очищує існуючий.
ios::app
додавання
Відкриває файл для додавання даних у кінець. Не очищує файл.
ios::binary
Режими в C (stdio)
"r"
читання
"w"
запис
"a"
додавання
"r+"
читання+запис
бінарний
Відкриває файл у бінарному режимі (без обробки символів).
Важливо: Завжди перевіряйте, чи файл успішно відкрито перед роботою
з ним!

15.

05
Практичні приклади коду
Приклад 1: Калькулятор
#include
using namespace std;
intmain() {
double a, b;
char op;
cout << "Enter expression: ";
cin >> a >> op >> b;
switch(op) {
case'+': cout << a+b; break;
case'-': cout << a-b; break;
case'*': cout << a*b; break;
case'/':
if(b!=0) cout << a/b;
else cout << "Error!";
break;
}
return0;
Приклад 2: Обробка файлу
#include
#include
#include
using namespace std;
intmain() {
ifstream in("input.txt");
ofstream out("output.txt");
string line;
int count = 0;
while(getline(in, line)) {
out << ++count << ": "
<< line << endl;
}
cout << "Processed "
<< count << " lines";
return0;
}
}
Приклад 3: Форматований вивід
#include
intmain() {
int id = 42;
float score = 95.5;

16.

ВИСНОВКИ
Ключові концепції лекції
Потоки даних
C++ підхід
Потоки абстрагують операції введення-виведення,
уніфікуючи роботу з різними пристроями через єдиний
інтерфейс.
C підхід
<< та >>, типобезпечністю та розширюваністю.
Файлові потоки
Функції printf/scanf з форматними специфікаторами для
точного контролю формату виведення.
Об'єктно-орієнтований підхід з cin/cout, операторами
Розширення можливостей роботи з даними через
ifstream/ofstream/fstream з різними режимами
відкриття.
Успіхів у програмуванні!
English     Русский Rules