Отправляет email-рассылки с помощью сервиса Sendsay

Инвестирование с нуля

  Все выпуски  

Программирование на Си и С++ с нуля: Содержание первых выпусков


Школа программирования

121) Программирование на Си и С++ с нуля

Для большой группы вновь присоединившихся повторяю содержимое первых выпусков.

Эта рассылка выходит в рамках проекта "Школа программирования с нуля" http://www.infiltration.ru/p/, поэтому нумерация выпусков будет сквозной по основному проекту. То есть, она будет не 1 - 2 - 3 - ..., а 121 - 124 - ... итд. Кто хочет читать основную Школу, подписывайтесь на оригинальную рассылку.

Введение. Что такое язык программирования?

Абсолютно все программы, будь то компьютерная игра, утилита для архивирования данных, браузер для работы в Интернете или операционная система Windows, написаны на одном или нескольких языках программирования. На сегодня насчитывается около 400 таких языков, более-менее активно используемых для создания программ, и несколько тысяч давно забытых или не получивших широкой известности, иногда незаслуженно.

Язык программирования позволяет описывать различные алгоритмы с помощью набора определенных (ключевых) слов и различных вспомогательных символов. Используя ключевые слова - они называются команды или операторы, программист определяет конкретную последовательность действий, которую компьютер должен выполнить, чтобы решить требуемую задачу. Например, когда в компьютерной игре персонаж, управляемый программой, решает, зайти ли ему в замок или продолжить движение по дороге, он исполняет алгоритм, который программист мог записать примерно так:

- проверить, какова численность войска противника в замке;
- сравнить численность моей армии и вражеской;
- если моя армия больше армии противника в три и более раз, то атаковать замок;
- иначе продолжить движение по дороге;

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

Что такое компилятор?

После того, как текст конкретной программы набран (это можно сделать в любом текстовом редакторе, хотя для этого имеются и специальные приложения), его необходимо преобразовать в программу, которая и будет исполняться на компьютере. Важно понять, что сам текст только формально описывает алгоритм работы, но он не является программой.

Дело в том, что процессор может исполнять только двоичный код, представляющий собой очень простые "машинные" команды, с их помощью написать более-менее сложную программу практически невозможно. Там, где в обычном языке программирования достаточно одного оператора сложения двух чисел, "машинных" команд могут потребоваться десятки.

Перевод из текста в двоичный код осуществляется специальными программами, которые называются компиляторы или трансляторы. Они транслируют, переводят тексты, написанные на различных языках программирования, в "машинные" команды, проверяя при этом, не сделал ли разработчик ошибки. Ведь когда вы набираете на компьютере красиво оформленное поздравление своему приятелю с днем рождения, вы иногда можете ошибиться, написать "приват" вместо "привет" и не заметить этого. А компилятор сразу распознает незнакомое слово, как это делают программы проверки орфографии в текстовых редакторах, и сразу сообщит о выявленной неточности. Законченной программы при этом, конечно, не получится. Пока компилятор будет выдавать вам сообщения об ошибках, получить готовую программу вы не сможете. А исправлять эти ошибки придется самому - компилятор только укажет неверную строчку и кратко охарактеризует обнаруженную проблему.

Вы можете ошибиться и по другому. Например, написать все слова грамотно, без синтаксических ошибок, но сделать ошибку логическую - перепутать возраст и случайно написать "30-летием" вместо "20-летием". Такие ошибки никакая программа не выявит, а последствия могут быть гораздо серьезнее, чем в первом случае - ваш приятель скорее всего не заметит описки в слове "приват", но может обидеться, если вы добавите к его возрасту десять лет.

Также и с программами. Если вы случайно перепутаете знаки сравнения в вышеприведенном примере, когда персонаж решает, атаковать ли ему противника, и случайно напишете

- если моя армия меньше армии противника в три и более раз, то атаковать замок;

(в тексте программы для этого достаточно вместо знака "больше" набрать знак "меньше"), то компьютер будет играть глупо и постоянно бросаться в нападение на превосходящие силы врага.

Находить такие логические ошибки довольно трудно. Согласно статистике, 60% всего времени при создании программ уходит на поиск и вылавливание ошибок (этот процесс называется отладкой). Именно в этом и заключается мастерство настоящего программиста - писать свои программы как можно более качественно и надежнее. Такое мастерство приходит только с опытом.

Почему С++?

Язык С++ (по русски произносится "си плюс плюс", по английски - "си плас плас" :-) официально получил свое название в 1983 г. Он был создан на основе более старого языка Си с целью упростить процесс создания программы и позволил программисту составлять алгоритм с помощью привычных человеку понятий. Если программирование на Си напоминает скорее программирование в "машинных" кодах, то в С++ можно настроить свою программу на конкретную предметную область и работать не с числами и переменными, а, например, понятиями "валюта" или "окно", что значительно легче и удобнее. При этом С++ сохраняет преимущества Си, позволяя добиваться очень высокого быстродействия получаемых программ.

Сегодня С++ очень широко распространен во всем мире. Большинство программ создается именно на этом языке, как в России, так и за рубежом. В частности, система Windows, большинство системных и хакерских утилит :) , почти все игры и даже бухгалтерские программы 1C :) написаны на Си и С++.

Что такое визуальное программирование?

Изучить команды С++ и научиться писать на нем небольшие программы, например, вычисляющие сумму двух чисел, можно очень быстро. Однако сам С++ не одержит никаких средств, позволяющих организовать ввод чисел в программу и их отображение на экране. В нем вообще нет никаких средств для организации взаимодействия с пользователем. Более того, в С++ нет никаких средств для создания окон и элементов Windows. Да и придумывался С++, когда Windows еще не было.

Все, что требуется для организации пользовательского интерфейса с помощью С++, выделено в специальные библиотеки, содержащие множество самых разных дополнительных возможностей. Эти библиотеки имеются для большинства операционных систем и аппаратных платформ, благодаря чему одна и та же программа на С++ может работать на разных типах платформ - надо только сменить библиотеку, и программу можно без существенных изменений перенести, например, из Windows в Linux.

Однако использование подобных библиотек для организации интерфейса весьма трудоемко. Если с их помощью попытаться сделать на С++ самую простую программу для Windows, которая будет выводить на экран строчку "Привет!", то потребуется написать сотни строк громоздкого и непонятного кода. А если вы захотите добавить в главное окно кнопку, меню или картинку, то такая работа превратится в настоящее мучение.

К счастью, компании, производящие средства программирования, пошли по пути, отличному от простого выпуска подключаемых библиотек. Они предлагают разработчикам так называемые среды быстрой разработки (Rapid Application Development, RAD-среды), которые берут на себя всю рутинную работу, связанную с подготовкой программы к работе в Windows, генерируют соответствующий текст программы автоматически и позволяют программисту сосредоточиться исключительно на решении своей задачи. Различные элементы управления - кнопки, переключатели, картинки, и другие объекты Windows, которые называются компоненты в терминологии RAD-систем, перетаскиваются мышкой в проектируемом окне, как в игровом компьютерном конструкторе, поэтому RAD-среды называются еще визуальными средами разработки - как вижу проектируемые окна и диалоги, такими они и будут во время работы программы. Разработчику остается только определить, что делать при нажатии на ту или иную кнопку или при выборе определенного пункта меню, по прошествии определенного промежутка времени и вообще, при наступлении того или иного события, которое случается с самой программой или с операционной системой, в которой она запущена. Поэтому программирование в RAD-средах называется событийно-ориентированным. Конечно, реагировать надо не на все события, а только на те, которые требуются для полноценной работы вашей программы.

С помощью всевозможных визуальных редакторов или Мастеров - специальных программ, которые серией последовательных вопросов определяют, что вы хотите сделать, можно подчас создать программу, не написав вручную ни строчки кода! Более того, разработчику в большинстве случаев совершенно не надо знать внутреннее устройство Windows - а ведь это сотни специальных системных вызовов, разобраться в которых начинающему неподготовленному программисту довольно сложно. Все нюансы работы операционной системы скрыты внутри готовых компонентов, которые можно использовать как строительные кубики для "складывания" своей программы.

Эти компоненты (например, круглые кнопки или модули шифрования) распространяются самыми разными способами. Некоторые свободно доступны через Интернет, некоторые продаются как shareware-продукты. Вы и сами можете попробовать написать свой компонент и попытаться его распространить, если он окажется полезным.

Почему Borland C++Builder?

Система Borland C++Builder - наиболее совершенная визуальная среда быстрой разработки на С++ для Windows. В ее состав входят сотни самых разных компонентов, а создание законченной программы требует минимума усилий. Ближайший конкурент Borland C++Builder - это Microsoft Visual C++ 2005, в котором реализована поддержка визуальной разработки на С++ (желающие могут пользоваться и этой системой, однако при этом будут определенные расхождения), а также Microsoft Visual Basic, классическая среда визуальной разработки на языке Бейсик.

У системы Borland C++Builder есть родной брат (или сестра :) - RAD-среда Borland Delphi, технология работы с которой полностью совпадает с технологией, принятой в C++Builder. Только пишется программа в Delphi не на С++, а на языке программирования Паскаль, точнее, его объектной версии Delphi Language.

Какой нужен ПК, чтобы начать программировать на Borland C++Builder?

Разработка программ, особенно в RAD-системах, требует хорошего компьютера. Но здесь многое зависит от версии C++Builder, которую вы сможете найти. Напоминаю, что самую последнюю версию (именно на нее я буду ориентироваться; она теперь называется Turbo C++) можно с 5 сентября официально скачать с сайта turboexplorer.com (правда, размер ее около 300 мб), и в дальнейшем бесплатно пользоваться. Правда, Turbo C++, судя по всему, будет работать только на платформе .NET - расширении Windows XP/2000, которое можно бесплатно скачать с сайта Microsoft.
Но достаточно и гораздо более старых версий, например, C++Builder 4, который вышел в 1999 г.

На жестком диске надо выделить до 1 Гб, оперативной памяти требуется побольше, желательно от 512 Мб (для последней версии). Конечно, всегда неплохо иметь быстрый процессор, но при создании программ решающей роли он не играет, потому что процесс компиляции (преобразование текста С++ в готовую программу) происходит быстро.

Отлаживать программу крайне желательно в Windows XP или 2000, значительно более устойчивой системе, чем Windows 9х, потому что механизм отладки C++Builder нередко переводит операционную систему в стрессовое состояние, особенно если в программе встречаются ошибки.

Монитор желательно иметь чем больше, тем лучше. Программирование требует пристального внимания и тщательного рассматривания текстов Си++ и проектируемых окон. Кроме того, процесс программирования становится проще, если удается охватывать взглядом большие части исходных текстов, поэтому неплохо установить на мониторе максимально допустимое разрешение.


(c) 2004-2006 Сергей Бобровский bobrovsky as russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса всегда тут:
http://www.infiltration.ru/p/

Дизайн рассылки: Алексей Голубев - Web-дизайн и web-программирование


В избранное