Similar presentations:
Лекція 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 з різними режимами
відкриття.
Успіхів у програмуванні!
programming