Видео факельного шествия в Харькове в память студентов, давших бой большевикам в 1918 году на станции Круты близ Киева.
Блог о телекоммуникационных технологиях, замешанный на политике, юморе и скучноватых новостях
суббота, 30 января 2016 г.
Украинские националисты провели факельное шествие в Харькове
Автор:
Варфоломей Полиграфович
на
00:30
0
коммент.
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Ярлыки:
Общество
вторник, 19 января 2016 г.
О наследовании для начинающих программистов
В этом посте приведен простой пример на языке с++, который помогает помять, что такое наследование. Здесь определены два класса - A и B, которые находятся в отношении наследования: класс B является дочерним по отношению к классу A.
Поле данных в базовом (иначе говоря, родительском) классе только одно - это переменная целого типа a. В классе B вроде бы присутствует только одно поле данных - int b. Однако как раз суть наследования именно в том и заключается, что все члены базового класса являются также и членами дочернего класса. То есть int a является также и членом класса B. Членами класса B являются два одноименных метода Print(). Если метод Print() вызывается для объекта класса B, то по умолчанию подразумевается, что вызывается "родной" для класса B Print().
В противном случае используется оператор разрешения области видимости "::"
using namespace std;
class A
{
protected:
int a;
public:
A(int x){ a = x; } // конструктор
void Print() { cout << a << endl;}; // функция - член класса (выводит a)
class B: public A
{
int b;
public:
B() : A(15) // так как a является членом класса B, то необходимо
{ // проинициализировать a путем вызова
b = 20; // конструктора класса A с параметром типа int
}
B(int y) : A(15)
{
b = y;
}
B(int x, int y) : A(x), b(y) // с помощью этого конструктора можно { // проинициализировать a и b через параметры
}
void Print()
{
A::Print(); // вызов функции Print() из класса A
std::cout << b << endl;
}
};
void main()
{
B obj(40, 50);
obj.Print(); // вызов функции Print() из класса B
obj.A::Print(); // вызов функции Print() из класса A
}
Рисование мышью в консоли
Поле данных в базовом (иначе говоря, родительском) классе только одно - это переменная целого типа a. В классе B вроде бы присутствует только одно поле данных - int b. Однако как раз суть наследования именно в том и заключается, что все члены базового класса являются также и членами дочернего класса. То есть int a является также и членом класса B. Членами класса B являются два одноименных метода Print(). Если метод Print() вызывается для объекта класса B, то по умолчанию подразумевается, что вызывается "родной" для класса B Print().
В противном случае используется оператор разрешения области видимости "::"
using namespace std;
class A
{
protected:
int a;
public:
A(int x){ a = x; } // конструктор
void Print() { cout << a << endl;
class B: public A
{
int b;
public:
B() : A(15) // так как a является членом класса B, то необходимо
{ //
}
B(int y) : A(15)
{
b = y;
}
B(int x, int y) : A(x), b(y) // с помощью этого конструктора можно
void Print()
A::Print(); // вызов функции Print() из класса A
std::cout << b << endl;
}
};
void main()
{
B obj(40, 50);
obj.Print(); // вызов функции Print() из класса B
obj.A::Print(); // вызов функции Print() из класса A
}
Автор:
Варфоломей Полиграфович
на
22:11
0
коммент.
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Ярлыки:
Программирование
воскресенье, 17 января 2016 г.
Несколько курьезных фото
С появлением цифровых фотоаппаратов и мобильных телефонов с фотокамерами люди уже перестали скупиться на снимки. В результате на кадрах нередко оказываются запечатлены самые забавные моменты...
Источник: fishki.net
Автор:
Варфоломей Полиграфович
на
10:47
0
коммент.
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Ярлыки:
Юмор
суббота, 16 января 2016 г.
Рисование мышкой в консоли (с++)
Оказывается, в консоли можно сотворить даже что-то типа графического редактора paint. Ниже показан код, как это делается. И добавлены некоторые комментариями.
using namespace std;
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE),
hIn = GetStdHandle(STD_INPUT_HANDLE);
void main()
{
CONSOLE_CURSOR_INFO cinfo = {100, false};
SetConsoleCursorInfo(hOut, &cinfo);//скрыли курсор
COORD c = { 0, 0 };
DWORD d;
CONSOLE_SCREEN_BUFFER_INFO csbi;
INPUT_RECORD ir;
// устанавливаем режим консоли
SetConsoleMode(hIn, ENABLE_MOUSE_INPUT | ENABLE_INSERT_MODE);
while (1) // бесконечный цикл
{
while (ReadConsoleInput(hIn, &ir, 1, &d)) // считываем инфу из входного потока
{
if (ir.EventType == MOUSE_EVENT) // если произошло некое событие с мышью
{
if (ir.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) // если нажата левая кнопка мыши
{
// курсор ставится в позицию, где кликнула мышь
SetConsoleCursorPosition(hOut, ir.Event.MouseEvent.dwMousePosition);
cout << '*'; // при каждом клике левой кнопкой рисуется символ "звездочка"
}
// при нажатии правой кнопки мыши всё перекрашиваем в черный цвет (стираем)
else if (ir.Event.MouseEvent.dwButtonState==RIGHTMOST_BUTTON_PRESSED)
{
GetConsoleScreenBufferInfo(hOut, &csbi);
FillConsoleOutputAttribute(hOut, 0, csbi.dwSize.X*csbi.dwSize.Y, c, &d);
}
}
}
}
}
Рисование окон в консоли
using namespace std;
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE),
hIn = GetStdHandle(STD_INPUT_HANDLE);
void main()
{
CONSOLE_CURSOR_INFO cinfo = {100, false};
SetConsoleCursorInfo(hOut, &cinfo);//скрыли курсор
COORD c = { 0, 0 };
DWORD d;
CONSOLE_SCREEN_BUFFER_INFO csbi;
INPUT_RECORD ir;
// устанавливаем режим консоли
SetConsoleMode(hIn, ENABLE_MOUSE_INPUT | ENABLE_INSERT_MODE);
while (1) // бесконечный цикл
{
while (ReadConsoleInput(hIn, &ir, 1, &d)) // считываем инфу из входного потока
{
if (ir.EventType == MOUSE_EVENT) // если произошло некое событие с мышью
{
if (ir.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) // если нажата левая кнопка мыши
{
// курсор ставится в позицию, где кликнула мышь
SetConsoleCursorPosition(hOut, ir.Event.MouseEvent.dwMousePosition);
cout << '*'; // при каждом клике левой кнопкой рисуется символ "звездочка"
}
// при нажатии правой кнопки мыши всё перекрашиваем в черный цвет (стираем)
else if (ir.Event.MouseEvent.dwButtonState==RIGHTMOST_BUTTON_PRESSED)
{
GetConsoleScreenBufferInfo(hOut, &csbi);
FillConsoleOutputAttribute(hOut, 0, csbi.dwSize.X*csbi.dwSize.Y, c, &d);
}
}
}
}
}
Рисование окон в консоли
Автор:
Варфоломей Полиграфович
на
17:35
0
коммент.
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Ярлыки:
Программирование
среда, 13 января 2016 г.
Немного грустный анекдот
Увы, эта история может коснуться когда-то каждого. То ли анекдот, то ли быль:
Бабушка говорит подружке:
"Ты мне в одноклассники не пиши, я оттуда удалилась."
- А почему?
- Одноклассники закончились.
Бабушка говорит подружке:
"Ты мне в одноклассники не пиши, я оттуда удалилась."
- А почему?
- Одноклассники закончились.
Автор:
Варфоломей Полиграфович
на
12:03
0
коммент.
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
пятница, 1 января 2016 г.
Рисование окон в консоли на с++
Пытаясь разобраться с вопросом рисования окон в консоли на с++, я столкнулся с тем, что в Интернете об этом вовсе не много информации. А в примерах кода не хватает комментариев, чтобы быстро понять код.
Ниже приведен код программы на с++ с некоторыми комментариями, которая рисует два окна друг над другом.
//получить дескриптор окна консоли
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
// функция рисования окна, заглавие которого определяется параметром title
// верхний левый угол этого окна будет находиться по координатам x и y
// ширина окна - width, высота - height
void DrawWindow(char * title, int x, int y, int width, int height)
{
COORD c = { x, y };
DWORD d;
SetConsoleCursorPosition(hOut, c); //переставить курсор в координаты x, y
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | BACKGROUND_RED); // устанавливаем цвет - синий на красном фоне
// рисуем прямоугольник заданного выше цвета
for (int i = 0; i<= width; ++i)
{
if (i == width)
cout << 'X';
else if (i < strlen(title))
cout << title[i];
else
cout << ' ';
}
SetConsoleTextAttribute(hOut, 0);
for (int i = 1; i <= height; ++i)
{
c.X = x;
c.Y = y + i;
//заполнение цветом
FillConsoleOutputAttribute(hOut, 0xff, width + 1, c, &d);
//заполнение символом "пробел"
FillConsoleOutputCharacter(hOut, ' ', width + 1, c, &d);
c.X = x + width + 1;
SetConsoleCursorPosition(hOut, c);
cout << ' ';
}
c.X = x + 1;
c.Y = y + height + 1;
FillConsoleOutputAttribute(hOut, 0, width + 1, c, &d);
//заполняет символом
FillConsoleOutputCharacter(hOut, ' ', width + 1, c, &d);
}
void main()
{
COORD c = { 0, 0 };
DWORD d;
// Информация о курсоре
CONSOLE_CURSOR_INFO ci = { 100, false };
SetConsoleCursorInfo(hOut, &ci);
//Информация об окне консоли будет храниться в структуре csbi
CONSOLE_SCREEN_BUFFER_INFO csbi;
//получаем информацию об заданном экранном буфере консоли
GetConsoleScreenBufferInfo(hOut, &csbi);
//заполняет цветом
// цвет определяется шестнадцатиричным числом - в данном случае 00 означает черный цвет
FillConsoleOutputAttribute(hOut, 0x00, csbi.dwSize.X*csbi.dwSize.Y, c, &d);
// заполняет символом "пробел"
FillConsoleOutputCharacter(hOut, ' ', csbi.dwSize.X*csbi.dwSize.Y, c, &d);
// рисуем окно с координатами левого верхнего угла 3, 3
DrawWindow("MyWindow", 4, 4, 20, 5);
// рисуем окно с координатами левого верхнего угла 6, 6
DrawWindow("MyWindow", 7, 7, 20, 5);
_getch();
}
Рисование мышкой в консоли с++
Ниже приведен код программы на с++ с некоторыми комментариями, которая рисует два окна друг над другом.
//получить дескриптор окна консоли
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
// функция рисования окна, заглавие которого определяется параметром title
// верхний левый угол этого окна будет находиться по координатам x и y
// ширина окна - width, высота - height
void DrawWindow(char * title, int x, int y, int width, int height)
{
COORD c = { x, y };
DWORD d;
SetConsoleCursorPosition(hOut, c); //переставить курсор в координаты x, y
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | BACKGROUND_RED); // устанавливаем цвет - синий на красном фоне
// рисуем прямоугольник заданного выше цвета
for (int i = 0; i<= width; ++i)
{
if (i == width)
cout << 'X';
else if (i < strlen(title))
cout << title[i];
else
cout << ' ';
}
SetConsoleTextAttribute(hOut, 0);
for (int i = 1; i <= height; ++i)
{
c.X = x;
c.Y = y + i;
//заполнение цветом
FillConsoleOutputAttribute(hOut, 0xff, width + 1, c, &d);
//заполнение символом "пробел"
FillConsoleOutputCharacter(hOut, ' ', width + 1, c, &d);
c.X = x + width + 1;
SetConsoleCursorPosition(hOut, c);
cout << ' ';
}
c.X = x + 1;
c.Y = y + height + 1;
FillConsoleOutputAttribute(hOut, 0, width + 1, c, &d);
//заполняет символом
FillConsoleOutputCharacter(hOut, ' ', width + 1, c, &d);
}
void main()
{
COORD c = { 0, 0 };
DWORD d;
// Информация о курсоре
CONSOLE_CURSOR_INFO ci = { 100, false };
SetConsoleCursorInfo(hOut, &ci);
//Информация об окне консоли будет храниться в структуре csbi
CONSOLE_SCREEN_BUFFER_INFO csbi;
//получаем информацию об заданном экранном буфере консоли
GetConsoleScreenBufferInfo(hOut, &csbi);
//заполняет цветом
// цвет определяется шестнадцатиричным числом - в данном случае 00 означает черный цвет
FillConsoleOutputAttribute(hOut, 0x00, csbi.dwSize.X*csbi.dwSize.Y, c, &d);
// заполняет символом "пробел"
FillConsoleOutputCharacter(hOut, ' ', csbi.dwSize.X*csbi.dwSize.Y, c, &d);
// рисуем окно с координатами левого верхнего угла 3, 3
DrawWindow("MyWindow", 4, 4, 20, 5);
// рисуем окно с координатами левого верхнего угла 6, 6
DrawWindow("MyWindow", 7, 7, 20, 5);
_getch();
}
Рисование мышкой в консоли с++
Автор:
Варфоломей Полиграфович
на
18:51
0
коммент.
Отправить по электронной почтеНаписать об этом в блогеПоделиться в XОпубликовать в FacebookПоделиться в Pinterest
Подписаться на:
Сообщения (Atom)