ANSI C
Language
C Language Basics
Lection 14
Содержание
• Использование goto и меток
• Почему goto плохо
• Где можно использовать goto
• Примеры
23.05.2019 0:36 Introduction 2
Использование goto и меток
goto требует наличия меток для работы. Метка - это
корректный идентификатор Си, завершаемый
двоеточием. Метка должна находиться в той же функции,
что и goto.
Действие оператора перехода состоит в том, что после
его исполнения следующими будут исполняться
операторы программы, идущие в тексте непосредственно
после метки. Для машинных языков инструкция перехода
копирует в регистр процессора, содержащий адрес
следующей выполняемой команды, адрес команды,
помеченной меткой.
23.05.2019 0:36 Introduction 3
Пример #1
4
Пример #1
5
Почему goto плохо
● чрезмерное его применение приводит к созданию
нечитаемого кода.
● трудно форматировать (он может нарушать
иерархичность выполнения и потому отступы,
призванные отображать структуру программы, не всегда
могут быть выставлены правильно).
● мешает оптимизации компиляторами управляющих
структур.
● передача управления внутрь тела цикла приводит к
пропуску кода инициализации цикла или
первоначальной проверки условия.
6
Спагетти код
7
Пример #2
8
Где можно использовать goto
В некоторых языках нет операторов досрочного
завершения цикла или они относятся только к тому в
котором расположены. Использование goto для выхода из
нескольких вложенных циклов сразу упрощает код
программы, избавляя от необходимости применения
вспомогательных переменных-флагов и условных
операторов.
Если в языке нет средств обработки исключений, то
оператор goto может использоваться для прерывания
«нормального» выполнения кода и перехода к
завершающему коду для освобождения занятой памяти и
прочих финальных действий.
9
Пример #3
10

C language lect_14_basics

  • 1.
    ANSI C Language C LanguageBasics Lection 14
  • 2.
    Содержание • Использование gotoи меток • Почему goto плохо • Где можно использовать goto • Примеры 23.05.2019 0:36 Introduction 2
  • 3.
    Использование goto иметок goto требует наличия меток для работы. Метка - это корректный идентификатор Си, завершаемый двоеточием. Метка должна находиться в той же функции, что и goto. Действие оператора перехода состоит в том, что после его исполнения следующими будут исполняться операторы программы, идущие в тексте непосредственно после метки. Для машинных языков инструкция перехода копирует в регистр процессора, содержащий адрес следующей выполняемой команды, адрес команды, помеченной меткой. 23.05.2019 0:36 Introduction 3
  • 4.
  • 5.
  • 6.
    Почему goto плохо ●чрезмерное его применение приводит к созданию нечитаемого кода. ● трудно форматировать (он может нарушать иерархичность выполнения и потому отступы, призванные отображать структуру программы, не всегда могут быть выставлены правильно). ● мешает оптимизации компиляторами управляющих структур. ● передача управления внутрь тела цикла приводит к пропуску кода инициализации цикла или первоначальной проверки условия. 6
  • 7.
  • 8.
  • 9.
    Где можно использоватьgoto В некоторых языках нет операторов досрочного завершения цикла или они относятся только к тому в котором расположены. Использование goto для выхода из нескольких вложенных циклов сразу упрощает код программы, избавляя от необходимости применения вспомогательных переменных-флагов и условных операторов. Если в языке нет средств обработки исключений, то оператор goto может использоваться для прерывания «нормального» выполнения кода и перехода к завершающему коду для освобождения занятой памяти и прочих финальных действий. 9
  • 10.