diff --git a/basics/basic-types.md b/basics/basic-types.md
index 496a1ec..5c374e9 100644
--- a/basics/basic-types.md
+++ b/basics/basic-types.md
@@ -1,77 +1,76 @@
-# Basic types
+# Tipos básicos
-D provides a number of basic types which always have the same
-size **regardless** of the platform - the only exception
-is the `real` type which provides the highest possible floating point
-precision. There is no difference
-between the size of an integer regardless whether the application
-is compiled for 32-bit or 64-bit systems.
+O D fornece vários tipos básicos que sempre têm o mesmo
+tamanho **independentemente** da plataforma - a única exceção
+é o tipo `real` que fornece a maior precisão possível de ponto flutuante
+possível. Não há diferença
+entre o tamanho de um número inteiro, independentemente de o aplicativo
+seja compilado para sistemas de 32 ou 64 bits.
-
-bool | 8-bit |
-byte, ubyte, char | 8-bit |
-short, ushort, wchar | 16-bit |
-int, uint, dchar | 32-bit |
-long, ulong | 64-bit |
-
+| tipo | tamanho
+|-------------------------------|------------
+|`bool`, `byte`, `ubyte`, `char`| 8-bit
+|`short`, `ushort`, `wchar` | 16-bit
+|`int`, `uint`, `dchar` | 32-bit
+|`long`, `ulong` | 64-bit
-#### Floating point types:
+#### Tipos ponto flutuante:
-
-float | 32-bit |
-double | 64-bit |
-real | depending on platform, 80-bit on Intel x86 32-bit |
-
+| tipo | tamanho
+|---------|--------------------------------------------------
+|`float` | 32-bit
+|`double` | 64-bit
+|`real` | >= 64-bit (geralmente 64-bit, mas 80-bit em Intel x86 32-bit)
-The prefix `u` denotes *unsigned* types. `char` translates to
-UTF-8 characters, `wchar` is used in UTF-16 strings and `dchar`
-in UTF-32 strings.
+O prefixo `u` indica tipos *unsigned*. `char` se traduz em caracteres
+caracteres UTF-8, `wchar` é usado em strings UTF-16 e `dchar`
+em cadeias de caracteres UTF-32.
-A conversion between variables of different types is only
-allowed by the compiler if no precision is lost. A conversion
-between floating point types (e.g `double` to `float`)
-is allowed though.
+Uma conversão entre variáveis de tipos diferentes só é
+permitida pelo compilador se não houver perda de precisão. No entanto,
+uma conversão entre tipos de ponto flutuante
+(por exemplo, `double` para `float`) é permitida.
-A conversion to another type may be forced by using the
-`cast(TYPE) myVar` expression. It needs to be used with great care though,
-as the `cast` expression is allowed to break the type system.
+Uma conversão para outro tipo pode ser forçada com o uso da expressão
+`cast(TYPE) myVar`. No entanto, ela precisa ser usada com muito cuidado,
+pois a expressão `cast` pode quebrar o sistema de tipos.
-The special keyword `auto` creates a variable and infers its
-type from the right hand side of the expression. `auto myVar = 7`
-will deduce the type `int` for `myVar`. Note that the type is still
-set at compile-time and can't be changed - just like with any other
-variable with an explicitly given type.
+A palavra-chave especial `auto` cria uma variável e infere
+seu tipo a partir do lado direito da expressão. `auto myVar = 7`
+deduzirá o tipo `int` para `myVar`. Observe que o tipo ainda é
+definido em tempo de compilação e não pode ser alterado, como em qualquer outra
+variável com um tipo explicitamente fornecido.
-### Type properties
+### Propriedades de tipos
-All data types have a property `.init` to which they are initialized.
-For all integers this is `0` and for floating points it is `nan` (*not a number*).
+Todos os tipos de dados têm uma propriedade `.init` para a qual são inicializados.
+Para todos os números inteiros, essa propriedade é `0` e, para pontos flutuantes, é `nan` (*não é um número*).
-Integral and floating point types have a `.max` property for the highest value
-they can represent. Integral types also have a `.min` property for the lowest value
-they can represent, whereas floating point types have a `.min_normal` property
-which is defined to the smallest representable normalized value that's not 0.
+Os tipos de ponto flutuante e integral têm uma propriedade `.max` para o valor mais alto que podem representar.
+Os tipos integrais também têm uma propriedade `.min` para o valor mais baixo
+que podem representar, enquanto os tipos de ponto flutuante têm uma propriedade `.min_normal`
+que é definida como o menor valor normalizado representável que não é 0.
-Floating point types also have properties `.nan` (NaN-value), `.infinity`
-(infinity value), `.dig` (number of decimal digits of precisions), `.mant_dig`
-(number of bits in mantissa) and more.
+Os tipos de ponto flutuante também têm as propriedades `.nan` (valor NaN), `.infinity`
+(valor infinito), `.dig` (número de dígitos decimais das precisões), `.mant_dig`
+(número de bits na mantissa) e outras.
-Every type also has a `.stringof` property which yields its name as a string.
+Cada tipo também tem uma propriedade `.stringof` que produz seu nome como uma string.
-### Indexes in D
+### Índices em D
-In D, indexes usually have the alias type `size_t`, as it is a type that
-is large enough to represent an offset into all addressible memory - this is
-`uint` for 32-bit and `ulong` for 64-bit architectures.
+Em D, os índices geralmente têm o alias do tipo `size_t`, pois é um tipo que
+é grande o suficiente para representar um deslocamento em toda a memória endereçável - isto é
+`uint` para arquiteturas de 32 bits e `ulong` para arquiteturas de 64 bits.
-### Asserts
+### Expressão Assert
-`assert` is a compiler built-in which verifies conditions in debug mode and aborts
-with an `AssertionError` if it fails.
+O `assert` é uma expressão que verifica as condições no modo de depuração e aborta com um `AssertionError` se falhar.
+O `assert(0)` é, portanto, usado para marcar código inacessível.
-### In-depth
+### Maiores Detalhes
-#### Basic references
+#### Referências Básicas
- [Assignment](http://ddili.org/ders/d.en/assignment.html)
- [Variables](http://ddili.org/ders/d.en/variables.html)
@@ -79,43 +78,47 @@ with an `AssertionError` if it fails.
- [Floating Point](http://ddili.org/ders/d.en/floating_point.html)
- [Fundamental types in _Programming in D_](http://ddili.org/ders/d.en/types.html)
-#### Advanced references
+#### Referencias Avançadas
- [Overview of all basic data types in D](https://dlang.org/spec/type.html)
- [`auto` and `typeof` in _Programming in D_](http://ddili.org/ders/d.en/auto_and_typeof.html)
- [Type properties](https://dlang.org/spec/property.html)
+- [Assert expression](https://dlang.org/spec/expression.html#AssertExpression)
## {SourceCode}
```d
-import std.stdio;
+import std.stdio : writeln;
void main()
{
- // Big numbers can be separated
- // with an underscore "_"
- // to enhance readability.
+ // Números grandes podem ser separados
+ // utilizando sublinha "_"
+ // melhorando a legibilidade.
int b = 7_000_000;
- short c = cast(short) b; // cast needed
- uint d = b; // fine
+ // necessário cast
+ // para conversão explícita
+ short c = cast(short) b;
+ uint d = b; // conversão implícita
int g;
assert(g == 0);
- auto f = 3.1415f; // f denotes a float
+ // f denota-se ser do tipo float
+ auto f = 3.1415f;
- // typeid(VAR) returns the type information
- // of an expression.
+ // typeid(VAR) retorna a informação
+ // sobre o tipo da expressão.
writeln("type of f is ", typeid(f));
- double pi = f; // fine
- // for floating-point types
- // implicit down-casting is allowed
+ double pi = f; // conversão implícita
+ // para tipos de ponto flutuante
+ // permitindo a redução implícita
float demoted = pi;
- // access to type properties
+ // acessando as propriedades do tipo
assert(int.init == 0);
assert(int.sizeof == 4);
assert(bool.max == 1);
writeln(int.min, " ", int.max);
writeln(int.stringof); // int
}
-```
+```
\ No newline at end of file
diff --git a/basics/imports-and-modules.md b/basics/imports-and-modules.md
index c2cc185..4e85797 100644
--- a/basics/imports-and-modules.md
+++ b/basics/imports-and-modules.md
@@ -1,24 +1,56 @@
-# Imports and modules
+# Imports e modules
-For a simple hello world program in D, `import`s are needed.
-The `import` statement makes all public functions
-and types from the given **module** available.
+{{#img-right}}turtle.svg{{/img-right}}
-The standard library, called [Phobos](https://dlang.org/phobos/),
-is located under the **package** `std`
-and its modules are referenced through `import std.MODULE`.
+Uma das principais decisões de design do D foi ser consistente e evitar casos isolados
+na linguagem.
+Isto é conhecido como [_turtles all the way down_](https://en.wikipedia.org/wiki/Turtles_all_the_way_down). [tradução livre: _Tartarugas até lá embaixo._]
+Um bom exemplo dessa consistência são os `import`s.
-The `import` statement can also be used to selectively
-import certain symbols of a module:
+## Imports
- import std.stdio: writeln, writefln;
+Para um simples programa Olá Mundo em D, são necessários `import`s.
+A instrução `import` torna disponíveis todas as funções públicas
+e tipos públicos do **módulo** fornecido.
-Selective imports can be used to improve readability by making
-it obvious where a symbol comes from, and also as a way to
-prevent clashing of symbols with the same name from different modules.
+### As tartarugas começam a cair
-An `import` statement does not need to appear at the top of a source file.
-It can also be used locally within functions or any other scope.
+Uma instrução `import` não precisa aparecer na parte superior de um arquivo de código-fonte.
+Ela também pode ser usada localmente em funções ou em qualquer outro escopo.
+Nos próximos capítulos, você verá que isso se aplica a quase todos os conceitos em D. A linguagem não impõe restrições arbitrárias a você.
+
+### Imports seletivos
+
+A biblioteca pad~rao, chamado [Phobos](https://dlang.org/phobos/),
+está localizado no **pacote** `std`
+e seus módulos são referenciados por meio do `import std.MODULE`.
+
+A instrução `import` também pode ser usada para importar seletivamente
+determinados símbolos de um módulo:
+
+ import std.stdio : writeln, writefln;
+
+As importações seletivas podem ser usadas para melhorar a legibilidade, tornando
+óbvia a origem de um símbolo e também como uma forma de
+evitar o conflito de símbolos com o mesmo nome de módulos diferentes.
+
+### As importações correspondem a diretórios e arquivos
+
+O sistema de módulos do D, em contraste com outros sistemas, é totalmente baseado em arquivos.
+Por exemplo, `import my.cat` sempre se refere a um arquivo `cat.d` na pasta `my/`.
+A pasta `my` precisa estar no diretório de trabalho atual ou
+em uma das importações de diretório especificadas explicitamente (`-I`).
+Por fim, para facilitar a divisão de módulos grandes em vários arquivos menores,
+em vez de `cat.d`, uma pasta `cat/` também poderia ser usada.
+O compilador D tentaria então carregar `my/cat/package.d` em vez de `my/cat.d`.
+
+A convenção (mas não uma regra rígida) para arquivos `package.d` é importar publicamente
+todos os outros módulos na mesma pasta.
+
+### Maiores detalhes
+
+- [Modules and Libraries in _Programming in D_](http://ddili.org/ders/d.en/modules.html)
+- [Modules specification](https://dlang.org/spec/module.html)
## {SourceCode}
@@ -26,7 +58,7 @@ It can also be used locally within functions or any other scope.
void main()
{
import std.stdio;
- // or import std.stdio: writeln;
- writeln("Hello World!");
+ // ou import std.stdio : writeln;
+ writeln("Olá, Mundo!");
}
-```
+```
\ No newline at end of file