синтаксис программы
Участников: 3
Страница 1 из 1
синтаксис программы
Синтаксис basic и freebasic в частности очень любопытен.
Дело в том, что бэйсик в первую очередь ориентировали для удобства человека, а не для удобства алгоритмов разбора.
В бэйсике можно встретить очень оригинальные конструкции, которых нет в других языках программирования.
Например в бэйсике функции и процедуры разделены, а в языке C, процедура это функция которая ничего не возвращает.
Бэйсик разрабатывался как язык для обучения принципам программирования. По этому наглядность и понятность легли в его основу.
Но прошло много времени, задачи изменились, язык перестал быть формальным описанием алгоритмов, и перестал быть игрушкой, сейчас это полноценный язык программирования. Всё это отразилось на синтаксисе.
Тем кто начинает, не имея опыта это не так важно. А вот знакомым с другими языками, такими как C, C++, Java, многие вещи могут показаться очень странными. Именно для них я немного расширю описания, указывая на явные различия и особенные места.
Для тех, кто знаком с qbasic и другими диалектами basic так же дам расширенную информацию, ведь freebasic многое изменил.
Многие вопросы более подробно рассмотрены в соответствующих главах, здесь лишь уделяеться внимание синтаксису.
Для неофитов программирования, хочу особо отметить, важность синтаксиса. Один знак изменит смысл вашей программы. Или просто произойдёт ошибка, ещё при разборе вашего кода.
FreeBasic позволяет человеку большие вольности, чем многие другие языки программирования. Но всё же правила жостки и обязательны.
Будте внимательны.
инструкции
Инструкция, это фрагмент кода, который должен быть выполнен и может считаться одним шагом.
Запутано? Не знаю, как по другому сформулировать. Можно например сказать, что вся программа состоит из команд, команда же это и есть инструкция.
Но инструкция это не просто одна команда, их может быть несколько.
Вот например команда, напечатать приветствие
Надеюсь вы меня поняли?
Чтобы не путать новичков, в бэйсике инструкция размещаеться на одной строке.
Конец строки - конец инструкции.
Конечно, это не обязательно, но на то должно быть явное желание программиста.
В языках C и прочих унаследовавших его синтаксис инструкция завершаеться символом точки с запятой ";" и может быть размазана и расположена в соответствии с художественным фкусом программера, от чего смысл может быть не сразу понятен.
В бэйсике есть функция print[i]. Она использует символ ";", например
комментарии
Им посвящена отдельная глава.
Коментарий начинаеться с символа апострофа "'" и продолжаеться до конца строки.
Это так называемые, простые или строчные комментарии.
Коментарий нельзя переносить на другие строки.
Есть так называемые блочные или сложные комментарии. Они позаимствованы из языка C. Эти комментарии должны иметь явное начало "/'" и явный конец "'/". Причём перенос строки уже не играет роли. Вот например
или можно так,
ограничение строк
Произвольный текст, для обработти программой, можно вставить прямо в исходный код программы.
Чтобы ограничить строку, отделив её от инструкций, строку заключают в двойные кавычки (").
В нутри кавычек может быть любой символ, кроме самих кавычек, т.к. это будет считаться концом строки.
Строки так же нельзя переносить на несколько строк в редакторе кода.
см также
строковый тип данных
работа со строками
примечание:
В саму строку вы можете записать всё что угодно. Например при помощи экранирования символов, даже символ кавычки. Или явно вставляя, любой код, специальными функциями.
препроцессоры
FreeBasic перенял синтаксис препроцессоров у языка C.
Исторически, в бэйсике препроцессоров небыло предусмотрено, но позже они были добавлены. Ради сохранения некой совместимости, этот синтаксис вышел тоже не стандартным.
Вот пример препроцессора в qbasic
Это не удобно, и выглядит очень странно.
Во FreeBasic препроцессорные команды начинаються с символа решотки "#".
составные имена
Если вы кодили на C или Java, то вас могут очень поразить функции:
line input
select case
case else
end select
end if
do while
loop while
и некоторые другие.
В первую очередь вы столкнётесь с [i]if ... then.
Зачем лишние слова, спросите вы. Объяснение просто, для большей наглядности. Это зделано именно для начинающих, чтобы они не путались в скобочках и составных сложнонаписанных именах функций.
Между прочем, реализация разбора в компиляторе, немного услажнила жизнь создателям freebasic.
А вот разработчики C, руководствовались именно удобством трансляции.
Хочу заметить, что создать свою функцию, с именем из нескольких слов у вас не получиться.
ключевые слова
Это явление, можно считать тоже уникальным. Опять же ключевые слова добавлены именно для удобства.
Ключевые слова, это не функции и не константы, а метки для компилятора.
Вот например открытие файла в языке C
По этому, в бэйсике используеться немного иная запись
Здесь, слово "for" не несёт смысла для компилятора, оно только отделяет имя файла от остальной части. А вот человеку, знающему английский будет очень просто.
Слово "input" обозначает "ввод", т.е. ввод будет из файла (чтение).
А слово "output", что вывод будет в файл (запись).
Вот так, нам ключевые слова упростили понимание. А тем, кто помнит модификаторы функции fOpen и как их нужно соеденять, могу пожелать ещё долго не открывать справочники про них.
Замечание, добавлять свои ключевые слова вы не можете.
переносы строк
И всё же переносы строк во FreeBasic возможны.
Но для этого нужно специально указать, что строку нужно перенести. Для этого в её конце поставьте " _ ".
объеденение инструкций
Также в одну строку можно поместить несколько инструкций. Для этого, в конце каждой ставиться знак ":".
номер строки
Ещё на заре бэйсика, номера строк были обязательны.
Это было связано с рядом причин, в том числе специфичностью редакторов исходного кода.
Для небольших программ, использование номеров строк, делало их нагляднее.
Но когда листинг программ перестал помещаться на одну страницу, а многочисленные переходы с помощью goto стали только всё запутывать, от номеров строк начали отказываться.
Уже в qbasic v1.0 номера строк были необязательны, а их порядок был неважен.
Номера строк указываються в начале строки, затем пробел и какая-то инструкция.
Вот такой вот архаизм! Вспомнил, старые времена, когда я писал в таком стиле. А сейчас это очень непривычно. Да и не нужно вообщем-то.
(Даже не уверен, в том, что данный синтаксис поддерживаеться. Нужно проверить.)
метка
Метка, в какой-то степени это альтернатива номеру строки.
Метка это именнованная точка в вашей программе.
Вы хотите перепрыгнуть на определённую строку, но незнаете её номер, то метка будет очень даже нормально.
Одно время даже были подпрограммы, вызываемые с помощью gosub.
Метка ставиться в начале строки и закрываеться символом ":".
Но будте крайне разборчивы при использовании меток. Злоупотребление прыжками с помощью goto или gosub очень запутывают вашу программу.
список параметров
При вызове функций и процедур, им необходимо передать список параметров.
об этом подробнее смотрите в главе: функции и процедуры.
Список нужно заключить в круглые скобочки, а каждый отдельный параметр разделить запятыми.
Здесь, мы передаём в функцию mid три параметра: строку "abcdefg", номер первого символа под строки 3, и длину нужной подстроки 2.
Есть несколько нюансов и поблажек.
Например при вызове процедуры, скобочки можно опустить.
Это видно в примере, где параметр mid("abcdefg", 3, 2), для процедуры print указан без скобочек.
В том случае, если от процедуры не требуют возвращения значения, т.е. она используеться как процедура, то скобочки тоже не нужны.
Без скобочек можно обойтись и тогда, когда аргументов нет.
Дело в том, что бэйсик в первую очередь ориентировали для удобства человека, а не для удобства алгоритмов разбора.
В бэйсике можно встретить очень оригинальные конструкции, которых нет в других языках программирования.
Например в бэйсике функции и процедуры разделены, а в языке C, процедура это функция которая ничего не возвращает.
Бэйсик разрабатывался как язык для обучения принципам программирования. По этому наглядность и понятность легли в его основу.
Но прошло много времени, задачи изменились, язык перестал быть формальным описанием алгоритмов, и перестал быть игрушкой, сейчас это полноценный язык программирования. Всё это отразилось на синтаксисе.
Тем кто начинает, не имея опыта это не так важно. А вот знакомым с другими языками, такими как C, C++, Java, многие вещи могут показаться очень странными. Именно для них я немного расширю описания, указывая на явные различия и особенные места.
Для тех, кто знаком с qbasic и другими диалектами basic так же дам расширенную информацию, ведь freebasic многое изменил.
Многие вопросы более подробно рассмотрены в соответствующих главах, здесь лишь уделяеться внимание синтаксису.
Для неофитов программирования, хочу особо отметить, важность синтаксиса. Один знак изменит смысл вашей программы. Или просто произойдёт ошибка, ещё при разборе вашего кода.
FreeBasic позволяет человеку большие вольности, чем многие другие языки программирования. Но всё же правила жостки и обязательны.
Будте внимательны.
инструкции
Инструкция, это фрагмент кода, который должен быть выполнен и может считаться одним шагом.
Запутано? Не знаю, как по другому сформулировать. Можно например сказать, что вся программа состоит из команд, команда же это и есть инструкция.
Но инструкция это не просто одна команда, их может быть несколько.
Вот например команда, напечатать приветствие
- Код:
print "Hello!"
- Код:
print 2 + 3
Надеюсь вы меня поняли?
Чтобы не путать новичков, в бэйсике инструкция размещаеться на одной строке.
Конец строки - конец инструкции.
Конечно, это не обязательно, но на то должно быть явное желание программиста.
В языках C и прочих унаследовавших его синтаксис инструкция завершаеться символом точки с запятой ";" и может быть размазана и расположена в соответствии с художественным фкусом программера, от чего смысл может быть не сразу понятен.
В бэйсике есть функция print[i]. Она использует символ ";", например
- Код:
print "Hello!";
комментарии
Им посвящена отдельная глава.
Коментарий начинаеться с символа апострофа "'" и продолжаеться до конца строки.
Это так называемые, простые или строчные комментарии.
Коментарий нельзя переносить на другие строки.
- Код:
' комментарий
Есть так называемые блочные или сложные комментарии. Они позаимствованы из языка C. Эти комментарии должны иметь явное начало "/'" и явный конец "'/". Причём перенос строки уже не играет роли. Вот например
- Код:
print "1" /'234'/ & "5"
или можно так,
- Код:
print "1" /'
2
3
4
'/ & "5"
ограничение строк
Произвольный текст, для обработти программой, можно вставить прямо в исходный код программы.
Чтобы ограничить строку, отделив её от инструкций, строку заключают в двойные кавычки (").
- Код:
print "строка ограниченная кавычками."
В нутри кавычек может быть любой символ, кроме самих кавычек, т.к. это будет считаться концом строки.
Строки так же нельзя переносить на несколько строк в редакторе кода.
см также
строковый тип данных
работа со строками
примечание:
В саму строку вы можете записать всё что угодно. Например при помощи экранирования символов, даже символ кавычки. Или явно вставляя, любой код, специальными функциями.
препроцессоры
FreeBasic перенял синтаксис препроцессоров у языка C.
Исторически, в бэйсике препроцессоров небыло предусмотрено, но позже они были добавлены. Ради сохранения некой совместимости, этот синтаксис вышел тоже не стандартным.
Вот пример препроцессора в qbasic
- Код:
'$include: 'header.bi'
Это не удобно, и выглядит очень странно.
Во FreeBasic препроцессорные команды начинаються с символа решотки "#".
- Код:
#include "header.bi"
составные имена
Если вы кодили на C или Java, то вас могут очень поразить функции:
line input
select case
case else
end select
end if
do while
loop while
и некоторые другие.
В первую очередь вы столкнётесь с [i]if ... then.
Зачем лишние слова, спросите вы. Объяснение просто, для большей наглядности. Это зделано именно для начинающих, чтобы они не путались в скобочках и составных сложнонаписанных именах функций.
Между прочем, реализация разбора в компиляторе, немного услажнила жизнь создателям freebasic.
А вот разработчики C, руководствовались именно удобством трансляции.
Хочу заметить, что создать свою функцию, с именем из нескольких слов у вас не получиться.
ключевые слова
Это явление, можно считать тоже уникальным. Опять же ключевые слова добавлены именно для удобства.
Ключевые слова, это не функции и не константы, а метки для компилятора.
Вот например открытие файла в языке C
- Код:
fh1 = fOpen("myfile.txt", "r");
По этому, в бэйсике используеться немного иная запись
- Код:
open "myfile.txt" for input as #ff1
Здесь, слово "for" не несёт смысла для компилятора, оно только отделяет имя файла от остальной части. А вот человеку, знающему английский будет очень просто.
открыть "myfile.txt" для ввода как №ff1
Слово "input" обозначает "ввод", т.е. ввод будет из файла (чтение).
А слово "output", что вывод будет в файл (запись).
Вот так, нам ключевые слова упростили понимание. А тем, кто помнит модификаторы функции fOpen и как их нужно соеденять, могу пожелать ещё долго не открывать справочники про них.
Замечание, добавлять свои ключевые слова вы не можете.
переносы строк
И всё же переносы строк во FreeBasic возможны.
Но для этого нужно специально указать, что строку нужно перенести. Для этого в её конце поставьте " _ ".
- Код:
print "Hello, " & _
"world!"
объеденение инструкций
Также в одну строку можно поместить несколько инструкций. Для этого, в конце каждой ставиться знак ":".
- Код:
do: sleep: loop while GetKey <> 27
номер строки
Ещё на заре бэйсика, номера строк были обязательны.
Это было связано с рядом причин, в том числе специфичностью редакторов исходного кода.
Для небольших программ, использование номеров строк, делало их нагляднее.
Но когда листинг программ перестал помещаться на одну страницу, а многочисленные переходы с помощью goto стали только всё запутывать, от номеров строк начали отказываться.
Уже в qbasic v1.0 номера строк были необязательны, а их порядок был неважен.
Номера строк указываються в начале строки, затем пробел и какая-то инструкция.
- Код:
10 a = 5
20 input b
30 if a < b then
40 print "a < b"
50 goto 20
60 else
70 print "a >= b"
80 end if
90 print "exit programm"
100 sleep
Вот такой вот архаизм! Вспомнил, старые времена, когда я писал в таком стиле. А сейчас это очень непривычно. Да и не нужно вообщем-то.
(Даже не уверен, в том, что данный синтаксис поддерживаеться. Нужно проверить.)
метка
Метка, в какой-то степени это альтернатива номеру строки.
Метка это именнованная точка в вашей программе.
Вы хотите перепрыгнуть на определённую строку, но незнаете её номер, то метка будет очень даже нормально.
Одно время даже были подпрограммы, вызываемые с помощью gosub.
Метка ставиться в начале строки и закрываеться символом ":".
- Код:
a = 5
begin:
input b
if a < b then
print "a < b"
goto begin
else
print "a >= b"
end if
print "exit programm"
sleep
Но будте крайне разборчивы при использовании меток. Злоупотребление прыжками с помощью goto или gosub очень запутывают вашу программу.
список параметров
При вызове функций и процедур, им необходимо передать список параметров.
об этом подробнее смотрите в главе: функции и процедуры.
Список нужно заключить в круглые скобочки, а каждый отдельный параметр разделить запятыми.
- Код:
print mid("abcdefg", 3, 2)
Здесь, мы передаём в функцию mid три параметра: строку "abcdefg", номер первого символа под строки 3, и длину нужной подстроки 2.
Есть несколько нюансов и поблажек.
Например при вызове процедуры, скобочки можно опустить.
Это видно в примере, где параметр mid("abcdefg", 3, 2), для процедуры print указан без скобочек.
В том случае, если от процедуры не требуют возвращения значения, т.е. она используеться как процедура, то скобочки тоже не нужны.
Без скобочек можно обойтись и тогда, когда аргументов нет.
Последний раз редактировалось: Eric-S (Вт Сен 30, 2008 11:49 pm), всего редактировалось 1 раз(а)
Re: синтаксис программы
Поддерживается также инструкция REMEric-S пишет:Коментарий начинаеться с символа апострофа "'" и продолжаеться до конца строки.
Поддерживается с ключём компиляции -lang qbНомера строк указываються в начале строки, затем пробел и какая-то инструкция.
(Даже не уверен, в том, что данный синтаксис поддерживаеться. Нужно проверить.)
justar- Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 50
Откуда : Кишинёв, Республика Молдоа
Re: синтаксис программы
несовсем так, FB поддерживает и многострочные коментарии. По аналогии с Си вместо /*йцу*/ в FB мона использовать /'йцу'/ к примеру такКоментарий начинаеться с символа апострофа "'" и продолжаеться до конца строки.
Коментарий нельзя переносить на другие строки.
- Код:
print "1" /'234'/ & "5"
- Код:
print "1" /'
2
3
4
'/ & "5"
и тут я несогласен, если необходимо использовать кавычку внутри строки, то можно ее экранировать еще одной кавычкойВ нутри кавычек может быть любой символ, кроме самих кавычек, т.к. это будет считаться концом строки.
- Код:
print "asd""fgh""jkl"
Re: синтаксис программы
Tux, спасибо, за поправки
Эта глава посвящена синтаксису вообще.
Про комментарии я поправлю в соответствующей главе.
а про экранирование, это может стать вообще отдельной темой.
Эта глава посвящена синтаксису вообще.
Про комментарии я поправлю в соответствующей главе.
а про экранирование, это может стать вообще отдельной темой.
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения