Turbo Pascal 7.0
Версия реализации Turbo Pascal языка программирования PascalПоследняя версия Turbo Pascal, выпущенная 9 марта 1993 года.
В этой версии компилятор позволяет компилировать программы как для DOS, так и для Windows. Появляется возможность создания DLL.
Изменения интерфейса включают подсветку синтаксиса.
Turbo Pascal 7.0: общий вид
Ссылки:
Примеры:
Факториал - Pascal (2):
Используется рекурсивное определение факториала.
Этот пример работает во всех перечисленных компиляторах, но с несколько разным результатом. В Turbo Pascal, Free Pascal и PascalABC.NET возникает арифметическое переполнение при вычислении факториалов 13-16, но Free Pascal сообщает об ошибке:
13! = Runtime error 215 at $004013C7
$004013C7
$00401449
$004063E0
в то время как Turbo Pascal и PascalABC.NET не обнаруживают ошибку и просто выводят неправильные значения:
13! = 1932053504
14! = 1278945280
15! = 2004310016
16! = 2004189184
Следует отметить, что в версиях Turbo Pascal 3.0 и младше этот пример не работает вообще из-за отсутствия типа данных longint
.
В GNU Pascal пример работает без переполнения.
program factorial;
function fact(n: integer): longint;
begin
if (n = 0) then
fact := 1
else
fact := n * fact(n - 1);
end;
var
n: integer;
begin
for n := 0 to 16 do
writeln(n, '! = ', fact(n));
end.
Числа Фибоначчи - Pascal (28):
Этот пример использует рекурсивное определение чисел Фибоначчи.
program fibonacci;
function fib(n:integer): integer;
begin
if (n <= 2) then
fib := 1
else
fib := fib(n-1) + fib(n-2);
end;
var
i:integer;
begin
for i := 1 to 16 do
write(fib(i), ', ');
writeln('...');
end.
Hello, World! - Pascal (47):
program helloworld;
begin
writeln('Hello, World!');
end.
Факториал - Pascal (93):
Этот пример работает точно так же, как основной рекурсивный пример для Pascal, но использует тип real
для хранения значений факториала. Команда writeln(f:-1:0)
выводит дробное число f
с 0 цифр после десятичной запятой и выравнивает его по левому краю.
program factorial;
function fact(n: integer): real;
begin
if (n = 0) then
fact := 1
else
fact := n * fact(n - 1);
end;
var
n: integer;
begin
for n := 0 to 16 do
writeln(n, '! = ', fact(n):-1:0);
end.
Комментарии
]]>blog comments powered by Disqus
]]>