]]> ]]>

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

]]>

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