Программирование на С++ — это несложно!

Автор: content Четверг, Апрель 10th, 2008 Нет комментариев

Рубрика: Software

Предисловие

Во все времена существования персональных компьютеров среди пользователей было распространено мнение о чрезвычайной сложности языка С и его потомка С++. Поэтому большинство решивших изучить программирование обращались к языкам Бей-сик и, реже, Паскаль. С появлением систем визуального программирования, таких как Delphi, Borland C Builder и им подобных, необходимость в изучении языков программи-рования на серьезном уровне оказалась сведена практически к нулю. Средства AppWizard сами выполнят 60:80% работы по созданию приложения, оставив на долю пользователя лишь несколько десятков строк, реализующих его замысел.

Казалось бы, как говорится, живи и радуйся! Однако не все так гладко, как кажется на первый взгляд. Дело в том, что эффективность кода, автоматически генерируемого этими системами, оставляет желать много лучшего. Например, я видел созданные на Delphi игры Lines, размером 755 Kb, и Dialer, занимающий 1.3 Mb. Если бы их создатели исполь-зовали язык С++, то размеры в первом случае составили бы 50:75 Kb, а во втором 100:130 Kb. А окончательно меня поразила оболочка, записанная на CD с mp3-музы-кой. Все, что требовалось от этой оболочки, это запускать на проигрывание mp3-файлы, и дать возможность просмотреть слайды. Размер этой оболочки был 4.5 Mb!!! Вы можете возразить мне, что при современных скоростях процессоров, объемах оперативной памяти и внешних носителей неважно, занимает файл 100 Kb или 1.3 Mb, разницы в скорости выполнения все равно заметно не будет, а высокая скорость и простота процесса разработки гораздо важнее. На это я отвечу так: все зависит от того, какую задачу вы решаете. Если вы решили создать свою уникальную и навороченную версию tetris’a, чтобы поразить ею своих знакомых, или если вы студент и хотите автоматизировать расчеты в курсовике или наглядно продемонстрировать на экране компьютера какой-либо процесс, тогда вам прямая дорога к ближайшей торговой точке, за CD с Delphi или иной системой визуального программирования. В этом случае скорость разработки действительно является главным фактором, а результирующие размер и скорость программы вторичны. Но такой подход неприменим при создании действительно серьезных программных продуктов. Представьте себе, например, Quake-III, созданный на Delphi. Такой Quake будет тормозить даже на компьютере с процессором частотой 10 GHz и RAM 2Gb. К сожалению, в последнее время все больше программистов фирм-производителей программного обеспечения стремятся облегчить себе жизнь за счет качества конечного продукта. В погоне за скоростью разработки и, соответственно, за увеличением количества выпущенных программ в единицу времени все меньше времени отводится на оптимизацию создаваемой программы.

Отсюда и получается дистрибутив WindowsME размером в 500 Mb, Office в 200 Mb и другие гиганты. (Большой размер 3D-игр — это другое дело, там 95% объема приходится на закодированные качественные графику и звук.) Огромный темп развития аппаратной части сформировал у большинства программистов следующую психологию: +50Mb, +200MHz — не важно, Pentium-III все «проглотит». Одну программу, конечно, проглотит, но когда на вашем компьютере установлено порядочное количество программ, автор каждой из которых думал так же, то может и «подавиться». Однажды, где-то в недрах Интернета, видел я замечательный, на мой взгляд, пример, смысл которого сво-дился к следующему: если бы на каком-либо отдельно взятом компьютере все програм-мы вдруг стали бы оптимизированными, это было бы эквивалентно повышению тактовой частоты в 3-5 раз, и объема RAM в 5-7 раз. Т.е. старый Celeron 300 с 64 Mb RAM стал бы работать с той же эффективностью, как сейчас Pentium-III 1000 с 256 Mb RAM.

Таким образом, в этом предисловии я постарался обосновать свою точку зрения на необходимость изучения языка С++ как средства для создания достаточно эффективного программного обеспечения, если, конечно, вы хотите заняться программированием на более-менее серьезном уровне. Конечно, вы имеете право не соглашаться с моим мнением, в таком случае можете написать мне на kyberalex@mail.ru , подискутируем.

Ну вот, все вводные слова вроде бы сказаны, можно переходить к делу — т.е. к части 1, где описываются основные понятия языка С++.

