Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
12.02.2016
Размер:
521.58 Кб
Скачать

Наприклад:

 

 

 

int a, b, c;

cin >> b;

cin >> c;

cout << “a+b+c = ” <<

cin >> a;

a+b+c << ‘\n’;

 

 

 

cout << “a*b*c = ” << a*b*c << ‘\n’;

Після вводу значень a = 2, b = 3, c = 4 на екрані з’явиться напис

a+b+c = 9 a*b*c = 24

Форматування

Деколи виникає необхідність регулювати вивід тексту. Функція width() вказує мінімальне число символів, які будуть використані наступною операцією виводу числового значення або символьної стрічки. Наприклад в результаті виконання

cout.width(5);

cout << ‘(’ << 4 << ‘)’;

буде надруковано число 4 в полі з 5 символів ( 4) Символ-заповнювач можна задати функцією fill().

11/38

Наприклад в результаті виконання

cout.width(5); cout.fill (‘#’);

cout << ‘(’ << “ab” << ‘)’;

отримаємо на виході (###ab).

Виклик функції width впливає тільки на операцію виводу, яка виконується безпосередньо за нею, так що після операторів

cout << 1234.56789 << ‘\n’;

cout.setf (ios::scientific, ios::floatfield); cout << 1234.56789 << ‘\n’;

cout.setf (ios::fixed, ios::floatfield); cout <<1234.56789 << ‘\n’;

отримаємо 234.57 1.2345678e+03 1234.567890

В результаті звертання до функції cout.precision(n) буде встановлене значення по замовчуванню для числа цифр, що друкуються, яке рівне n. Виклик функції precision впливає на всі наступні операції вводу/виводу до наступного виклику precision.

12/38

Відкривання і закривання файлів

В С++ реалізуються три типи потоків для роботи з файлами.

ifstream in;

відкривання файла для читання;

ofstream out;

відкривання файла для запису;

fstream both;

відкривання файла для читання і запису.

Якщо ви відкрили потік, єдиний шлях зв’язати потік з файлом реалізується функцією open(), яка є членом кожного з трьох класів, які реалізують ці потоки. Прототип цієї функції:

void open (char *filename, int mode, int access)

filename – ім’я файлу

 

mode

- спосіб відкриття файлу:

ios::app

//додати

ios::ate

//відкрити і шукати кінець файлу

ios::in

//відкрити для читання

ios::nocreate

//приводить до неуспіху, якщо файл не існує

ios::noreplace

//приводить до неуспіху, якщо файл існує

ios::out

//відкрити для виводу

ios::trunc

//відсікти файл до нульової довжини

access

- визначає, з якими атрибутами відкритий файл:

 

0 - нормальний файл (по замовчуванню)

13/38

1 - read-only

2 - hidden

4 - system

8 - archive

Приклади відкривання файлу:

ofstream out;

out.open (“test”, ios::out, 0); fstream mystream;

mystream.open (“test”, ios::in | ios::out); ifstream in;

in.open (“test”);

Якщо в силу будь-яких причин файл не може бути відкритий, значення потоку рівне 0.

Для закривання файла використовується функція-член close. Приклад:

mystream close();

Для фіксування кінця файла використовується функція-член eof(), прототип якої

int eof();

Вона повертає ненульову величину, коли досягається кінець файла і навпаки.

14/38

Наступна програма записує ціле значення, значення з плаваючою крапкою, символьну змінну і символьну стрічку у файл, а потім зчитує з цього файла.

#include<iostream.h>

#include<fstream.h> int main (void) {

char ch; int i; float f;

char str[80];

ofstream out (“test”); if (! out){

cout << “Cannot open file”; return 1;

}

out << 10 << “#” << 123.23 << ‘\n’; out << “This is a short text file.”; out.close();

ifstream in(“test”); if (! in){

cout << “Cannot open file”; return 1;

}

in >>i; in >>f;

15/38

in >>ch; in >>str;

cout << I << “ ” << f << “ “ << ch << ‘\n’; cout << str;

in.close(); return 0;

}

Ключові слова мови C++

Стандарт мови C++ містить 63 ключові слова. Вони наведені в табл. 1. Таблиця 1. Ключові слова мови C++

asm

auto

bool

break

 

1

 

case

catch

char

class

 

I

 

const

const_cast

continue

default

 

1

 

delate

do

double

dynamic_cast

1

else

enum

explicit

export

 

j

 

extern

false

float

for

1

 

 

friend

goto

if

inline

 

1

 

int

long

mutable

namespace

J

new

operator

private

protected

1

 

public

register

reinterpret_

return

 

I

 

 

 

cast

 

 

 

 

16/38

short

signed

sizeof

static

|

static_cast

struct

switch

template

I

this

throw

true

try

\

typedef

typeid

typename

union

]

unsigned

using

virtual

void

 

volatile

wchar_t

while

 

 

Структура програми мовою C++

Програма мовою C++ має такий загальний вид.

#директиви include

оголошення базових класів

оголошення похідних класів

прототипи звичайних функцій int main()

{

//... }

визначення звичайних функцій

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

17/38

2. Класи

Класи є однією з важливих частин мови C++. Для того, щоб створити об’єкт, в мові C++ потрібно спочатку визначити його загальний вигляд, використовуючи ключове слово class. З синтаксичної точки зору клас подібний на структуру. Розглянемо в якості прикладу клас, який визначає тип під назвою stack. З його допомогою можна створити реальний стек.

#define SIZE 100

// В цьому фрагменті оголошується клас stack class stack {

int stck[SIZE]; int tos;

public:

void init();

void push(int i); int pop();

};

Клас може містити відкриту і закриту частини. По замовчуванню, всі члени класу є закритими. Наприклад, змінні stck і tos є закритими. Це означає, що до них неможливо звернутися з функцій, які не є членами класу stack.

18/38

Таким чином, досягається інкапсуляція – доступ до закритих елементів класу строго контролюється. В класі також можна визначити закриті функції, які можуть викликатись іншими членами класу.

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

Всі змінні чи функції, розміщені в розділі public, доступні для довільних функцій програми. По суті, зовнішня частина програми отримує доступ до об’єкту саме через його відкриті функції-члени. Хоча змінні можна оголошувати відкритими, цього потрібно уникати. Навпаки, всі дані рекомендується оголошувати закритими, контролюючи доступ до них з допомогою відкритих функцій. Крім того, слід звернути увагу на те, що після ключового слова public у визначенні класу stack стоїть двокрапка.

Функції init(), push(int i) і pop() називаються функціями-членами, оскільки вони є частиною класу stack.

Змінні stck і tos називаються змінними-членами (або даними-членами). Нагадаємо, що об’єкт створює зв’язок між кодом і даними. Тільки функції-члени мають доступ до закритих членів свого класу. Отже, доступ до змінних stck і tos мають тільки функції init(), push(int i) і pop().

19/38

Визначивши клас, можна створити об’єкт цього типу. По суті, ім’я класу стає новим специфікатором типу даних. Наприклад, наступний оператор створює об’єкт з іменем mystack типу stack.

stack mystack;

Оголошуючи об’єкт класу, ми створюємо екземпляр (instance) цього класу. В даному випадку змінна mystack є екземпляром класу stack. Крім того, об’єкти можна створювати, вказуючи їх ім’я зразу після визначення класу, тобто після закриваючої фігурної дужки (аналогічно, як екземпляр структури).

В мові C++ з допомогою ключового слова class визначається новий тип даних, який можна використовувати для створення об’єктів цього типу. Отже, об’єкт – це екземпляр класу. В цьому розумінні він нічим не відрізняється від інших змінних, наприклад, від змінної, яка являє собою екземпляр типу int.

Іншими словами, клас є логічною абстракцією, а об’єкт – її реальним втіленням, яке існує в пам’яті комп’ютера.

20/38

Соседние файлы в папке ТА_Методички