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

  Юрий  | 

  |

  Обновл. 10 Янв 2023  | 

 216301

 ǀ   45 

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

compile

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

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

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

Шаг №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 (1 932 оценок, среднее: 4,92 из 5)
Загрузка...

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

  1. Tim:

    Случайно попал на этот сайт и не собирался учить этот язык, но очень удивительно изложено, понятно даже для меня, человека сверхдалекого от программирования. Бывает же)))… молодец!

  2. Павел:

    Здравствуйте Юрий! Спасибо Вам все по полочкам от простого к сложному. Начинал несколько раз самостоятельно знакомиться с Си, или на тот момент не был готов или чересчур все преподносилось сложно. В голове каша перегружался и откладывал на потом. Надеюсь с Вашей помощью достигну положительного результата в освоении азов программирования на СИ.

  3. Олександр:

    До какого уровня знания c++ можна изучить благодаря курсу?

    1. Константин:

      ну ты будешь его знать весь! Останеться только сгенерировать идеи для написания на этом языке…

  4. Дана:

    Большое спасибо за столь классный курс, программированием хотела заняться ещё года 2 назад. Но интересных курсов не нашла. Ваш курс очень понятен , хотя мне всего 15 . Очень интересно изучать программирование с вашими уроками( статьями) . Ещё раз спасибо))

    1. Фото аватара Юрий:

      Пожалуйста)) Надеюсь, что Равесли не отобьет у Вас желание изучать программирование в дальнейшем 🙂

  5. Начинающий прогер:

    Это очень понятно.. СПАСИБО БОЛЬШОЕ!!!

  6. Миха:

    Я еще не встречал настолько понятного объяснения скучной теории для начинающих программистов. Спасибо вам.

    1. Фото аватара Юрий:

      Пожалуйста 🙂

    2. Дмитрий:

      Согласен! Очень доходчиво и просто излагает. Если я разберусь и выучу с его помощью С++, то даже денег кину человеку.

  7. Семён:

    Через тернии к звездам, ваши освещают путь в познании на самом истинном выражении, спасибо…

  8. София:

    Юрий, спасибо огромное, все хотела научиться, но вечно откладывала, однако я зашла сюда и затянуло!
    С!
    П!
    А!
    С!
    И!
    Б!
    О!

    1. Фото аватара Юрий:

      Пожалуйста 🙂

  9. Марта:

    огромное спасибо за ваш курс!
    чётко и понятно изложено, читать приятно)

  10. Сергей:

    Хороший, четкий стиль изложения.

  11. Лидия:

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

  12. Максим:

    Юрий ты бох для такова чайника как я . Спасибо тебе . Побольше таких людей как ты жить проще будет . Спасибо !Спасибо !

    1. Фото аватара Юрий:

      Та не, не бох)

  13. Сергей:

    Огромнейшее Вам спасибо за сей труд. Начал изучать ваш курс где-то пол часа назад и я просто в восторге. Я полнейший ноль, всё что я знаю о программировании это то что было написано здесь выше на 4 уроках, но это уже вызывает у меня радость в том, что я хоть что-то начал понимать. Я пробовал начать уже не один, раз на протяжении нескольких лет, но меня всё время просто отталкивало, я просто не понимал, что там написано (ну то есть я читаю слова и абсолютно не понимаю, что эти люди хотят мне сказать этими словами).
    Я пытаюсь заниматься наукой и у меня есть реальные идеи, для реализации которых, похожи что без программирования не обойтись (как бы я этого не хотел, но это так))) поэтому я всё же хочу ещё попробовать.
    Ваш курс мне очень нравиться и здесь всё понятно (пока))))
    Ещё раз спасибо!

    1. Фото аватара Юрий:

      Пожалуйста. Надеюсь, что этот курс вас не разочарует 🙂

  14. Vladimir:

    Юрий, спасибо за отличную работу над образовательным ресурсом!

    В разделе "Специальный шрифт" касательно редактора IDE я бы обязательно дописал, что для редактора кода используются моноширинные шрифты, обладающие множеством преимуществ (визуальное восприятие, навигация по коду и тд)
    А читатель при желании смог бы уже расширить свой кругозор поискав больше информации в сети

  15. Антон:

    Спасибо Юра, наткнулся — все толково!

    1. Фото аватара Юрий:

      Пожалуйста 🙂

  16. Владимир:

    Много раз хотел освоить хоты бы лексику. А тут занялся со школьниками и студентами разработками. Они уже с"Ардуино" на ТЫ, а я и разговор поддержать не могу. Они уже поступают в Бауманку. Нашел эти курсы с "0". Почувствовал что могу и пора , а мне уже 66. Спасибо, тебе что есть такие в РФ. С уважением ! Владимир.

    1. Фото аватара Юрий:

      Спасибо и вам, что читаете 🙂

    2. Dulat:

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

      1. Фото аватара Юрий:

        Пожалуйста.

        Читайте 🙂

  17. Андрей:

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

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

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

    1. Фото аватара Юрий:

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

  19. Манарбек:

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

  20. Василий:

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

    1. Фото аватара Юрий:

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

  21. Oleg:

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

  22. Богдан:

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

    1. Фото аватара Юрий:

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

  23. Сергей:

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

    1. Фото аватара Юрий:

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

  24. ali:

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

    1. Фото аватара Юрий:

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

  25. Тимур:

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

    1. Фото аватара Юрий:

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

  26. Василий:

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

    1. Фото аватара Юрий:

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

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

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