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

  Юрий Ворон  | 

    | 

  Обновл. 25 Янв 2019  | 

 42057

 ǀ   19 

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

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

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

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

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

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

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

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

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


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

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

   простота;

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

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

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

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

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

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

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

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

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

Программу можно написать, используя любой редактор, даже тот же Блокнот в 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 объединяет и ряд других полезных возможностей: комплексная помощь, дополнение кода, в некоторых случаях ещё и система контроля версий.

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

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (489 оценок, среднее: 4,93 из 5)
Загрузка...

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

  1. Андрей:

    Сложно понять, но попытаюсь, ведь это самый простой курс, который я видел!

  2. Александр Казаков:

    Спасибо Юрий! Пытаюсь настроить себя на то, чтобы полностью прочитать ваши уроки. Кроме этого читаю ещё несколько книг по этой теме. Понимаю как сложно изложить простыми словами этот материал. У вас это получается хорошо. Это талант.

    1. Юрий Ворон Юрий Ворон:

      Спасибо 🙂 А какие книги читаете?

  3. Манарбек:

    Спасибо тебе, Юрий! Пока всё понятно.

  4. Василий:

    Где тут лайки ставить ?

    1. Юрий Ворон Юрий Ворон:

      Вместо лайков звёздочки 🙂

  5. Oleg:

    Спасибо. Всё как всегда хорошо и понятно расписано. Продолжайте пожалуйста в том же духе.

  6. Богдан:

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

    1. Юрий Юрий:

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

  7. Бауыржан:

    Спасибо тебе, li4ik!

    1. Юрий Юрий:

      Пожалуйста 🙂

  8. Сергей:

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

    1. Li4ik Li4ik:

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

  9. ali:

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

    1. Li4ik Li4ik:

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

  10. Тимур:

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

    1. Li4ik Li4ik:

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

  11. Василий:

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

    1. Li4ik Li4ik:

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

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

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