Лидеры рейтинга

ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

1058

Россия, пос. Теплоозёрск, ЕАО


ID: 226425

Konstantin Shvetski

Модератор

314

Россия, Северодвинск


ID: 401284

Михаил Александров

Советник

278

Россия, Санкт-Петербург


ID: 137394

Megaloman

Мастер-Эксперт

177

Беларусь, Гомель


ID: 400669

epimkin

Профессионал

105


ID: 404002

sglisitsyn

6-й класс

42


ID: 242862

Hunter7007

Мастер-Эксперт

31

Россия, Омск


8.10.3

30.10.2021

JS: 2.10.3
CSS: 4.6.0
jQuery: 3.6.0
DataForLocalStorage: 2021-12-04 22:46:17-standard


Создание программ на языках Pascal, Delphi и Lazarus.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Консультация онлайн # 108698

Раздел:  Pascal / Delphi / Lazarus
Автор вопроса: M3sergey
Дата: 09.11.2007, 14:17 Консультация закрыта
Поступило ответов: 5

Здравствуйте, уважаемые эксперты.

Я студент, начал изучение языка Паскаль. На одной из первых лекций преподаватель сказал, что в программах "не рекомендуется" использовать оператор безусловного перехода GoTo. Однако ни он, никто из других преподавателей внятно не объяснил - почему. То же самое встречалось в некоторых книгах, и по другим языкам программирования. Может быть Вы свожете объяснить, в каких случаях этот оператор можно использовать, в каких - нет, и почему.

Заранее благодарен,
m3sergey.

Ответ # 192911 от Зиновьев Дмитрий Владимирович
Здравствуйте, M3sergey!
Сегодня все говорят о ООП. Это раз. Там и не предусмотрено никаких GOTO;
Во-вторых, любой код можно написать таким образом, чтобы не использовать оператор перехода.
В-третьих, и главное, в будущем, при отладке, особенно больших проектов, вы не раз ругнетесь, если будете использовать его. То бишь, он затрудняет чтение и отладку кода, что очень и очень важно в профессиональной работе программиста.

Зиновьев Дмитрий Владимирович

Посетитель
09.11.2007, 14:50
Ответ # 192922 от Verena
Здравствуйте, M3sergey!
Нельзя сказать, что использование go to неприемлемо ни в каких случаях. Мне, честно говоря, он никогда необходим не был (в языках высокого уровня), но бывают ситуации, когда им можно воспользоваться, например, организовать экстренный выход из программы без функций типа halt. Но лучше всё-таки этого избегать:
1. Это сильно затрудняет понимание кода.
2. Безусловные переходы по программе могут привести к критическим ошибкам, исключениям (например, ошибки циклов, или недопустимые арифметические действия - не всегда просто предсказать, какие значения переменных или условий будут использоваться при таком переходе).
3. Это затрудняет отладку программ, поскольку следить за бесконечными метками и перемещениями к ним требует большего внимания и времени.
Главное, что можно сказать "внятно" - это то, что использованием go to программист сильно затруднит жизнь себе и коллегам, которые, возможно, будут использовать его код. Но если Вам всё же хочется его использовать в каком-то оправданном случае, то основное правило - никогда не производить переходов назад, это самое опасное действие.
Надеюсь, помогла.
Удачи!

Verena

Посетитель
09.11.2007, 15:42
Ответ # 192928 от Coupler
Здравствуйте, M3sergey!
Когда в программе слишком много операторов goto, то она станосится нечитабельной (переходы могду осуществляться как по ходу кода программы, так и наоборот, "вверх", и в этом тяжело разобраться), ее будет трудно отлаживать. Но иногда использование goto позволяет сделать программу более наглядной, и в ней гораздо труднее совершить ошибку.

Приложение:


Coupler

Посетитель
09.11.2007, 16:29
Здравствуйте, M3sergey!

Компиляторы структурных языков имеют встроенные механизмы оптимизации.
Использование оператора GoTo, отключает оптимизацию и машинный код генерируется как есть, программа получается ресурсоемкой (как по размеру исполняемого файла так и скорости выполнения).

Посмотрите Доводы за и против и упоминаемый в статье Эдсгер В. Дейкстра, его мнение.

Удачи!

Зенченко Константин Николаевич

Старший модератор
09.11.2007, 16:38
Ответ # 192934 от Витек
Здравствуйте, M3sergey!
Использовать то можно, только осторожно и только в исключительных ситуациях. А так четко продуманный алгоритм позволяет обойтись без оператора безусловного перехода вообще.

Витек

Посетитель
09.11.2007, 17:07
Мини-форум консультации # 108698
Нет сообщений в мини-форуме
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 244

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 43

Gluck

9-й класс

Рейтинг: 42

Вадим Исаев ака sir Henry

Мастер-Эксперт

Рейтинг: 2

Асмик Гаряка

Советник

Рейтинг: 0

Орловский Дмитрий

Мастер-Эксперт

Рейтинг: 0