]]> ]]>
Править | Обсудить | История

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.2
print("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.2
A = 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

]]>

Работа программистам