Урок №3. Введение в разработку программного обеспечения

Урок №3. Введение в разработку программного обеспечения

Coding


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

Схема разработки ПО (сокр. от «Программное Обеспечение»):


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

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

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

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

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

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


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

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

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

  простота;

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

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

  надёжность: соответствующая обработка ошибок и экстренных ситуаций.

Когда вы садитесь и начинаете сразу программировать, вы думаете: «Я хочу сделать этовот это и ещё вот это!». Таким образом вы принимаете решения, которые позволят вам поскорее выполнить задание. Однако это может привести к тому, что вы получите программу, которую позже будет трудно изменить/модифицировать, добавить что-то новое или вам попросту придётся разбираться с большим количеством багов.

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


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

Для того, чтобы написать программу, необходимы две вещи:

1) знание определённого языка программирования (этому мы вас научим);

2) редактор кода.

Программу можно написать, используя любой редактор, даже тот же Блокнот в Windows или текстовый редактор Vi в Unix. Тем не менее, мы настоятельно рекомендуем использовать редактор, предназначенный для программирования. Не беспокойтесь, если у вас его ещё нет. В следующем уроке мы рассмотрим процесс установки такого приложения. Редактор типичного программиста, как правило, имеет следующие особенности, которые облегчают программирование:

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

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

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

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

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


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

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

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

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

compile


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

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

Таким образом мы создадим file1.o, file2.o и file3.o. -c означает «только скомпилировать», т.е. просто создать .o (объектные) файлы. Есть и другие компиляторы для Linux, Windows и других операционных систем.


Шаг №5: Линкинг (связывание объектных файлов)

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

linker


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

После того, как компоновщик закончит линкинг всех объектных файлов (при условии, что не будет ошибок), вы получите исполняемый файл. Опять же, в целях наглядности, чтобы связать .o файлы, которые мы создали выше в Linux или macOS, мы можем снова использовать 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-6 вам потребуется специальное программное обеспечение. Хотя вы можете использовать отдельные программы на каждом из этих шагов, пакет программного обеспечения (или ещё «IDE» от англ. «Integrated Development Environment») объединяет в себе все эти программы. Обычно с IDE вы получаете редактор кода с нумерацией строк и подсветкой синтаксиса, а также компилятор и линкер. А когда вам нужно будет провести отладку программы, вы сможете использовать встроенный отладчик. Кроме того, IDE объединяет и ряд других полезных возможностей: комплексная помощь, дополнение кода, в некоторых случаях ещё и система контроля версий.


Источник

Понравилась статья? Тогда поделитесь ссылкой с друзьями! Также не забывайте подписаться на наш канал и посетить наш чат


Report Page