Tartalomjegyzék
A D programozási nyelv
- Szerző: Sallai András
- Copyright © Sallai András, 2011, 2014
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
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
Kivitel
Kivitelre használható függvények:
- write()
- writeln()
- writef()
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:
- writef()
- writefln()
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); }