Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка_с++.doc
Скачиваний:
5
Добавлен:
14.07.2019
Размер:
712.19 Кб
Скачать

Роботи студентів

При підготовці до даної лабораторної роботи рекомендується повторити типи даних, звернувши увагу на символьний тип, способи завдання рядків і на застосування структурних типів даних для вирішування практичних задач [2,c.49 - 52, с.52 - 69; конспект лекцій ] .

В усіх попередніх роботах використовувалися числові типи даних. Однак ефективність мови С++ багато в чому визначається наявністю в ньому розвитих засобів для обробки символьної інформації. У стандартній бібліотеці С++ передбачено багато функцій , що виконують прості дії із символьними даними. Тому ця мова найкраще підходить для системної роботи: написання компіляторів, інтерпретаторів, операційних систем, редакторів тексту і т.п.

У мові С++ розрізняють символьні константи і рядки.

Символьна константа — це одиночний символ, укладений в апострофи. Керуючі послідовності розглядаються як одиночний символ, наприклад: " " — проміжок, "а "— літера а, " \ " — зворотна коса риса.

Тип char використовується для зображення символу. Значенням об'єкта типу char є код у наборі символів персонального комп'ютера, що відповідає даному символу. Тип char за замовчуванням інтерпретується як однобайтова ціла величина зі знаком (діапазон значень перемінної від -128 до 127). Змінна типу unsigned char може запам'ятовувати значення в діапазоні від 0 до 255.

Рядок — це послідовність символів, укладена в лапки ("), наприклад: " Це рядок". Він зберігається в безупинній області пам'яті, у кінець якої компілятором додається нульовий символ ("\0"), що подається керуючою послідовністю "\0" і є символьним масивом . Рядки мають тип char [ ]. Число елементів масиву дорівнює числу символів у рядку плюс 1, тому що нульовий символ також є елементом масиву. Рядки можуть розташовуватися на декількох рядках. У цьому випадку ставиться зворотна дробова риса і натискається клавіша ENTER. Зворотна риса із символом нового рядка ігнорується компілятором, і наступна рядок вважається продовженням поточної.

3.2.1 Організація символьного введення - виведення

Функції символьного введення - виведення мови С++ є базовими функціями , необхідними для написання могутніх підпрограм введення - виведення даних.

Мова С++ сприймає все введення-виведення як потоки символів. Потік символів може бути організований: із клавіатури, файлу , модему і т.д. Операційна система забезпечує стикування пристроїв, а С++ може використовувати ті самі функції для введення - виведення , наприклад, як із клавіатури, так і з модему . От чому таке велике значення приділяється обробці символьних типів даних. Для обслуговування операцій над рядками використовується файл <string.h> . При організації введення-виведення в мові С++ завжди передбачається, що введення буде здійснюватися з stdin ,що означає стандартний пристрій введення (звичайно клавіатура), а виведення здійснюється на стандартний пристрій виведення (звичайно дисплей) з ім'ям stdout . Ці потоки можна перепризначити на роздрук — ім'я stdprn , послідовний порт — ім'я stdaux ,повідомлення про помилки – ім'я stderr . Оператор cout здійснює виведення на екран тільки тому, що більшість комп'ютерів за замовчуванням stdout направляє виведення на екран, а оператор cin здійснює введення з клавіатури за тою же причиною, тому що клавіатура є стандартним пристроєм введення (stdin).

Розглянемо порядок дій при перепризначенні потоку виведення даних на принтер :

 підключення файлу заголовка ofstream.h ;

 виконання перепризначення виведення на принтер за допомогою операторів

ofstream prn ("PRN");

prn << " Виведення до роздруку повідомлення "<< endl;

prn << name1 << name2 ... <<endl;

Такий порядок дій застосовується при компіляції як задача DOS і нижче приведена його програмна реалізація .

Приклад 3.1 Вивести дані (прізвище й ім'я) на принтер.

// P3_1.СPPвиведення прізвища й імені на принтер

#include < fstream.h>

main ( )

{

char fio [15];

char name [10];

cout << "Введіть прізвище ";

cin >> fio;

cout << "Введіть ім'я ";

cin >> name;

// Посилка імен fio і name на принтер

ofstream prn ("PRN");

prn << " Виведення імені і прізвища " << endl;

prn << name << fio << endl;

return 0;

}

Для організації символьного введення - виведення використовуються функції буферизированого (get ( ) і put ( )) і небуферизированого (getch ( ) і (putch ( )) введення – виведення, формати цих функцій наступні: