Нужно показывать. На наглядном примере. Чтобы чувствовали на собственной шкуре.
Например большенство этих правил начинают играть роль когда:
1) Проект большой (не 100 строк ученического кода).
2) Проект командный. Т.е. приходится работать с чужими исходниками.
Если кода всего 100 строк и он весь твой, то можно вполне и goto применять массово. Ничего в общем то страшного прямо сейчас не произойдет.
Посему полезно например следующее упражнение: пусть имеем последовательность лабораторных работ, в ходе которых код последовательно дописывается/переписывается. Так вот, на каждой следующей лабораторной из последовательности все меняются исходниками. Т.е. студент B свою лабораторную работу N2 базирует не на исходниках своей лабораторной N1, а студента A. Это раз. Два -- всем разрешается (и поощряется) спрашивать, и всячески теребить предыдущего автора исходника.
Теоретически, это должно неплохо сэмулировать (в несколько усугубленном виде конечно в плане бардака, но с другой стороны, и исходники игрушечные, поэтому то на то и выйдет) реальный рабочий процесс. В таких условиях думаю сразу станет ясно почему хорошо бы придерживаться единого стиля, не выпендриваться в плане синтаксических извращений (чем больше выпендриваешься, тем больше тебя пинают те кто потом используют этот код, ты на это тратишь время => не успеваешь сделать своё), не делать лапшу-доширак из кода посредством goto и т.п.
Неплохо потом устраивать коллективный разбор полётов
Пусть народ (сами студенты!) выдвигает предложения по тому, как избежать в дальнейшем подобного бардака, выдвигает, принимает и придерживается! Сам!