Seed7 2007-06-07
Версия реализации Seed7 языка программирования Seed7Изменения относительно предыдущей версии:
- В FAQ добавлено разъяснение множественной диспетчеризации
-
исправлена ошибка в функции
str
для типаcomplex
-
интерпретатор теперь поддерживает
startsWith
,endsWith
,array_min_position
,heapstat
, и@:=
(для ‘ref_lists’) -
улучшена поддержка компилятором
drw_cpy
,ref_trace
,arr_head
,arr_tail
,arr_idx
,varfunc
,wintype
, литералов массивов и динамических функций - компилятор теперь сообщает о необработанных исключениях
-
компилятор изменен для поддержки функцией
destr
параметраNULL
- компилятор теперь успешно компилирует примеры snake.sd7 и toutf8.sd7
Ссылки:
Примеры:
Факториал - Seed7 (12):
Используется рекурсивное определение факториала. Для хранения значений факториала используется тип bigInteger
, поэтому переполнения не происходит.
$ include "seed7_05.s7i";
include "bigint.s7i";
const func bigInteger: factorial (in var bigInteger: n) is func
result
var bigInteger: result is 1_;
begin
if n = 0_ then
result := 1_;
else
result := n * factorial(n - 1_);
end if;
end func;
const proc: main is func
local
var integer: n is 0;
begin
for n range 0 to 16 do
write(n);
write("! = ");
write(factorial(bigInteger conv n));
writeln;
end for;
end func;
Факториал - Seed7 (13):
Используется встроенная функция !n, определенная только для типа данных integer
. 13! больше максимально возможного значения этого типа, и попытка его вычисления вызывает арифметическое переполнение. В результате вывод программы имеет следующий вид:
0! = 1
1! = 1
2! = 2
...
11! = 39916800
12! = 479001600
13! =
*** Uncaught EXCEPTION NUMERIC_ERROR raised with
{! integer <80ba990>: <SYMBOLOBJECT> 0 }
{! (in integer <80ba990> param) } at factorial-builtin.sd7(10)
main no POSINFO
$ include "seed7_05.s7i";
const proc: main is func
local
var integer: n is 0;
begin
for n range 0 to 16 do
writeln(n <& "! = " <& !n);
end for;
end func;
Hello, World! - Seed7 (14):
$ include "seed7_05.s7i";
const proc: main is func
begin
writeln("Hello, World!");
end func;
Комментарии
]]>blog comments powered by Disqus
]]>