C, PHP, VB, .NET

Дневникът на Филип Петров


* Въведение в C++

Публикувано на 06 ноември 2008 в раздел С/С++.

C++ на практика е език, който "надгражда" езика за програмиране С, като добавя нови възможности:

- Обектно-ориентирано програмиране
- Създаване и използване на абстрактни типове данни
- Подобрения на някои съществуващи конструкции

На практика вие можете да използвате всичко научено дотук от езика за програмиране С при С++ (най-малкото примерите от предишните статии са писани за компилаторът на Microsoft - Visual C++ 6.0). Затова няма да преразглеждаме вече научени езикови конструкции, а ще даваме примери за част от нововъведенията.

Ще започнем както обикновено с най-необходимите операции - Вход и изход: В библиотеката iostream.h можем да намерим два нови оператора за вход и изход - cin и cout. Тъй като вече знаете принципа на входно-изходните операции, ще демонстрираме използването им директно с пример:

    #include "stdafx.h"
    #include "iostream.h"
    int main(int argc, char* argv[])
    {
        int x;
        cout << "vavedete chisloto x: ";
        cin >> x;
        cout << "vavedohte: " << x << '\n';
        cout << "x + 2 = " << x+2 <<'\n';
        return 0;
    }

Ясно се вижда, че имаме изключително удобство при конкатенация на различни видове променливи. След като изпълните този пример може да забележите, че cin например има защита за входните данни, която решава редица проблеми, които виждахме в scanf. Следващият пример демонстрира използването на функции и указатели. В него записваме две числа и после ги отпечатваме на екрана:

    #include "stdafx.h"
    #include "iostream.h"

    void read (int*, int*);
    int max(int, int);
    void printmax(int);

    int main(int argc, char* argv[]){
        int x, y;
        read(&x, &y);
        int maxval = max(x, y);
        printmax(maxval);
        return 0;
    }

    void read(int *x, int *y){
        cout << "Please enter two numeric values: ";
        cin >> *x >> *y;
    }

    int max(int x, int y){
        if (x >y) return x;
        else return y;
    }

    void printmax(int maxval){
        cout << maxval << " is the largest value\n";
    }

Ето и един друг пример, в който използваме функцията get(), която принадлежи на входния поток cin, която взима символ и го записва в подадена променлива. Програмата демонстрира как може да прочетем поредица от символи от клавиатурата до натискане на CR и да ги преброим. Символите за нов ред и табулация не влизат в преброяването:

	char ch;
	int charCnt=0;
	while (cin.get(ch)) {
		if (ch == '\n') break;
		switch (ch){
			case '\t':
			case ' ': break;
			default: ++charCnt;
				 break;
		}
	}
	cout << "You typed " << charCnt << " characters" << "\n";
	return 0;

Има редица полезни функции, които ни помагат за форматирането на изходните данни. Те се намират в библиотеката iomanip.h и се наричат "манипулатори":
- setw(int): указва с каква дължина ще бъде следващото извеждане на данни на екрана. Например:

	// Извежда 6 интервала последвани от текст abcd
	cout << setw(10) << "abcd";

- setprecision(int): Указва с колко цифри ще бъдат изведени последвалите числа с плаваща запетая. Например:

	double x = 12.5673;
	// Извежда "12.56"
	cout << setprecision(4) << x;

- setiosflags(формат): Дава възможност за задаване на редица форматирания на въведения текст. Следният пример демонстрира редица от тях:

	double number = 1234.45678;
	int number2 = 1234;
	// Отпечатва нов ред (вместо '\n')
	cout << endl;
	cout << '$';
	// Дефинира знака за запълване на празното място
	cout << setfill('*');
	cout << setw(12);
	// Чрез следните два реда се указва, че числото
	// ще бъде изведено с точност два знака след
	// десетичната запетая
	cout << setiosflags(ios::fixed | ios:: showpoint);
	cout << setprecision(2);
	// Получава се "$*****1234.46"
	cout << number << endl;

	// Подравняване вляво
	cout << setfill('*');
	cout << setw(10);
	cout << resetiosflags(ios::adjustfield);
	cout << setiosflags(ios::left);
	cout << "test" << endl;

	// Подравняване вдясно
	cout << setw(10);
	cout << resetiosflags(ios::adjustfield);
	cout << setiosflags(ios::right);
	cout << "test" << endl;

	// Отпечатва числото в тип HEX
	cout << setfill(' ');
	cout << resetiosflags(ios::basefield);
	cout << setiosflags(ios::hex);
	cout << number2 << endl;

	// Отпечатва числото в тип OCT
	cout << setfill(' ');
	cout << resetiosflags(ios::basefield);
	cout << setiosflags(ios::oct);
	cout << number2 << endl;

	// Отпечатва числото в тип HEX
	cout << setfill(' ');
	cout << resetiosflags(ios::basefield);
	cout << setiosflags(ios::dec);
	cout << number2 << endl;

Задача: Напишете програмата, която чете последователно числа от клавиатурата (до въвеждането на числото 0) и показва дали последното въведено число е четно или нечетно. Използвайте cin и cout за вход и изход.

Задача: Упражнете използването на cin и cout, като преработите други вече написани на C примери.

 



Добави коментар

Адресът на електронната поща няма да се публикува


*