Часть 1 — основные понятия языка С++.

Раздел 1 — Переменные

Программа, написанная на С++, в самом общем виде может рассматриваться как некоторая совокупность данных и операторов. Данные — это некоторая информация, ради обработки которой и создается программа, а операторы реализуют механизм воздействия на данные. Рассмотрим вначале, как в С++ хранятся данные.

Вы, наверное, уже знаете, что вся память компьютера состоит из множества ячеек, называемых байтами. Если размер памяти, например, 256 мегабайт, то, значит, таких ячеек немного больше 268 миллионов. (Число 268 — это не опечатка, в программировании «кило-» и «мега-» обозначают умножение не на 1000, а на 1024. Поэтому, если 1 километр это 1000 метров, то 1 килобайт — это 1024 байт). Часть этих ячеек компьютер отводит под собственные нужды, часть забирает операционная система (ОС), а остальное отводится под программы и данные пользователя.

Предположим, что у нас есть 10 чисел, которые мы хотим сохранить в памяти. Для обращения к памяти можно прямо указывать номера ячеек, например, первое число будет храниться в ячейке с номером 4512, второе — с номером 4513, и т.д. ( здесь отметим, что программисты вместо «номер» говорят «адрес», а вместо «ячейка» — «байт».) Но такой способ неудобен. В самом деле, если при первом запуске программы ОС выделила для нее адреса, начиная с 4512, то нет никакой гарантии, что при повторном запуске программе будут выделены те же адреса, и как следствие, возникнет ошибка. Поэтому в С++ применен другой механизм. Байты определяются не по адресу, а по имени, причем имя задается программистом и может быть практически любым. В частности, в нашем примере для чисел можно отвести переменные с именами «число 1″, «число 2″ : «число 10″. Присвоив этим переменным наши числа, можно работать с ними, не заботясь, по каким адресам они реально расположены, С++ и ОС сами будут автоматически следить за соответствием между адресами и переменными.

Разобравшись с теорией, посмотрим, как определить переменную в С++. В общем виде переменная определяется следующим образом:

Тип ИмяПеременной = значение;

например

int chislo; — определить переменную с именем chislo типа int

char symbol; — определить переменную с именем symbol типа char

double pi = 3.14; — определить переменную с именем pi типа double

и присвоить ей значение 3.14.

Укажем правила для определения переменных.

1. Не забывайте ставить точку с запятой в конце определения каждой переменной, иначе С++ вас не поймет.

2. В именах переменных допустимо использовать строчные и прописные буквы латинского алфавита, цифры и символ _ (подчерк ). Цифра не может быть первым символом в имени.

3. Строчные и прописные буквы различаются, т.е. переменная с именем АВС не тоже самое, что переменная с именем abc.

4. Значение переменной допустимо не указывать при ее определении, а задать в другом месте программы.

5. Присвоенное значение можно изменять неограниченное число раз. Т.е., определив переменную long z = 76; мы можем далее переопределить ее так: z = 91 и т.д.

6. При переопределении переменной повторно указывать ее тип не надо.

Тип переменной определяет, сколько ячеек памяти она занимает, т.е. какое максимально возможное число можно ей присвоить, и как интерпретируется ее содержимое. Имена типов должны записываться только строчными латинскими буквами. В табл.1. приведены основные типы переменных в С++ (см. таблицу).

Переменные различных типов можно преобразовывать друг к другу. Например, пусть имеются переменные

float perem1;
int perem2;
perem1 = 2.718;

тогда мы можем написать:

Предисловие

perem2 = (int)perem1;

в результате переменная perem2 получит значение 2. Дробная часть будет отброшена, т.к. int — это целочисленный тип. Таким образом, для преобразования типов необходимо перед именем исходной переменной указать в круглых скобках тип той переменной, к которой преобразуем. Вместо исходной переменной можно указывать непосредственно число, например, так: short perem3 = (int)1.415;

Здесь perem3 получит значение 1. В большинстве современных версий С++, в принципе, можно не указывать тип для преобразования явно, например, последний пример можно записать так: short perem3 = 1.415; но это считается плохим стилем программирования, кроме того, при этом в некоторых случаях преобразование может быть выполнено некорректно.

Здесь я заканчиваю описание переменных С++. В следующем разделе будет рассказано про массивы и строки в С++.

Автор: KyberAleх

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты