Номер строки - Википедия - Line number

В вычисление, а номер строчки это метод, используемый для указания определенной последовательности символов в текстовый файл. Самый распространенный метод присвоения номеров строкам - присвоить каждому линия уникальный номер, начинающийся с 1 для первой строки и увеличивающийся на 1 для каждой последующей строки.

в C язык программирования номер строки исходный код строка на одно большее число новая линия символы, прочитанные или введенные до этого момента.[1]

Программисты также могли назначать номера строк операторам в старых языки программирования, Такие как Фортран, JOSS, и БАЗОВЫЙ. В Фортране не каждому оператору нужен номер строки, и номера строк не обязательно должны быть в последовательном порядке. Номера строк предназначены для ветвления и для справки с помощью операторов форматирования.

И Джосс, и БЕЙСИК сделали номера строк обязательным элементом синтаксис. Основная причина этого в том, что большинство операционные системы в то время не хватало интерактивных текстовые редакторы; поскольку интерфейс программиста обычно ограничивался линейный редактор, номера строк обеспечивают механизм, с помощью которого определенные строки в исходный код на него можно было ссылаться для редактирования, и с помощью которого программист мог вставить новую строку в определенной точке. Номера строк также служили удобным средством различения кода, вводимого в программу, и прямой режим команды, которые должны выполняться немедленно при вводе пользователем (которые не имеют номеров строк).

Во многом из-за преобладания интерактивного редактирования текста в современных операционные системы номера строк не являются функцией большинства языков программирования, даже современных Fortran и Basic.[2]

История

FORTRAN

В Фортран, как впервые было указано в 1956 году, номера строк использовались для определения шаблонов ввода / вывода, для указания повторяющихся операторов и для условного перехода. Например:[3]

   ИЗМЕРЕНИЕ АЛЬФА(25), RHO(25)1) ФОРМАТ(5F12.4)2) ЧИТАТЬ 1, АЛЬФА, RHO, ARG   СУММ = 0.0   ДЕЛАТЬ 3 я=1, 25   ЕСЛИ (ARG-АЛЬФА(я)) 4,3,33) СУММ = СУММ + АЛЬФА(я)4) ЦЕНИТЬ = 3.14159*RHO(я-1)   РАСПЕЧАТАТЬ 1, ARG, СУММ, ЦЕНИТЬИДТИ К 2

Нравиться язык ассемблера до этого Фортран не предполагал, что каждой строке нужна метка (в данном случае номер строки). Только утверждения, на которые есть ссылки в другом месте, требовали номера строки:

  • Строка 1 определяет шаблон формата для ввода; то ЧИТАТЬ команда в строке 2 и позже РАСПЕЧАТАТЬ обе команды ссылаются на эту строку.
  • В ДЕЛАТЬ цикл выполняет строку 3.
  • В арифметический IF оператор переходит к строке 4 при отрицательном значении, строке 3 при нулевом значении и снова строке 3 при положительном значении.

Хотя в этом примере номера строк являются последовательными, в самой первой опубликованной «полной, но простой программе [Fortran]» номера строк находятся в последовательности 1, 5, 30, 10, 20, 2.[4]

Номера строк также могут быть присвоены переменным с фиксированной точкой (например, НАЗНАЧАТЬ я К п) для ссылки в последующих назначенных операторах GO TO (например, ИДТИ К п, (п1, п2, ... нм)).

КОБОЛ

В КОБОЛ, номера строк были указаны в первых шести символах ( область порядкового номера) из перфокарты. Первоначально это использовалось для облегчения механической сортировки карт, чтобы обеспечить заданную последовательность программного кода после ручной обработки. Номера строк фактически игнорировались компилятором.

НАРКОТИК

В 1962 г. DOPE (Дартмутский эксперимент по упрощенному программированию) стал одним из первых языков программирования, которые требовали номер строки для каждого оператора и использовали последовательный порядок номеров строк. Номера строк были указаны как места назначения для двух команд: C (операция сравнения, арифметическое IF) и T (операция, переход к пункту).

JOSS

