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