Урок 3. Введение в разработку программных продуктов

   ⁄ 

 Обновлено 24 Фев 2017

  ⁄   

⁄  2

Прежде чем мы сможем написать и выполнить нашу первую программу, мы должны понять, как вообще разрабатываются программы на языке C++. Вот упрощённая графическая схема:

development

Шаг 1: Определите проблему, которую вы хотели бы решить.

Этот шаг называется «что», на нем вы должны понять, что же вы хотите сделать, для чего и какая должна быть программа. Этот шаг может быть как самым простым, так и самым сложным. Изначально, это просто 🙂 Все, что вам нужно — четко сформулированная идея. Только затем вы уже будете готовы к следующему шагу.

Вот несколько примеров реализации шага 1:

«Я хочу написать программу, которая позволит мне вводить цифры, а затем вычислять их среднее арифметическое.»

«Я хочу написать программу, которая генерирует 2D лабиринт и позволяет пользователю перемещаться по нему.»

«Я хочу написать программу, которая подсчитывает в файле цены на акции и предсказывает, будут ли скачки вверх или вниз.»

Шаг 2: Определитесь, как вы собираетесь решить эту проблему.

Здесь мы уже отвечаем на вопрос «как», каким образом можно решить проблему с шага 1. Этим шагом довольно часто пренебрегают при разработке программного обеспечения. Суть в том, что есть много способов решить проблему, тем не менее, половина из этих решений хорошие, половина плохие. Очень часто, у программиста есть идея, он садится и немедленно начинает кодить. В большинстве всех случаев это приводит к решению, которое попадает в плохую категорию.

Как правило, хорошие решения имеют следующие характеристики:

они простые;

они хорошо задокументированные (записанные);

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

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

Когда вы садитесь и начинаете сразу программировать, вы обычно думаете: «Я хочу сделать …это и это…». Таким образом вы принимаете решение, которое позволит вам поскорее выполнить задание. Это может привести к ненадежным программам, которые в дальнейшем будет трудно изменить, добавить что-то новое или в них будет много багов (ошибок).

Исследования показали, что программист тратить только 20% времени на собственно написание программы. Остальные 80% тратятся на отладку (исправления ошибок) или на поддержку (добавление новых фич, расширений в программу). Следовательно, лучше потратить дополнительное время на обдумывания лучшего способа решения проблемы, о возможной будущей поддержки этой программы (легкости внесения изменений или добавление новых возможностей) перед самим написанием кода, нежели в будущем тратить те злосчастные 80% времени на ошибки или начинать всё сначала.

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

Шаг 3: Напишите программу.

Для того, чтобы написать программу, нам нужны две вещи. Во-первых, знание определенного языка программирования — это то, чему вы должны научиться в этих уроках. Во-вторых, редактор. Можно написать программу, используя любой, который вы захотите, редактор, даже тот же блокнот в Windows или текстовый редактор Vi в Unix. Тем не менее, мы настоятельно рекомендуем использовать редактор, предназначенный для программирования. Не беспокойтесь, если у вас его еще нет. В следующих уроках мы будем устанавливать его с вами.

Типичный редактор, предназначенный для кодинга, имеет несколько особенностей, которые делают программирование гораздо проще:

1) Нумерация строк. Это функция очень полезна, когда компилятор выдает нам сообщения об ошибках. Типичная ошибка будет включать в себе текст «ошибка, строка 64». Без редактора, который показывает нумерацию строк, найти строку 64 будет весьма затруднительно.

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

3) Специальный шрифт. В обычных шрифтах очень часто бывают ситуации, когда возникают непонятки между числом 0 и буквой O или между числом 1, буквой l (нижний регистр L) или буквой I (верхний регистр i). Вот для этого и нужен особенный шрифт, в котором будет легко различить эти символы, предотвращая случайное использование одного символа вместо другого.

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

Также отметим, что многие сложные программы на C++ имеют несколько файлов .cpp. Хотя большинство программ, которые вы будете создавать, первоначально будут иметь только один файл .cpp, можно спокойно писать программы, которые имеют десятки, если не сотни отдельных файлов .cpp.

Шаг 4: Компиляция.

Для того, чтобы скомпилировать программу нам нужен компилятор. Работа компилятора состоит из двух частей:

