𝖂𝖎ƙ𝖎𝖊

D (linguagem de programação): mudanças entre as edições

imported>Escarbot
m (Bot: Adicionando: ca:Llenguatge D)
imported>Ricvelozo
Sem resumo de edição
 
(91 revisões intermediárias por 48 usuários não estão sendo mostradas)
Linha 1: Linha 1:
{{Info/Linguagem de programação
{{Info/Linguagem de computador
|nome            = D
|nome            = D
|logotipo        =  
|logotipo        = [[Ficheiro:D Programming Language logo.svg]]
|paradigma        = [[orientação a objeto]], [[programação imperativa|imperativo]], [[programação genérica|genérico]]
|paradigma        =
|ano              = [[1999]]
* [[Orientação a objetos|orientada a objetos]]
|criador          = [[Walter Bright]]
* [[Programação imperativa|imperativa]]
|tipagem          = forte, estática
* [[Programação genérica|genérica]]
|compiladores    = DMD, DGCC
|ano              = {{ani|1999}}
|dialetos        =  
|ultima_versao    = 2.098.0
|influenciada_por = [[C (linguagem de programação)|C]], [[C++]], [[C sharp|C#]], [[Java (linguagem de programação)|Java]]
|ultima_data      = {{Data de lançamento|2021|10|10}}<ref>{{citar web |url=https://dlang.org/changelog/2.098.0.html |título=Change Log: 2.098.0 |autor=Michael Parker |website=dlang.org |língua=inglês |data=10 de outubro de 2021 |acessodata=16 de outubro de 2021}}</ref>
|influenciou      =  
|versao_beta      =
|beta_data        =
|criador          =
* [[Walter Bright]]
* [[Andrei Alexandrescu]]<ref>{{citar web |url=http://www.wired.com/2014/07/d-programming-language/ |título=The Next Big Programming Language You’ve Never Heard Of |acessodata= |autor=Cade Metz |data=7 de julho de 2014 |obra=[[Wired]] |publicado=[[Condé Nast Publications]] |língua=inglês}}</ref>
|tipagem          =
* forte
* estática
|compiladores    =
* DMD<ref name="dmd">{{citar web |url=https://wiki.dlang.org/DMD |título=DMD - D |website=wiki.dlang.org |língua=inglês |data=25 de janeiro de 2018 |acessodata=16 de outubro de 2021}}</ref>
* [[GNU Compiler Collection|GDC]]<ref name="gdc">{{citar web |url=https://wiki.dlang.org/GDC |título=GDC - D |website=wiki.dlang.org |língua=inglês |data=23 de agosto de 2021 |acessodata=16 de outubro de 2021}}</ref><ref name="gcc">{{citar web |url=https://gcc.gnu.org/frontends.html |título=GCC Front Ends |website=gcc.gnu.org |língua=inglês |data=28 de julho de 2021 |acessodata=16 de outubro de 2021}}</ref>
* LDC ([[LLVM]])<ref name="llvm">{{citar web |url=https://wiki.dlang.org/LDC |título=LDC - D |website=wiki.dlang.org |língua=inglês |data=26 de setembro de 2021 |acessodata=16 de outubro de 2021}}</ref>
|dialetos        =
|influenciada_por =
* [[C (linguagem de programação)|C]]
* [[C++]]
* [[C Sharp|C#]]
* [[Java (linguagem de programação)|Java]]
|influenciou      =
|extensão        = .d
|website          = {{URL|https://dlang.org/}}
}}
}}
'''D''' é uma [[linguagem de programação]] de uso geral projetada por [[Walter Bright]] da [[Digital Mars]]. É baseada majoritariamente em [[C++]], apesar de não ser apenas uma variante. A versão estável da primeira especificação (v1.0) foi lançada em janeiro de [[2007]]. O código D nativo é geralmente tão rápido quanto o código C ++ equivalente, embora seja mais curto e economize memória .


'''D''' é uma [[linguagem de programação]] de uso geral projetada por [[Walter Bright]] da [[Digital Mars]]. É baseada majoritariamente em [[C++]], apesar de não ser apenas uma variante. A versão estável da primeira especificação (v1.0) é esperada para janeiro de [[2007]].
== Histórico ==
A linguagem D foi criada por [[Walter Bright]], desenvolvedor de [[compilador]]es para as linguagens [[C (linguagem de programação)|C]] e [[C++]] e fundador da [[Digital Mars]]. Ela foi concebida em dezembro de [[1999]] para ser uma sucessora das linguagens C e C++.


==Histórico==
É uma linguagem de programação de sistemas, focada em combinar o alto desempenho das linguagens C e C++ com a produtividade de outras linguagens modernas, tais como Ruby e Python.
A linguagem D foi criada por [[Walter Bright]], desenvolvedor de [[compilador]]es para as linguagens [[Linguagem de programação C|C]] e [[C++]] e fundador da [[Digital Mars]]. Ela foi concebida em dezembro de [[1999]] para ser uma sucessora das linguagens C e C++.


==Características==
== Características ==
A linguagem D apresenta, dentre outras características, a presença de [[coletor de lixo]], ser fortemente tipada, ser projetada para a [[orientação a objetos]] e [[programação genérica]], ''inline Assembler'', compatibilidade com [[código objeto|códigos objeto]] C, arranjos dinâmicos e associativos.
A linguagem D apresenta, dentre outras características:


==Exemplos de Códigos==
* Fortemente tipada estaticamente;
* Compilada para código nativo;
* Multiparadigma: suporta os estilos imperativo, orientado a objetos e multiprogramação de template;
* Projetada para a [[orientação a objetos]] e [[programação genérica]];
* Pertencente à família com sintaxe semelhante à Linguagem C, com aparência próxima à Linguagem C++ (Compatibilidade com [[código objeto|códigos objeto]] C);
* Arranjos dinâmicos e associativos;
* Presença de [[Coletor de lixo (informática)|coletor de lixo]];
* ''[[inline Assembler]]''.


===Olá Mundo===
== Principais metas de D ==
<pre>
* Reduzir os custos de desenvolvimento de software em ao menos 10% com adição de produtividade comprovada, realçando características e ajustando características da linguagem de modo que erros comuns e bugs, que consomem tempo, sejam eliminados;
import std.c.stdio;
* Torná-la fácil para escrever código que seja portável de compilador para compilador, máquina para máquina, e sistema operacional para sistema operacional;
int main(char[][] args)
* Suportar multi-paradigmas de programação, isto é, com um mínimo de suporte a paradigmas imperativos, estruturados, orientados a objetos, e programação genérica;
* Ter uma curta linha de aprendizagem para programadores acostumados com programação em C ou C++;
* Tornar D substancialmente mais fácil para implementar um compilador próprio que C++;
* Ser compatível com as APIs C locais;
* Ter uma gramática livre de contexto;
* Incorporar metodologia de Programação de Contrato e teste de unidade;
* Ser capaz de construir programas leves por si próprio;
* Reduzir os custos da criação de documentação.
 
== Exemplos de Códigos ==
=== Olá Mundo ===
{{Artigo principal|Programa Olá Mundo}}
<syntaxhighlight lang="D">
import std.stdio;
 
void main()
{
  writefln("Olá, Mundo!");
}
</syntaxhighlight>
 
ou, equivalente:
 
<syntaxhighlight lang="D">
import core.stdc.stdio;
 
void main()
{
  printf("Olá, Mundo!\n");
}
</syntaxhighlight>
 
=== N-Primeiros Números Perfeitos ===
<syntaxhighlight lang="D">
/*
Para compilar:
rdmd NumerosPerfeitos.d
* /
 
import core.stdc.stdio;
 
void main(char[][] args)
{
{
  printf("Olá mundo\n");
    int n; // n primeiros números perfeitos
    int num = 0;
    int soma;
    int contador = 0;
 
    printf( "Entre com o valor de 'N': ");
    scanf("%d", &n);
 
    printf( "\nOs N primeiros numeros perfeitos sao:\n");
 
    do
    {
        num += 1;
        soma = 0;
        for ( int i=1; i <= num-1 ; i++ )
        {
            if( (num % i) == 0 )
            {
                soma += i;
            }
        }
        if ( soma == num )
        {
            printf("%d\n", soma);
            contador += 1;
        }
    }while (contador != n);
}
}
</pre>


===Classes===
/*
<pre>
NÚMEROS PERFEITOS
- Um número se diz perfeito se é igual a soma de seus divisores próprios.
- Divisores próprios de um número positivo N são todos os divisores inteiros positivos de N exceto o próprio N.');
- Por exemplo, o número 6, seus divisores próprios são 1, 2 e 3, cuja soma = 6 (1 + 2 + 3 = 6);
  Outro exemplo é o número 28, cujos divisores próprios são 1, 2, 4, 7 e 14, e a soma dos seus divisores próprios
  é 28 (1 + 2 + 4 + 7 + 14 = 28)
* /
</syntaxhighlight>
 
=== Classes ===
<syntaxhighlight lang="D">
class A
class A
{
{
  public this() //Construtor
  public this() //Construtor
  {
  {
    x = 10.0 + 7i;
      x = 10.0 + 7i;
  }
  }


  private cfloat x; //número complexo
  private cfloat x; //número complexo
}
}


class B : A
class B : A
{
{
  public this()
  public this()
  {
  {
    super(); //Chama construtos da classe pai
      super(); //Chama o construtor da classe pai
  }
  }
}
}
</pre>
</syntaxhighlight>


===Arrays===
=== Arrays ===
<pre>
<syntaxhighlight lang="D">
//Arranjos dinâmicos:
int[] a;
int[] a;
a.length = 10; //comprimento igual a 10 posições
a.length = 10; //comprimento igual a 10 posições
a = 50; //a[0], a[1] ... a[9] = 50
a = 50; //a[0], a[1] ... a[9]= 50
a ~= 48; //adiciona uma posição ao array e atribui 48 a ela
a ~= 48; //adiciona uma posição ao array e atribui 48 a ela


Linha 62: Linha 167:
for(int i=0; i<30; i++)
for(int i=0; i<30; i++)
{
{
b ~= i;
  b ~= i;
}
}


int[] c;
int[] c;
c = b[1..10]; //c[0] = b[1], c[1] = b[2] ... c[8] = b[9]
c = b[1..10]; //c[0]= b[1], c[1] =b[2] ... c[8]= b[9]


int[] d;
int[] d;
Linha 72: Linha 177:


int* p = b.ptr; //p aponta para o primeiro elemento de b
int* p = b.ptr; //p aponta para o primeiro elemento de b
for(int i=0; i<b.length; i++)
for(int i = 0; i < b.length; i++)
  printf("%d\n", *(p+i));
  printf("%d\n", *(p+i));


c.sort; //ordena o vetor c
c.sort; //ordena o vetor c
</pre>
</syntaxhighlight>


<pre>
<syntaxhighlight lang="D">
//Arranjos associativos:
int[char[]] a; //array associativo
int[char[]] a; //array associativo
a["hello"] = 4;
a["hello"] = 4;
Linha 90: Linha 196:
if(p != null) //encontrou o índice
if(p != null) //encontrou o índice
{
{
  printf("%d\n", *p);
  printf("%d\n", *p);
}
}


a.remove("oi"); //remove a chave "oi"
a.remove("oi"); //remove a chave "oi"
</pre>
</syntaxhighlight>


<pre>
<syntaxhighlight lang="D">
uint toHash(char[] str)
uint toHash(char[] str)
{
{
  uint hash;
  uint hash;
  foreach (char c; str)
  foreach (char c; str)
    hash = (hash * 9) + c;
      hash = (hash * 9) + c;
  return hash;
  return hash;
}
}
</pre>
</syntaxhighlight>
 
é o mesmo que
é o mesmo que
<pre>
 
<syntaxhighlight lang="D">
uint toHash(char[] str)
uint toHash(char[] str)
{
{
  uint hash;
  uint hash;
  for(int i=0; i<str.length; i++)
  for(int i=0; i<str.length; i++)
  {
  {
    char c = str[i];
      char c = str[i];
    hash = (hash * 9) + c;
      hash = (hash * 9) + c;
  }
  }
  return hash;
  return hash;
}
}
</pre>
</syntaxhighlight>


=={{Ligações externas}}==
== Ver também ==
* [[C (linguagem de programação)]]
* [[C++]]
* [[C Sharp|C#]]
* [[Java (linguagem de programação)]]


* {{((en))}} [http://www.digitalmars.com/d/ Página oficial da linguagem]
{{Referências}}
* {{((en))}} [http://www.walterbright.com/ Página de Walter Bright]
 
* {{((en))}} [http://www.dsource.org/ Repositório de programas e projetos escritos em D]
== Ligações externas ==
* {{((en))}} [http://dui.sourceforge.net/index.html ''Toolkit'' gráfico para a linguagem baseado no GTK+]
* {{Oficial|https://dlang.org/|en}}
* {{((en))}} [http://www.dprogramming.com/ Tutoriais e arquivos de referência para a linguagem]
* {{Link|en|2=http://www.walterbright.com/|3=Página de Walter Bright}}
* {{((en))}} [http://www.digitalmars.com/d/dcompiler.html DMD - compilador para a D]
* {{Link|en|2=http://www.dsource.org/|3=Repositório de programas e projetos escritos em D}}
* {{((en))}} [http://www.digitalmars.com/d/comparison.html Comparação de D com C, C++, C# e Java]
* {{Link|en|2=http://dui.sourceforge.net/index.html|3=''Toolkit'' gráfico para a linguagem baseado no GTK+}}
* {{Link|en|2=http://www.dprogramming.com/|3=Tutoriais e arquivos de referência para a linguagem}}
* {{Link|en|2=http://dlang.org/comparison.html|3=Comparação de D com C, C++, C# e Java}}


{{Linguagens de programação}}
{{Linguagens de programação}}


[[Categoria:Linguagens de programação]]
[[Categoria:Linguagens de programação]]
 
[[Categoria:Linguagens de programação orientadas a objetos]]
[[bg:D (език за програмиране)]]
[[Categoria:Linguagens de programação baseadas em classes]]
[[ca:Llenguatge D]]
[[de:D (Programmiersprache)]]
[[en:D (programming language)]]
[[eo:D (programlingvo)]]
[[es:Lenguaje de programación D]]
[[fi:D (ohjelmointikieli)]]
[[fr:D (langage)]]
[[id:Bahasa pemrograman D]]
[[it:D (linguaggio di programmazione)]]
[[ja:D言語]]
[[ko:D 프로그래밍 언어]]
[[nl:D (programmeertaal)]]
[[pl:D (język programowania)]]
[[ru:D (язык программирования)]]
[[sk:D (programovací jazyk)]]
[[sv:D (programspråk)]]
[[tr:D programlama dili]]

Edição atual tal como às 15h49min de 16 de outubro de 2021

Predefinição:Info/Linguagem de computador D é uma linguagem de programação de uso geral projetada por Walter Bright da Digital Mars. É baseada majoritariamente em C++, apesar de não ser apenas uma variante. A versão estável da primeira especificação (v1.0) foi lançada em janeiro de 2007. O código D nativo é geralmente tão rápido quanto o código C ++ equivalente, embora seja mais curto e economize memória .

Histórico

A linguagem D foi criada por Walter Bright, desenvolvedor de compiladores para as linguagens C e C++ e fundador da Digital Mars. Ela foi concebida em dezembro de 1999 para ser uma sucessora das linguagens C e C++.

É uma linguagem de programação de sistemas, focada em combinar o alto desempenho das linguagens C e C++ com a produtividade de outras linguagens modernas, tais como Ruby e Python.

Características

A linguagem D apresenta, dentre outras características:

  • Fortemente tipada estaticamente;
  • Compilada para código nativo;
  • Multiparadigma: suporta os estilos imperativo, orientado a objetos e multiprogramação de template;
  • Projetada para a orientação a objetos e programação genérica;
  • Pertencente à família com sintaxe semelhante à Linguagem C, com aparência próxima à Linguagem C++ (Compatibilidade com códigos objeto C);
  • Arranjos dinâmicos e associativos;
  • Presença de coletor de lixo;
  • inline Assembler.

Principais metas de D

  • Reduzir os custos de desenvolvimento de software em ao menos 10% com adição de produtividade comprovada, realçando características e ajustando características da linguagem de modo que erros comuns e bugs, que consomem tempo, sejam eliminados;
  • Torná-la fácil para escrever código que seja portável de compilador para compilador, máquina para máquina, e sistema operacional para sistema operacional;
  • Suportar multi-paradigmas de programação, isto é, com um mínimo de suporte a paradigmas imperativos, estruturados, orientados a objetos, e programação genérica;
  • Ter uma curta linha de aprendizagem para programadores acostumados com programação em C ou C++;
  • Tornar D substancialmente mais fácil para implementar um compilador próprio que C++;
  • Ser compatível com as APIs C locais;
  • Ter uma gramática livre de contexto;
  • Incorporar metodologia de Programação de Contrato e teste de unidade;
  • Ser capaz de construir programas leves por si próprio;
  • Reduzir os custos da criação de documentação.

Exemplos de Códigos

Olá Mundo

Ver artigo principal: Programa Olá Mundo
import std.stdio;

void main()
{
   writefln("Olá, Mundo!");
}

ou, equivalente:

import core.stdc.stdio;

void main()
{
   printf("Olá, Mundo!\n");
}

N-Primeiros Números Perfeitos

/*
Para compilar:
rdmd NumerosPerfeitos.d
* /

import core.stdc.stdio;

void main(char[][] args)
{
    int n; // n primeiros números perfeitos
    int num = 0;
    int soma;
    int contador = 0;

    printf( "Entre com o valor de 'N': ");
    scanf("%d", &n);

    printf( "\nOs N primeiros numeros perfeitos sao:\n");

    do
    {
        num += 1;
        soma = 0;
        for ( int i=1; i <= num-1 ; i++ )
        {
            if( (num % i) == 0 )
            {
                soma += i;
            }
        }
        if ( soma == num )
        {
            printf("%d\n", soma);
            contador += 1;
        }
    }while (contador != n);
}

/*
NÚMEROS PERFEITOS
- Um número se diz perfeito se é igual a soma de seus divisores próprios.
- Divisores próprios de um número positivo N são todos os divisores inteiros positivos de N exceto o próprio N.');
- Por exemplo, o número 6, seus divisores próprios são 1, 2 e 3, cuja soma = 6 (1 + 2 + 3 = 6);
  Outro exemplo é o número 28, cujos divisores próprios são 1, 2, 4, 7 e 14, e a soma dos seus divisores próprios
  é 28 (1 + 2 + 4 + 7 + 14 = 28)
* /

Classes

class A
{
   public this() //Construtor
   {
      x = 10.0 + 7i;
   }

   private cfloat x; //número complexo
}

class B : A
{
   public this()
   {
      super(); //Chama o construtor da classe pai
   }
}

Arrays

//Arranjos dinâmicos:
int[] a;
a.length = 10; //comprimento igual a 10 posições
a = 50; //a[0], a[1] ... a[9]= 50
a ~= 48; //adiciona uma posição ao array e atribui 48 a ela

int[] b;
for(int i=0; i<30; i++)
{
   b ~= i;
}

int[] c;
c = b[1..10]; //c[0]= b[1], c[1] =b[2] ... c[8]= b[9]

int[] d;
d = a ~ c; // d[0]=a[0],d[1]=a[1]...,d[10]=a[10],d[11]=c[0]... d[19]=c[8]

int* p = b.ptr; //p aponta para o primeiro elemento de b
for(int i = 0; i < b.length; i++)
   printf("%d\n", *(p+i));

c.sort; //ordena o vetor c
//Arranjos associativos:
int[char[]] a; //array associativo
a["hello"] = 4;
a["tchau"] = 10;
a["oi"] = 50;
a["nome"] = 70;

int* p;
p = ("tchau" in a); //p aponta para uma chave de índice "tchau" e se ela
                   //não existir, p será igual a null
if(p != null) //encontrou o índice
{
   printf("%d\n", *p);
}

a.remove("oi"); //remove a chave "oi"
uint toHash(char[] str)
{
   uint hash;
   foreach (char c; str)
      hash = (hash * 9) + c;
   return hash;
}

é o mesmo que

uint toHash(char[] str)
{
   uint hash;
   for(int i=0; i<str.length; i++)
   {
      char c = str[i];
      hash = (hash * 9) + c;
   }
   return hash;
}

Ver também

Referências

Ligações externas

talvez você goste