summaryrefslogtreecommitdiffhomepage
path: root/pt-br
diff options
context:
space:
mode:
Diffstat (limited to 'pt-br')
-rw-r--r--pt-br/asymptotic-notation-pt.html.markdown26
-rw-r--r--pt-br/awk-pt.html.markdown5
-rw-r--r--pt-br/bash-pt.html.markdown2
-rw-r--r--pt-br/c++-pt.html.markdown13
-rw-r--r--pt-br/c-pt.html.markdown2
-rw-r--r--pt-br/clojure-pt.html.markdown5
-rw-r--r--pt-br/cmake-pt.html.markdown179
-rw-r--r--pt-br/coffeescript-pt.html.markdown46
-rw-r--r--pt-br/common-lisp-pt.html.markdown2
-rw-r--r--pt-br/csharp-pt.html.markdown44
-rw-r--r--pt-br/css-pt.html.markdown41
-rw-r--r--pt-br/cypher-pt.html.markdown250
-rw-r--r--pt-br/dynamic-programming-pt.html.markdown10
-rw-r--r--pt-br/factor-pt.html.markdown184
-rw-r--r--pt-br/go-pt.html.markdown6
-rw-r--r--pt-br/groovy-pt.html.markdown2
-rw-r--r--pt-br/haxe-pt.html.markdown795
-rw-r--r--pt-br/html-pt.html.markdown125
-rw-r--r--pt-br/latex-pt.html.markdown6
-rw-r--r--pt-br/less-pt.html.markdown390
-rw-r--r--pt-br/make-pt.html.markdown243
-rw-r--r--pt-br/markdown-pt.html.markdown19
-rw-r--r--pt-br/matlab-pt.html.markdown3
-rw-r--r--pt-br/paren-pt.html.markdown8
-rw-r--r--pt-br/pascal-pt.html.markdown253
-rw-r--r--pt-br/pyqt-pt.html.markdown2
-rw-r--r--pt-br/python-pt.html.markdown2
-rw-r--r--pt-br/python3-pt.html.markdown38
-rw-r--r--pt-br/ruby-pt.html.markdown2
-rw-r--r--pt-br/rust-pt.html.markdown6
-rw-r--r--pt-br/solidity-pt.html.markdown2
-rwxr-xr-xpt-br/stylus-pt.html.markdown228
-rw-r--r--pt-br/typescript-pt.html.markdown7
-rw-r--r--pt-br/vim-pt.html.markdown6
-rw-r--r--pt-br/visualbasic-pt.html.markdown2
-rw-r--r--pt-br/whip-pt.html.markdown10
-rw-r--r--pt-br/xml-pt.html.markdown3
-rw-r--r--pt-br/yaml-pt.html.markdown4
38 files changed, 2826 insertions, 145 deletions
diff --git a/pt-br/asymptotic-notation-pt.html.markdown b/pt-br/asymptotic-notation-pt.html.markdown
index aecc2194..b70d26b7 100644
--- a/pt-br/asymptotic-notation-pt.html.markdown
+++ b/pt-br/asymptotic-notation-pt.html.markdown
@@ -13,7 +13,7 @@ lang: pt-br
## O que é?
Notação Assintótica é uma linguagem que nos permite analisar o tempo de execução
- de um algoritmo através da indentificação de seu comportamento com o
+ de um algoritmo através da identificação de seu comportamento com o
crescimento da entrada oferecida. Isso também é conhecido como taxa de
crescimento do algoritmo. O algoritmo de repente torna-se lento quando o
tamanho da entrada cresce? O algoritmo mantém, em geral, seu tempo de execução
@@ -33,12 +33,12 @@ Um modo seria contar o número de operações primitivas com diferentes tamanhos
## Tipos de Notação Assintótica
-Na primeira seção desse documento, descrevemos como Notação Assintótica identifica o comportamento de um algoritmo
+Na primeira seção deste documento, descrevemos como Notação Assintótica identifica o comportamento de um algoritmo
a medida que o tamanho da entrada cresce. Imaginemos um algoritmo como uma função
*f*, *n* como o tamanho da entrada e *f(n)* sendo o tempo de execução. Então,
para dado algoritmo *f*, com entrada de tamanho *n*, você terá tempo de execução
- *f(n)*. Isto resulta em um gráfico onde a coordernada Y é o tempo de execução
-, a coordernada X representa o tamanho da entrada e os pontos representam o tempo
+ *f(n)*. Isto resulta em um gráfico onde a coordenada Y é o tempo de execução,
+ a coordenada X representa o tamanho da entrada e os pontos representam o tempo
de execução para dado tamanho de entrada.
Você pode representar a função, ou o algoritmo, com Notação Assintótica de várias
@@ -49,7 +49,7 @@ não avalia o melhor caso, porque essas condições não são atingidas com freq
Um bom exemplo disto seria em algoritmos de ordenação; especificamente, na adição
de elementos à árvores. O melhor caso na maioria de algoritmos pode ser de apenas
uma operação. Entretanto, na maioria dos casos, o elemento a ser adicionado terá
-que percorrer a árvore de forma apropriada, o que pode causar a analise de um
+que percorrer a árvore de forma apropriada, o que pode causar a análise de um
ramo inteiro.
Este é o pior caso, e isto é o que você está se preparando.
@@ -63,16 +63,16 @@ Função Polinomial - an^z + . . . + an^2 + a*n^1 + a*n^0, onde *z* é uma const
Função Exponencial - a^n, onde a é alguma constante
```
Estas são as funções básicas de crescimento usadas em várias notações. A lista
- começa com a de crescimento mais lento (logarítima, a de execução mais rápida)
+ começa com a de crescimento mais lento (logarítmica, a de execução mais rápida)
e segue para a de crescimento mais rápido (exponencial, de execução mais lenta).
-Repare que enquando *n*, a entrada, cresce, cada uma dessas funções cresce mais
-rápido que quadrático, polinimial e exponencial, comparadas com logaritma e linear.
+Repare que enquanto *n*, a entrada, cresce, cada uma dessas funções cresce mais
+rápido que quadrático, polinomial e exponencial, comparadas com logarítmica e linear.
Uma nota extremamente importante para notações é tentar usar os termos mais simples.
Isto significa descartar constantes e termos de ordem mais baixa, pois quando o
tamanho da entrada cresce para o infinito (limites matemáticos), os termos de ordem
mais baixa e constantes tornam-se irrelevantes. Por exemplo, se você tiver uma
-constante muito grande, 2^9001, a simplificação não afeterá sua notação.
+constante muito grande, 2^9001, a simplificação não afetará sua notação.
Já que queremos as formas mais simples, mudemos nossa tabela um pouco...
@@ -87,8 +87,8 @@ Função Exponencial - a^n, onde *a* é uma constante
### Big-O
Big-O, também escrita como O, é uma Notação Assintótica para o pior caso. Digamos
-*f(n)* seja o tempo de exeução de um algoritmo e *g(n)) um tempo de complexidade
-arbritário que você quer relacionar com seu algoritmo. *f(n)* é O(g(n)), se, para
+*f(n)* seja o tempo de execução de um algoritmo e *g(n)) um tempo de complexidade
+arbitrário que você quer relacionar com seu algoritmo. *f(n)* é O(g(n)), se, para
quando constante real c (c > 0), *f(n)* <= *c g(n)* para todo tamanho de entrada
n (n > 0).
@@ -116,7 +116,7 @@ Há alguma constante c que satisfaça a definição para todo n?
3log n + 100 <= 150 * log n, n > 2 (Indefinido em n = 1)
```
-Sim! A definição de Big-I for atentida, portante `f(n)` é `O(g(n))`.
+Sim! A definição de Big-O foi atendida, portanto `f(n)` é `O(g(n))`.
*Exemplo 2*
@@ -146,7 +146,7 @@ Big-Omega, também escrita como Ω, é uma Notação Assintótica para o melhor
Sinta-se livre para adicionar mais exemplos. Big-O é a notação primária usada para medir complexidade de algoritmos.
### Notas Finais
-É difícil manter esse tipo de tópico curto e você deveria ler os livros e artigos listados abaixo. Eles cobrem muito mais profundamente definições e exemplos. Mais x='Algoritms & Data Structures' virá; teremos um documento sobre analisar código em breve.
+É difícil manter esse tipo de tópico curto e você deveria ler os livros e artigos listados abaixo. Eles cobrem muito mais profundamente definições e exemplos. Mais x='Algorithms & Data Structures' virá; teremos um documento sobre analisar código em breve.
## Livros
diff --git a/pt-br/awk-pt.html.markdown b/pt-br/awk-pt.html.markdown
index 75b73abe..9bf770fd 100644
--- a/pt-br/awk-pt.html.markdown
+++ b/pt-br/awk-pt.html.markdown
@@ -1,5 +1,6 @@
---
-language: awk
+category: tool
+tool: awk
filename: learnawk-pt.awk
contributors:
- ["Marshall Mason", "http://github.com/marshallmason"]
@@ -171,7 +172,7 @@ function arithmetic_functions(a, b, c, d) {
# Muitas implementações AWK possuem algumas funções trigonométricas padrão
localvar = sin(a)
localvar = cos(a)
- localvar = atan2(a, b) # arco-tangente de b / a
+ localvar = atan2(b, a) # arco-tangente de b / a
# E conteúdo logarítmico
localvar = exp(a)
diff --git a/pt-br/bash-pt.html.markdown b/pt-br/bash-pt.html.markdown
index ae18435a..3a48d994 100644
--- a/pt-br/bash-pt.html.markdown
+++ b/pt-br/bash-pt.html.markdown
@@ -16,7 +16,7 @@ lang: pt-br
Tutorial de shell em português
-Bash é o nome do shell do Unix, que também é distribuido como shell do sistema
+Bash é o nome do shell do Unix, que também é distribuído como shell do sistema
operacional GNU e como shell padrão para Linux e Mac OS X. Praticamente todos
os exemplos abaixo podem fazer parte de um shell script e pode ser executados
diretamente no shell.
diff --git a/pt-br/c++-pt.html.markdown b/pt-br/c++-pt.html.markdown
index cd4adde7..42a29991 100644
--- a/pt-br/c++-pt.html.markdown
+++ b/pt-br/c++-pt.html.markdown
@@ -564,15 +564,15 @@ void doSomethingWithAFile(const std::string& filename)
// Isto tem _grandes_ vantagens:
// 1. Não importa o que aconteça,
-// o recurso (neste caso, o identificador de ficheiro) irá ser limpo.
+// o recurso (neste caso, o identificador de ficheiro) será limpo.
// Depois de escrever o destruidor corretamente,
// É _impossível_ esquecer de fechar e vazar o recurso
// 2. Nota-se que o código é muito mais limpo.
// As alças destructor fecham o arquivo por trás das cenas
// sem que você precise se preocupar com isso.
// 3. O código é seguro de exceção.
-// Uma exceção pode ser jogado em qualquer lugar na função e a limpeza
-// irá ainda ocorrer.
+// Uma exceção pode ser lançada em qualquer lugar na função e a limpeza
+// ainda irá ocorrer.
// Todos códigos C++ usam RAII extensivamente para todos os recursos.
// Outros exemplos incluem
@@ -609,7 +609,6 @@ h=sum<double>(f,g);
```
Leitura Adicional:
-Uma referência atualizada da linguagem pode ser encontrada em
-<http://cppreference.com/w/cpp>
-
-Uma fonte adicional pode ser encontrada em <http://cplusplus.com>
+* Uma referência atualizada da linguagem pode ser encontrada em [CPP Reference](http://cppreference.com/w/cpp).
+* Uma fonte adicional pode ser encontrada em [CPlusPlus](http://cplusplus.com).
+* Um tutorial cobrindo o básico da linguagem e configurando o ambiente de codificação está disponível em [TheChernoProject - C ++](https://www.youtube.com/playlist?list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb).
diff --git a/pt-br/c-pt.html.markdown b/pt-br/c-pt.html.markdown
index d594b7b9..e1c27958 100644
--- a/pt-br/c-pt.html.markdown
+++ b/pt-br/c-pt.html.markdown
@@ -538,7 +538,7 @@ int area(retan r)
return r.largura * r.altura;
}
-// Se você tiver structus grande, você pode passá-las "por ponteiro"
+// Se você tiver structs grandes, você pode passá-las "por ponteiro"
// para evitar cópia de toda a struct:
int area(const retan *r)
{
diff --git a/pt-br/clojure-pt.html.markdown b/pt-br/clojure-pt.html.markdown
index 7e8b3f7b..409394f2 100644
--- a/pt-br/clojure-pt.html.markdown
+++ b/pt-br/clojure-pt.html.markdown
@@ -340,7 +340,7 @@ keymap ; => {:a 1, :b 2, :c 3}
(def my-atom (atom {}))
; Atualize o atom com um swap!.
-; swap! pega uma funçnao and chama ela com o valor atual do atom
+; swap! pega uma função e chama ela com o valor atual do atom
; como primeiro argumento, e qualquer argumento restante como o segundo
(swap! my-atom assoc :a 1) ; Coloca o valor do átomo my-atom como o resultado de (assoc {} :a 1)
(swap! my-atom assoc :b 2) ; Coloca o valor do átomo my-atom como o resultado de (assoc {:a 1} :b 2)
@@ -382,3 +382,6 @@ Clojuredocs.org tem documentação com exemplos para quase todas as funções pr
Clojure-doc.org tem um bom número de artigos para iniciantes:
[http://clojure-doc.org/](http://clojure-doc.org/)
+
+Clojure for the Brave and True é um livro de introdução ao Clojure e possui uma versão gratuita online:
+[https://www.braveclojure.com/clojure-for-the-brave-and-true/](https://www.braveclojure.com/clojure-for-the-brave-and-true/)
diff --git a/pt-br/cmake-pt.html.markdown b/pt-br/cmake-pt.html.markdown
new file mode 100644
index 00000000..d11fe4f4
--- /dev/null
+++ b/pt-br/cmake-pt.html.markdown
@@ -0,0 +1,179 @@
+---
+category: tool
+tool: cmake
+contributors:
+ - ["Bruno Alano", "https://github.com/brunoalano"]
+filename: CMake-br
+translators:
+ - ["Lucas Pugliesi", "https://github.com/fplucas"]
+lang: pt-br
+---
+
+CMake é um programa de compilação open-source e multiplataforma. Essa ferramenta
+permitirá testar, compilar e criar pacotes a partir do seu código fonte.
+
+O problema que o CMake tenta resolver são os problemas de configurar os Makefiles
+e Autoconfigure (diferente dos interpretadores make que tem comandos diferentes)
+e sua facilidade de uso envolvendo bibliotecas terceiras.
+
+CMake é um sistema open-source extensível que gerencia o processo de build em um
+sistema operacional e um método independente de compilador. Diferente de sistemas
+multiplataformas, CMake é designado a usar em conjunto ao ambiente de compilação
+nativo. Seus simples arquivos de configuração localizados em seus diretórios
+(chamados arquivos CMakeLists.txt) que são usados para gerar padrões de arquivos
+de compilação (ex: makefiles no Unix e projetos em Windows MSVC) que são usados
+de maneira simples.
+
+```cmake
+# No CMake, isso é um comentário
+
+# Para rodar nosso código, iremos utilizar esses comandos:
+# - mkdir build && cd build
+# - cmake ..
+# - make
+#
+# Com esses comandos, iremos seguir as melhores práticas para compilar em um
+# subdiretório e na segunda linha pediremos ao CMake para gerar um novo Makefile
+# independente de sistema operacional. E finalmente, rodar o comando make.
+
+#------------------------------------------------------------------------------
+# Básico
+#------------------------------------------------------------------------------
+#
+# O arquivo CMake deve ser chamado de "CMakeLists.txt".
+
+# Configura a versão mínima requerida do CMake para gerar o Makefile
+cmake_minimum_required (VERSION 2.8)
+
+# Exibe FATAL_ERROR se a versão for menor que 2.8
+cmake_minimum_required (VERSION 2.8 FATAL_ERROR)
+
+# Configuramos o nome do nosso projeto. Mas antes disso, iremos alterar alguns
+# diretórios em nome da convenção gerada pelo CMake. Podemos enviar a LANG do
+# código como segundo parâmetro
+project (learncmake C)
+
+# Configure o diretório do código do projeto (somente convenção)
+set( LEARN_CMAKE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} )
+set( LEARN_CMAKE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} )
+
+# Isso é muito útil para configurar a versão do nosso código no sistema de compilação
+# usando um estilo `semver`
+set (LEARN_CMAKE_VERSION_MAJOR 1)
+set (LEARN_CMAKE_VERSION_MINOR 0)
+set (LEARN_CMAKE_VERSION_PATCH 0)
+
+# Envie as variáveis (número da versão) para o cabeçalho de código-fonte
+configure_file (
+ "${PROJECT_SOURCE_DIR}/TutorialConfig.h.in"
+ "${PROJECT_BINARY_DIR}/TutorialConfig.h"
+)
+
+# Inclua Diretórios
+# No GCC, isso irá invocar o comando "-I"
+include_directories( include )
+
+# Onde as bibliotecas adicionais estão instaladas? Nota: permite incluir o path
+# aqui, na sequência as checagens irão resolver o resto
+set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake/modules/" )
+
+# Condições
+if ( CONDICAO )
+ # reposta!
+
+ # Informação incidental
+ message(STATUS "Minha mensagem")
+
+ # Aviso CMake, continua processando
+ message(WARNING "Minha mensagem")
+
+ # Aviso (dev) CMake, continua processando
+ message(AUTHOR_WARNING "Minha mensagem")
+
+ # Erro CMake, continua processando, mas pula a geração
+ message(SEND_ERROR "Minha mensagem")
+
+ # Erro CMake, para o processamento e a geração
+ message(FATAL_ERROR "Minha mensagem")
+endif()
+
+if( CONDICAO )
+
+elseif( CONDICAO )
+
+else( CONDICAO )
+
+endif( CONDICAO )
+
+# Loops
+foreach(loop_var arg1 arg2 ...)
+ COMANDO1(ARGS ...)
+ COMANDO2(ARGS ...)
+ ...
+endforeach(loop_var)
+
+foreach(loop_var RANGE total)
+foreach(loop_var RANGE start stop [step])
+
+foreach(loop_var IN [LISTS [list1 [...]]]
+ [ITEMS [item1 [...]]])
+
+while(condicao)
+ COMANDO1(ARGS ...)
+ COMANDO2(ARGS ...)
+ ...
+endwhile(condicao)
+
+
+# Operações Lógicas
+if(FALSE AND (FALSE OR TRUE))
+ message("Não exiba!")
+endif()
+
+# Configure um cache normal, ou uma variável de ambiente com o dado valor.
+# Se a opção PARENT_SCOPE for informada em uma variável que será setada no escopo
+# acima do escopo corrente.
+# `set(<variavel> <valor>... [PARENT_SCOPE])`
+
+# Como refencia variáveis dentro de aspas ou não, argumentos com strings vazias
+# não serão setados
+${nome_da_variavel}
+
+# Listas
+# Configure a lista de arquivos código-fonte
+set( LEARN_CMAKE_SOURCES
+ src/main.c
+ src/imagem.c
+ src/pather.c
+)
+
+# Chama o compilador
+#
+# ${PROJECT_NAME} referencia ao Learn_CMake
+add_executable( ${PROJECT_NAME} ${LEARN_CMAKE_SOURCES} )
+
+# Linka as bibliotecas
+target_link_libraries( ${PROJECT_NAME} ${LIBS} m )
+
+# Onde as bibliotecas adicionais serão instaladas? Nota: nos permite incluir o path
+# aqui, em seguida os testes irão resolver o restante
+set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake/modules/" )
+
+# Condição do compilador (gcc ; g++)
+if ( "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" )
+ message( STATUS "Setting the flags for ${CMAKE_C_COMPILER_ID} compiler" )
+ add_definitions( --std=c99 )
+endif()
+
+# Checa o Sistema Operacional
+if( UNIX )
+ set( LEARN_CMAKE_DEFINITIONS
+ "${LEARN_CMAKE_DEFINITIONS} -Wall -Wextra -Werror -Wno-deprecated-declarations -Wno-unused-parameter -Wno-comment" )
+endif()
+```
+
+### Mais Recursos
+
++ [cmake tutorial](https://cmake.org/cmake-tutorial/)
++ [cmake documentation](https://cmake.org/documentation/)
++ [mastering cmake](http://amzn.com/1930934319/)
diff --git a/pt-br/coffeescript-pt.html.markdown b/pt-br/coffeescript-pt.html.markdown
index 8b1094b1..7129a463 100644
--- a/pt-br/coffeescript-pt.html.markdown
+++ b/pt-br/coffeescript-pt.html.markdown
@@ -3,19 +3,20 @@ language: coffeescript
contributors:
- ["Tenor Biel", "http://github.com/L8D"]
- ["Xavier Yao", "http://github.com/xavieryao"]
+ - ["Claudio Busatto", "http://github.com/cjcbusatto"]
translators:
- ["Miguel Araújo", "https://github.com/miguelarauj1o"]
lang: pt-br
filename: learncoffeescript-pt.coffee
---
-CoffeeScript é uma pequena linguagem que compila um-para-um para o JavaScript
-equivalente, e não há interpretação em tempo de execução. Como um dos sucessores
-de JavaScript, CoffeeScript tenta o seu melhor para exibir uma saída legível,
-bem-impressa e bom funcionamento dos códigos JavaScript em todo o tempo de
+CoffeeScript é uma pequena linguagem que compila um-para-um para o JavaScript
+equivalente, e não há interpretação em tempo de execução. Como um dos sucessores
+de JavaScript, CoffeeScript tenta o seu melhor para exibir uma saída legível,
+bem-impressa e bom funcionamento dos códigos JavaScript em todo o tempo de
execução JavaScript.
-Veja também [site do CoffeeScript](http://coffeescript.org/), que tem um tutorial
+Veja também [site do CoffeeScript](http://coffeescript.org/), que tem um tutorial
completo sobre CoffeeScript.
``` coffeescript
@@ -23,35 +24,35 @@ completo sobre CoffeeScript.
#Segue as tendências de muitas linguagens modernas
#Assim, os comentários são iguais a Ruby e Python, eles usam símbolos numéricos.
-###
-Os comentários em bloco são como estes, e eles traduzem diretamente para '/ *'s e
+###
+Os comentários em bloco são como estes, e eles traduzem diretamente para '/ *'s e
'* /'s para o código JavaScript que resulta...
-Você deveria entender mais de semântica de JavaScript antes de continuar...
+Você deveria entender mais de semântica de JavaScript antes de continuar...
###
-# Tarefa:
-numero = 42 #=> número var = 42;
+# Tarefa:
+numero = 42 #=> var numero = 42;
oposto = true #=> var oposto = true;
-# Condições:
-numero = -42 if oposto #=> if (oposto) {número = -42;}
+# Condições:
+numero = -42 if oposto #=> if (oposto) {numero = -42;}
-# Funções:
+# Funções:
quadrado = (x) -> x * x #=> var quadrado = function (x) {return x * x;}
-preencher = (recipiente, líquido = "coffee") ->
- "Preenchendo o #{recipiente} with #{líquido}..."
+preencher = (recipiente, liquido = "coffee") ->
+ "Preenchendo o #{recipiente} with #{liquido}..."
#=>var preencher;
#
-#preencher = function(recipiente, líquido) {
-# if (líquido == null) {
-# líquido = "coffee";
+#preencher = function(recipiente, liquido) {
+# if (liquido == null) {
+# liquido = "coffee";
# }
-# return "Preenchendo o " + recipiente + " with " + líquido + "...";
+# return "Preenchendo o " + recipiente + " with " + liquido + "...";
#};
-# Alcances:
+# Alcances:
list = [1 .. 5] #=> lista var = [1, 2, 3, 4, 5];
# Objetos:
@@ -79,7 +80,7 @@ alert "Eu sabia!" if elvis?
#=> if(typeof elvis !== "undefined" && elvis !== null) { alert("Eu sabia!"); }
# Compressão de Matrizes:
-cubes = (math.cube num for num in list)
+cubes = (math.cube num for num in list)
#=>cubes = (function() {
# var _i, _len, _results;
# _results = [];
@@ -99,8 +100,9 @@ eat alimento for alimento in comidas when alimento isnt 'chocolate'
# if (alimento !== 'chocolate') {
# eat(alimento);
# }
+```
## Recursos adicionais
- [Smooth CoffeeScript](http://autotelicum.github.io/Smooth-CoffeeScript/)
-- [CoffeeScript Ristretto](https://leanpub.com/coffeescript-ristretto/read) \ No newline at end of file
+- [CoffeeScript Ristretto](https://leanpub.com/coffeescript-ristretto/read)
diff --git a/pt-br/common-lisp-pt.html.markdown b/pt-br/common-lisp-pt.html.markdown
index c3381824..c22cfd8e 100644
--- a/pt-br/common-lisp-pt.html.markdown
+++ b/pt-br/common-lisp-pt.html.markdown
@@ -19,7 +19,7 @@ Outro livro recente e popular é o
[Land of Lisp](http://landoflisp.com/).
-```common-lisp
+```lisp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 0. Sintaxe
diff --git a/pt-br/csharp-pt.html.markdown b/pt-br/csharp-pt.html.markdown
index b6e95d36..2ff59296 100644
--- a/pt-br/csharp-pt.html.markdown
+++ b/pt-br/csharp-pt.html.markdown
@@ -59,7 +59,7 @@ namespace Learning.CSharp
Console.Write("World");
///////////////////////////////////////////////////
- // Tpos e Variáveis
+ // Tipos e Variáveis
//
// Declare uma variável usando <tipo> <nome>
///////////////////////////////////////////////////
@@ -95,8 +95,8 @@ namespace Learning.CSharp
float fooFloat = 234.5f; // Precision: 7 digits
// f is used to denote that this variable value is of type float
- // Decimal - a 128-bits data type, with more precision than other floating-point types,
- // suited for financial and monetary calculations
+ // Decimal - um tipo de dados de 128 bits, com mais precisão do que outros tipos de ponto flutuante,
+ // adequado para cálculos financeiros e monetários
decimal fooDecimal = 150.3m;
// Boolean - true & false
@@ -294,9 +294,9 @@ on a new line! ""Wow!"", the masses cried";
case 3:
monthString = "March";
break;
- // You can assign more than one case to an action
- // But you can't add an action without a break before another case
- // (if you want to do this, you would have to explicitly add a goto case x
+ // Você pode declarar mais de um "case" para uma ação
+ // Mas você não pode adicionar uma ação sem um "break" antes de outro "case"
+ // (se você quiser fazer isso, você tem que explicitamente adicionar um "goto case x")
case 6:
case 7:
case 8:
@@ -336,28 +336,28 @@ on a new line! ""Wow!"", the masses cried";
}
///////////////////////////////////////
- // CLASSES - see definitions at end of file
+ // CLASSES - Veja definições no fim do arquivo
///////////////////////////////////////
public static void Classes()
{
- // See Declaration of objects at end of file
+ // Veja Declaração de objetos no fim do arquivo
- // Use new to instantiate a class
+ // Use new para instanciar uma classe
Bicycle trek = new Bicycle();
- // Call object methods
- trek.SpeedUp(3); // You should always use setter and getter methods
+ // Chame métodos do objeto
+ trek.SpeedUp(3); // Você deve sempre usar métodos setter e getter
trek.Cadence = 100;
- // ToString is a convention to display the value of this Object.
+ // ToString é uma convenção para exibir o valor desse Objeto.
Console.WriteLine("trek info: " + trek.Info());
- // Instantiate a new Penny Farthing
+ // Instancie um novo Penny Farthing
PennyFarthing funbike = new PennyFarthing(1, 10);
Console.WriteLine("funbike info: " + funbike.Info());
Console.Read();
- } // End main method
+ } // Fim do método principal
// CONSOLE ENTRY A console application must have a main method as an entry point
public static void Main(string[] args)
@@ -522,7 +522,7 @@ on a new line! ""Wow!"", the masses cried";
foreach (var key in responses.Keys)
Console.WriteLine("{0}:{1}", key, responses[key]);
- // DYNAMIC OBJECTS (great for working with other languages)
+ // OBJETOS DINÂMICOS (ótimo para trabalhar com outros idiomas)
dynamic student = new ExpandoObject();
student.FirstName = "First Name"; // No need to define class first!
@@ -730,10 +730,10 @@ on a new line! ""Wow!"", the masses cried";
set { _hasTassles = value; }
}
- // You can also define an automatic property in one line
- // this syntax will create a backing field automatically.
- // You can set an access modifier on either the getter or the setter (or both)
- // to restrict its access:
+ // Você também pode definir uma propriedade automática em uma linha
+        // Esta sintaxe criará um campo de apoio automaticamente.
+        // Você pode definir um modificador de acesso no getter ou no setter (ou ambos)
+        // para restringir seu acesso:
public bool IsBroken { get; private set; }
// Properties can be auto-implemented
@@ -834,7 +834,7 @@ on a new line! ""Wow!"", the masses cried";
bool Broken { get; } // interfaces can contain properties as well as methods & events
}
- // Class can inherit only one other class, but can implement any amount of interfaces
+ // Classes podem herdar apenas de uma outra classe, mas podem implementar qualquer quantidade de interfaces.
class MountainBike : Bicycle, IJumpable, IBreakable
{
int damage = 0;
@@ -854,8 +854,8 @@ on a new line! ""Wow!"", the masses cried";
}
/// <summary>
- /// Used to connect to DB for LinqToSql example.
- /// EntityFramework Code First is awesome (similar to Ruby's ActiveRecord, but bidirectional)
+ /// Exemplo de como conectar-se ao DB via LinqToSql.
+    /// EntityFramework First Code é impressionante (semelhante ao ActiveRecord de Ruby, mas bidirecional)
/// http://msdn.microsoft.com/en-us/data/jj193542.aspx
/// </summary>
public class BikeRepository : DbContext
diff --git a/pt-br/css-pt.html.markdown b/pt-br/css-pt.html.markdown
index 956b3614..c73669d0 100644
--- a/pt-br/css-pt.html.markdown
+++ b/pt-br/css-pt.html.markdown
@@ -9,6 +9,8 @@ contributors:
- ["Deepanshu Utkarsh", "https://github.com/duci9y"]
translators:
- ["Gabriel Gomes", "https://github.com/gabrielgomesferraz"]
+ - ["Gabriele Luz", "https://github.com/gabrieleluz"]
+
lang: pt-br
---
@@ -236,6 +238,45 @@ A precedência de estilo é a seguinte. Lembre-se, a precedência é para cada
* `B` é o próximo.
* `D` é a última.
+## Media Queries
+Media queries são recursos do CSS3 que permitem especificar quando determinadas regras de CSS devem ser aplicadas; é possível aplicar regras diferentes quando a página é impressa, quando a tela possui determinadas dimensões ou densidade de pixels e quando é lida por um leitor de tela. Media queries não adicionam especificidade ao seletor.
+
+```css
+/* Uma regra que será aplicada a todos os dispositivos */
+h1 {
+ font-size: 2em;
+ color: white;
+ background-color: black;
+}
+
+/* Altera a cor do h1 para utilizar menos tinta durante a impressão */
+@media print {
+ h1 {
+ color: black;
+ background-color: white;
+ }
+}
+
+/* Altera o tamanho da fonte quando exibida numa tela com pelo menos 480px de largura */
+@media screen and (min-width: 480px) {
+ h1 {
+ font-size: 3em;
+ font-weight: normal;
+ }
+}
+```
+Media queries podem incluir os seguintes atributos: `width`, `height`, `device-width`, `device-height`, `orientation`, `aspect-ratio`, `device-aspect-ratio`, `color`, `color-index`, `monochrome`, `resolution`, `scan`, `grid`. A maioria desses atributos pode ser prefixada com `min-` ou `max-`.
+
+O atributo `resolution` não é suportado em dispositivos mais antigos. Em vez disso, use `device-pixel-ratio`.
+
+Muitos smartphones e tablets tentarão renderizar a página como se estivesse num desktop a menos que você utilize a meta-tag `viewport`.
+
+```html
+<head>
+ <meta name="viewport" content="width=device-width; initial-scale=1.0">
+</head>
+```
+
## Compatibilidade
A maior parte dos recursos do CSS 2 (e muitos em CSS 3) estão disponíveis em todos os navegadores e dispositivos. Mas é sempre boa prática para verificar antes de usar um novo recurso.
diff --git a/pt-br/cypher-pt.html.markdown b/pt-br/cypher-pt.html.markdown
new file mode 100644
index 00000000..9b60f771
--- /dev/null
+++ b/pt-br/cypher-pt.html.markdown
@@ -0,0 +1,250 @@
+---
+language: cypher
+filename: LearnCypher-br.cql
+contributors:
+ - ["Théo Gauchoux", "https://github.com/TheoGauchoux"]
+
+lang: pt-br
+---
+
+O Cypher é a linguagem de consulta do Neo4j para manipular gráficos facilmente. Ela reutiliza a sintaxe do SQL e a mistura com o tipo de ascii-art para representar gráficos. Este tutorial pressupõe que você já conheça conceitos de gráficos como nós e relacionamentos.
+
+[Leia mais aqui.](https://neo4j.com/developer/cypher-query-language/)
+
+
+Nós
+---
+
+**Representa um registro em um gráfico.**
+
+`()`
+É um *nó* vazio, para indicar que existe um *nó*, mas não é relevante para a consulta.
+
+`(n)`
+É um *nó* referido pela variável **n**, reutilizável na consulta. Começa com minúsculas e usa o camelCase.
+
+`(p:Person)`
+Você pode adicionar um *label* ao seu nó, aqui **Person**. É como um tipo / uma classe / uma categoria. Começa com maiúsculas e usa o camelCase.
+
+`(p:Person:Manager)`
+Um nó pode ter muitos *labels*.
+
+`(p:Person {name : 'Théo Gauchoux', age : 22})`
+Um nó pode ter algumas *propriedades*, aqui **name** e **age**. Começa com minúsculas e usa o camelCase.
+
+Os tipos permitidos nas propriedades:
+
+ - Numeric
+ - Boolean
+ - String
+ - Lista de tipos primitivos anteriores
+
+*Aviso: não há propriedade datetime no Cypher! Você pode usar String com um padrão específico ou um Numeric a partir de uma data específica.*
+
+`p.name`
+Você pode acessar uma propriedade com o estilo de ponto.
+
+
+Relacionamentos (ou Arestas)
+---
+
+**Conecta dois nós**
+
+`[:KNOWS]`
+É um *relacionamento* com o *label* **KNOWS**. É um *label* como um rótulo do nó. Começa com maiúsculas e usa UPPER_SNAKE_CASE.
+
+`[k:KNOWS]`
+O mesmo *relacionamento*, referido pela variável **k**, reutilizável na consulta, mas não é necessário.
+
+`[k:KNOWS {since:2017}]`
+O mesmo *relacionamento*, com *propriedades* (como *nó*), aqui **since**.
+
+`[k:KNOWS*..4]`
+É uma informação estrutural para usar em um *path* (visto posteriormente). Aqui, **\*..4** diz, “Corresponda o padrão, com a relação **k** que é repetida de 1 a 4 vezes.
+
+
+Paths
+---
+
+**A maneira de misturar nós e relacionamentos.**
+
+`(a:Person)-[:KNOWS]-(b:Person)`
+Um path descrevendo que **a** e **b** se conhecem.
+
+`(a:Person)-[:MANAGES]->(b:Person)`
+Um path pode ser direcionado. Este path descreve que **a** é o gerente de **b**.
+
+`(a:Person)-[:KNOWS]-(b:Person)-[:KNOWS]-(c:Person)`
+Você pode encadear vários relacionamentos. Este path descreve o amigo de um amigo.
+
+`(a:Person)-[:MANAGES]->(b:Person)-[:MANAGES]->(c:Person)`
+Uma encadeamento também pode ser direcionada. Este path descreve que **a** é o chefe de **b** e o grande chefe de **c**.
+
+Padrões frequentemente usados ​​(do Neo4j doc) :
+
+```
+// Amigo de um amigo
+(user)-[:KNOWS]-(friend)-[:KNOWS]-(foaf)
+
+// Path mais curto
+path = shortestPath( (user)-[:KNOWS*..5]-(other) )
+
+// Filtragem colaborativa
+(user)-[:PURCHASED]->(product)<-[:PURCHASED]-()-[:PURCHASED]->(otherProduct)
+
+// Navegação de árvore
+(root)<-[:PARENT*]-(leaf:Category)-[:ITEM]->(data:Product)
+
+```
+
+
+Crie consultas
+---
+
+Create a new node
+```
+CREATE (a:Person {name:"Théo Gauchoux"})
+RETURN a
+```
+*`RETURN` permite ter um resultado após a consulta. Pode ser múltiplo, como `RETURN a, b`.*
+
+Crie um novo relacionamento (com 2 novos nós)
+```
+CREATE (a:Person)-[k:KNOWS]-(b:Person)
+RETURN a,k,b
+```
+
+Consultas que casam
+---
+
+Casam todos os nós
+```
+MATCH (n)
+RETURN n
+```
+
+Casam nós por label
+```
+MATCH (a:Person)
+RETURN a
+```
+
+Casam nós por label e propriedade
+```
+MATCH (a:Person {name:"Théo Gauchoux"})
+RETURN a
+```
+
+Casam nós de acordo com os relacionamentos (não direcionados)
+```
+MATCH (a)-[:KNOWS]-(b)
+RETURN a,b
+```
+
+Casam nós de acordo com os relacionamentos (direcionados)
+```
+MATCH (a)-[:MANAGES]->(b)
+RETURN a,b
+```
+
+Casam nós com um cláusula `WHERE`
+```
+MATCH (p:Person {name:"Théo Gauchoux"})-[s:LIVES_IN]->(city:City)
+WHERE s.since = 2015
+RETURN p,state
+```
+
+Você pode usa a cláusula `MATCH WHERE` com a cláusula `CREATE`
+```
+MATCH (a), (b)
+WHERE a.name = "Jacquie" AND b.name = "Michel"
+CREATE (a)-[:KNOWS]-(b)
+```
+
+
+Atualizar consultas
+---
+
+Atualizar uma propriedade específica de um nó
+```
+MATCH (p:Person)
+WHERE p.name = "Théo Gauchoux"
+SET p.age = 23
+```
+
+Substituir todas as propriedades de um nó
+```
+MATCH (p:Person)
+WHERE p.name = "Théo Gauchoux"
+SET p = {name: "Michel", age: 23}
+```
+
+Adicionar nova propriedade a um nó
+```
+MATCH (p:Person)
+WHERE p.name = "Théo Gauchoux"
+SET p + = {studies: "IT Engineering"}
+```
+
+Adicione um label a um nó
+```
+MATCH (p:Person)
+WHERE p.name = "Théo Gauchoux"
+SET p:Internship
+```
+
+
+Excluir consultas
+---
+
+Excluir um nó específico (os relacionamentos vinculados devem ser excluídos antes)
+```
+MATCH (p:Person)-[relationship]-()
+WHERE p.name = "Théo Gauchoux"
+DELETE relationship, p
+```
+
+Remover uma propriedade em um nó específico
+```
+MATCH (p:Person)
+WHERE p.name = "Théo Gauchoux"
+REMOVE p.age
+```
+*Prestar atenção à palavra chave `REMOVE`, não é `DELETE` !*
+
+Remover um label de um nó específico
+```
+MATCH (p:Person)
+WHERE p.name = "Théo Gauchoux"
+DELETE p:Person
+```
+
+Excluir o banco de dados inteiro
+```
+MATCH (n)
+OPTIONAL MATCH (n)-[r]-()
+DELETE n, r
+```
+*Sério, é o `rm -rf /` do Cypher !*
+
+
+Outras cláusulas úteis
+---
+
+`PROFILE`
+Antes de uma consulta, mostre o plano de execução dela.
+
+`COUNT(e)`
+Contar entidades (nós ou relacionamentos) que casam com **e**.
+
+`LIMIT x`
+Limite o resultado aos primeiros x resultados.
+
+
+Dicas Especiais
+---
+
+- Há apenas comentários de uma linha no Cypher, com barras duplas : // Comentários
+- Você pode executar um script Cypher armazenado em um arquivo **.cql** diretamente no Neo4j (é uma importação). No entanto, você não pode ter várias instruções neste arquivo (separadas por **;**).
+- Use o shell Neo4j para escrever Cypher, é realmente incrível.
+- O Cypher será a linguagem de consulta padrão para todos os bancos de dados de gráficos (conhecidos como **OpenCypher**).
diff --git a/pt-br/dynamic-programming-pt.html.markdown b/pt-br/dynamic-programming-pt.html.markdown
index 84b055d9..93171955 100644
--- a/pt-br/dynamic-programming-pt.html.markdown
+++ b/pt-br/dynamic-programming-pt.html.markdown
@@ -63,13 +63,11 @@ grafo acíclico dirigido.
```
## Alguns Problemas Famosos de Programação Dinâmica
-```
-Floyd Warshall Algorithm - Tutorial and C Program source code:http://www.thelearningpoint.net/computer-science/algorithms-all-to-all-shortest-paths-in-graphs---floyd-warshall-algorithm-with-c-program-source-code
-
-Integer Knapsack Problem - Tutorial and C Program source code: http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---the-integer-knapsack-problem
-Longest Common Subsequence - Tutorial and C Program source code : http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---longest-common-subsequence
-```
+- [Floyd Warshall Algorithm - Tutorial and C Program source code](http://www.thelearningpoint.net/computer-science/algorithms-all-to-all-shortest-paths-in-graphs---floyd-warshall-algorithm-with-c-program-source-code)
+- [Integer Knapsack Problem - Tutorial and C Program source code](http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---the-integer-knapsack-problem)
+- [Longest Common Subsequence - Tutorial and C Program source code](http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---longest-common-subsequence)
+
## Recursos Online (EN)
diff --git a/pt-br/factor-pt.html.markdown b/pt-br/factor-pt.html.markdown
new file mode 100644
index 00000000..b4b5c7f5
--- /dev/null
+++ b/pt-br/factor-pt.html.markdown
@@ -0,0 +1,184 @@
+---
+language: factor
+contributors:
+ - ["hyphz", "http://github.com/hyphz/"]
+filename: learnfactor-br.factor
+
+lang: pt-br
+---
+
+Factor é uma linguagem moderna baseada em pilha, baseado em Forth, criada por Slava Pestov.
+
+Código neste arquivo pode ser digitado em Fator, mas não importado diretamente porque o cabeçalho de vocabulário e importação faria o início completamente confuso.
+
+```factor
+! Este é um comentário
+
+! Como Forth, toda a programação é feita manipulando a pilha.
+! A indicação de um valor literal o coloca na pilha.
+5 2 3 56 76 23 65 ! Nenhuma saída, mas a pilha é impressa no modo interativo
+
+! Esses números são adicionados à pilha, da esquerda para a direita.
+! .s imprime a pilha de forma não destrutiva.
+.s ! 5 2 3 56 76 23 65
+
+! A aritmética funciona manipulando dados na pilha.
+5 4 + ! Sem saída
+
+! `.` mostra o resultado superior da pilha e o imprime.
+. ! 9
+
+! Mais exemplos de aritmética:
+6 7 * . ! 42
+1360 23 - . ! 1337
+12 12 / . ! 1
+13 2 mod . ! 1
+
+99 neg . ! -99
+-99 abs . ! 99
+52 23 max . ! 52
+52 23 min . ! 23
+
+! Várias palavras são fornecidas para manipular a pilha, coletivamente conhecidas como palavras embaralhadas.
+
+3 dup - ! duplica o primeiro item (1st agora igual a 2nd): 3 - 3
+2 5 swap / ! troca o primeiro com o segundo elemento: 5 / 2
+4 0 drop 2 / ! remove o primeiro item (não imprima na tela): 4 / 2
+1 2 3 nip .s ! remove o segundo item (semelhante a drop): 1 3
+1 2 clear .s ! acaba com toda a pilha
+1 2 3 4 over .s ! duplica o segundo item para o topo: 1 2 3 4 3
+1 2 3 4 2 pick .s ! duplica o terceiro item para o topo: 1 2 3 4 2 3
+
+! Criando Palavras
+! O `:` conjuntos de palavras do Factor no modo de compilação até que ela veja a palavra `;`.
+: square ( n -- n ) dup * ; ! Sem saída
+5 square . ! 25
+
+! Podemos ver o que as palavra fazem também.
+! \ suprime a avaliação de uma palavra e coloca seu identificador na pilha.
+\ square see ! : square ( n -- n ) dup * ;
+
+! Após o nome da palavra para criar, a declaração entre parênteses dá o efeito da pilha.
+! Podemos usar os nomes que quisermos dentro da declaração:
+: weirdsquare ( camel -- llama ) dup * ;
+
+! Contanto que sua contagem corresponda ao efeito da pilha da palavra:
+: doubledup ( a -- b ) dup dup ; ! Error: Stack effect declaration is wrong
+: doubledup ( a -- a a a ) dup dup ; ! Ok
+: weirddoubledup ( i -- am a fish ) dup dup ; ! Além disso Ok
+
+! Onde Factor difere do Forth é no uso de citações.
+! Uma citação é um bloco de código que é colocado na pilha como um valor.
+! [ inicia o modo de citação; ] termina.
+[ 2 + ] ! A citação que adiciona 2 é deixada na pilha
+4 swap call . ! 6
+
+! E assim, palavras de ordem mais alta. TONS de palavras de ordem superior.
+2 3 [ 2 + ] dip .s ! Retira valor do topo da pilha, execute citação, empurre de volta: 4 3
+3 4 [ + ] keep .s ! Copie o valor do topo da pilha, execute a citação, envie a cópia: 7 4
+1 [ 2 + ] [ 3 + ] bi .s ! Executar cada citação no valor do topo, empurrar os dois resultados: 3 4
+4 3 1 [ + ] [ + ] bi .s ! As citações em um bi podem extrair valores mais profundos da pilha: 4 5 ( 1+3 1+4 )
+1 2 [ 2 + ] bi@ .s ! Executar a citação no primeiro e segundo valores
+2 [ + ] curry ! Injeta o valor fornecido no início da citação: [ 2 + ] é deixado na pilha
+
+! Condicionais
+! Qualquer valor é verdadeiro, exceto o valor interno f.
+! m valor interno não existe, mas seu uso não é essencial.
+! Condicionais são palavras de maior ordem, como com os combinadores acima.
+
+5 [ "Five is true" . ] when ! Cinco é verdadeiro
+0 [ "Zero is true" . ] when ! Zero é verdadeiro
+f [ "F is true" . ] when ! Sem saída
+f [ "F is false" . ] unless ! F é falso
+2 [ "Two is true" . ] [ "Two is false" . ] if ! Two é verdadeiro
+
+! Por padrão, as condicionais consomem o valor em teste, mas variantes com asterisco
+! deixe sozinho se é verdadeiro:
+
+5 [ . ] when* ! 5
+f [ . ] when* ! Nenhuma saída, pilha vazia, f é consumida porque é falsa
+
+
+! Laços
+! Você adivinhou .. estas são palavras de ordem mais elevada também.
+
+5 [ . ] each-integer ! 0 1 2 3 4
+4 3 2 1 0 5 [ + . ] each-integer ! 0 2 4 6 8
+5 [ "Hello" . ] times ! Hello Hello Hello Hello Hello
+
+! Here's a list:
+{ 2 4 6 8 } ! Goes on the stack as one item
+
+! Aqui está uma lista:
+{ 2 4 6 8 } [ 1 + . ] each ! Exibe 3 5 7 9
+{ 2 4 6 8 } [ 1 + ] map ! Sai { 3 5 7 9 } na pilha
+
+! Reduzir laços ou criar listas:
+{ 1 2 3 4 5 } [ 2 mod 0 = ] filter ! Mantém apenas membros da lista para os quais a citação é verdadeira: { 2 4 }
+{ 2 4 6 8 } 0 [ + ] reduce . ! Como "fold" em linguagens funcionais: exibe 20 (0+2+4+6+8)
+{ 2 4 6 8 } 0 [ + ] accumulate . . ! Como reduzir, mas mantém os valores intermediários em uma lista: exibe { 0 2 6 12 } então 20
+1 5 [ 2 * dup ] replicate . ! Repete a citação 5 vezes e coleta os resultados em uma lista: { 2 4 8 16 32 }
+1 [ dup 100 < ] [ 2 * dup ] produce ! Repete a segunda citação até que a primeira retorne como falsa e colete os resultados: { 2 4 8 16 32 64 128 }
+
+! Se tudo mais falhar, uma finalidade geral, enquanto repete:
+1 [ dup 10 < ] [ "Hello" . 1 + ] while ! Exibe "Hello" 10 vezes
+ ! Sim, é difícil de ler
+ ! Isso é o que todos esses loops variantes são para
+
+! Variáveis
+! Normalmente, espera-se que os programas Factor mantenham todos os dados na pilha.
+! Usar variáveis ​​nomeadas torna a refatoração mais difícil (e é chamada de Factor por um motivo)
+! Variáveis ​​globais, se você precisar:
+
+SYMBOL: name ! Cria o nome como uma palavra identificadora
+"Bob" name set-global ! Sem saída
+name get-global . ! "Bob"
+
+! Variáveis ​​locais nomeadas são consideradas uma extensão, mas estão disponíveis
+! Em uma citação ..
+[| m n ! A citação captura os dois principais valores da pilha em m e n
+ | m n + ] ! Leia-os
+
+! Ou em uma palavra..
+:: lword ( -- ) ! Note os dois pontos duplos para invocar a extensão da variável lexica
+ 2 :> c ! Declara a variável imutável c para manter 2
+ c . ; ! Imprima isso
+
+! Em uma palavra declarada dessa maneira, o lado de entrada da declaração de pilha
+! torna-se significativo e fornece os valores das variáveis ​​em que os valores da pilha são capturados
+:: double ( a -- result ) a 2 * ;
+
+! Variáveis ​​são declaradas mutáveis ​​ao terminar seu nome com um ponto de exclamação
+:: mword2 ( a! -- x y ) ! Capture o topo da pilha na variável mutável a
+ a ! Empurrar a
+ a 2 * a! ! Multiplique por 2 e armazene o resultado em a
+ a ; ! Empurre novo valor de a
+5 mword2 ! Pilha: 5 10
+
+! Listas e Sequências
+! Vimos acima como empurrar uma lista para a pilha
+
+0 { 1 2 3 4 } nth ! Acessar um membro específico de uma lista: 1
+10 { 1 2 3 4 } nth ! Error: índice de sequência fora dos limites
+1 { 1 2 3 4 } ?nth ! O mesmo que nth se o índice estiver dentro dos limites: 2
+10 { 1 2 3 4 } ?nth ! Nenhum erro se estiver fora dos limites: f
+
+{ "at" "the" "beginning" } "Append" prefix ! { "Append" "at" "the" "beginning" }
+{ "Append" "at" "the" } "end" suffix ! { "Append" "at" "the" "end" }
+"in" 1 { "Insert" "the" "middle" } insert-nth ! { "Insert" "in" "the" "middle" }
+"Concat" "enate" append ! "Concatenate" - strings are sequences too
+"Concatenate" "Reverse " prepend ! "Reverse Concatenate"
+{ "Concatenate " "seq " "of " "seqs" } concat ! "Concatenate seq of seqs"
+{ "Connect" "subseqs" "with" "separators" } " " join ! "Connect subseqs with separators"
+
+! E se você quiser obter meta, as citações são seqüências e podem ser desmontadas..
+0 [ 2 + ] nth ! 2
+1 [ 2 + ] nth ! +
+[ 2 + ] \ - suffix ! Quotation [ 2 + - ]
+
+
+```
+
+##Pronto para mais?
+
+* [Documentação do Factor](http://docs.factorcode.org/content/article-help.home.html)
diff --git a/pt-br/go-pt.html.markdown b/pt-br/go-pt.html.markdown
index c7339831..31473ee1 100644
--- a/pt-br/go-pt.html.markdown
+++ b/pt-br/go-pt.html.markdown
@@ -16,7 +16,7 @@ A linguagem Go foi criada a partir da necessidade de ver trabalho feito. Não
forma de resolver os problemas do mundo real.
Tem conceitos familiares de linguagens imperativas com tipagem estática. É
-rápida a compilar e rápida a executar, acrescentando mecanismos de concorrência
+rápida para compilar e rápida para executar, acrescentando mecanismos de concorrência
fáceis de entender para tirar partido dos CPUs multi-core de hoje em dia, e tem
recursos para ajudar com a programação em larga escala.
@@ -39,10 +39,10 @@ import (
)
// Definição de uma função. Main é especial. É o ponto de entrada para o
-// programa executável. Goste-se ou não, a linguagem Go usa chavetas.
+// programa executável. Goste-se ou não, a linguagem Go usa chaves.
func main() {
// A função Println envia uma linha para stdout.
- // É necessário qualifica-la com o nome do pacote, fmt.
+ // É necessário qualificá-la com o nome do pacote, fmt.
fmt.Println("Olá Mundo!")
// Chama outra função dentro deste pacote.
diff --git a/pt-br/groovy-pt.html.markdown b/pt-br/groovy-pt.html.markdown
index aed23df1..1eab9cc3 100644
--- a/pt-br/groovy-pt.html.markdown
+++ b/pt-br/groovy-pt.html.markdown
@@ -17,7 +17,7 @@ Groovy - Uma linguagem dinâmica para a plataforma Java. [Leia mais aqui.](http:
Prepara-se:
1) Instale a máquina virtual de Groovy - http://gvmtool.net/
- 2) Intalse o Groovy: gvm install groovy
+ 2) Instale o Groovy: gvm install groovy
3) Inicie o console groovy digitando: groovyConsole
*/
diff --git a/pt-br/haxe-pt.html.markdown b/pt-br/haxe-pt.html.markdown
new file mode 100644
index 00000000..13264dec
--- /dev/null
+++ b/pt-br/haxe-pt.html.markdown
@@ -0,0 +1,795 @@
+---
+language: haxe
+filename: LearnHaxe3-br.hx
+contributors:
+ - ["Justin Donaldson", "https://github.com/jdonaldson/"]
+ - ["Dan Korostelev", "https://github.com/nadako/"]
+translators:
+ - ["David Lima", "https://github.com/davelima/"]
+lang: pt-br
+---
+
+Haxe é uma linguagem baseada na web que provê suporte a C++, C#, SWF/ActionScript,
+Java e Neko byte code (também desenvolvida pelo autor de Haxe). Observe que
+este guia é para a versão 3 de Haxe. Alguns pontos do guia são aplicáveis
+para versões anteriores, mas é recomendado que você busque outras referências
+para essas versões.
+
+
+```csharp
+/*
+ Bem vindo ao Aprenda Haxe 3 em 15 minutos. http://www.haxe.org
+ Este é um tutorial executável. Você pode compilar e rodar este tutorial
+ usando o compilador haxe, estando no mesmo diretório de LearnHaxe.hx:
+ $> haxe -main LearnHaxe3 -x out
+
+ Olhe para os sinais de /* e */ em volta desses parágrafos. Nós estamos
+ dentro de um "Comentário multilinha". Nós podemos colocar observações aqui
+ e elas serão ignoradas pelo compilador.
+
+ Comentários multilinha também são utilizados para gerar documentação haxedoc,
+ seguindo o estilo javadoc. Eles serão usados pelo haxedoc se precerem imediatamente
+ uma classe, uma função de uma classe ou uma variável de uma classe.
+
+ */
+
+// Duas barras, como as dessa linha, farão um comentário de linha única.
+
+
+/*
+ Este será o primeiro código haxe de verdade, e está declarando um pacote vazio.
+ Não é necessário usar um pacote, mas ele será útil se você quiser criar
+ um namespace para o seu código (exemplo: org.seuapp.SuaClasse).
+
+ Omitir a declaração de pacote é a mesma coisa que declarar um pacote vazio.
+ */
+package; // pacote vazio, sem namespace.
+
+/*
+ Pacotes são diretórios que contém módulos. Cada módulo é um arquivo .hx que
+ contém tipos definidos em um pacote. Nomes de pacotes (ex. org.seuapp)
+ devem estar em letras minúsculas, enquanto nomes de módulos devem começar
+ com uma letra maiúscula. Um módulo contem um ou mais tipos, cujo os nomes
+ também devem começar com uma letra maiúscula.
+
+ Exemplo: a classe "org.seuapp.Foo" deve ter a estrutura de diretório org/module/Foo.hx,
+ sendo acessível do diretório do compilador ou caminho da classe.
+
+ Se você importar código de outros arquivos, isso deve ser declarado antes
+ do restante do código. Haxe disponibiliza várias classes padrões para você
+ começar:
+ */
+import haxe.ds.ArraySort;
+
+// você pode importar várias classes/módulos de uma vez usando "*"
+import haxe.ds.*;
+
+// você pode importar campos estáticos
+import Lambda.array;
+
+// você também pode usar "*" para importar todos os campos estáticos
+import Math.*;
+
+/*
+ Você também pode importar classes de uma forma diferente, habilitando-as para
+ extender a funcionalidade de outras classes, como um "mixin". Falaremos sobre
+ "using" em breve.
+ */
+using StringTools;
+
+/*
+ Typedefs são como variáveis... para tipos. Eles devem ser declarados antes
+ de qualquer código. Veremos isso em breve.
+ */
+typedef FooString = String;
+
+// Typedefs também podem referenciar tipos "estruturais". Também veremos isso em breve.
+typedef FooObject = { foo: String };
+
+/*
+ Esta é a definição da classe. É a classe principal do arquivo, visto que
+ possui o mesmo nome (LearnHaxe3)
+ */
+class LearnHaxe3{
+ /*
+ Se você quiser que um determinado código rode automaticamente, você
+ precisa colocá-lo em uma função estática "main", e especificar a classe
+ nos argumentos do compilador.
+ Nesse caso, nós especificamos a classe "LearnHaxe3" no nos argumentos
+ do compilador acima.
+ */
+ static function main(){
+
+ /*
+ Trace é o método padrão para imprimir expressões haxe na tela.
+ Temos diferentes métodos para conseguir isso em diferentes destinos.
+ Por exemplo: Java, C++, C#, etc. irão imprimir para stdout.
+ Javascript irá imprimir no console.log, e Flash irá imprimir para um
+ TextField anexado. Todos os "traces" imprimem também uma linha em branco
+ por padrão. Por fim, é possível prevenir um trace de ser exibido usando
+ o argumento "--no-traces" no compilador.
+ */
+ trace("Olá mundo, com trace()!");
+
+ /*
+ Trace pode tratar qualquer tipo de valor ou objeto. O método tentará
+ imprimir a representação de uma expressão da melhor forma. Você também
+ pode concatenar strings usando o operador "+":
+ */
+ trace( " Integer: " + 10 + " Float: " + 3.14 + " Boolean: " + true);
+
+ /*
+ Em Haxe, é obrigatório separar expressões no mesmo bloco com ';'. Mas
+ é possível colocar duas expressões na mesma linha, dessa forma:
+ */
+ trace('duas expressões..'); trace('uma linha');
+
+
+ //////////////////////////////////////////////////////////////////
+ // Tipos & Variáveis
+ //////////////////////////////////////////////////////////////////
+ trace("***Tipos & Variáveis***");
+
+ /*
+ Vcoê pode atrelar valores e referências à estruturas usando a
+ palavra-chave "var":
+ */
+ var um_inteiro:Int = 1;
+ trace(um_inteiro + " é o valor de um_inteiro");
+
+
+ /*
+ Haxe é tipada estaticamente, então "um_inteiro" temos que declarar
+ um valor do tipo "Int", e o restante da expressão atrela o valor "1"
+ a esta variável. Em muitos casos, não é necessário declarar o tipo.
+ Aqui, o compilador haxe assume que o tipo de "outro_inteiro" deve
+ ser "Int"
+ */
+ var outro_inteiro = 2;
+ trace(outro_inteiro + " é o valor de outro_inteiro");
+
+ // O método $type() imprime o tipo que o compilador assume:
+ $type(outro_inteiro);
+
+ // Você também pode representar inteiros em hexadecimal:
+ var hex_inteiro = 0xffffff;
+
+ /*
+ Haxe usa precisão de pltaforma para os tamanhos de Int e Float.
+ Ele também usa o comportamento de plataforma para sobrecarga.
+ (É possível ter outros tipos numéricos e comportamentos usando
+ bibliotecas especiais)
+ */
+
+ /*
+ Em adição a valores simples como Integers, Floats e Booleans,
+ Haxe disponibiliza implementações padrões de bibliotecas para
+ dados comuns de estrutura como strings, arrays, lists e maps:
+ */
+
+ var uma_string = "alguma" + 'string'; // strings podem estar entre aspas simples ou duplas
+ trace(uma_string + " é o valor de uma_string");
+
+ /*
+ Strings podem ser "interpoladas" se inserirmos variáveis em
+ posições específicas. A string deve estar entre aspas simples, e as
+ variáveis devem ser precedidas por "$". Expressões podem estar entre
+ ${...}.
+ */
+ var x = 1;
+ var uma_string_interpolada = 'o valor de x é $x';
+ var outra_string_interpolada = 'o valor de x + 1 é ${x + 1}';
+
+ /*
+ Strings são imutáveis, métodos retornarão uma cópia de partes
+ ou de toda a string. (Veja também a classe StringBuf)
+ */
+ var uma_sub_string = a_string.substr(0,4);
+ trace(uma_sub_string + " é o valor de a_sub_string");
+
+ /*
+ Regex também são suportadas, mas não temos espaço suficiente para
+ entrar em muitos detalhes.
+ */
+ var re = ~/foobar/;
+ trace(re.match('foo') + " é o valor de (~/foobar/.match('foo')))");
+
+ /*
+ Arrays são indexadas a partir de zero, dinâmicas e mutáveis. Valores
+ faltando são definidos como null.
+ */
+ var a = new Array<String>(); // um array que contém Strings
+ a[0] = 'foo';
+ trace(a.length + " é o valor de a.length");
+ a[9] = 'bar';
+ trace(a.length + " é o valor de a.length (depois da modificação)");
+ trace(a[3] + " é o valor de a[3]"); // null
+
+ /*
+ Arrays são *genéricas*, então você pode indicar quais valores elas
+ contém usando um parâmetro de tipo:
+ */
+ var a2 = new Array<Int>(); // um Array de Ints
+ var a3 = new Array<Array<String>>(); // um Array de Arrays (de Strings).
+
+ /*
+ Mapas são estruturas simples de chave/valor. A chave e o valor podem
+ ser de qualquer tipo.
+ */
+ var m = new Map<String, Int>(); // As chaves são strings, os valores são Ints.
+ m.set('foo', 4);
+ // Você também pode usar a notação de array;
+ m['bar'] = 5;
+ trace(m.exists('bar') + " é o valor de m.exists('bar')");
+ trace(m.get('bar') + " é o valor de m.get('bar')");
+ trace(m['bar'] + " é o valor de m['bar']");
+
+ var m2 = ['foo' => 4, 'baz' => 6]; // Syntaxe alternativa de map
+ trace(m2 + " é o valor de m2");
+
+ /*
+ Lembre-se, você pode usar descoberta de tipo. O compilador
+ Haxe irá decidir o tipo da variável assim que você passar um
+ argumento que define um parâmetro de tipo.
+ */
+ var m3 = new Map();
+ m3.set(6, 'baz'); // m3 agora é Map<Int,String>
+ trace(m3 + " é o valor de m3");
+
+ /*
+ Haxe possui mais algumas estruturas de dados padrões no módulo haxe.ds,
+ tais como List, Stack e BalancedTree
+ */
+
+
+ //////////////////////////////////////////////////////////////////
+ // Operadores
+ //////////////////////////////////////////////////////////////////
+ trace("***OPERADORES***");
+
+ // aritmética básica
+ trace((4 + 3) + " é o valor de (4 + 3)");
+ trace((5 - 1) + " é o valor de (5 - 1)");
+ trace((2 * 4) + " é o valor de (2 * 4)");
+ trace((8 / 3) + " é o valor de (8 / 3) (divisão sempre produz Floats)");
+ trace((12 % 4) + " é o valor de (12 % 4)");
+
+
+ // comparação básica
+ trace((3 == 2) + " é o valor de 3 == 2");
+ trace((3 != 2) + " é o valor de 3 != 2");
+ trace((3 > 2) + " é o valor de 3 > 2");
+ trace((3 < 2) + " é o valor de 3 < 2");
+ trace((3 >= 2) + " é o valor de 3 >= 2");
+ trace((3 <= 2) + " é o valor de 3 <= 2");
+
+ // operadores bit-a-bit padrões
+ /*
+ ~ Complemento bit-a-bit unário
+ << Deslocamento a esquerda
+ >> Deslocamento a direita
+ >>> Deslocamento a direita com preenchimento de 0
+ & Bit-a-bit AND
+ ^ Bit-a-bit OR exclusivo
+ | Bit-a-bit OR inclusivo
+ */
+
+ // incrementos
+ var i = 0;
+ trace("Incrementos e decrementos");
+ trace(i++); //i = 1. Pós-incremento
+ trace(++i); //i = 2. Pré-incremento
+ trace(i--); //i = 1. Pós-decremento
+ trace(--i); //i = 0. Pré-decremento
+
+ //////////////////////////////////////////////////////////////////
+ // Estruturas de controle
+ //////////////////////////////////////////////////////////////////
+ trace("***ESTRUTURAS DE CONTROLE***");
+
+ // operadores if
+ var j = 10;
+ if (j == 10){
+ trace("isto é impresso");
+ } else if (j > 10){
+ trace("não é maior que 10, então não é impresso");
+ } else {
+ trace("também não é impresso.");
+ }
+
+ // temos também um if "ternário":
+ (j == 10) ? trace("igual a 10") : trace("diferente de 10");
+
+ /*
+ Por fim, temos uma outra forma de estrutura de controle que opera
+ e na hora da compilação: compilação condicional.
+ */
+#if neko
+ trace('olá de neko');
+#elseif js
+ trace('olá de js');
+#else
+ trace('olá de outra plataforma!');
+#end
+ /*
+ O código compilado irá mudar de acordo com o alvo de plataforma.
+ Se estivermos compilando para neko (-x ou -neko), só teremos a
+ saudação de neko.
+ */
+
+
+ trace("Loops e Interações");
+
+ // loop while
+ var k = 0;
+ while(k < 100){
+ // trace(counter); // irá iprimir números de 0 a 99
+ k++;
+ }
+
+ // loop do-while
+ var l = 0;
+ do{
+ trace("do sempre rodará pelo menos uma vez");
+ } while (l > 0);
+
+ // loop for
+ /*
+ Não há loop for no estilo C para Haxe, pois é propenso
+ a erros e não é necessário. Ao invés disso, Haxe possui
+ uma versão muito mais simples e segura que usa Iterators
+ (veremos isso logo mais).
+ */
+ var m = [1,2,3];
+ for (val in m){
+ trace(val + " é o valor de val no array m");
+ }
+
+ // Perceba que você pode iterar em um índice usando uma lista limitada
+ // (veremos isso em breve também)
+ var n = ['foo', 'bar', 'baz'];
+ for (val in 0...n.length){
+ trace(val + " é o valor de val (um índice de n)");
+ }
+
+
+ trace("Compreensões de array");
+
+ // Compreensões de array servem para que você posse iterar um array
+ // enquanto cria filtros e modificações
+ var n_filtrado = [for (val in n) if (val != "foo") val];
+ trace(n_filtrado + " é o valor de n_filtrado");
+
+ var n_modificado = [for (val in n) val += '!'];
+ trace(n_modificado + " é o valor de n_modificado");
+
+ var n_filtrado_e_modificado = [for (val in n) if (val != "foo") val += "!"];
+ trace(n_filtrado_e_modificado + " é o valor de n_filtrado_e_modificado");
+
+ //////////////////////////////////////////////////////////////////
+ // Blocos Switch (Tipos de valor)
+ //////////////////////////////////////////////////////////////////
+ trace("***BLOCOS SWITCH (Tipos de valor)***");
+
+ /*
+ Blocos Switch no Haxe são muito poderosos. Além de funcionar com
+ valores básicos como strings e ints, também funcionam com tipos
+ algébricos em enums (falaremos sobre enums depois).
+ Veja alguns exemplos de valor básico por enquanto:
+ */
+ var meu_cachorro = "fido";
+ var coisa_favorita = "";
+ switch(meu_cachorro){
+ case "fido" : favorite_thing = "osso";
+ case "rex" : favorite_thing = "sapato";
+ case "spot" : favorite_thing = "bola de tênis";
+ default : favorite_thing = "algum brinquedo desconhecido";
+ // case _ : favorite_thing = "algum brinquedo desconhecido"; // mesma coisa que default
+ }
+ // O case "_" acima é um valor "coringa" que
+ // que funcionará para qualquer coisa.
+
+ trace("O nome do meu cachorro é " + meu_cachorro
+ + ", e sua coisa favorita é: "
+ + coisa_favorita);
+
+ //////////////////////////////////////////////////////////////////
+ // Declarações de expressão
+ //////////////////////////////////////////////////////////////////
+ trace("***DECLARAÇÕES DE EXPRESSÃO***");
+
+ /*
+ As declarações de controle em Haxe são muito poderosas pois
+ toda declaração também é uma expressão, considere o seguinte:
+ */
+
+ // declarações if
+ var k = if (true) 10 else 20;
+
+ trace("k igual a ", k); // retorna 10
+
+ var outra_coisa_favorita = switch(meu_cachorro) {
+ case "fido" : "ursinho";
+ case "rex" : "graveto";
+ case "spot" : "bola de futebol";
+ default : "algum brinquedo desconhecido";
+ }
+
+ trace("O nome do meu cachorro é " + meu cachorro
+ + ", e sua outra coisa favorita é: "
+ + outra_coisa_favorita);
+
+ //////////////////////////////////////////////////////////////////
+ // Convertendo tipos de valores
+ //////////////////////////////////////////////////////////////////
+ trace("***CONVERTENDO TIPOS DE VALORES***");
+
+ // Você pode converter strings em ints de forma bem fácil.
+
+ // string para int
+ Std.parseInt("0"); // retorna 0
+ Std.parseFloat("0.4"); // retorna 0.4;
+
+ // int para string
+ Std.string(0); // retorna "0";
+ // concatenar com strings irá converter automaticamente em string.
+ 0 + ""; // retorna "0";
+ true + ""; // retorna "true";
+ // Veja a documentação de parseamento em Std para mais detalhes.
+
+
+ //////////////////////////////////////////////////////////////////
+ // Lidando com Tipos
+ //////////////////////////////////////////////////////////////////
+
+ /*
+ Como mencionamos anteriormente, Haxe é uma linguagem tipada
+ estaticamente. Tipagem estática é uma coisa maravilhosa. Isto
+ permite autocompletar mais preciso, e pode ser usado para checar
+ completamente o funcionamento de um programa. Além disso, o compilador
+ Haxe é super rápido.
+
+ *ENTRETANTO*, há momentos em que você espera que o compilador apenas
+ deixe algo passar, e não lance um "type error" em um determinado caso.
+
+ Para fazer isso, Haxe tem duas palavras-chave separadas. A primeira
+ é o tipo "Dynamic":
+ */
+ var din: Dynamic = "qualquer tipo de variável, assim como essa string";
+
+ /*
+ Tudo o que você sabe sobre uma variável Dynamic é que o compilador
+ não irá mais se preocupar com o tipo dela. É como uma variável
+ "coringa": você pode usar isso ao invés de qualquer tipo de variável,
+ e você pode atrelar qualquer valor a essa variável.
+
+ A outra (e mais extrema) opção é a palavra-chave "untyped":
+ */
+
+ untyped {
+ var x:Int = 'foo'; // não faz sentido!
+ var y:String = 4; // loucura!
+ }
+
+ /*
+ A palavra-chave "untyped" opera em *blocos* inteiros de código,
+ ignorando qualquer verificação de tipo que seria obrigatória em
+ outros casos. Essa palavra-chave deve ser usada com muita cautela,
+ como em situações limitadas de compilação condicional onde a
+ verificação de tipo pode ser um obstáculo.
+
+ No geral, ignorar verificações de tipo *não* é recomendado. Use
+ os modelos de enum, herança ou estrutural para garantir o correto
+ funcionamento do seu programa. Só quando você tiver certeza de que
+ nenhum desses modelos funcionam no seu caso, você deve usar "Dynamic"
+ ou "untyped".
+ */
+
+ //////////////////////////////////////////////////////////////////
+ // Programação básica orientada a objetos
+ //////////////////////////////////////////////////////////////////
+ trace("***PROGRAMAÇÃO BÁSICA ORIENTADA A OBJETOS***");
+
+
+ /*
+ Cria uma instância da FooClass. As definicções dessas classes
+ estão no final do arquivo.
+ */
+ var instancia_foo = new FooClass(3);
+
+ // lê a variável pública normalmente
+ trace(instancia_foo.variavel_publica + " é o valor de instancia_foo.variavel_publica");
+
+ // nós podemos ler essa variável
+ trace(instancia_foo.publica_leitura + " é o valor de instancia_foo.publica_leitura");
+ // mas não podemos escrever nela
+ // instancia_foo.publica_leitura = 4; // isso irá causar um erro se descomentado:
+ // trace(instancia_foo.public_escrita); // e isso também.
+
+ // chama o método toString:
+ trace(instancia_foo + " é o valor de instancia_foo");
+ // mesma coisa:
+ trace(instancia_foo.toString() + " é o valor de instancia_foo.toString()");
+
+
+ /*
+ A instancia_foo é do tipo "FooClass", enquanto acceptBarInstance
+ é do tipo BarClass. Entretanto, como FooClass extende BarClass,
+ ela é aceita.
+ */
+ BarClass.acceptBarInstance(instancia_foo);
+
+ /*
+ As classes abaixo têm mais alguns exemplos avançados, o método
+ "example()" executará esses exemplos aqui:
+ */
+ SimpleEnumTest.example();
+ ComplexEnumTest.example();
+ TypedefsAndStructuralTypes.example();
+ UsingExample.example();
+
+ }
+
+}
+
+/*
+ Essa é a "classe filha" do classe principal LearnHaxe3
+ */
+class FooClass extends BarClass implements BarInterface{
+ public var variavel_publica:Int; // variáveis públicas são acessíveis de qualquer lugar
+ public var publica_leitura (default, null): Int; // somente leitura pública habilitada
+ public var publica_escrita (null, default): Int; // somente escrita pública habilitada
+ public var property (get, set): Int; // use este estilo para habilitar getters e setters
+
+ // variáveis privadas não estão disponíveis fora da classe.
+ // veja @:allow para formas de fazer isso.
+ var _private:Int; // variáveis são privadas se não forem marcadas como públicas
+
+ // um construtor público
+ public function new(arg:Int){
+ // chama o construtor do objeto pai, já que nós extendemos a BarClass:
+ super();
+
+ this.variavel_publica = 0;
+ this._private = arg;
+
+ }
+
+ // getter para _private
+ function get_property() : Int {
+ return _private;
+ }
+
+ // setter para _private
+ function set_property(val:Int) : Int {
+ _private = val;
+ return val;
+ }
+
+ // função especial que é chamada sempre que uma instância é convertida em string.
+ public function toString(){
+ return _private + " com o método toString()!";
+ }
+
+ // essa classe precisa ter essa função definida, pois ela implementa
+ // a interface BarInterface
+ public function baseFunction(x: Int) : String{
+ // converte o int em string automaticamente
+ return x + " foi passado pela baseFunction!";
+ }
+}
+
+/*
+ Uma classe simples para extendermos
+*/
+class BarClass {
+ var base_variable:Int;
+ public function new(){
+ base_variable = 4;
+ }
+ public static function acceptBarInstance(b:BarClass){
+ }
+}
+
+/*
+ Uma interface simples para implementarmos
+*/
+interface BarInterface{
+ public function baseFunction(x:Int):String;
+}
+
+//////////////////////////////////////////////////////////////////
+// Declarações Enum e Switch
+//////////////////////////////////////////////////////////////////
+
+/*
+ Enums no Haxe são muito poderosos. Resumidamente, enums são
+ um tipo com um número limitado de estados:
+ */
+
+enum SimpleEnum {
+ Foo;
+ Bar;
+ Baz;
+}
+
+// Uma classe que faz uso desse enum:
+
+class SimpleEnumTest{
+ public static function example(){
+ var e_explicit:SimpleEnum = SimpleEnum.Foo; // você pode especificar o nome "completo"
+ var e = Foo; // bas descoberta de tipo também funciona.
+ switch(e){
+ case Foo: trace("e era Foo");
+ case Bar: trace("e era Bar");
+ case Baz: trace("e era Baz"); // comente esta linha e teremos um erro.
+ }
+
+ /*
+ Isso não parece tão diferente de uma alteração simples de valor em strings.
+ Entretanto, se nós não incluirmos *todos* os estados, o compilador
+ reclamará. Você pode testar isso comentando a linha mencionada acima.
+
+ Você também pode especificar um valor padrão (default) para enums:
+ */
+ switch(e){
+ case Foo: trace("e é Foo outra vez");
+ default : trace("default funciona aqui também");
+ }
+ }
+}
+
+/*
+ Enums vão muito mais além que estados simples, nós também
+ podemos enumerar *construtores*, mas nós precisaremos de um
+ exemplo mais complexo de enum:
+ */
+enum ComplexEnum{
+ IntEnum(i:Int);
+ MultiEnum(i:Int, j:String, k:Float);
+ SimpleEnumEnum(s:SimpleEnum);
+ ComplexEnumEnum(c:ComplexEnum);
+}
+// Observação: O enum acima pode incluir *outros* enums também, incluindo ele mesmo!
+// Observação: Isto é o que chamamos de *Tipos de dado algébricos* em algumas outras linguagens.
+
+class ComplexEnumTest{
+ public static function example(){
+ var e1:ComplexEnum = IntEnum(4); // especificando o parâmetro enum
+ /*
+ Agora nós podemos usar switch no enum, assim como extrair qualquer
+ parâmetros que ele possa ter.
+ */
+ switch(e1){
+ case IntEnum(x) : trace('$x foi o parâmetro passado para e1');
+ default: trace("Isso não deve ser impresso");
+ }
+
+ // outro parâmetro aqui que também é um enum... um enum enum?
+ var e2 = SimpleEnumEnum(Foo);
+ switch(e2){
+ case SimpleEnumEnum(s): trace('$s foi o parâmetro passado para e2');
+ default: trace("Isso não deve ser impresso");
+ }
+
+ // enum dentro de enum dentro de enum
+ var e3 = ComplexEnumEnum(ComplexEnumEnum(MultiEnum(4, 'hi', 4.3)));
+ switch(e3){
+ // Você pode buscar por certos enums aninhados especificando-os
+ // explicitamente:
+ case ComplexEnumEnum(ComplexEnumEnum(MultiEnum(i,j,k))) : {
+ trace('$i, $j, e $k foram passados dentro desse monstro aninhado.');
+ }
+ default: trace("Isso não deve ser impresso");
+ }
+ /*
+ Veja outros "tipos de dado algébricos" (GADT, do inglês) para mais
+ detalhes sobre o porque eles são tão úteis.
+ */
+ }
+}
+
+class TypedefsAndStructuralTypes {
+ public static function example(){
+ /*
+ Aqui nós usaremos tipos typedef, ao invés de tipos base.
+ Lá no começo, nós definimos que o tipo "FooString" é um tipo "String".
+ */
+ var t1:FooString = "alguma string";
+
+ /*
+ Aqui nós usamos typedefs para "tipos estruturais" também. Esses tipos
+ são definidos pela sua estrutura de campos, não por herança de classe.
+ Aqui temos um objeto anônimo com um campo String chamado "foo":
+ */
+
+ var anon_obj = { foo: 'hi' };
+
+ /*
+ A variável anon_obj não tem um tipo declarado, e é um objeto anônimo
+ de acordo com o compilador. Entretanto, lembra que lá no início nós
+ declaramos a typedef FooObj? Visto que o anon_obj tem a mesma estrutura,
+ nós podemos usar ele em qualquer lugar que um "FooObject" é esperado.
+ */
+
+ var f = function(fo:FooObject){
+ trace('$fo foi passado para esta função');
+ }
+ f(anon_obj); // chama a assinatura de FooObject com anon_obj.
+
+ /*
+ Note que typedefs podem ter campos opcionais também, marcados com "?"
+
+ typedef OptionalFooObj = {
+ ?optionalString: String,
+ requiredInt: Int
+ }
+ */
+
+ /*
+ Typedefs também funcionam com compilação condicional. Por exemplo,
+ nós poderíamos ter incluído isso no topo deste arquivo:
+
+#if( js )
+ typedef Surface = js.html.CanvasRenderingContext2D;
+#elseif( nme )
+ typedef Surface = nme.display.Graphics;
+#elseif( !flash9 )
+ typedef Surface = flash8.MovieClip;
+#elseif( java )
+ typedef Surface = java.awt.geom.GeneralPath;
+#end
+
+ E teríamos apenas um tipo "Surface" para funcionar em todas
+ essas plataformas.
+ */
+ }
+}
+
+class UsingExample {
+ public static function example() {
+
+ /*
+ A palavra-chave "using" é um tipo especial de import de classe que
+ altera o comportamento de qualquer método estático na classe.
+
+ Neste arquivo, nós aplicamos "using" em "StringTools", que contém
+ alguns métodos estáticos para tratar tipos String.
+ */
+ trace(StringTools.endsWith("foobar", "bar") + " deve ser verdadeiro!");
+
+ /*
+ Com um import "using", o primeiro argumento é extendido com o método.
+ O que isso significa? Bem, como "endsWith" tem um primeiro argumento
+ de tipo "String", isso significa que todos os tipos "String" agora
+ possuem o método "endsWith":
+ */
+ trace("foobar".endsWith("bar") + " deve ser verdadeiro!");
+
+ /*
+ Essa técnica habilita uma grande quantidade de expressões para certos
+ tipos, e limita o escopo de modificações para um único arquivo.
+
+ Note que a instância String *não* é modificada em tempo de execução.
+ O novo método adicionado não é uma parte da instância anexada, e o
+ compilador ainda irá gerar o código equivalente ao método estático.
+ */
+ }
+
+}
+
+```
+Isso foi apenas o começo do que Haxe pode fazer. Para uma documentação de todos
+os recursos de Haxe, veja o [manual](https://haxe.org/manual) e a
+[documentação de API](https://api.haxe.org/). Para um diretório de bibliotecas de terceiros
+disponíveis, veja a [Haxelib](https://lib.haxe.org/)
+
+Para tópicos mais avançados, dê uma olhada em:
+
+* [Tipos abstratos](https://haxe.org/manual/types-abstract.html)
+* [Macros](https://haxe.org/manual/macro.html)
+* [Recursos do compilador](https://haxe.org/manual/cr-features.html)
+
+Por fim, participe do [forum Haxe](https://community.haxe.org/),
+ou no IRC [#haxe onfreenode](http://webchat.freenode.net/), ou no
+[Chat Gitter](https://gitter.im/HaxeFoundation/haxe).
diff --git a/pt-br/html-pt.html.markdown b/pt-br/html-pt.html.markdown
new file mode 100644
index 00000000..22b7836e
--- /dev/null
+++ b/pt-br/html-pt.html.markdown
@@ -0,0 +1,125 @@
+---
+language: html
+filename: learnhtml-br.txt
+contributors:
+ - ["Christophe THOMAS", "https://github.com/WinChris"]
+translators:
+ - ["Robert Steed", "https://github.com/robochat"]
+lang: pt-br
+---
+
+HTML é um acrônimo de HyperText Markup Language(Linguagem de Marcação de HiperTexto).
+É uma linguagem que nos permite escrever páginas para a "world wide web".
+É uma linguagem de marcação, nos permite escrever páginas na web usando código
+para indicar como o texto e os dados serão ser exibidos.
+De fato, arquivos HTML são simples arquivos de texto.
+O que seria marcação? É um método de organização dos dados da página envolvidos
+por abertura e fechamento de tags.
+Essa marcação serve para dar significado ao texto que envolve.
+Assim como outras linguagens, o HTML tem diversas versões. Aqui falaremos sobre o HTML5.
+
+**NOTA :** Você pode testar diferentes tags e elementos conforme progride os
+tutoriais em sites como [codepen](http://codepen.io/pen/) podendo ver seus efeitos,
+entendendo como funcionam e se familiarizando com a linguagem.
+Esse artigo tem seu foco principal na sintaxe do HTML e algumas dicas úteis.
+
+
+```html
+<!-- Comentários são envolvidos conforme essa linha! -->
+
+<!-- #################### As Tags #################### -->
+
+<!-- Aqui está um exemplo de arquivo HTML que iremos analisar. -->
+
+<!doctype html>
+ <html>
+ <head>
+ <title>Meu Site</title>
+ </head>
+ <body>
+ <h1>Olá, mundo!</h1>
+ <a href = "http://codepen.io/anon/pen/xwjLbZ">Venha ver como isso aparece</a>
+ <p>Esse é um parágrafo.</p>
+ <p>Esse é um outro parágrafo.</p>
+ <ul>
+ <li>Esse é um item de uma lista não enumerada (bullet list)</li>
+ <li>Esse é um outro item</li>
+ <li>E esse é o último item da lista</li>
+ </ul>
+ </body>
+ </html>
+
+<!-- Um arquivo HTML sempre inicia indicando ao navegador que é uma página HTML. -->
+<!doctype html>
+
+<!-- Após isso, inicia abrindo a tag <html>. -->
+<html>
+
+<!-- Essa tag deverá ser fechada ao final do arquivo com </html>. -->
+</html>
+
+<!-- Não deverá haver nada após o fechamento desta tag. -->
+
+<!-- Entre a abertura e o fechamento das tags <html></html>, nós encontramos: -->
+
+<!-- Um cabeçalho definido por <head> (deverá ser fechado com </head>). -->
+<!-- O cabeçalho contém uma descrição e algumas informações adicionais que não serão exibidas; chamam-se metadados. -->
+
+<head>
+ <title>Meu Site</title><!-- Essa tag <title> indica ao navegador o título a ser exibido na barra de títulos e no nome da aba. -->
+</head>
+
+<!-- Após a seção <head>, nós encontramos a tag - <body> -->
+<!-- Até esse ponto, nada descrito irá aparecer na janela do browser. -->
+<!-- Nós deveremos preencher o body(corpo) com o conteúdo a ser exibido. -->
+
+<body>
+ <h1>Olá, mundo!</h1> <!-- A tag h1 cria um título. -->
+ <!-- Há também subtítulos do <h1>, o mais importante, aos mais precisos (h6). -->
+ <a href = "http://codepen.io/anon/pen/xwjLbZ">Venha ver o que isso exibe</a> <!-- Um hiperlink ao endereço preenchido no atributo href="" -->
+ <p>Esse é um parágrafo.</p> <!-- A tag <p> permite incluir um texto na página. -->
+ <p>Esse é um outro parágrafo.</p>
+ <ul> <!-- A tag <ul> cria uma lista de marcação. -->
+ <!-- Para criar uma lista ordenada, devemos usar <ol>, exibindo 1. para o primeiro elemento, 2. para o segundo, etc. -->
+ <li>Esse é um item de uma lista não-enumerada.</li>
+ <li>Esse é um outro item</li>
+ <li>E esse é o último item da lista</li>
+ </ul>
+</body>
+
+<!-- E é isso, criar um arquivo HTML pode ser bem simples. -->
+
+<!-- Também é possível adicionar alguns outros tipos de tags HTML. -->
+
+<!-- Para inserir uma imagem. -->
+<img src="http://i.imgur.com/XWG0O.gif"/> <!-- O caminho da imagem deve ser indicado usando o atributo src="" -->
+<!-- O caminho da imagem pode ser uma URL ou até mesmo o caminho do arquivo no seu computador. -->
+
+<!-- Também é possível criar uma tabela. -->
+
+<table> <!-- Iniciamos a tabela com a tag <table>. -->
+ <tr> <!-- <tr> nos permite criar uma linha. -->
+ <th>Primeiro cabeçalho</th> <!-- <th> nos permite criar o título de uma coluna. -->
+ <th>Segundo cabeçalho</th>
+ </tr>
+ <tr>
+ <td>Primeira linha, primeira coluna</td> <!-- <td> nos permite criar uma célula da tabela. -->
+ <td>Primeira linha, segunda coluna</td>
+ </tr>
+ <tr>
+ <td>Segunda linha, primeira coluna</td>
+ <td>Segunda linha, segunda coluna</td>
+ </tr>
+</table>
+
+```
+
+## Uso
+
+HTML é escrito em arquivos com a extensão `.html` ou `.htm`. Seu mime type é `text/html`.
+
+## Para aprender mais
+
+* [wikipedia](https://en.wikipedia.org/wiki/HTML)
+* [HTML tutorial](https://developer.mozilla.org/en-US/docs/Web/HTML)
+* [W3School](http://www.w3schools.com/html/html_intro.asp)
diff --git a/pt-br/latex-pt.html.markdown b/pt-br/latex-pt.html.markdown
index a9ed566e..103af28e 100644
--- a/pt-br/latex-pt.html.markdown
+++ b/pt-br/latex-pt.html.markdown
@@ -30,7 +30,7 @@ $ Todo comando LaTeX começa com uma barra invertida (\)
% Em seguida definimos os pacotes que o documento usa.
% Se você quiser incluir gráficos, texto colorido, ou código fonte de outra
% linguagem em outro arquivo em seu documento, você precisa ampliar as
-% capacidade do LaTeX. Isso é feito adicionando-se pacotes.
+% capacidades do LaTeX. Isso é feito adicionando-se pacotes.
% Serão incluídos os pacotes float e caption para imagens e hyperref
% para links.
\usepackage{caption}
@@ -46,7 +46,7 @@ Svetlana Golubeva}
\date{\today}
\title{Aprenda \LaTeX \hspace{1pt} em Y Minutos!}
-% Agora estamos pronto para começar o documento
+% Agora estamos prontos para começar o documento
% Tudo antes dessa linha é chamado "preâmbulo".
\begin{document}
% Se informarmos os campos author (autores), date (data), "title" (título),
@@ -55,7 +55,7 @@ Svetlana Golubeva}
% Se tivermos seções, poderemos criar uma tabela de conteúdo. Para isso,
% o documento deve ser compilado duas vezes, para que tudo apareça na ordem
% correta.
-% É uma voa prática separar a tabela de conteúdo do corpo do documento. Para
+% É uma boa prática separar a tabela de conteúdo do corpo do documento. Para
% isso usa-se o comando \newpage
\newpage
\tableofcontents
diff --git a/pt-br/less-pt.html.markdown b/pt-br/less-pt.html.markdown
new file mode 100644
index 00000000..f6cf2d71
--- /dev/null
+++ b/pt-br/less-pt.html.markdown
@@ -0,0 +1,390 @@
+---
+language: less
+filename: learnless-br.less
+contributors:
+ - ["Saravanan Ganesh", "http://srrvnn.me"]
+
+lang: pt-br
+---
+
+Less é um pré-processador de CSS, que adiciona recursos como variáveis, aninhamento, mixins e muito mais.
+Less (e outros pré-processadores, como o [Sass](http://sass-lang.com/)) ajudam os desenvolvedores a escreverem código que pode ser mantido e DRY (não se repita).
+
+```css
+
+
+//Comentários de linha única são removidos quando Less é compilado para CSS.
+
+/*Comentários de várias linhas são preservados.*/
+
+
+
+/* Variáveis
+==============================*/
+
+
+/* Você pode armazenar um valor de CSS (como uma cor) em uma variável.
+ Use o símbolo '@' para criar uma variável. */
+
+@primary-color: #a3a4ff;
+@secondary-color: #51527f;
+@body-font: 'Roboto', sans-serif;
+
+/* Você pode usar as variáveis ​​em toda a sua folha de estilo.
+ Agora, se você quiser alterar uma cor, só precisa fazer a alteração uma vez. */
+
+body {
+ background-color: @primary-color;
+ color: @secondary-color;
+ font-family: @body-font;
+}
+
+/* Isso compilará para: */
+
+body {
+ background-color: #a3a4ff;
+ color: #51527F;
+ font-family: 'Roboto', sans-serif;
+}
+
+
+/* Isso é muito mais sustentável do que ter que mudar a cor
+ cada vez que aparece em toda a sua folha de estilo. */
+
+
+
+/* Mixins
+==============================*/
+
+
+/* Se você achar que está escrevendo o mesmo código para mais de um
+ elemento, você pode querer reutilizá-lo facilmente. */
+
+.center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ left: 0;
+ right: 0;
+}
+
+/* Você pode usar o mixin simplesmente adicionando o seletor como um estilo. */
+
+div {
+ .center;
+ background-color: @primary-color;
+}
+
+/* Que compilaria para: */
+
+.center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ left: 0;
+ right: 0;
+}
+div {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ left: 0;
+ right: 0;
+ background-color: #a3a4ff;
+}
+
+/* Você pode omitir o código mixin de ser compilado adicionando parênteses
+ depois do seletor. */
+
+.center() {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ left: 0;
+ right: 0;
+}
+
+div {
+ .center;
+ background-color: @primary-color;
+}
+
+/* Que compilaria para: */
+div {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ left: 0;
+ right: 0;
+ background-color: #a3a4ff;
+}
+
+
+
+/* Aninhamento
+==============================*/
+
+
+/* Less permite aninhar seletores nos seletores. */
+
+ul {
+ list-style-type: none;
+ margin-top: 2em;
+
+ li {
+ background-color: #f00;
+ }
+}
+
+/* '&' será substituído pelo seletor pai. */
+/* Você também pode aninhar pseudo-classes. */
+/* Tenha em mente que o aninhamento excessivo tornará seu código menos sustentável.
+ As melhores práticas recomendam não ultrapassar 3 níveis de profundidade ao aninhar.
+ Por exemplo: */
+
+ul {
+ list-style-type: none;
+ margin-top: 2em;
+
+ li {
+ background-color: red;
+
+ &:hover {
+ background-color: blue;
+ }
+
+ a {
+ color: white;
+ }
+ }
+}
+
+/* Compila para: */
+
+ul {
+ list-style-type: none;
+ margin-top: 2em;
+}
+
+ul li {
+ background-color: red;
+}
+
+ul li:hover {
+ background-color: blue;
+}
+
+ul li a {
+ color: white;
+}
+
+
+
+/* Functions
+==============================*/
+
+
+/* Less fornece funções que podem ser usadas para realizar uma variedade de
+ tarefas. Considere o seguinte: */
+
+/* Funções podem ser invocadas usando seu nome e passando os
+ argumentos requeridos. */
+
+body {
+ width: round(10.25px);
+}
+
+.header {
+ background-color: lighten(#000, 0.5);
+}
+
+.footer {
+ background-color: fadeout(#000, 0.25)
+}
+
+/* Compila para: */
+
+body {
+ width: 10px;
+}
+
+.header {
+ background-color: #010101;
+}
+
+.footer {
+ background-color: rgba(0, 0, 0, 0.75);
+}
+
+/* Você também pode definir suas próprias funções. Funções são muito semelhantes às
+ mixins. Ao tentar escolher entre uma função ou a um mixin, lembre-se
+ que mixins são melhores para gerar CSS, enquanto as funções são melhores para
+ lógica que pode ser usada em todo o seu código Less. Os exemplos na
+ seção 'Operadores Matemáticos' são candidatos ideais para se tornarem funções reutilizáveis. */
+
+/* Esta função calcula a média de dois números: */
+
+.average(@x, @y) {
+ @average-result: ((@x + @y) / 2);
+}
+
+div {
+ .average(16px, 50px); // "chama" o mixin
+ padding: @average-result; // use seu valor de "retorno"
+}
+
+/* Compila para: */
+
+div {
+ padding: 33px;
+}
+
+
+
+/* Estender (herança)
+==============================*/
+
+
+/* Estender é uma maneira de compartilhar as propriedades de um seletor com outro. */
+
+.display {
+ height: 50px;
+}
+
+.display-success {
+ &:extend(.display);
+ border-color: #22df56;
+}
+
+/* Compila para: */
+
+.display,
+.display-success {
+ height: 50px;
+}
+.display-success {
+ border-color: #22df56;
+}
+
+/* Estender uma instrução CSS é preferível para criar um mixin
+ por causa da maneira como agrupa as classes que compartilham
+ o mesmo estilo base. Se isso foi feito com um mixin, as propriedades
+ seriam duplicadas para cada declaração que
+ chamou o mixin. Embora isso não afete o seu fluxo de trabalho,
+ adicione o inchaço desnecessário aos arquivos criados pelo compilador Less. */
+
+
+
+/* Parciais e Importações
+==============================*/
+
+
+/* Less permite criar arquivos parciais. Isso pode ajudar a manter o seu
+ código Less modularizado. Arquivos parciais convencionalmente começam com um '_',
+ por exemplo. _reset.less. e são importados para um arquivo less principal que recebe
+ o css compilado. */
+
+/* Considere o seguinte CSS que vamos colocar em um arquivo chamado _reset.less */
+
+html,
+body,
+ul,
+ol {
+ margin: 0;
+ padding: 0;
+}
+
+/* Less disponibiliza @import que podem ser usadas para importar parciais em um arquivo.
+ Isso difere da declaração tradicional CSS @import que faz
+ outra solicitação HTTP para buscar o arquivo importado. Less leva o
+ arquivo importado e combina com o código compilado. */
+
+@import 'reset';
+
+body {
+ font-size: 16px;
+ font-family: Helvetica, Arial, Sans-serif;
+}
+
+/* Compila para: */
+
+html, body, ul, ol {
+ margin: 0;
+ padding: 0;
+}
+
+body {
+ font-size: 16px;
+ font-family: Helvetica, Arial, Sans-serif;
+}
+
+
+
+/* Operações Matemáticas
+==============================*/
+
+
+/* Less fornece os seguintes operadores: +, -, *, / e %. Estes podem
+ ser úteis para calcular valores diretamente nos seus arquivos Less
+ para usar valores que você já calculou manualmente. Abaixo está um exemplo
+ de como configurar um design simples de duas colunas. */
+
+@content-area: 960px;
+@main-content: 600px;
+@sidebar-content: 300px;
+
+@main-size: @main-content / @content-area * 100%;
+@sidebar-size: @sidebar-content / @content-area * 100%;
+@gutter: 100% - (@main-size + @sidebar-size);
+
+body {
+ width: 100%;
+}
+
+.main-content {
+ width: @main-size;
+}
+
+.sidebar {
+ width: @sidebar-size;
+}
+
+.gutter {
+ width: @gutter;
+}
+
+/* Compila para: */
+
+body {
+ width: 100%;
+}
+
+.main-content {
+ width: 62.5%;
+}
+
+.sidebar {
+ width: 31.25%;
+}
+
+.gutter {
+ width: 6.25%;
+}
+
+
+```
+
+## Pratique Less
+
+Se você quiser praticar com Less no seu navegador, confira: * [Codepen](http://codepen.io/) * [LESS2CSS](http://lesscss.org/less-preview/)
+
+## Compatibilidade
+
+Less pode ser usado em qualquer projeto, desde que você tenha um programa para compilá-lo em CSS. Você deseja verificar
+se o CSS que você está usando é compatível com seus navegadores de destino.
+
+[QuirksMode CSS](http://www.quirksmode.org/css/) e [CanIUse](http://caniuse.com) são ótimos recursos para verificar a compatibilidade.
+
+## Leitura adicional
+* [Documentação Oficial](http://lesscss.org/features/)
+* [Less CSS - Guia do iniciante](http://www.hongkiat.com/blog/less-basic/)
diff --git a/pt-br/make-pt.html.markdown b/pt-br/make-pt.html.markdown
new file mode 100644
index 00000000..cbdebde7
--- /dev/null
+++ b/pt-br/make-pt.html.markdown
@@ -0,0 +1,243 @@
+---
+category: tool
+tool: make
+contributors:
+ - ["Robert Steed", "https://github.com/robochat"]
+ - ["Stephan Fuhrmann", "https://github.com/sfuhrm"]
+filename: Makefile
+
+lang: pt-br
+---
+
+Um Makefile define um gráfico de regras para criar um alvo (ou alvos). Sua finalidade é fazer o mínimo de trabalho necessário para atualizar um alvo para a versão mais recente da fonte. Famosamente escrito ao longo de um fim de semana por Stuart Feldman em 1976, ainda é amplamente usada (particularmente no Unix e no Linux) apesar de muitos concorrentes e críticas.
+
+Existem muitas variedades de make na existência, no entanto, este artigo pressupõe que estamos usando o GNU make, que é o padrão no Linux.
+
+```make
+
+# Comentários podem ser escritos assim.
+
+# O arquivo deve ser nomeado Makefile e então pode ser executado como `make <alvo>`.
+# Caso contrário, nós usamos `make -f "nome-do-arquivo" <alvo>`.
+
+# Aviso - use somente TABS para identar em Makefiles, nunca espaços!
+
+#-----------------------------------------------------------------------
+# Noções básicas
+#-----------------------------------------------------------------------
+
+# Regras são do formato
+# alvo: <pré-requisito>
+# onde os pré-requisitos são opcionais.
+
+# Uma regra - esta regra só será executada se o arquivo0.txt não existir.
+arquivo0.txt:
+ echo "foo" > arquivo0.txt
+ # Mesmo os comentários nestas seções da 'receita' são passados ​​para o shell.
+ # Experimentar `make arquivo0.txt` or simplyou simplesmente `make` - primeira regra é o padrão.
+
+# Esta regra só será executada se arquivo0.txt for mais recente que arquivo1.txt.
+arquivo1.txt: arquivo0.txt
+ cat arquivo0.txt > arquivo1.txt
+ # se as mesmas regras de citação do shell.
+ @cat arquivo0.txt >> arquivo1.txt
+ # @ pára o comando de ser ecoado para stdout.
+ -@echo 'hello'
+ # - significa que make continuará em caso de erro.
+ # Experimentar `make arquivo1.txt` na linha de comando.
+
+# Uma regra pode ter vários alvos e vários pré-requisitos
+arquivo2.txt arquivo3.txt: arquivo0.txt arquivo1.txt
+ touch arquivo2.txt
+ touch arquivo3.txt
+
+# Make vai reclamar sobre várias receitas para a mesma regra. Esvaziar
+# receitas não contam e podem ser usadas para adicionar novas dependências.
+
+#-----------------------------------------------------------------------
+# Alvos falsos
+#-----------------------------------------------------------------------
+
+# Um alvo falso. Qualquer alvo que não seja um arquivo.
+# Ele nunca será atualizado, portanto, o make sempre tentará executá-lo.
+all: maker process
+
+# Podemos declarar as coisas fora de ordem.
+maker:
+ touch ex0.txt ex1.txt
+
+# Pode evitar quebrar regras falsas quando um arquivo real tem o mesmo nome
+.PHONY: all maker process
+# Este é um alvo especial. Existem vários outros.
+
+# Uma regra com dependência de um alvo falso sempre será executada
+ex0.txt ex1.txt: maker
+
+# Alvos falsos comuns são: todos fazem instalação limpa ...
+
+#-----------------------------------------------------------------------
+# Variáveis ​​Automáticas e Curingas
+#-----------------------------------------------------------------------
+
+process: Arquivo*.txt # Usando um curinga para corresponder nomes de arquivos
+ @echo $^ # $^ é uma variável que contém a lista de pré-requisitos
+ @echo $@ # imprime o nome do alvo
+ #(fpara várias regras alvo, $@ é o que causou a execução da regra)
+ @echo $< # o primeiro pré-requisito listado
+ @echo $? # somente as dependências que estão desatualizadas
+ @echo $+ # todas as dependências, incluindo duplicadas (ao contrário do normal)
+ #@echo $| # todos os pré-requisitos 'somente pedidos'
+
+# Mesmo se dividirmos as definições de dependência de regra, $^ vai encontrá-los
+process: ex1.txt arquivo0.txt
+# ex1.txt será encontrado, mas arquivo0.txt será desduplicado.
+
+#-----------------------------------------------------------------------
+# Padrões
+#-----------------------------------------------------------------------
+
+# Pode ensinar make a converter certos arquivos em outros arquivos.
+
+%.png: %.svg
+ inkscape --export-png $^
+
+# As regras padrões só farão qualquer coisa se decidirem criar o alvo.
+
+# Os caminhos de diretório são normalmente ignorados quando as regras de
+# padrões são correspondentes. Mas make tentará usar a regra mais
+# apropriada disponível.
+small/%.png: %.svg
+ inkscape --export-png --export-dpi 30 $^
+
+# make utilizará a última versão para uma regra de padrão que encontrar.
+%.png: %.svg
+ @echo esta regra é escolhida
+
+# No entanto, o make usará a primeira regra padrão que pode se tornar o alvo
+%.png: %.ps
+ @echo esta regra não é escolhida se *.svg and *.ps estão ambos presentes
+
+# make já tem algumas regras padrões embutidas. Por exemplo, ele sabe
+# como transformar arquivos *.c em arquivos *.o.
+
+# Makefiles antigos podem usar regras de sufixo em vez de regras padrões
+.png.ps:
+ @echo essa regra é semelhante a uma regra de padrão.
+
+# make sobre a regra de sufixo
+.SUFFIXES: .png
+
+#-----------------------------------------------------------------------
+# Variáveis
+#-----------------------------------------------------------------------
+# aka. macros
+
+# As variáveis ​​são basicamente todos os tipos de string
+
+name = Ted
+name2="Sarah"
+
+echo:
+ @echo $(name)
+ @echo ${name2}
+ @echo $name # Isso não funcionará, tratado como $ (n)ame.
+ @echo $(name3) # Variáveis ​​desconhecidas são tratadas como strings vazias.
+
+# Existem 4 lugares para definir variáveis.
+# Em ordem de prioridade, do maior para o menor:
+# 1: argumentos de linha de comando
+# 2: Makefile
+# 3: variáveis ​​de ambiente do shell - faça importações automaticamente.
+# 4: make tem algumas variáveis ​​predefinidas
+
+name4 ?= Jean
+# Somente defina a variável se a variável de ambiente ainda não estiver definida.
+
+override name5 = David
+# Pára os argumentos da linha de comando de alterar essa variável.
+
+name4 +=grey
+# Anexar valores à variável (inclui um espaço).
+
+# Valores variáveis ​​específicos de padrões (extensão GNU).
+echo: name2 = Sara # Verdadeiro dentro da regra de correspondência
+ # e também dentro de suas recursivas dependências
+ # (exceto que ele pode quebrar quando seu gráfico ficar muito complicado!)
+
+# Algumas variáveis ​​definidas automaticamente pelo make
+echo_inbuilt:
+ echo $(CC)
+ echo ${CXX}
+ echo $(FC)
+ echo ${CFLAGS}
+ echo $(CPPFLAGS)
+ echo ${CXXFLAGS}
+ echo $(LDFLAGS)
+ echo ${LDLIBS}
+
+#-----------------------------------------------------------------------
+# Variáveis 2
+#-----------------------------------------------------------------------
+
+# O primeiro tipo de variáveis ​​é avaliado a cada vez que elas são usadas.
+# TIsso pode ser caro, então existe um segundo tipo de variável que é
+# avaliado apenas uma vez. (Esta é uma extensão do GNU make)
+
+var := hello
+var2 ::= $(var) hello
+#:= e ::= são equivalentes.
+
+# Essas variáveis ​​são avaliadas procedimentalmente (na ordem em que
+# aparecem), quebrando assim o resto da línguagem!
+
+# Isso não funciona
+var3 ::= $(var4) and good luck
+var4 ::= good night
+
+#-----------------------------------------------------------------------
+# Funções
+#-----------------------------------------------------------------------
+
+# make tem muitas funções disponíveis.
+
+sourcefiles = $(wildcard *.c */*.c)
+objectfiles = $(patsubst %.c,%.o,$(sourcefiles))
+
+# O formato é $(func arg0,arg1,arg2...)
+
+# Alguns exemplos
+ls: * src/*
+ @echo $(filter %.txt, $^)
+ @echo $(notdir $^)
+ @echo $(join $(dir $^),$(notdir $^))
+
+#-----------------------------------------------------------------------
+# Diretivas
+#-----------------------------------------------------------------------
+
+# Inclua outros makefiles, úteis para código específico da plataforma
+include foo.mk
+
+sport = tennis
+# Compilação condicional
+report:
+ifeq ($(sport),tennis)
+ @echo 'game, set, match'
+else
+ @echo "They think it's all over; it is now"
+endif
+
+# Há também ifneq, ifdef, ifndef
+
+foo = true
+
+ifdef $(foo)
+bar = 'hello'
+endif
+```
+
+### More Resources
+
++ [documentação gnu make](https://www.gnu.org/software/make/manual/)
++ [tutorial de carpintaria de software](http://swcarpentry.github.io/make-novice/)
++ aprenda C da maneira mais difícil [ex2](http://c.learncodethehardway.org/book/ex2.html) [ex28](http://c.learncodethehardway.org/book/ex28.html)
diff --git a/pt-br/markdown-pt.html.markdown b/pt-br/markdown-pt.html.markdown
index f22093f9..1a26e406 100644
--- a/pt-br/markdown-pt.html.markdown
+++ b/pt-br/markdown-pt.html.markdown
@@ -4,6 +4,7 @@ contributors:
- ["Dan Turkel", "http://danturkel.com/"]
translators:
- ["Miguel Araújo", "https://github.com/miguelarauj1o"]
+ - ["Monique Baptista", "https://github.com/bfmonique"]
lang: pt-br
filename: learnmarkdown-pt.md
---
@@ -14,20 +15,20 @@ escrever sintaxe que converte facilmente em HTML (hoje, suporta outros formatos
Dê-me feedback tanto quanto você quiser! / Sinta-se livre para a garfar (fork) e
puxar o projeto (pull request)
-```markdown
-<!-- Markdown é um superconjunto do HTML, de modo que qualquer arvquivo HTML é
-um arquivo Markdown válido, isso significa que nós podemos usar elementos HTML
+```md
+<!-- Markdown é um superconjunto do HTML, de modo que qualquer arquivo HTML é
+um arquivo Markdown válido. Isso significa que nós podemos usar elementos HTML
em Markdown, como o elemento de comentário, e eles não serão afetados pelo analisador
de remarcação. No entanto, se você criar um elemento HTML em seu arquivo Markdown, você
-não pode usar sintaxe remarcação dentro desse conteúdo do elemento.-->
+não pode usar sintaxe de remarcação dentro desse conteúdo do elemento.-->
-<!--Markdown também varia de implementação de um analisador para uma próxima.
+<!--A maneira como o Markdown é analisado varia de software para software.
Este guia vai tentar esclarecer quando as características são universais, ou quando eles são
-específico para um determinado parser -->
+específico para um determinado interpretador -->
<!-- Cabeçalhos -->
<!-- Você pode criar elementos HTML <h1> até <h6> facilmente antecedendo o texto
-que deseja estar nesse elemento por um número de hashes (#) -->
+que deseja estar nesse elemento por um número de cerquilhas (#) -->
# Isto é um cabeçalho <h1>
## Isto é um cabeçalho <h2>
### Isto é um cabeçalho <h3>
@@ -65,7 +66,7 @@ uma ou múltiplas linhas em branco. -->
Este é um parágrafo. Eu estou digitando em um parágrafo, não é legal?
-Agora, eu estou no parágrado 2.
+Agora, eu estou no parágrafo 2.
... Ainda continuo no parágrafo 2! :)
Eu estou no parágrafo três.
@@ -111,7 +112,7 @@ ou
1. Item um
2. Item dois
-3. Tem três
+3. Item três
<!-- Você não tem poder para rotular os itens corretamente e a remarcação será ainda
tornar os números em ordem, mas isso pode não ser uma boa idéia -->
diff --git a/pt-br/matlab-pt.html.markdown b/pt-br/matlab-pt.html.markdown
index eb660d4c..5ed6b7ba 100644
--- a/pt-br/matlab-pt.html.markdown
+++ b/pt-br/matlab-pt.html.markdown
@@ -206,8 +206,7 @@ size(A) % Resposta = 3 3
A(1, :) =[] % Remove a primeira linha da matriz
A(:, 1) =[] % Remove a primeira coluna da matriz
-transpose(A) % Transposta a matriz, que é o mesmo de:
-A one
+transpose(A) % Transposta a matriz, que é o mesmo de: A.'
ctranspose(A) % Transposta a matriz
% (a transposta, seguida pelo conjugado complexo de cada elemento)
diff --git a/pt-br/paren-pt.html.markdown b/pt-br/paren-pt.html.markdown
index 464a69d2..92414ba3 100644
--- a/pt-br/paren-pt.html.markdown
+++ b/pt-br/paren-pt.html.markdown
@@ -182,8 +182,8 @@ a ; => (3 2)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Macros lhe permitem estender a sintaxe da linguagem.
-;; Os macros no Paren são fáceis.
-;; Na verdade, (defn) é um macro.
+;; As macros no Paren são fáceis.
+;; Na verdade, (defn) é uma macro.
(defmacro setfn (nome ...) (set nome (fn ...)))
(defmacro defn (nome ...) (def nome (fn ...)))
@@ -191,6 +191,6 @@ a ; => (3 2)
(defmacro infix (a op ...) (op a ...))
(infix 1 + 2 (infix 3 * 4)) ; => 15
-;; Macros não são higiênicos, você pode sobrescrever as variáveis já existentes!
-;; Eles são transformações de códigos.
+;; Macros não são higiênicas, você pode sobrescrever as variáveis já existentes!
+;; Elas são transformações de códigos.
```
diff --git a/pt-br/pascal-pt.html.markdown b/pt-br/pascal-pt.html.markdown
new file mode 100644
index 00000000..3a37271a
--- /dev/null
+++ b/pt-br/pascal-pt.html.markdown
@@ -0,0 +1,253 @@
+---
+language: Pascal
+filename: learnpascal-pt.pas
+contributors:
+ - ["Ganesha Danu", "https://github.com/blinfoldking"]
+ - ["Keith Miyake", "https//github.com/kaymmm"]
+translators:
+ - ["Raul Almeida", "https://github.com/almeidaraul"]
+lang: pt-br
+---
+
+
+>Pascal é uma linguagem de programação estruturada, que recebeu este nome em homenagem ao matemático e físico Blaise Pascal. Foi criada em 1970 pelo suíço Niklaus Wirth,tendo em mente encorajar o uso de código estruturado.
+fonte : [wikipédia](https://pt.wikipedia.org/wiki/Pascal_(linguagem_de_programa%C3%A7%C3%A3o))
+
+
+
+Para compilar e executar um programa em Pascal, você pode usar o freepascal,
+um compilador gratuito. [Faça o download aqui](https://www.freepascal.org/)
+
+```pascal
+//Corpo de um programa em Pascal
+//isso é um comentário
+{
+ isso também é um comentário,
+ mas com várias linhas
+}
+
+//cabeçalho do programa
+PROGRAM aprendendo_pascal; //<-- não esqueça o ponto e vírgula. O nome do
+programa deve começar com uma letra.
+
+CONST
+ {
+ aqui você declara valores constantes
+ }
+TYPE
+ {
+ aqui você declara tipos não nativos
+ }
+VAR
+ {
+ aqui você declara variáveis
+ }
+
+//programa de fato
+BEGIN
+ 80
+ aqui ficam todas as instruções que não pertencem nem a funções
+ nem a procedimentos
+
+ blocos de código começam com BEGIN e terminam com END
+ (como as chaves em C)
+ }
+END. //o "end" no final do programa requer um ponto final.
+```
+
+```pascal
+//formas de declarar uma variável
+VAR a:INTEGER;
+VAR b:INTEGER;
+
+VAR
+ a : INTEGER;
+ b : INTEGER;
+
+VAR a,b : INTEGER;
+```
+
+```pascal
+PROGRAM Learn_More;
+//agora, mais sobre tipos de dados e operações
+
+CONST
+ PI = 3.141592654;
+ GNU = 'GNU''s Not Unix';
+ { a convenção é usar caixa alta para constantes
+
+ constantes têm valores fixos que só podem ser alterados
+ antes da compilação
+
+ constantes podem ser de qualquer tipo nativo (integer, real, boolean,
+ char, string)
+
+TYPE
+ vet_char : array [0..255] of CHAR;
+ // isso declara um novo tipo de variável, vet_char, com 256 caracteres
+ vet_multd : array of array of INTEGER;
+ // vetores de vetores são vetores multidimensionais
+ // use vetores de tamanho 0 (daí, usa-se alocação dinâmica)
+ // vetores do tipo vet_multd são de duas dimensões
+
+//declarando variáveis
+VAR
+ int, c, d : INTEGER;
+ // três variáveis que guardam valores inteiros
+ // inteiros têm 16 bits (vão de -32768 a 32767)
+ r : REAL;
+ // uma variável que guarda um valor real
+ // reais vão de 3.4E-38 a 3.4E38
+ bool : BOOLEAN;
+ // uma variável que guarda um valor booleano (verdadeiro ou falso)
+ ch : CHAR;
+ // uma variável que guarda um caractere
+ // caracteres têm 8 bits
+ str : STRING;
+ // STRING não é um tipo padrão, mas vem na maioria dos compiladores
+ // string é um vetor de caracteres com tamanho padrão de 255 elementos
+ s : STRING[50];
+ // especificar o tamanho de uma string assim otimiza o uso de memória
+ my_str: vet_char;
+ // aqui, uma variável de um tipo personalizado declarado acima
+ my_2d : vet_multd;
+ // defina o tamanho de vetores dinâmicos antes de usá-los
+
+// outros tipos de dados (pascal é uma linguagem fortemente tipada)
+
+ // tipos adicionais de inteiros
+ b : BYTE; // faixa [0..255]
+ shi : SHORTINT; // faixa [-128..127]
+ smi : SMALLINT; // faixa [-32,768..32,767] (inteiro padrão)
+ w : WORD; // faixa [0..65,535]
+ li : LONGINT; // faixa [-2,147,483,648..2,147,483,647]
+ lw : LONGWORD; // faixa [0..4,294,967,295]
+ c : CARDINAL; // longword
+ i64 : INT64; // faixa [-9223372036854775808..9223372036854775807]
+ qw : QWORD; // faixa [0..18,446,744,073,709,551,615]
+
+ // tipos adicionais de reais
+ rr : REAL; // faixa depende da plataforma (8 bits, 16 bits, etc)
+ rs : SINGLE; // faixa [1.5E-45..3.4E38]
+ rd : DOUBLE; // faixa [5.0E-324 .. 1.7E308]
+ re : EXTENDED; // faixa [1.9E-4932..1.1E4932]
+ rc : COMP; // faixa [-2E64+1 .. 2E63-1]
+
+BEGIN
+ int := 1;// usa-se := para atribuir valores a variáveis
+ r := 3.14;
+ ch := 'a';
+ str := 'apple';
+ bool := true;
+ //pascal não é case-sensitive (não diferencia maiúsculas de minúsculas)
+ // uma opção de organização é usar maiúsculas para termos da linguagem
+ // (BEGIN, END, INTEGER, etc) e constantes
+ // aritmética
+ int := 1 + 1; // int deixa de ser 1 e passa a ser 2
+ int := int + 1; // int = 2 + 1 = 3;
+ int := 4 DIV 2; //int = 2 (DIV é uma divisão inteira - ignora o resto)
+ int := 3 DIV 2; //int = 1
+ int := 1 DIV 2; //int = 0
+
+ bool := true OR false; // bool = true
+ bool := false AND true; // bool = false
+ bool := true XOR true; // bool = false
+
+ r := 3 / 2; // usa-se a "/" para divisões entre inteiros
+ r := int; // um real pode receber um valor inteiro (mas não o contrário)
+
+ c := str[1]; //acessando elementos de um vetor: vetor[índice do elemento]
+ str := 'hello' + 'world'; //concatenção de strings
+
+ my_str[0] := 'a'; { só se pode atribuir valores a vetores elemento
+ por elemento (não o vetor inteiro de uma vez) }
+
+ // LAÇOS
+ WHILE (ch != 'a') DO
+ BEGIN
+ writeln('ch é diferente de a');
+ IF (ch = 'c') THEN
+ writeln('ch é igual a c');
+ END;
+
+ SETLENGTH(my_2d,10,10);
+ // inicialização de um vetor com alocação dinâmica; my_2d vira um 10x10
+ FOR c := 0 to 9 DO
+ { vetores começam em 0 e terminam em tamanho-1
+ (exceto se, declarando o tipo, forem especificados valores diferentes) }
+ FOR d := 0 to 9 DO
+ // a variável usada em um laço FOR deve ter sido declarada no cabeçalho
+ my_2d[c,d] := c * d;
+ // acessam-se elementos de vetores multidimensionais com [d1, d2, d3...]
+
+
+END.
+```
+
+```pascal
+PROGRAM programacao_com_funcoes;
+
+VAR
+ i, inutil : INTEGER;
+
+{ OBS: diferença entre procedimento e função
+ função: realiza operações e retorna valor
+ procedimento: só realiza operações
+}
+//declarando e descrevendo uma função
+FUNCTION fatorial_recursiva(CONST a: INTEGER) : INTEGER;
+{ calcula a! recursivamente }
+
+// pode-se declarar variáveis locais para funções e procedimentos
+// exemplo:
+// VAR
+// local_a : INTEGER;
+
+BEGIN
+ { O bloco ELSE só funciona se não houver ponto e vírgula no bloco do IF
+ exemplo:
+ IF a THEN
+ writeln('a');
+ ELSE
+ writeln('b');
+ Isso não permitiria que o programa compilasse }
+
+ IF a >= 1 THEN
+ // o valor de retorno é atribuído como se a função fosse uma variável
+ fatorial_recursiva := a * fatorial_recursiva(a-1)
+ ELSE
+ fatorial_recursiva := 1;
+END; // o END de funções e procedimentos recebe ponto e vírgula
+
+//declarando e descrevendo um procedimento
+PROCEDURE salvainteiro(VAR i : INTEGER; inutil : INTEGER);
+{ recebe entrada do usuário e salva na variável i
+ passagem de valor:
+
+ POR REFERÊNCIA - "VAR i: integer"; implica que alterações na variável i
+ dentro da função são guardadas para o escopo de todo o programa
+
+ POR VALOR - "inutil: integer"; implica que o valor do argumento é copiado
+ e alterações na variável inutil não são guardadas
+}
+
+BEGIN
+ WRITE('Insira um inteiro: '); //escreve sem quebrar linha
+ READLN(i); //lê i com quebra de linha
+ inutil := 4; // inutil não terá seu valor alterado fora do procedimento.
+END;
+
+BEGIN // programa principal
+ inutil := 3;
+ salvainteiro(i, inutil);
+
+ // escrevendo i!
+ WRITELN(i, '! = ', factorial_recursion(i)); // escreve e quebra linha
+ // valores numéricos são automaticamente convertidos para texto na escrita
+
+ // escrever valor de inutil (sempre 3, já que salvainteiro não a altera)
+ WRITELN('inutil = ', inutil);
+END.
+
+```
+
diff --git a/pt-br/pyqt-pt.html.markdown b/pt-br/pyqt-pt.html.markdown
index 10d55784..40fe82d5 100644
--- a/pt-br/pyqt-pt.html.markdown
+++ b/pt-br/pyqt-pt.html.markdown
@@ -10,7 +10,7 @@ lang: pt-br
---
**Qt** é amplamente conhecido como um framework para desenvolvimento de
-software multi-plataforma que pode rodar em vários outras plataformas de
+software multi-plataforma que pode rodar em várias outras plataformas de
softwares e hardwares com pouca ou nenhuma alteração no código, enquanto mantém
o poder e a velocidade de uma aplicação nativa. Embora o **Qt** tenha sido
originalmente escrito em *C++*.
diff --git a/pt-br/python-pt.html.markdown b/pt-br/python-pt.html.markdown
index 5afd46d0..82b70117 100644
--- a/pt-br/python-pt.html.markdown
+++ b/pt-br/python-pt.html.markdown
@@ -464,7 +464,7 @@ Humano.ronca() #=> "*arrrrrrr*"
# Você pode importar módulos
import math
-print math.sqrt(16) #=> 4
+print math.sqrt(16) #=> 4.0
# Você pode importar funções específicas de um módulo
from math import ceil, floor
diff --git a/pt-br/python3-pt.html.markdown b/pt-br/python3-pt.html.markdown
index 9b6bd1b6..bc5f801c 100644
--- a/pt-br/python3-pt.html.markdown
+++ b/pt-br/python3-pt.html.markdown
@@ -7,15 +7,16 @@ contributors:
- ["Zachary Ferguson", "http://github.com/zfergus2"]
translators:
- ["Paulo Henrique Rodrigues Pinheiro", "http://www.sysincloud.it"]
+ - ["Monique Baptista", "https://github.com/bfmonique"]
lang: pt-br
filename: learnpython3-pt.py
---
-Python foi criado por Guido Van Rossum nos anos 1990. Ele é atualmente uma
-das mais populares linguagens em existência. Eu fiquei morrendo de amor
-pelo Python por sua clareza sintática. É praticamente pseudocódigo executável.
+Python foi criada por Guido Van Rossum nos anos 1990. Ela é atualmente uma
+das linguagens mais populares existentes. Eu me apaixonei por
+Python por sua clareza sintática. É praticamente pseudocódigo executável.
-Suas opiniões são grandemente apreciadas. Você pode encontrar-me em
+Opniões são muito bem vindas. Você pode encontrar-me em
[@louiedinh](http://twitter.com/louiedinh) ou louiedinh [em]
[serviço de e-mail do google].
@@ -44,7 +45,7 @@ aprender o velho Python 2.7.
8 - 1 # => 7
10 * 2 # => 20
-# Números inteiros por padrão, exceto na divisão, que retorna número
+# Números são inteiros por padrão, exceto na divisão, que retorna número
# de ponto flutuante (float).
35 / 5 # => 7.0
@@ -64,7 +65,7 @@ aprender o velho Python 2.7.
# Exponenciação (x**y, x elevado à potência y)
2**4 # => 16
-# Determine a precedência usando parêntesis
+# Determine a precedência usando parênteses
(1 + 3) * 2 # => 8
# Valores lógicos são primitivos (Atenção à primeira letra maiúscula)
@@ -105,9 +106,8 @@ False or True # => True
1 < 2 < 3 # => True
2 < 3 < 2 # => False
-# (operador 'is' e operador '==') is verifica se duas referenciam um
-# mesmo objeto, mas == verifica se as variáveis apontam para o
-# mesmo valor.
+# 'is' verifica se duas variáveis representam o mesmo endereço
+# na memória; '==' verifica se duas variáveis têm o mesmo valor
a = [1, 2, 3, 4] # Referência a uma nova lista, [1, 2, 3, 4]
b = a # b referencia o que está referenciado por a
b is a # => True, a e b referenciam o mesmo objeto
@@ -174,7 +174,7 @@ input_string_var = input("Digite alguma coisa: ") # Retorna o que foi digitado e
# Observação: Em versões antigas do Python, o método input() era chamado raw_input()
# Não é necessário declarar variáveis antes de iniciá-las
-# È uma convenção usar letras_minúsculas_com_sublinhados
+# É uma convenção usar letras_minúsculas_com_sublinhados
alguma_variavel = 5
alguma_variavel # => 5
@@ -182,31 +182,31 @@ alguma_variavel # => 5
# Veja Controle de Fluxo para aprender mais sobre tratamento de exceções.
alguma_variavel_nao_inicializada # Gera a exceção NameError
-# Listas armazenam sequencias
+# Listas armazenam sequências
li = []
-# Você pode iniciar com uma lista com alguns valores
+# Você pode iniciar uma lista com valores
outra_li = [4, 5, 6]
-# Adicionar conteúdo ao fim da lista com append
+# Adicione conteúdo ao fim da lista com append
li.append(1) # li agora é [1]
li.append(2) # li agora é [1, 2]
li.append(4) # li agora é [1, 2, 4]
li.append(3) # li agora é [1, 2, 4, 3]
-# Remover do final da lista com pop
+# Remova do final da lista com pop
li.pop() # => 3 e agora li é [1, 2, 4]
# Vamos colocá-lo lá novamente!
li.append(3) # li agora é [1, 2, 4, 3] novamente.
-# Acessar uma lista da mesma forma que você faz com um array
+# Acesse uma lista da mesma forma que você faz com um array
li[0] # => 1
-# Acessa o último elemento
+# Acessando o último elemento
li[-1] # => 3
-# Acessando além dos limites gera um IndexError
+# Acessar além dos limites gera um IndexError
li[4] # Gera o IndexError
# Você pode acessar vários elementos com a sintaxe de limites
-# (É um limite fechado, aberto pra você que gosta de matemática.)
+# Inclusivo para o primeiro termo, exclusivo para o segundo
li[1:3] # => [2, 4]
# Omitindo o final
li[2:] # => [4, 3]
@@ -647,7 +647,7 @@ Human.grunt() # => "*grunt*"
# Você pode importar módulos
import math
-print(math.sqrt(16)) # => 4
+print(math.sqrt(16)) # => 4.0
# Você pode importar apenas funções específicas de um módulo
from math import ceil, floor
diff --git a/pt-br/ruby-pt.html.markdown b/pt-br/ruby-pt.html.markdown
index 1078f6c5..7ae28ac2 100644
--- a/pt-br/ruby-pt.html.markdown
+++ b/pt-br/ruby-pt.html.markdown
@@ -71,7 +71,7 @@ false.class #=> FalseClass
2 <= 2 #=> true
2 >= 2 #=> true
-# Strings são objects
+# Strings são objetos
'Eu sou uma string'.class #=> String
"Eu também sou uma string".class #=> String
diff --git a/pt-br/rust-pt.html.markdown b/pt-br/rust-pt.html.markdown
index 8134d3c5..b2bab214 100644
--- a/pt-br/rust-pt.html.markdown
+++ b/pt-br/rust-pt.html.markdown
@@ -11,7 +11,7 @@ Rust é uma linguagem de programação desenvolvida pelo Mozilla Research. Rust
combina controle de baixo nível sobre o desempenho com facilidades de alto
nível e garantias de segurança.
-Ele atinge esse objetico sem necessitar de um coletor de lixo ou um processo
+Ele atinge esse objetivo sem necessitar de um coletor de lixo ou um processo
*runtime*, permitindo que se use bibliotecas Rust em substituição a bibliotecas
em C.
@@ -27,7 +27,7 @@ noite. Rust adotou um modelo de versões *train-based* com novas versões
regularmente liberadas a cada seis semanas. A versão 1.1 beta de Rust foi
disponibilizada ao mesmo tempo que a versão 1.0.
-Apesar de Rust ser uma linguagem mais e baixo nível, Rust tem alguns conceitos
+Apesar de Rust ser uma linguagem mais de baixo nível, Rust tem alguns conceitos
funcionais geralmente encontradas em linguagens de alto nível. Isso faz Rust
não apenas rápido, mas também fácil e eficiente para programar.
@@ -68,7 +68,7 @@ fn main() {
// Em geral, o compilador Rust consegue inferir qual o tipo de uma
// variável, então você não tem que escrever uma anotação explícita de tipo.
// Ao longo desse tutorial, os tipos serão explicitamente anotados em
- // muitos lugares, mas apenas com propóstico demonstrativo. A inferência de
+ // muitos lugares, mas apenas com propósito demonstrativo. A inferência de
// tipos pode gerenciar isso na maioria das vezes.
let implicit_x = 1;
let implicit_f = 1.3;
diff --git a/pt-br/solidity-pt.html.markdown b/pt-br/solidity-pt.html.markdown
index 37d15bf2..d4555fa7 100644
--- a/pt-br/solidity-pt.html.markdown
+++ b/pt-br/solidity-pt.html.markdown
@@ -1,6 +1,6 @@
---
language: Solidity
-filename: learnSolidity.sol
+filename: learnSolidity-br.sol
contributors:
- ["Nemil Dalal", "https://www.nemil.com"]
- ["Joseph Chow", ""]
diff --git a/pt-br/stylus-pt.html.markdown b/pt-br/stylus-pt.html.markdown
new file mode 100755
index 00000000..804fa806
--- /dev/null
+++ b/pt-br/stylus-pt.html.markdown
@@ -0,0 +1,228 @@
+---
+language: stylus
+filename: learnStylus-pt.styl
+contributors:
+ - ["Salomão Neto", "https://github.com/salomaosnff"]
+ - ["Isaac Henrique", "https://github.com/Isaachi1"]
+lang: pt-br
+---
+
+Stylus tem como propósito, adicionar funcionalidades às suas folhas de estilos CSS que te ajudam no desenvolvimento, sem que haja a quebra de compartibilidade entre os navegadores Web.
+Entre elas estão variáveis, aninhamento, mixins, funções e muito mais.
+
+A sintaxe do Stylus é muito flexivel podendo utilizar a sintaxe padrão do CSS e deixando opcional o ponto e vírgula (;), dois pontos (:) e até mesmo as chaves ({ e }), tornando assim o seu código ainda mais legível.
+
+Stylus não fornece novas opções de estilos, mas dá funcionalidades que permitem deixar seu CSS muito mais dinâmico.
+
+
+```scss
+
+/* Estilo de código
+==============================*/
+
+/* As chaves, ponto e vírgula, e dois pontos são opcionais no Stylus. */
+
+body {
+ background: #000;
+}
+
+body {
+ background: #000
+}
+
+body {
+ background #000
+}
+
+body
+ background #000
+
+body
+ background: #000;
+
+body
+ background: #000
+
+
+// Comentários de linha única são removidos quando Stylus é compilado para CSS.
+
+/* Comentários multi-line são preservados. */
+
+
+/* Seletores
+==============================*/
+
+/* Selecionando elementos dentro de outro elemento */
+body {
+ background: #000000;
+ h1 {
+ color: #FF0000;
+ }
+}
+
+/* Ou se preferir... */
+body
+ background #000000
+ h1
+ color #FF0000
+
+
+/* Obtendo a referência do elemento pai
+==============================*/
+a {
+ color: #0088dd;
+ &:hover {
+ color: #DD8800;
+ }
+}
+
+
+/*Variáveis
+==============================*/
+
+
+/*
+ É possível armazenar um valor CSS (tais como a cor) de uma variável.
+ Embora seja opcional, é recomendado adicionar $ antes de um nome de variável
+ para que você possa distinguir uma variável de outro valor CSS.
+*/
+
+$primary-color = #A3A4FF
+$secondary-color = #51527F
+$body-font = 'Roboto', sans-serif
+
+/* Você pode usar as variáveis em toda a sua folha de estilo.
+Agora, se você quer mudar a cor, você só tem que fazer a mudança uma vez. */
+
+body
+ background-color $primary-color
+ color $secondary-color
+ font-family $body-font
+
+/* Quando compilar ficaria assim: */
+body {
+ background-color: #A3A4FF;
+ color: #51527F;
+ font-family: 'Roboto', sans-serif;
+}
+
+/ *
+Este é muito mais fácil de manter do que ter de mudar a cor
+cada vez que aparece em toda a sua folha de estilo.
+* /
+
+
+
+/*Mixins
+==============================*/
+
+/* Se você achar que você está escrevendo o mesmo código para mais de um
+elemento, você pode querer armazenar esse código em um mixin.
+
+center()
+ display block
+ margin-left auto
+ margin-right auto
+ left 0
+ right 0
+
+/* Utilizando um mixin */
+body {
+ center()
+ background-color: $primary-color
+}
+
+/* Apoś compilar ficaria assim: */
+div {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+ left: 0;
+ right: 0;
+ background-color: #A3A4FF;
+}
+
+/* Você pode usar mixins para criar uma propriedade estenográfica. */
+
+size($width, $height)
+ width $width
+ height $height
+
+.rectangle
+ size(100px, 60px)
+
+.square
+ size(40px, 40px)
+
+/* Você pode usar um mixin como uma propriedade CSS. */
+circle($ratio)
+ width $ratio * 2
+ height $ratio * 2
+ border-radius $ratio
+
+.ball
+ circle 25px
+
+
+/* Interpolação
+==============================*/
+
+vendor(prop, args)
+ -webkit-{prop} args
+ -moz-{prop} args
+ {prop} args
+
+border-radius()
+ vendor('border-radius', arguments)
+
+box-shadow()
+ vendor('box-shadow', arguments)
+
+button
+ border-radius 1px 2px / 3px 4px
+
+/* Funções
+==============================*/
+
+/* Funções no Stylus permitem fazer uma variedade de tarefas, como por exemplo, menipular algum dado. */
+
+body {
+ background darken(#0088DD, 50%) // Escurece a cor #0088DD em 50%
+}
+
+/** Criando sua própria função */
+somar(a, b)
+ a + b
+
+body
+ padding somar(10px, 5)
+
+/* Condições
+==============================*/
+comparar(a, b)
+ if a > b
+ maior
+ else if a < b
+ menor
+ else
+ igual
+
+comparar(5, 2) // => maior
+comparar(1, 5) // => menor
+comparar(10, 10) // => igual
+
+/* Iterações
+==============================*/
+
+/**
+Sintaxe de laço de repetição for:
+for <val-name> [, <key-name>] in <expression>
+**/
+
+for $item in (1..2) /* Repete o bloco 12 vezes */
+ .col-{$item}
+ width ($item / 12) * 100% /* Calcula a largula pelo número da coluna*
+
+```
+
+Agora que você conhece um pouco sobre esse poderoso pré-processador de CSS, você está pronto para criar folhas de estilos mais dinâmicas. Para aprofundar seus conhecimentos visite a documentação oficial do stylus em http://stylus-lang.com.
diff --git a/pt-br/typescript-pt.html.markdown b/pt-br/typescript-pt.html.markdown
index f072b257..077aa2cc 100644
--- a/pt-br/typescript-pt.html.markdown
+++ b/pt-br/typescript-pt.html.markdown
@@ -8,13 +8,6 @@ translators:
lang: pt-br
---
-TypeScript is a language that aims at easing development of large scale applications written in JavaScript.
-TypeScript adds common concepts such as classes, modules, interfaces, generics and (optional) static typing to JavaScript.
-It is a superset of JavaScript: all JavaScript code is valid TypeScript code so it can be added seamlessly to any project. The TypeScript compiler emits JavaScript.
-
-This article will focus only on TypeScript extra syntax, as opposed to [JavaScript] (../javascript/).
-
-
Typescript é uma linguagem que visa facilitar o desenvolvimento de aplicações em grande escala escritos em JavaScript.
Typescript acrescenta conceitos comuns como classes, módulos, interfaces, genéricos e (opcional) tipagem estática para JavaScript.
É um super conjunto de JavaScript: todo o código JavaScript é o código do texto dactilografado válido para que possa ser adicionados diretamente a qualquer projeto. O compilador emite typescript JavaScript.
diff --git a/pt-br/vim-pt.html.markdown b/pt-br/vim-pt.html.markdown
index 51eddb48..d7617bbe 100644
--- a/pt-br/vim-pt.html.markdown
+++ b/pt-br/vim-pt.html.markdown
@@ -13,7 +13,7 @@ filename: LearnVim-pt.txt
[Vim](http://www.vim.org)
(Vi IMproved - Vi Melhorado) é um clone do editor vi para Unix. Ele é um
editor de texto projetado para ter velocidade e produtividade, e está presente
-na maioria dos systemas UNIX. O editor tem um grande número de atalhos de teclado
+na maioria dos sistemas UNIX. O editor tem um grande número de atalhos de teclado
para agilizar a navegação para pontos específicos no arquivo, além de edição rápida.
## Navegação do Vim: o básico
@@ -25,7 +25,7 @@ para agilizar a navegação para pontos específicos no arquivo, além de ediç
:wq # Salva o arquivo e fecha o vim
:q! # Fecha o vim e descarta as alterações no arquivo
# ! *força* :q a executar, fechando o vim sem salvar antes
- :x # Salvar o arquivo e fechao vim (atalho para :wq)
+ :x # Salva o arquivo e fecha o vim (atalho para :wq)
u # Desfazer
CTRL+R # Refazer
@@ -62,7 +62,7 @@ para agilizar a navegação para pontos específicos no arquivo, além de ediç
# Movendo por palavras
- w # Move o cursor uma palavra a diante
+ w # Move o cursor uma palavra adiante
b # Move o cursor uma palavra atrás
e # Move o cursor ao fim da palavra atual
diff --git a/pt-br/visualbasic-pt.html.markdown b/pt-br/visualbasic-pt.html.markdown
index b94ab609..2a7205cd 100644
--- a/pt-br/visualbasic-pt.html.markdown
+++ b/pt-br/visualbasic-pt.html.markdown
@@ -8,7 +8,7 @@ lang: pt-br
filename: learnvisualbasic-pt.vb
---
-```vb
+```
Module Module1
module Module1
diff --git a/pt-br/whip-pt.html.markdown b/pt-br/whip-pt.html.markdown
index 989bae05..7bdeec25 100644
--- a/pt-br/whip-pt.html.markdown
+++ b/pt-br/whip-pt.html.markdown
@@ -15,13 +15,13 @@ Whip é um dialeto de Lisp feito para construir scripts e trabalhar com
conceitos mais simples.
Ele também copia muitas funções e sintaxe de Haskell (uma linguagem não correlata)
-Esse documento foi escrito pelo próprio autor da linguagem. Então é isso.
+Esse documento foi escrito pelo próprio autor da linguagem. Então é isso.
```scheme
; Comentário são como em Lisp. Pontos-e-vírgulas...
; A maioria das declarações de primeiro nível estão dentro de "listas"
-; que nada mais são que coisas entre parêntesis separadas por espaços em branco
+; que nada mais são que coisas entre parênteses separadas por espaços em branco
nao_é_uma_lista
(uma lista)
@@ -64,7 +64,7 @@ false
(not false) ; => true
; Mas a maioria das funções não-haskell tem atalhos
-; o não atalho é um '!'.
+; o atalho para "não" é um '!'.
(! (! true)) ; => true
; Igualdade é `equal` ou `=`.
@@ -114,7 +114,7 @@ undefined ; usada para indicar que um valor não foi informado
(1 2 3) ; => [1, 2, 3] (sintaxe JavaScript)
; Dicionários em Whip são o equivalente a 'object' em JavaScript ou
-; 'dict' em python ou 'hash' em Ruby: eles s]ão uma coleção desordenada
+; 'dict' em python ou 'hash' em Ruby: eles são uma coleção desordenada
de pares chave-valor.
{"key1" "value1" "key2" 2 3 3}
@@ -222,7 +222,7 @@ linguagens imperativas.
(take 1 (1 2 3 4)) ; (1 2)
; Contrário de `take`
(drop 1 (1 2 3 4)) ; (3 4)
-; Menos valor em uma lista
+; Menor valor em uma lista
(min (1 2 3 4)) ; 1
; Maior valor em uma lista
(max (1 2 3 4)) ; 4
diff --git a/pt-br/xml-pt.html.markdown b/pt-br/xml-pt.html.markdown
index f347f8ef..6710b387 100644
--- a/pt-br/xml-pt.html.markdown
+++ b/pt-br/xml-pt.html.markdown
@@ -10,8 +10,7 @@ lang: pt-br
XML é uma linguagem de marcação projetada para armazenar e transportar dados.
-Ao contrário de HTML, XML não especifica como exibir ou formatar os dados,
-basta carregá-lo.
+Ao contrário de HTML, XML não especifica como exibir ou formatar os dados, apenas o transporta.
* Sintaxe XML
diff --git a/pt-br/yaml-pt.html.markdown b/pt-br/yaml-pt.html.markdown
index 341ae675..0b71877e 100644
--- a/pt-br/yaml-pt.html.markdown
+++ b/pt-br/yaml-pt.html.markdown
@@ -11,9 +11,7 @@ lang: pt-br
YAML é uma linguagem de serialização de dados projetado para ser diretamente gravável e
legível por seres humanos.
-É um estrito subconjunto de JSON, com a adição de sintaticamente
-novas linhas e recuo significativos, como Python. Ao contrário de Python, no entanto,
-YAML não permite caracteres de tabulação literais em tudo.
+É um superconjunto de JSON, com a adição de indentação e quebras de linhas sintaticamente significativas, como Python. Ao contrário de Python, entretanto, YAML não permite o caracter literal tab para identação.
```yaml
# Commentários em YAML são como este.