Во-первых, если есть синтаксические ошибки, вы просто должны внимательно прочитать ошибки компилятора. Часто строка подсвечивается как ошибка, но на самом деле ошибка была в предыдущей строке.
Помните, что для начинающего студента могут быть некоторые артефакты редактирования, которые будут препятствовать компиляции программы, которые не будут видны. Например, однажды я увидел студента (не одного из моих), который использовал пробел вместо возврата: его код выглядел нормально на редакторе, который переносился после 80 столбцов (студент был очень терпеливым), и код даже работал, пока он не добавил //
комментарий в стиле " ", который закомментировал всю остальную часть программы. Точно так же, если вы копируете примеры кода с веб-сайта, часто появляются непечатные символы, которые также копируются (в зависимости от того, как сайт отформатировал код). Если вы сомневаетесь, повторите строку без копирования и вставки. [Это удивительно, но я видел, как это происходит намного позже.]
В случае неприятных ошибок компилятора вам, возможно, придется расширять программу, создавая новый файл и вводя весь код по мере продвижения. Обязательно компилируйте после каждого основного шага, прежде чем переходить к следующему.
Хорошо, а что если нет синтаксических ошибок? Тогда пришло время пройти через код! Для этого вы можете использовать отладчик, но использование вызовов printf
в коде также очень эффективно. Например, если есть for
цикл, добавьте оператор print для счетчика цикла. В случае вложенных for
циклов вы можете обнаружить, что неверная переменная увеличивается.
Преимущество использования printf
s заключается в его способности «сжимать» во времени / пространстве то, на что вы сейчас смотрите. Когда вы проходите через отладчик, вы также видите много неуместного состояния, и оно может быть более утомительным. Кроме того, не видя истории того, что было напечатано на консоли, вы можете пропустить некоторые шаблоны. Дело в том, что отладчик и printfs являются взаимодополняющими методами, и ни один из них не всегда лучше, чем другие.
Наконец, просто спросите своего друга, что происходит! Вместо того, чтобы смотреть на это и говорить «э-э», спросите их, что они делают: «Что теперь делает n
?» Начав диалог, они могут в конечном итоге ответить на свой собственный вопрос, или, вы можете понять, каким образом они концептуализировали программу, имели недостаток, который может привести вас к решению.
Как отмечалось в другом месте, все это становится лучше с опытом. Несмотря на то, что я программирую в течение 20 лет, только за последние 5 лет, когда я работал со студентами, я стал лучше помогать им с их ошибками.