Conceitos básicos: D

From AdonaiMedrado.Pro.Br
Revision as of 17:20, 2 April 2009 by Adonaimedrado (Talk | contribs) (for)

Jump to: navigation, search

Tipos básicos [1]

void no type -
bool = false
byte (8 bits com sinal) = 0
ubyte (8 bits sem sinal) = 0
short (16 bits com sinal) = 0
ushort (16 bits sem sinal) = 0
int (32 bits com sinal) = 0
uint (32 bits sem sinal) 0
long (64 bits com sinal) = 0L
ulong (64 bits sem sinal) = 0L
cent (128 bits com sinal - reservado) = 0
ucent (128 bits sem sinal - reservado) = 0
float (ponto flutuante de 32 bits) = float.nan
double (ponto flutuante de 64 bits) = double.nan
real (maior ponto flutuante implementado pelo hardware) real.nan
ifloat (float imaginário) = float.nan * 1.0i
idouble (double imaginário) = double.nan * 1.0i
ireal (real imaginário) = real.nan * 1.0i
cfloat (número complexo com dois valores float) = float.nan + float.nan * 1.0i
cdouble (número complexo com dois valores double) = double.nan + double.nan * 1.0i
creal (número complexo com dois valores real) = real.nan + real.nan * 1.0i
char (8 bits sem sinal - UTF-8) = 0xFF
wchar (16 bits sem sinal - UTF-16) = 0xFFFF
dchar (32 bits sem sinal - UTF-32) = 0x0000FFFF

Vetores e matrizes [1]

Ponteiro

int *p;

Vetor estático

int[3] s;
int s[3];

Tamanho máximo: 16Mb.

Vetor dinâmico

int[] a;
int a[];

Vetor associado

int[char[]] x;

Ponteiro para vetor dinâmico

int[]* e;
int (*e)[];

Ponteiros para vetores

int*[]*[3] d;
int*[]* d[3];
int* (*d[3])[];

Matrizes estáticas

int[4][3] b;
int[4] b[3];
int b[3][4];

Matrizes dinâmicas

int[][5] c;
int[] c[5];
int c[5][];

Slicing

int[10] a;
int[] b;
 
b = a[1..3]; // a[1..3] representa um array de 2 elementos (a[1] and a[2]).

Atribuição

int[3] s;
int[3] t;
 
s[0..2] = t[1..3]; // mesmo que s[0] = t[1], s[1] = t[2].
s[] = 3;           // mesmo que s[0] = 3, s[1] = 3, s[2] = 3.
p[0..2] = 3;       // mesmo que p[0] = 3, p[1] = 3.

Concatenação

int[] a;
int[] b;
int[] c;
a = b ~ c; // cria um array resultado da concatenção d b com c.
a ~= b;    // concatena b ao array a.

Estruturas condicionais

if

Especificação

IfStatement:
    if ( IfCondition ) ThenStatement
    if ( IfCondition ) ThenStatement else ElseStatement
IfCondition:
    Expression
    auto Identifier = Expression
    Declarator = Expression
ThenStatement:
    ScopeStatement
ElseStatement:
    ScopeStatement

Exemplo

if (...)
{
    ...
}
else
{
    ...
}

switch

? :

Estrutura de repetição

for

Especificacão

ForStatement:
    for (Initialize Test; Increment) ScopeStatement
Initialize:
    ;
    NoScopeNonEmptyStatement
Test:
    empty
    Expression
Increment:
    empty
    Expression

Exemplo

for (int i = 0; i < 10; i++)
    foo(i);

Atenção:

for (int i = 0; i < 10; i++) ;  //isto não é permitido.
for (int i = 0; i < 10; i++) {} //mas isto sim.

while

Especificação

WhileStatement:
    while ( Expression ) ScopeStatement

Exemplo

int i = 0;
while (i < 10)
{
    foo(i);
    i++;
}

do...while

Especificação

DoStatement:
    do ScopeStatement while ( Expression )

Exemplo

int i = 0;
do
{
    foo(i);
} while (++i < 10);

Declaração

Bloco

Função

Classe

Referências

  1. 1.0 1.1 D Specification em http://www.prowiki.org/upload/duser/spec_DMD_1.00.pdf