В 1963 г. JOSS независимо сделал номера строк обязательными для каждого оператора в программе и упорядочил строки в последовательном порядке. JOSS представил идею сингла командная строка редактор, который работал и как интерактивный язык, и как редактор программ. Команды, набранные без номера строки, выполнялись немедленно, в том, что JOSS назвал «прямым режимом». Если к той же строке добавлялся номер строки, она вместо этого копировалась в область хранения программного кода, которую JOSS назвал «косвенным режимом».

В отличие от FORTRAN перед ним или BASIC после него, JOSS требовал, чтобы номера строк были числами с фиксированной запятой, состоящими из пары двузначных целых чисел, разделенных точкой (например, 1.1). Часть номера строки слева от точки называется «страницей» или «частью», а часть справа называется «строкой»; например, номер строки 10.12 относится к странице 10, строка 12. Ветви могут быть нацелены либо на страницу, либо на строку внутри страницы. Когда используется более поздний формат, объединенная страница и строка известны как «шаг».

Страницы используются для определения подпрограммы, которые возвращаются, когда следующая строка находится на другой странице. Например, если подпрограмма для вычисления квадратного корня из числа находится на странице 3, у вас может быть три строки кода 3.1, 3.2 и 3.3, и она будет вызываться с использованием Сделайте часть 3. Код вернется к оператору после Do, когда он достигнет следующей строки на другой странице, например, 4.1. Нет необходимости в эквиваленте ВОЗВРАЩАТЬСЯ в конце, хотя если требуется досрочный возврат, Выполнено выполняет это. Пример:

* Процедура запроса у пользователя положительного значения и повторения до тех пор, пока он не получит единицу. 01.10 Требование X как «Введите положительное значение больше нуля». 01.20 Готово, если X> 0,01,30 К шагу 1.1

БАЗОВЫЙ

Представлен в 1964 году, Дартмутский ОСНОВНОЙ принял обязательные номера строк, как в JOSS, но сделал их целыми, как в FORTRAN. Как определено изначально, BASIC использовал только номера строк для ИДТИ К и GOSUB (перейти к подпрограмме, затем вернуться). Немного Tiny BASIC реализации поддерживали числовые выражения вместо констант, а операторы переключения присутствовали на разных диалектах (НА ИДТИ К; НА GOSUB; ПРИ ОШИБКЕ НАЙТИ).

Номера строк редко использовались где-либо еще. Единственным исключением было разрешение указателя, используемого ЧИТАТЬ (который повторяется через ДАННЫЕ операторы), чтобы установить конкретный номер строки с помощью ВОССТАНОВИТЬ.

1REMВОССТАНОВИТЬМОГБЫТЬИСПОЛЬЗОВАЛЕСЛИАБАЗОВЫЙОТСУТСТВУЕТНИТЬМассивы2ТусклыйM $(9):REMОПРЕДЕЛЯТЬДЛИНАИЗ9СИМВОЛЫ5ВХОД"МЕСЯЦ #?";М:ЕСЛИM<1ИЛИ ЖЕM>12ТОГДА57ВОССТАНОВИТЬ10*М:ЧИТАТЬM $:РАСПЕЧАТАТЬM $10ДАННЫЕ«ЯНВАРЬ»20ДАННЫЕ«ФЕВРАЛЬ»30ДАННЫЕ"МАРШ"...

В первых выпусках Dartmouth BASIC, ТОГДА может сопровождаться только номером строки (для подразумевается GOTO), а не - как в более поздних реализациях - утверждением.

Диапазон допустимых номеров строк широко варьировался от реализации к реализации в зависимости от представления, используемого для хранения двоичного эквивалента номера строки (один или два байта; со знаком или без знака). В то время как Dartmouth BASIC поддерживал от 1 до 99999, типичная реализация микрокомпьютера поддерживала от 1 до 32767 (16-битное слово со знаком).

Допустимые номера строк в Ранние реализации BASIC
КлассифицироватьДиалект
От 1 до 254MINOL
От 1 до 255Tiny BASIC Design Note
От 2 до 255Денвер Tiny BASIC
От 0 до 999UIUC BASIC
1 к 2045 г.DEC BASIC-8
От 0 до 32767LLL BASIC, NIBL
1 к 32767Apple I BASIC, Уровень I BASIC, Palo Alto Tiny BASIC
1 до 65535Альтаир 4K БАЗОВЫЙ, MICRO BASIC 1.3, 6800 Tiny BASIC, Tiny BASIC Extended
1 до 99999Дартмутский ОСНОВНОЙ
1 до 999999СКЕЛБАЛ

