C ++ по-русски
Для начала давайте немного изменим нашу программу: (исходный код измененной программы внизу).
#include <iostream>
using namespace std;
int main()
{
cout << "Привет, Мир!";
cin.get( );
return 0;
}
Всего вероятней откроется черное окно MS DOS, которое иногда называют консолью, и то что будет в нем отображаться программисты иногда называют «мусором». И так в чем суть вопроса… Дело в том, что все данные в компьютере представлены с помощью нулей и единиц. Самой наименьшей единицей информации является бит. Это наш ноль или единица. Но так как с помощью одного бита ничего в компьютере не сделаешь, минимальной единицей информации с которой компьютер имеет дело, является байт. Один байт равен восьми битам. Всего с помощью одного байта можно создать 256 комбинаций. Это от 00000000 до 11111111. Одни символ кодируется с помощью одного байта. В результате у каждой буквы имеется свой код, который закреплен за ней определенным стандартом. Его еще называют кодовой страницей или кодировкой. За управляющими символами (символ начала новой строки, табуляции и др.) а так же символами латинского алфавита закреплены коды с 0 по 127, все остальные отданы для языков использующих алфавит отличный от латинского алфавита.
И здесь начинается самое интересное… В России существует целых пять кодировок. Самое интересное, что в этом есть часть «вины» самой Microsoft, которая сначала создала кодировку для MS DOS, а затем еще одну для операционных систем семейства Windows. В результате получилось, что одна кодировка CP866 используется для MS DOS, а другая Windows – 1251 для самой операционной системы. А так как многие даже и не подозревают о существовании консоли, то как говориться спасение утопающих дело рук самих утопающих. Чем мы сейчас и займемся…
Решение проблемы
Однажды, в одной из книг по C++ я прочитал следующий совет, как решить эту проблему... Писать все на английском языке, т. к. первые 128 символов в любой русской кодировке одинаковы. Но я думаю, что выражу мнение большинства, если скажу, что это все ровно, что посоветовать поехать из Москвы в Санкт-Петербург через Северный полюс (Хотя если вы в дальнейшем решите стать профессиональным программистом, знание английского языка вам очень сильно пригодится). Другой вариант, это писать программы для Windows. Но это все ровно, что сесть за штурвал современного истребителя. Посидеть в кабине можно, а вот взлететь вряд ли получиться.
Теперь менее экзотические решения… Если вы установили, как я вам и советовал Dev-C++ 4.9.9.2, то самый простой способ, это перейти по ссылке на сайт http://kpolyakov.narod.ru/school/c/faq.htm. Достаточно будет установить две дополнительных программы и вы можете надолго забыть об этой проблеме. Способ номер два… Это широко известная функция rus. На одном из форумов по программированию этому посвящена целая тема. Кому интересно могут перейти по ссылке: http://www.cyberforum.ru/cpp-beginners/thread10662.html. Вот как будет выглядеть наша программа с функцией rus. #include <iostream>
#include <windows.h>
using namespace std;
char* Rus(const char* text);
int main( )
{
cout << Rus("Привет, Мир!");
cin.get( );
return 0;
}
char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
И наконец третий способ. Он немного нетрадиционный, но если у вас установлен не Dev-C++ 4.9.9.2, а другой компилятор, то он будет работать. Хотя и не совсем так, как нам бы этого хотелось. Если у вас установлен Adobe Dreamveawer CS3, вы можете выбрать Edit – Preferences – New Document. В появившемся окне в списке Default encoding выберите Кириллица(DOS), затем создайте новый документ. Напишите вашу программу, и сохраните ее с расширением .cpp (Не забудьте сначала удалить все что редактор создаст в новом документе. Иначе компилятор выведет сообщение об ошибке). Теперь когда вы откроете его в вашем компиляторе, то вместо русских букв вы увидите «кроказябры», но в исполняемой программе все будет по-русски (Кстати, этот способ подойдет для написания практически любой программы, которая будет работать с консолью. Например его можно использовать, если вы вдруг захотите изучить Perl и будете писать программы с помощью ActivePerl.
Несколько советов, перед тем, как двигаться дальше
Перед тем, как мы перейдем к изучению основ С++, я хотел бы дать вам несколько советов. Надеюсь они вам помогут.
Совет первый: не бойтесь экспериментировать. Иногда бывает очень полезно, написать свою программу взяв чужую за образец. Программирование – это искусство, овладеть которым можно лишь создавая что-то свое. И пускай эти программы не будут иметь практического применения. Чем больше вы напишете собственных программ, тем больше вы почерпнете для себя, когда будете общаться с людьми хорошо разбирающимися в С++.
Совет второй: пишите заметки… Это очень сильно помогает, т. к. приучает мыслить логически, и разбираться в деталях. Вы можете вести дневник, заметки или как-то иначе записывать те мысли, которые возникли у вас в результате изучения С++, но поверьте, это сильно помогает в дальнейшем.
И наконец, совет третий: комментируйте вашу программу. В С++ есть специальные символы, которые используются для того, чтоб сообщить компилятору, что все что написано после них предназначено не для компилятора. Это два слэша подряд // или /* */. Разница между этими двумя видами комментариев, в том, что первый однострочный (т. е. будет действовать до конца строки, а второй многострочный. Т. е. если компилятор встретит в коде символы /* все что после них, он будет считать комментарием, пока не встретит символы */). Для чего они нужны? Пока наша программа маленькая, и ничего особенного не делает, в ней не трудно разобраться. Но чем сложнее программа, тем труднее бывает разобраться в принципе ее работы некоторое время спустя. В моей жизни был случай, когда решив с экономить на комментариях, я написал программу без них. Когда написание программы подходило к концу, я обнаружил, что она работает не так, как я ожидал. Но к тому времени мне уже было трудно разобраться в логике ее работы без комментариев. И тогда мне не оставалось ничего другого, как переписывать программу комментируя ее код. После этого ошибка была найдена, и программа заработала, так как я и хотел.
Если у вас возникнут вопросы по поводу этой статьи, вы можете оставить к ней свои комментарии. Я с удовольствием на них отвечу.