Из Википедии, свободной энциклопедии
  (Перенаправлено из " Перенумерации" )
Перейти к навигации Перейти к поиску

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

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

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

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

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

История [ править ]

ФОРТРАН [ править ]

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

 ИЗМЕРЕНИЕ АЛЬФА ( 25 ),  RHO ( 25 ) 1 )  Формат ( 5 F12 . 4 ) 2 )  ЧТЕНИЕ 1 ,  АЛЬФА ,  RHO ,  ARG  СУММА  =  0.0  DO 3  I = 1 ,  25  ПЧ  ( ARG - АЛЬФА ( я ))  4 , 3 , 3 3 )  СУММ  =  СУММ  + АЛЬФА ( I ) 4 )  ЗНАЧЕНИЕ  =  3,14159 * RHO ( I - 1 )  ПЕЧАТЬ 1 ,  ARG ,  СУММА ,  ЗНАЧЕНИЕ ПЕРЕЙДИТЕ К 2   

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

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

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

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

КОБОЛ [ править ]

В 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, и она будет вызываться с использованием Do part 3.кода. доходит до следующей строки на другой странице, например, 4.1. Нет необходимости в эквиваленте a RETURNв конце, хотя, если требуется досрочный возврат, он Doneвыполняет это. Пример:

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

ОСНОВНОЙ [ править ]

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

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

 1 REM ВОССТАНОВЛЕНИЕ МОГ БЫТЬ ИСПОЛЬЗОВАНЫ ПРИ ОСНОВНЫЕ недоставало СТРОКА МАССИВЫ 2 DIM М $ ( 9 ) : REM ОПРЕДЕЛИТЬ ДЛИНА ОТ 9 СИМВОЛОВ 5 ВВОД «? МЕСЯЦ #» ; M: ЕСЛИ M < 1 ИЛИ M > 12 ТО 5 7 ВОССТАНОВИТЬ 10 * M: ПРОЧИТАТЬ M $ : ПЕЧАТЬ M $ 10 ДАННЫХ «ЯНВАРЬ»                                         20 ДАННЫЕ «ФЕВРАЛЬ» 30 ДАННЫЕ «МАРТ» ...      

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

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

Номера строк и стиль [ править ]

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

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

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

Номера строк и GOTOs [ править ]

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

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

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

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

Номера строк и синтаксические ошибки [ править ]

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

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

См. Также [ править ]

  • Метка линии
  • Листинг (компьютер)

Ссылки [ править ]

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