1) Проверка программы на соответствие правилам языка C++ (проверка синтаксиса). Если проверка будет неудачной, то компилятор выдаст сообщение об ошибках, которые нужно будет исправить.

2) Конвертация каждого исходного файла с кодом в объектный файл (или еще называют «объектный модуль») на машинном языке. Объектные файлы, как правило, имеют названия name.o или name.obj, где name должно быть такое же как имя исходного .cpp файла. Если ваша программа имеет 5 .cpp файлов, компилятор сгенерирует 5 объектных файлов.

compile

Стоит упомянуть, что большинство операционных систем Linux и Mac OS X уже имеют встроенный компилятор C++, который называется g++. Для того, чтобы осуществить компиляцию g++ с командной строки вам нужно прописать:

g++ -c file1.cpp file2.cpp file3.cpp

Здесь мы создадим file1.o, file2.o и file3.o. -c означает «только скомпилировать», т.е. просто создать .o (объектные) файлы.

Есть и другие компиляторы для Linux, Windows и любой другой ОС. В сложных проектах некоторые IDE (интегрированные среды разработки) используют makefile – файл, который сообщает компилятору, какие файлы нужно скомпилировать. Makefiles — это сложная тема и есть целые книги, посвящены только им. К счастью, вам не нужно беспокоиться о них, поэтому копаться в этом мы сейчас не будем.

Шаг 5: Линкинг (связывание).

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

linker

Кроме объектных файлов, линкер также включает файлы из стандартной библиотеки С++ (или любой другой библиотеки, которую вы используете, например, библиотеки графики или звука). Сам по себе язык С++ довольно маленький и простой. Тем не менее, подключается большая библиотека дополнительных компонентов, которые могут использовать ваши программы, и эти компоненты находятся в стандартной библиотеке C++. Например, если вы хотите вывести что-то на экран, у вашей программе должна быть специальная команда, которая сообщит компилятору, что вы хотели бы использовать I/O (вход/выход) из стандартной библиотеки C++.

После того, как компоновщик закончит линкинг (связывание) всех объектных файлов (при условии, что не будет ошибок), вы получите исполняемый файл. Опять же, в целях наглядности, чтобы связать .o файлы, которые мы создали выше в Linux или OS X, мы снова можем использовать g++:

g++ -o prog file1.o file2.o file3.o

-o говорит g++, что мы хотим получить исполняемый файл с именем «prog» с файлов file1.o, file2.o и file3.o. При желании, шаги компиляции и линкинга можно объединить вместе:

g++ -o prog file1.cpp file2.cpp file3.cpp

Здесь мы скомбинировали эти два шага и получим исполняемый файл под именем «prog».

Шаг 6: Тестирование и отладка.

Это самая забавная часть 🙂 Здесь вы уже можете запустить исполняемый файл и посмотреть, выводит ли оно то, что предполагалось изначально. Если нет, то пришло время немножко подебажить (искать и исправлять ошибки, по другому «отладка»). Более подробно об отладке мы поговорим в следующих уроках.

Обратите внимание, что для шагов 3, 4, 5, 6 нужно определенное программное обеспечение. В то время как вы можете использовать отдельные программы для каждой из этих шагов, пакет программного обеспечения, известного как интегрированная среда разработки (IDE), собирает и объединяет все эти программы в одно целое. Обычно с IDE вы получаете редактор кода, который имеет нумерацию строк и подсветку синтаксиса. Вы получаете компилятор и линкер. В среде автоматически будут генерироваться параметры, необходимые для того, чтобы скомпилировать и связать вашу программу в исполняемый файл, даже если она состоит из нескольких файлов. И когда вам нужно будет отладить программу, вы сможете использовать встроенный отладчик. Кроме того, IDE, как правило, объединяет ряд других полезных возможностей, таких как: комплексная помощь, дополнение кода, в некоторых еще и система контроля версий.

В следующем уроке речь будет идти как раз об установке IDE.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (56 оценок, среднее: 4,96 из 5)
Загрузка...
Поделиться в:
Подписаться на обновления:

Комментариев: 2

  1. Василий:

    Отличный сайт!!! Так держать!!! Представляю сколько труда было при переводе LearnCpp.com А дальнейшие уроки планируются?

    1. Li4ik:

      Спасибо! Очень приятно. Планирую продолжать перевод дальше 🙂

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *