Номер строки

редактировать

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

В языке программирования C номер строки в строке исходного кода равен одному большему числу символов новой строки, прочитанных или введенных до

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

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

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

Содержание
  • 1 История
    • 1.1 FORTRAN
    • 1.2 COBOL
    • 1.3 DOPE
    • 1.4 JOSS
    • 1.5 BASIC
  • 2 Номера строк и стиль
  • 3 Номера строк и GOTO
  • 4 Номера строк и синтаксические ошибки
  • 5 См. также
  • 6 Ссылки
История

FORTRAN

В Fortran, как впервые было указано в 1956 году, номера строк использовались для определить шаблоны ввода / вывода, чтобы указать операторы, которые будут повторяться, и для условного перехода. Например:

РАЗМЕР АЛЬФА (25), RHO (25) 1) FORMAT (5F12.4) 2) READ 1, ALPHA, RHO, ARG SUM = 0.0 DO 3 I = 1, 25 IF (ARG-ALPHA ( I)) 4,3,3 3) SUM = SUM + ALPHA (I) 4) VALUE = 3.14159 * RHO (I-1) PRINT 1, ARG, SUM, VALUE GO TO 2

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

  • Строка 1 определяет шаблон формата для ввода; команда READв строке 2 и последующая команда PRINTссылаются на эту строку.
  • Цикл DOвыполняет строку 3.
  • Оператор арифметического IF разветвляется на строку 4 при отрицательном значении, на строку 3 при нулевом значении и снова на строку 3 при положительном значении.

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

Номера строк также могут быть присвоены переменным с фиксированной точкой ( например, ASSIGNi TOn) для ссылки в последующих назначенных операторах GO TO (например, GO TOn, (n1, n2,... nm)).

COBOL

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

DOPE

В 1962 году DOPE (Dartmouth Oversimplified Programming Experiment) стал одним из первых языков программирования, которые требовали номер строки для каждого оператора и использовали последовательное упорядочение номера строк. Номера строк были указаны как места назначения для двух команд: 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. Нет необходимости в эквиваленте RETURNв конце, хотя, если требуется ранний возврат, Doneвыполняет это. Пример:

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

BASIC

Представленный в 1964 году, Dartmouth BASIC принял обязательные номера строк, как в JOSS, но сделал их целыми числами, как в FORTRAN. Как определено изначально, BASIC использовал номера строк только для GOTOи GOSUB(перейти к подпрограмме, затем вернуться). Некоторые реализации Tiny BASIC поддерживали числовые выражения вместо констант, в то время как операторы переключения присутствовали на разных диалектах (ONGOTO; ONGOSUB; ON ERROR GOTO).

Номера строк редко где-либо использовались. Одно исключение заключалось в том, что указатель, используемый READ(который повторяется через операторы DATA), мог быть установлен на конкретный номер строки с помощью RESTORE.

1 REM RESTORE МОЖНО ИСПОЛЬЗОВАТЬ ЕСЛИ ОСНОВНОЙ НЕДОСТАТОЧНЫЙ СТРОК ИСПОЛЬЗУЕТ 2 РАЗМЕР M $ (9): УДАЛИТЬ ОПРЕДЕЛЕНИЕ ДЛИНЫ 9 СИМВОЛОВ 5 ВВЕДИТЕ «МЕСЯЦ №?»; M: ЕСЛИ M <1 OR M>12 ТО 5 7 ВОССТАНОВИТЬ 10 ​​* M: ПРОЧИТАТЬ M $: ПЕЧАТЬ M $ 10 ДАННЫЕ «ЯНВАРЬ» 20 ДАННЫЕ «ФЕВРАЛЬ» 30 ДАННЫЕ «МАРТ»...

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

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

Допустимые номера строк в ранних реализациях BASIC
ДиапазонДиалект
от 1 до 254MINOL
от 1 до 255Tiny BASIC Design Note
от 2 до 255Denver Tiny BASIC
от 0 до 999UIUC BASIC
от 1 до 2045DEC BASIC-8
от 0 до 32767LLL BASIC, NIBL ​​
от 1 до 32767Apple I BASIC, Уровень I BASIC, Palo Alto Tiny BASIC
от 1 до 65535Altair 4K BASIC, MICRO BASIC 1.3, 6800 Tiny BASIC, Tiny BASIC Extended
от 1 до 99999Dartmouth BASIC
от 1 до 999999SCELBAL
Номера и стиль строк

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

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

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

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

В «неструктурированных» языках программирования, таких как BASIC, номера строк были использованы для указания целей операторов ветвления. Например:

1 S = 0: N = -1 2 INPUT «ВВЕДИТЕ НОМЕР ДЛЯ ДОБАВЛЕНИЯ ИЛИ 0 В КОНЕЦ»; I 3 S = S + I: N = N + 1: ЕСЛИ I <>0 ТОГДА НАЙТИ 2 4 ПЕЧАТЬ «СУММ =»; S: ПЕЧАТЬ «СРЕДНИЙ =»; S / N

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

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

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

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

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

См. Также
Ссылки
Последняя правка сделана 2021-05-27 10:28:27
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте