Метки и переходы

Метки и переходы В языке Паскаль любой оператор и конец составленного оператора (слово end) можно отметить , то есть идентифицировать, придать ему индивидуальное имя. Это имя называется меткой . В авторской версии языка метками могли быть целые стали от 1 до 9999, в языке Турбо Паскаль к ним добавлено идентификаторы. Метка записывается перед оператором или словом end через двоеточие, например, 1: money = 21; mmm: money: = 0; finita end . Метки, используемые в теле программы или подпрограммы, должны быть обозначены в ее же блоке . Определение меток имеет вид: label список-меток-через-кому ; например, label 1, mmm, finita; . Метка, указанная в блоке, должна отмечать ровно один оператор в теле этого блока. Метки используются в операторах перехода , имеющих вид goto метка например, goto 1; if x> 1000 then goto mmm. Результатом выполнения оператора перехода является то, что вслед за ним выполняется оператор, отмеченный этой меткой.
https://medcanal.ru/topic/1204-sposob-izbavitsya-pryschey-na-litse/

В случае, когда отмечен конец составленного оператора, возможные варианты. Если это не конец тела цикла и не конец программы, то будет выполняться следующий оператор. Если отмечен конец программы, то ее выполнение завершается. Если отмечен конец тела цикла, то выполняются действия, которые следуют за выполнением тела (проверка условия продолжения while — цикла или неявное изменение параметра for — цикла ). Оператор перехода и соответствующий отмеченный оператор должны быть записанными в теле блока (программы или подпрограммы), где эту метку отмечено. Другими словами, переходы из одного блока в другой и использование неопределенных в блоке меток запрещено. Мы не склонны популяризировать использование операторов перехода. Более того, в свое время было доказано, что без них вообще можно обойтись (достаточно условных операторов и while — Цикли). Однако есть три случая, когда указания перехода уместно и удобно:

  • на конец подпрограммы;
  • изнутри цикла на его конец;
  • изнутри цикла на следующий за циклом оператор.
В Турбо Паскаль для указания таких переходов есть специальные операторы, соответственно, exit , continue и break , то есть «выйти» (из подпрограммы), «продолжать» и «прервать» (выполнение цикла). Разумно используя эти операторы, можно обойтись без меток и goto . На самом деле эти три оператора — вызовы процедур. Их имена не являются служебными словами, но мы будем выделять их жирным шрифтом . Примеры их использования — в следующем разделе. Чтение последовательностей Существует много задач, в процессе решения которых читаются и обрабатываются последовательности значений неизвестной заранее длины. К ним виноситься практически все, что связано с обработкой файлов — от загрузки машинной программы в печати списков. В этом параграфе мы рассмотрим задачи, в которых для обработки входной последовательности независимо от ее длины достаточно нескольких переменных. На примере этих задач мы опишем три способа задания конца последовательности и, соответственно, три вида циклов чтения и обработки данных. 1. Сначала читается количество значений n n maxint, потом сами значения в количестве, определяемом по n . Для описания чтения удобно воспользоваться for-оператором. Пример 1. Многочлен, он же поленом p n x n + p n — 1 x n — 1 + ... + p 1 x + p 0 задается последовательностью с n 1 коэффициентов p n , p n — 1, ..., p 1, p 0. Надо прочитать значение x , степень и коэффициенты полинома и вычислить его значение в точке x . Поскольку p n x n + p n — 1 x n — 1 + ... + p 1 x + p 0 = (... ( p n x + p n — 1) x + ... + p 1) x + p 0 то значение v полинома можно подать как значение последнего члена последовательности: v 0 = 0, v 1 = v 0 x + p n , v 2 = v 1 x + p n — 1, ..., v n + 1 = v n x + p 0. Нетрудно убедиться, что она задается рекуррентным соотношением v i = v i — 1 x + p n + 1-i, i = 1, 2, ... n 1 причем перед его первым применением нужно знать только первый коэффициент, перед вторым — второй и т. Поэтому цикл должен состоять из чтения очередного коэффициента и применение соотношение. В любой момент выполнения программы нужно знать только один, последний прочитанный коэффициент, поэтому для сохранения коэффициентов достаточно одной переменной. Итак, сначала прочитаем значение x , затем степень полинома n , затем n 1 коэффициент, применяя "по дороге "рекуррентное соотношение: V = 0; writeln ('задайте точку действительной прямой:'); readln (x); writeln ('задайте целый неотъемлемый степень полинома:'); readln (n); for i = 1 to n + 1 do begin writeln ('задайте', n + 1-i, 'й коэф-т:'); readln (p); V = V * x + p end ; {прочитано n + 1 коэффициент; значение V — искомое} Оформление алгоритма в виде подпрограммы оставляем упражнением. 2. Известно особое значение, появление которого в последовательности входных значений обозначает ее конец и как входящее не рассматривается . Для описания чтения удобно воспользоваться repeat-оператором, потому что надо прчитаты не менее, чем одно значение перед тем, как появится признак конца. Пример 2. На контрольно-пропускном пункте таможни работает одна бригада инспекторов. Автомобили прибывают, становятся в очередь (если она есть) и проходят контроль в порядке прибытия. Для каждого автомобиля известна продолжительность его контроля t : автомобиль покидает таможню через t единиц времени после начала его контроля. Прибытие первого автомобиля задано относительно начального момента времени, а прибытие каждого следующего — относительно момента прибытия предыдущего. Итак, входными данными являются пары целых чисел x 1, t 1, x 2, t 2 ... ., причем x i 0, t i > 0, кроме последнего: t = 0 обозначает конец последовательности входных данных. По входной последовательностью нужно определить последовательность моментов выездов автомобилей из контрольно-пропускного пункта.
Комментарии и пинги к записи запрещены.

Комментарии закрыты.