Conceitos básicos: D
From AdonaiMedrado.Pro.Br
Contents
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.0 1.1 D Specification em http://www.prowiki.org/upload/duser/spec_DMD_1.00.pdf