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

Logo

Дата создания:
1967
Создан под влиянием:
Повлиял на:
Парадигма:
Типизация:
Принятые расширения файлов:
.lg
Реализации и версии (свернуть все | развернуть все):
Язык программирования

Logo — функциональный язык программирования, используемый преимущественно в образовательных целях.

Элементы синтаксиса:

Комментарий до конца строки ;
Регистрозависимость нет
Присваивание значения переменной make "varname value
Группировка выражений ( ... )
Блок [ ... ]
Равенство =
Неравенство <>
Тождественное равенство .eq
Сравнение < > <= >=
Определение функции to f :para1 :para2 ... end
Вызов функции f a b ...
Вызов функции без параметров f
Если - то if condition [trueBlock]
Если - то - иначе ifelse condition [trueBlock] [falseBlock]
Бесконечный цикл forever
Цикл с предусловием while condition [loopBody]
Цикл с постусловием until condition [loopBody], do.while [loopBody] c
Цикл for - next для диапазона целых чисел с инкрементом на 1 for [i 1 10 +1] [loopBody]
Цикл for - next для диапазона целых чисел с декрементом на 1 for [i 1 10 -1] [loopBody]

Примеры:

Hello, World!:

Пример для версий UCBLogo 6.0
print [Hello, World!]

Числа Фибоначчи:

Пример для версий UCBLogo 6.0

Используется рекурсивное определение чисел Фибоначчи. В примере определяются две функции — fibonacci для вычисления значения N-ого числа Фибоначчи и print_fibonacci, которая накапливает числа в строке и выводит их на печать.

to fibonacci :N
   ifelse :N < 3 [output 1] [output sum fibonacci :N - 1 fibonacci :N - 2]
end

to print_fibonacci :i :N
   make "str fibonacci :i
   make "i sum :i 1
   make "comma ",
   repeat :N - :i + 1 [make "str (word :str :comma fibonacci :i)
                      make "i sum :i 1]
   make "str word str ",...
   print str
end

print_fibonacci 1 16

Факториал:

Пример для версий UCBLogo 6.0

Используется рекурсивное определение факториала. В примере определяются две функции — factorial, вычисляющая N!, и print_factorial, которая выводит факториалы чисел от i до N.

to factorial :N
   ifelse :N = 0 [output 1] [output :N * factorial :N - 1]
end

to print_factorial :i :N
   repeat :N - :i + 1 [(print :i [! =] factorial :i)
                       make "i sum :i 1]
end

print_factorial 0 16

Квадратное уравнение:

Пример для версий UCBLogo 6.0

В этом примере определяется функция, принимающая в качестве аргументов коэффициенты квадратного уравнения и выводящая на печать его корни.

to quadratic :A :B :C
   if :A = 0 [(print [Not a quadratic equation.])
              stop
             ]
   make "D :B*:B - 4*:A*:C
   if :D = 0 [(print [x = ] -:B/2/:A)
              stop
             ]
   if :D > 0 [(print [x1 = ] (-:B+sqrt :D)/2/:A)
              (print [x2 = ] (-:B-sqrt :D)/2/:A)
              stop
             ]
   (print [x1 = (] -:B/2/:A [,] (sqrt (-:D))/2/A [)])
   (print [x2 = (] -:B/2/:A [,] (-sqrt (-:D))/2/A [)])
end

Комментарии

]]>

blog comments powered by Disqus

]]>

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