Главная > Уроки > Что такое комментарии и зачем они нужны?

Записывайся на этот курс на Stepike!

Что такое комментарии и зачем они нужны?

Возможно вы заметили, что в листингах из примеров встречается не только код программ, но и мои пояснения написанные после "//". Это комментарии. Они предназначены для того, чтобы пояснять какую-нибудь сложную и непонятную часть вашей программы. Кроме того, иногда их используют, чтобы на время отключить какую-то часть кода. Это возможно потому, что всё что записано в комментарии компилятор игнорирует. Если быть точнее то к тому времени, как компилятор начнёт обрабатывать код программы все комментарии будут уже удалены. Поэтому туда можно писать всё что угодно.

Пример использования комментариев в программе

Рис.1. Пример использования комментария в программе. (Язык Fortran)

В языке Си есть два вида комментариев. Первый вид тот, который я использую в коде. Такой комментарий называет однострочным. Он действует с того момента как появился и до конца текущей строки. Есть ещё и многострочный комментарий. Начало такого комментария обозначается последовательностью "/*", а конец -- "*/". Всё, что будет записано между этими двумя последовательностями символов не будет восприниматься компилятором. Обычно многострочные комментарии используют для описания больших кусков кода, очень сложных для понимания функций, для указания авторства, для исключения большого куска кода из программы и т.д.

Вы спросите а зачем нужно отключать куски кода программы? Иногда это нужно для того, чтобы найти ошибку в программе или проверить как работают отдельные её части. Если просто удалить код, то потом его придётся писать заново, а так, закомментировал на время, а потом обратно раскомментировал, когда потребовалось. Когда вы начнёте писать более менее большие программы, тогда вы воочию убедитесь в пользе.

Комментарии пишутся программистами для других программистов, которые в будущем будут читать/изменять этот код. Но даже если вы пишите код сугубо в личных целях, то не рекомендую вам брезговать оставлять комментарии. По прошествию нескольких месяцев бывает очень трудно вспомнить, что же ты тут такое делал и почему именно так делал, а не иначе.

Комментарии в коде могут быть как очень смешными:

Листинг 9.

// Магия. Не трогать.

//Этот код отстой, и мы оба это знаем. 
//Так что двигайся дальше, а идиотом ты назовешь меня потом.

// Дорогой я_из_будущего! Пожалуйста, прости меня за этот код.

// Если я еще раз увижу такое, мне придется начать носить на работу оружие.

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

// пьян, исправить позже

// Когда я начинал это писать, только Бог и я понимали, что я делаю
// Сейчас остался только Бог

Так и не очень:

Листинг 10.

//Пожалуйста, работай

// Я не несу ответственности за этот код.
// Они меня заставили написать его против моей воли.

/*
Если вы читаете эти строки, значит вам поручили мой предыдущий проект.
Я очень, очень сочувствую вам. Удачи.
*/

Сохрани в закладки или поддержи проект.

Практика

  1. Откройте программу "Hello, World". Попробуйте закомментировать строчку printf("Hello, World!\n"); Как вы думаете, как изменится работа программы? Проверьте свое предположение, скомпилировав и запустив эту программу.
  2. Закомментируйте в следующей программе некоторые строки так, чтобы на экране появился следующий текст:
  3. Wake up, Neo...

    The Matrix has you...

    Follow the white rabbit...

    Программа для изменения

    #include <stdio.h>
    int main (void){
      while (1 > 0) {
        printf("Wake up, Neo...\n\n");
      }
      
      if (0 > 1){	
        printf("The Matrix has you...\n\n");
      }
    
      printf("Follow the white rabbit...\n");  
      return 0;
    }

    Не бойтесь новый непонятных команд! С ними мы ещё разберёмся. =) Программистам часто приходится работать с кодом, в котором они не всё до конца понимают.

  4. Удалите из следующей программы комментарии, которые комментируют код а не поясняют его, и запустите полученную программу.
  5. Программа

    #include <stdio.h>
    #include <locale.h> //библиотека с локализацией, чтобы были доступны русские буквы
    int main(void) {
      setlocale(LC_ALL, ""); //подключаем локализацию
    //  char str1[]= "Поздравляю! Вы справились с задачей!";
    //  for (int i=0; i<37; i++)
    //	printf("%c",str1[i]);
      
      printf("\n");
      return 0;
    }

Дополнительные материалы

Оставить комментарий

Чтобы код красиво отображался на странице заключайте его в теги [code] здесь писать код [/code]

Комментарии

Лёха
Можно, конечно, шутить по поводу комментариев, но всё же за многие годы выработаны определенные рекомендации по их написанию. Например, имхо, очень ёмко они описаны на сайте learncpp.com:

* At the library, program, or function level, use comments to describe WHAT.

* Inside the library, program, or function, use comments to describe HOW.

* At the statement level, use comments to describe WHY.

https://www.learncpp.com/cpp-tutorial/comments/
В моём вольном переводе это будет выглядеть так:
* На уровне библиотек, программ и функциий описывайте ЧТО (они делают)
* Внутри библиотек, программ и функций описывайте КАК (они это делают)
* На уровне команд, пользуйтесь комментариями чтобы описать ПОЧЕМУ (они это делают)
KaDeaT
Отличная ссылка. Спасибо за содержательный комментарий.)
Игорь
Спасибо за интересный урок и ссылки.
KaDeaT
Пожалуйста! Приходите снова.
Art
Компилятором пользуюсь Code::Blocks 16.01!
Lola_lala
Исправьте в 4 предложении "врямя"
KaDeaT
Спасибо! Поправил.
Владимир
Меня иногда поражает ход мыслей авторов курсов. Давали-давали теорию, а потом такие: "Откройте программу "Hello, World"". ЧТО ЭТО ЗА ПРОГРАММА?!!!!! Где Вы ранее говорили о том, как её открывать?
KaDeaT
Здесь: https://youngcoder.ru/lessons/1/ide/pelles_c/osnovy_pellesc.php
Владимир
Бесит просто такой подход!!!
KaDeaT
Не нужно беситься. Об этой программе говорилось в первом уроке. Здесь: https://youngcoder.ru/lessons/1/ide/pelles_c/osnovy_pellesc.php
dimaseyy
Написал коммент, а меня роботом назвали
KaDeaT
Гугл-капча она такая!
ИГОРЬ
интересно
SuDunPo
В последней задаче, пока не исправишь в строке, где
 for (int i=0; i<37; i++) 

на i<65 ,будет выводить неполное предложение, или так задумано?)
Eugen19979
Вывод третьей программы случился такой:

??????????! ?? ?????????? ? ???????!
Press any key to continue...

Это из-за проблем с локализацией?
CodeR
#include <stdio.h>
int main(void) {
printf("Дорогой я%cиз%cбудущего%с Пожалуйста%с прости меня за этот код%сn",'_', '_', '!', ',', '.');

return 0;
}
Александр
Во втором задании вывод не полный.
Александр
Счётчик похоже побайтово считает символы. В php такое встречал, я его изучал немного. Русские символы 2 байта занимают места.
Александр
Тогда получится 30 символов на 2 умножить, получим 60 и ещё 4 пробела и два знака восклицания. Значит
 for (int i=0; i<66; i++)