Boo
- Дата создания:
- 2003
- Создан под влиянием:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .boo
- Реализации и версии (свернуть все | развернуть все):
Boo — объектно-ориентированный статически типизированный язык программирования, разработка которого началась в 2003 году. Синтаксис языка Boo похож на синтаксис языка Python.
Среди особенностей языка стоит отметить мультиметоды, генераторы, макросы, замыкания, опциональная неявная типизация; функции являются first-class объектами.
Boo распространяется под open-source лицензией в стиле MIT/BSD.
Boo может использоваться с Microsoft .NET или с Mono.
Элементы синтаксиса:
Комментарий до конца строки | // |
---|---|
Комментарии, которые могут быть вложенными | /*...*/ |
Присваивание значения переменной | = |
Объявление переменной | variable as type |
Объявление переменной с присваиванием значения | variable = value или variable as type = value |
Блок | отступ в начале строки |
Равенство | == |
Неравенство | not |
Сравнение | < > <= >= |
Определение функции | def f(p1 as type1; p2 as type2; ...) : ... return value |
Вызов функции | f(a, b, ...) |
Вызов функции без параметров | f() |
Последовательность | конец строки |
Если - то | if condition: ... |
Если - то - иначе | if condition: ... else condition: ... |
Бесконечный цикл | while true: ... |
Цикл с предусловием | while condition : ... |
Цикл for - next для диапазона целых чисел с инкрементом на 1 | for i in range(0, 10): ... |
IDE/Редакторы:
Примеры:
Hello, World!:
Пример для версий boo 0.7.6.2237, boo 0.8.2print("Hello, World!")
Факториал:
Пример для версий boo 0.7.6.2237, boo 0.8.2Используется рекурсивное определение факториала. Из-за того, что функция factorial
вызывается рекурсивно, для нее необходимо объявление типа возвращаемого значения.
def factorial(n as long) as long:
if n == 0:
return 1
else:
return n * factorial(n - 1)
for n in range(0, 17):
print("${n}! = ${factorial(n)}")
Факториал:
Пример для версий boo 0.8.2В примере используется итеративное определение факториала. Переменная fact
объявляется как принадлежащая к типу long
в явном виде; иначе ее тип будет автоматически определен как int
, и вычисление 13! вызовет ошибку переполнения.
fact as long = 1
for i in range(17):
print("${i}! = ${fact}")
fact = fact * (i+1)
Числа Фибоначчи:
Пример для версий boo 0.8.2Используется итеративное определение чисел Фибоначчи.
a = array(int, 16)
a[0] = a[1] = 1
for i in range(2,16):
a[i] = a[i-1] + a[i-2]
s=""
for i in range(16):
s = s + a[i] + ", "
print(s + "...")
Числа Фибоначчи:
Пример для версий boo 0.8.2В этом примере показано использование генератора fib
— конструкции, которая инициализирует внутренние переменные a
и b
и при каждом следующем обращении изменяет их значения и выдает наружу. Функция zip
“склеивает” элементы двух перечислений (в данном случае range(16)
и генератора) в пары, создавая новое перечисление.
def fib():
a, b = 0, 1
while true:
yield b
a, b = b, a + b
s=""
for i, n in zip(range(16), fib()):
s = s+n+", "
print(s+"...")
Квадратное уравнение:
Пример для версий boo 0.8.2A = int.Parse(prompt("A = "))
if A==0 :
print "Not a quadratic equation."
return
B = int.Parse(prompt("B = "))
C = int.Parse(prompt("C = "))
D = B*B-4*A*C
if D==0 :
x = -0.5*B/A
print "x = ${x}"
return
if D>0 :
x1 = 0.5*(-B-System.Math.Sqrt(D))/A
x2 = 0.5*(-B+System.Math.Sqrt(D))/A
print "x1 = ${x1}"
print "x2 = ${x2}"
else :
r = -0.5*B/A
i = 0.5*System.Math.Sqrt(-D)/System.Math.Abs(A)
print "x1 = (${r},${i})"
print "x2 = (${r},-${i})"
Комментарии
]]>blog comments powered by Disqus
]]>