Tartalomjegyzék

< D

A D programozási nyelv

Bevezetés

A D nyelv egy új programozási nyelv, a C és a C++ alapjain.

Egy programozási nyelv csak akkor használható ha van hozzá fordító. Fordítót az alábbi helyről tölthetünk le:

De egy Debian GNU/Linux 6.0-án csak adjuk ki a következő parancsot:

apt-get install gdc

Helló Világ

Program01.d
import std.stdio;
void main() {
    writeln("Helló Világ");
}

Fordítás:

gdc -o main main.d

Kivitel

Kivitelre használható függvények:

A write() függvény sortörés nélkül ír a képernyőre. A writeln() függvény a kiírt adatok végén sortörést ír a képernyőre. A writef() függvénye nem tesz sortörés karaktert, és formázott kivitelre találták ki. A formázott kivitelről később lesz szó.

A write() függvénynek több paramétere is lehet:

write("Egy", "Kettő","Három");

A writeln() szintén:

writeln("Egy", "Kettő", "Három");

Mindkét függvény használható paraméter nélkül is.

Írás az alapértelmezett kimenetre:

stdout.writeln();

A D nyelv típusai

byte -128 … 127 1 byte
ubyte 0 … 255 1 byte
short -32768 … 32767 2 bytes
ushort 0 … 65535 2 bytes
int -2147483648 … 2147483647 4 bytes
uint 0 … 4294967296 4 bytes
long -9223372036854775808 … 9223372036854775807 8 bytes
ulong 0 … 18446744073709551616 8 bytes
float kb.: -3.4E38 … kb.: 3.4Ee38 4 bytes
ifloat kb.: -3.4E38i … kb.: 3.4Ee38i 4 bytes egy képzetes szám
double kb.: -1.8e308 … kb.: 1.8e308 8 bytes nagy valós szám
idouble kb.: -1.8e308i … kb.: 1.8e308i 8 bytes nagy képzetes szám
real (x86-os gépen) Kb.: -5.9e4436 … (x86-os gépen) Kb.: 5.9e4436 10 bytes
ireal (x86-os gépen) Kb.: -5.9e4436 … (x86-os gépen) Kb.: 5.9e4436 10 bytes képzetes szám
char 0 … 255 1 byte egy karakter, pl.: 'a'
wchar 0 … 65535 2 bytes UTF-16 karakter
dchar 0 … 4294967296 4 bytes UTF-32 karakter

Változók és állandók a D nyelvben

int a = 35;
double b = 3.12;
int kor = 27;
writeln("Jóska", kor, "éves" );

Formázott kivitel

A formázott kivitel a következő két függvénnyel lehetséges:

int a = 35;
writef("%d", a);

Pontosság meghatározása:

double b = 3.1234567;
writef("%.2f\n", b);

A kiírás szélességének megadása:

double b = 3.1234567;
writef("%20f\n", b);

Vezető nullák megadása:

double b = 3.1234567;
writef("%020f\n", b);

A writefln() metódus létrehozása:

double b = 3.1234567;
writefln("%020f", b);

Matematikai függvények

A matematikai függvények a std.math névtérben vannak.

Abszolút érték számítás például:

Program01.d
import std.stdio;
import std.math;
void main(){
	writeln(abs(-5));
}
Program01.d
import std.stdio;
import std.math;
void main(){
	double szog = 30;
	writeln(sin(szog * PI / 180));
}

Bevitel

import std.stdio;
void main()
{
	string s;
	s = readln();
	writefln("Ezt írtad: %s", s);
}

Szám bevitel

import std.stdio, std.conv, std.string;
void main()
{
	writef("Szám: ");
	int a = toInt(chop(readln));
	writefln("Ezt írtad: %d", a);	
}
import std.stdio, std.conv, std.cstream;
void main()
{
	writef("Szám: ");
	int a = toInt(din.readLine());
	writefln("Ezt írtad: %d", a);
}

Szelekció

Egy ágú

import std.stdio;
void main()
{
	int a = 3;
	if (a < 4)
		writefln("Kisebb");
 
}

Két ágú

import std.stdio;
void main()
{
	int a = 3;
	if (a < 4)
		writefln("Kisebb");
	else
		writefln("Nagyobb");
 
}

Több ágú, több utasításos

import std.stdio;
void main()
{
	int a = 3;
	if (a < 2)
	{
		writefln("Kisebb");
		writefln("a = %d",a);
	}
	else
	{
		writefln("Nagyobb");
		writefln("a = %d", a);
	}
 
}

Több ágú if szelekció

import std.stdio;
void main()
{
	int a = 0;
	if (a  > 0 )
		writefln("Pozitív");
	else if(a < 0)
		writefln("Negatív");
	else
		writefln("Nulla");
 
}

Iteráció

for növekményes ciklus

Program01.d
import std.stdio;
void main() {
	for( int i = 0; i< 10; i++)
		writefln(i);
}

Egyszerűen foreach-el

import std.stdio;
void main()
{
	int[] tomb = [5, 2, 9, 3, 4];
 
	foreach(elem ; tomb)
		writefln(elem);
}
import std.stdio;
void main()
{
	int[] tomb = [5, 2, 9, 3, 4];
 
	foreach(index, elem ; tomb)
		writefln("Index: %d Elem: %d", index, elem);
}

Visszafele:

import std.stdio;
void main()
{
	int[] tomb = [5, 2, 9, 3, 4];
 
	foreach_reverse(index, elem ; tomb)
		writefln("Index: %d Elem: %d", index, elem);
}

Minden egyes elemet 1-gyel megemelünk

import std.stdio;
void main()
{
	int[] tomb = [5, 2, 9, 3, 4];
 
	foreach(ref elem; tomb)
		elem++;
 
	foreach(elem ; tomb)
		writefln(elem);
}

Amíg típusú ciklusok

while(feltétel)
{
        //ide jön a kód
}
do
{
        //kód
} while(feltétel)

Tömb

import std.stdio;
void main()
{
	int[] tomb = [1, 2, 3, 4 ];
 
	writefln(tomb[0]);
}

Az egész tömb kiíratása:

import std.stdio;
void main()
{
	int[] tomb = [1, 2, 3, 4 ];
 
	writefln(tomb);
}

Az eredmény:

[1,2,3,4]

Karaktersorozatok kezelése

Karaktersorozat beolvasása:

Program01.d
import std.stdio;
void main(){
	char[] nev;
	write("Név: ");
	readln(nev);
	writeln("Ezt írtad: ", nev);
}

Sorvége jelek bezárása:

Program01.d
import std.stdio;
import std.string;
void main(){
	char[] nev;
	write("Név: ");
	readln(nev);
	nev = chomp(nev);
	writeln("Ezt írtad: ", nev);
}

Esetleg így:

Program01.d
import std.stdio;
import std.string;
void main(){
	write("Név: ");	
	string nev = chomp(readln());
	writeln("Ezt írtad: ", nev);
}

A szöveg hossza:

Program01.d
import std.stdio;
import std.string;
void main(){
	write("Név: ");	
	string nev = chomp(readln());
	writeln("A beírt szöveg hossza: ", nev.length);
}