Номера строк и стиль

Это был вопрос стиль программирования если не явная необходимость, то в этих языках оставлять пробелы между последовательными номерами строк, то есть программист будет использовать последовательность (10, 20, 30, ...), а не (1, 2, 3, ...). Это позволило программисту вставить строка кода позже. Например, если строка кода между строками 20 и 30 была пропущена, программист мог бы вставить забытую строку в строку номер 25. Если в нумерации не осталось пробелов, программисту потребуется изменить нумерацию строки 3 и всех последующих. строк, чтобы вставить новую строку после строки 2. Конечно, если бы программисту нужно было вставить более девяти дополнительных строк, перенумерация потребовалась бы даже при более разреженной нумерации. Однако это изменение нумерации будет ограничиваться изменением нумерации только одной строки на десять добавленных строк; когда программист обнаруживает, что ему нужно добавить строку между 29 и 30, нужно будет перенумеровать только строку 30, а строку 40 можно оставить без изменений.

Некоторые BASIC имели RENUM команда, которая обычно проходит через программу (или определенную ее часть), переназначая номера строк с равным шагом. Это также изменит нумерацию всех ссылок на эти номера строк, чтобы они продолжали работать должным образом.

В большой программе, содержащей подпрограммы, каждая подпрограмма обычно начинается с номера строки, достаточно большого, чтобы оставить место для расширения основной программы (и предыдущих подпрограмм). Например, подпрограммы могут начинаться со строк 10000, 20000, 30000 и т. Д.

Номера строк и GOTO

В "неструктурированных" языках программирования, таких как БАЗОВЫЙ, номера строк использовались для указания целей операторы ветвления. Например:

1S=0:N=-12ВХОД"ВВЕДИТЕ НОМЕР, ЧТОБЫ ДОБАВИТЬ, ИЛИ 0 В КОНЕЦ";я3S=S+Я:N=N+1:ЕСЛИя<>0ТОГДАИДТИ К24РАСПЕЧАТАТЬ"СУММ =";S:РАСПЕЧАТАТЬ"СРЕДНИЙ =";S/N

ИДТИ К ветвление стиля может привести к развитию код спагетти. (Видеть Считается вредным, Структурированное программирование.) Даже в некоторых более поздних версиях BASIC, которые все еще требовали номеров строк, использование GOTO с управляемым номером строки было постепенно прекращено, когда это было возможно, в пользу более чистых конструкций, таких как для цикла и пока цикл.

Многие современные языки (включая C и C ++ ) включить версию оператора GOTO; однако на этих языках цель GOTO определяется метка линии вместо номера строки.

Номера строк и синтаксические ошибки

Если программист вводит синтаксическая ошибка в программу, компилятор (или же устный переводчик ) сообщит программисту, что попытка скомпилировать (или выполнить) не удалась на данном номере строки. Это значительно упрощает работу программиста по поиску ошибки.

Использование номеров строк для описания местоположения ошибок остается стандартом в современных инструментах программирования, хотя номера строк никогда не требуется указывать вручную. Для программы просто подсчитать новые строки в исходный файл и отобразить автоматически сгенерированный номер строки как место ошибки. В Иды Такие как Microsoft Visual Studio, Eclipse или Xcode, в котором компилятор обычно интегрирован с текстовым редактором, программист может даже двойной щелчок при ошибке и сразу перейти к строке, содержащей эту ошибку.

Смотрите также

Рекомендации

  1. ^ «6.10.4 Управление линией». 2008-01-30. Получено 2008-07-03.
  2. ^ «Различия между GW-BASIC и QBasic». 2003-05-12. Получено 2008-06-28.
  3. ^ Отдел исследований в области программирования, International Business Machines Corporation (8 апреля 1957 г.). Система автоматического кодирования FORTRAN для IBM 704 EDPM: предварительное руководство оператора (PDF). С. 6–37.
  4. ^ Отдел прикладных наук и отдел исследований в области программирования, Международная корпорация деловых машин (15 октября 1956 г.). Система автоматического кодирования FORTRAN для IBM 704 EDPM: Справочное руководство программиста (PDF). п. 46.