GDC 0.24
Версия реализации GDC языка программирования DОсновные изменения относительно версии GDC 0.23:
- версия обновлена до версии DMD 1.020
- поддержка GCC 3.3.x прекращена
- исправление ошибок
Примеры:
Hello, World! - D (171):
Функция writef
примерно эквивалентна printf
в C++ и выводит на печать строку определенного формата.
module hello;
import std.stdio;
int main()
{
writefln( "Hello, World!" );
return 0;
}
Факториал - D (172):
Используется рекурсивное определение факториала.
module factorial;
import std.stdio;
ulong recursive(ulong x)
{
return (x == 0 ? 1 : x * recursive( x - 1 ));
}
int main()
{
for (int i = 0; i < 17; ++i)
{
writefln("%s! = %s", i, recursive(i));
}
return 0;
}
Факториал - D (173):
Используется итеративное определение факториала. Отметим использование цикла foreach
, в котором переменная цикла принимает все значения от нижней границы включительно до верхней исключительно.
module factorial;
import std.stdio;
int main()
{ ulong fact = 1;
foreach (ulong i; 1..18)
{ writefln("%s! = %s", i-1, fact);
fact *= i;
}
return 0;
}
Числа Фибоначчи - D (174):
Используется рекурсивное определение чисел Фибоначчи.
module fibonacci;
import std.stdio;
ulong recursive(ulong x)
{
return x <= 2 ? 1 : recursive( x - 2 ) + recursive( x - 1 );
}
int main()
{
for (uint i = 1; i < 17; i++)
{
writef("%s, ", recursive(i));
}
writefln("%s", "...");
return 0;
}
Числа Фибоначчи - D (175):
Используется итеративное определение чисел Фибоначчи.
module fibonacci;
import std.stdio;
ulong iterative(ulong x)
{
ulong prev1 = 1L;
ulong prev2 = 1L;
ulong result = x <= 2 ? 1L : 0L;
for ( ulong i = 3; i <= x; ++i )
{
result = prev1 + prev2;
prev1 = prev2;
prev2 = result;
}
return result;
}
int main()
{
for (uint i = 1; i < 17; i++)
{
writef("%s, ", iterative(i));
}
writefln("%s", "...");
return 0;
}
Квадратное уравнение - D (176):
import std.c.stdio;
import std.stdio;
import std.math;
int main() {
int A, B, C;
writef("A = ");
scanf("%d", & A);
if (A==0)
{ writefln("Not a quadratic equation.");
return 0;
}
writef("B = ");
scanf("%d", & B);
writef("C = ");
scanf("%d", & C);
A*=2;
float D = B*B-2*A*C;
if (D == 0)
{ writefln("x = %f\n",-B*1.0/A);
return 0;
}
if (D>0)
writefln("x1 = %f\nx2 = %f",(-B+sqrt(D))/A,(-B-sqrt(D))/A);
else
writefln("x1 = (%f, %f)\nx2 = (%f, %f)",-B*1.0/A,sqrt(-D)/A,-B*1.0/A,-sqrt(-D)/A);
return 0;
}
Комментарии
]]>blog comments powered by Disqus
]]>