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

   ⁄ 

 Обновлено 27 Дек 2017  ⁄ 

 ⁄   8 

⁄   14846

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

development

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

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

Вот несколько примеров выполнения шага №1:

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

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



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

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

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

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

  они простые;

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

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

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

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

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

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

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

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

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

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. Если ваша программа имеет 3 файла .cpp, компилятор сгенерирует 3 объектных файла.

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 или Mac 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 вам потребуется специальное программное обеспечение. В то время как вы можете использовать отдельные программы для каждой из этих шагов, пакет программного обеспечения (также «Интегрированная среда разработки» или «Integrated Development Environment») объединяет в себе все эти программы. Обычно с IDE вы получите редактор кода, который имеет нумерацию строк и подсветку синтаксиса, а также компилятор и линкер. И когда вам нужно будет провести отладку программы, вы сможете использовать встроенный отладчик. Кроме того, IDE объединяет ряд и других полезных возможностей, таких как: комплексная помощь, дополнение кода, в некоторых еще и система контроля версий.

В следующем уроке мы поговорим об установке IDE.

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

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

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

  1. Сергей:

    Братан. Ты красавчик! Спасибо за труды, вот теперь изучаю по 3-5 уроков в день. Есть еще рекомендации по литературе?

    1. Li4ik:

      Спасибо 🙂 Насчет книг писал здесь.

  2. ali:

    Что нужно знать до языка C ++. Ничего не знающему.

    1. Li4ik:

      Ничего, всё есть здесь. С самого нуля всё объясняется.

  3. Тимур:

    Небезразличный ты человек,большое тебе спасибо! Для начинающего человека ты просто находка! Читая твои уроки уходит чувство страха перед неизвестностью и непонимания. Да парой нужно вот так просто объяснять.

    1. Li4ik:

      Спасибо. Сам долго искал подобный ресурс, где бы всё вот так с нуля и простым языком объяснялось. Приятно, что труд проходит не зря.

  4. Василий:

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

    1. Li4ik:

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

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

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

ПОДПИСЫВАЙТЕСЬ

НА КАНАЛ RAVESLI В TELEGRAM

@ravesli

ПОДПИСАТЬСЯ БЕСПЛАТНО