Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Розділ 10. Базові засоби мови С++.docx
Скачиваний:
6
Добавлен:
01.05.2019
Размер:
366.53 Кб
Скачать

Самостійна робота. Команда присвоєння суміщена з арифметичною операцією

Щоб надати значення змінній, можна скористатися командою, суміщеною з деякою арифметичною операцією, а саме:

+= - присвоєння після додавання

-= - присвоєння після віднімання

*= - присвоєння після множення

/= - присвоєння після ділення

Зауважимо, що між символом арифметичної операції та символом «=» пропуск не допускається, оскільки даний запис з лексемою.

Наприклад,

a += b; еквівалентно a = a + b;

a *= c; еквівалентно a = a * c;

p /= 2.2-d; еквівалентно p = p / (2.2 - d);

x -= 4.3 – z; еквівалентно x = x – (4.3 - z);

Лекція 4. Потоки та функції введення-виведення даних.

1. Потоки введення-виведення даних

У С++ немає вбудованих команд уведення-виведення даних. Для організації введення-виведення тут реалізована концепція потоків, яка визначена у спеціальних модулях. У модулі istream.h описані команди введення, у модулі ostream.h – команди виведення, а у модулі iostream.h – команди виведення і введення.

Під потоком розуміють процес введення-виведення інформації у файл. Периферійні пристрої введення-виведення, такі як клавіатура, монітор, принтер, розглядаються як текстові файли. Під час виконання будь-якої програми автоматично підключаються стандартні потоки для введення даних з клавіатури (cin), виведення на екран (cout), виведення повідомлення про помилки (cerr) і допоміжний потік (clog).

Стандартні потоки використовують команди введення (>>) та виведення (<<) даних. За замовчування стандартним пристроєм для потоків виведення даних і повідомлень про помилки є монітор користувача, а для потоку введення даних – клавіатура. Однак потоки можна перенаправляти.

1.1 Команда введення даних.

Надавати значенням змінним можна двома способами: за допомогою команди присвоєння або команда введення даних із клавіатури. Команда введення даних з клавіатури дає змогу виконувати програму для різних вхідних даних, що робить її більш універсальною. Команда введення >> описана у бібліотеці iostream.h і має такий вигляд:

cin>>змінна;

Дія команди. Виконання програми зупиняється. Система переходить у режим очікування введення даного (екран темний, миготить курсор). Користувач набирає на клавіатурі значення змінної і натискає на клавішу вводу. У результаті виконання цієї команди змінній буде присвоєне конкретне значення.

Якщо необхідно ввести значення відразу для декількох змінних, то можна або використовувати або декілька потоків введення, або записати усі змінні в одному потоці cin, застовувавши для цього декілька команд >>, а саме:

cin>>змінна1>>змінна2>>...>>зміннаN;

Якщо у списку введення (який набрали на клавіатурі) даних більше, ніж змінних, то зайві дані будуть зчитані наступною командою введення. Якщо у програмі така команда відсутня, вони будуть проігноровані.

Програми необхідно складати так, щоб ними могли користуватися не лише укладачі, а й інші. Тобто програми мають бути масовими і зрозумілими. Пере командою введення даних варто записувати команду виведення на екран текстового повідомлення-підказки про те, що саме слід ввести.

1.2 Команда виведення даних.

Для виведення на екран повідомлень і результатів обчислень використовують стандартний потік виведення cout і команду <<, які визначеніу бібліотеці iostream.h:

cout<<вираз1<<вираз2<<...<<вираз N;

У списку виведення можуть бути сталі, змінні або вирази.

Дія команди. Сталі, знчення змінних та виразів виводяться на екран у вікно виведення. Це вікно можна переглянути за допомогою команд Window –> User screen головного вікна компілятора або комбінації клавіш Alt+F5.

Текстові повідомлення у команді виведення записують у лапках.

Керуючі послідовності. Керуючі послідовності – це комбінації спеціальних символів, які використовуються для введення та виведення . керуюча послідовність складається із символу слеш „\” і спеціально означеного символу. Вони призначені для фор матованого виведення результатів обчислень на екран. Основні керуючі послідовності:

Символ керуючих послідовностей

Коментар

\a, \7

Подати звуковий сигнал

\b

Повернути курсор на один символ назад(знищити попередній символ

\f

Перейти на нову сторінку

\n

Перейти на новий рядок

\r

Повернути курсор на початок рядка

\t

Перевести курсор до наступної позиції табуляції

\v

Вертикальна табуляції

\\

Вивести символ похилої риски

\’

Вивести символ апострофа

\”

Вивести символ лапок

\?

Вивести знак запитання

Керуючі послідовності разом з коментарями записують у лапках.

Зауваження. Значення дійсних чисел (float) можна виводити на екран у стандартному або науковому форматах. Якщо значення даного необхідно заокруглити до n значущих цифр, то перед командою виведення треба записати cout.precision(n). Для подання результатів у науковому форматі необхідно під’єднати файл заголовка iomanip.h і перед командою виведення записати cout<<setiosflags(ios::scientofic);

Для форматного виводу у С++ використовуються маніпулятори, для використання яких до програми потрібно підключити заголовний файл <iomanip.h>:

setw(int) – встановлює максимальну ширину поля виводу чисел та рядків (не символів);

setprecision(int) – встановлює максимальну кількість цифр дробової частини для дійсних чисел з фіксованою крапкою;

setiosflags(ios::showpoint | ios::fixed) – вивід дійсних чисел з фіксованою крапкою;

setiosflags(ios::left) або setiosflags(ios::right) – вирівнювання по лівому або правому полю;

endl – при виводі включає у потік символ нового рядка, еквівалентний “\n” (його опис міститься у файлі iostream.h).

Маніпулятори спрямовуються в потік виводу, аналогічно тому, як це зроблено у прикладі:

Приклад.

# include<iostream.h>

#include <iomanip.h>

void main()

{float d=52.28679;

float f= 410.0;

cout<< setprecision(3);

cout<<setiosflags(ios::showpoint | ios::fixed);

cout<<setw(12)<<d<<endl<<setw(12)<<f<<endl;

}

Результат виводу ( позначає пробіл):

52.287

410.000

Зверніть увагу на те, що у даному прикладі маніпулятори точності та фіксації крапки спрямовуються у потік виводу одноразово, тоді як ширину поля виводу необхідно встановлювати для кожного значення