Skip to content

Character classes #143

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
f7e7f38
Removed files that aren't used anymore on english version
fsdude May 25, 2020
a906139
Translated english article to portuguese following the english version
fsdude May 25, 2020
60a9345
reuploaded the svg file quoted on article (other one was broken)
fsdude May 25, 2020
93a763d
Resolve conflicts.
odsantos Dec 24, 2020
41188c4
Merge branch 'fsdude-02-regexp-character-classes' into master
odsantos Dec 24, 2020
2f7d7ed
Merge branch '02-regexp-character-classes' of https://github.com/fsdu…
odsantos Dec 24, 2020
e9c30ce
Merge branch 'fsdude-02-regexp-character-classes' into master
odsantos Dec 24, 2020
0faf9be
Delete old directory.
odsantos Dec 24, 2020
df62d2c
Merge branch 'fsdude-02-regexp-character-classes' into master
odsantos Dec 24, 2020
df6476f
Remove unrelated files.
odsantos Dec 25, 2020
ccb5f22
Merge branch '02-regexp-character-classes' of https://github.com/fsdu…
odsantos Dec 25, 2020
1880a44
Delete solution.md
odsantos Dec 25, 2020
f49ea44
Update 9-regular-expressions/02-regexp-character-classes/article.md
odsantos Jul 14, 2021
599470e
Update 9-regular-expressions/02-regexp-character-classes/article.md
odsantos Jul 14, 2021
78b82e8
Update 9-regular-expressions/02-regexp-character-classes/article.md
odsantos Jul 14, 2021
68c6aea
Update 9-regular-expressions/02-regexp-character-classes/article.md
odsantos Jul 14, 2021
a2d8109
Update 9-regular-expressions/02-regexp-character-classes/article.md
odsantos Jul 14, 2021
7579737
Update 9-regular-expressions/02-regexp-character-classes/article.md
odsantos Jul 14, 2021
763e2d8
Update 9-regular-expressions/02-regexp-character-classes/article.md
odsantos Jul 14, 2021
40d4851
Update 9-regular-expressions/02-regexp-character-classes/article.md
odsantos Jul 14, 2021
280ecde
Update 9-regular-expressions/02-regexp-character-classes/article.md
odsantos Jul 14, 2021
291a582
File apparently not deleted and PR in conflict.
odsantos Dec 14, 2022
3926a3f
Delete solution.md
odsantos Jan 23, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Prev Previous commit
Next Next commit
Remove unrelated files.
  • Loading branch information
odsantos committed Dec 25, 2020
commit df6476feec0438f4a7400396c10a71e9715547a5
17 changes: 9 additions & 8 deletions 1-js/01-getting-started/1-intro/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ Os scripts são fornecidos e executados como texto puro. Eles não precisam de p

Neste aspecto, o JavaScript é muito diferente de outra linguagem chamada [Java](https://pt.wikipedia.org/wiki/Java_(linguagem_de_programação)).

```smart header="Por que <u>Java</u>Script?"
Quando foi criado, inicialmente o JavaScript tinha outro nome: "LiveScript". Mas Java era muito popular naquela época, então foi decidido que posicionar uma nova linguagem como um "irmão mais novo" de Java ajudaria.
```smart header="Por que é chamado <u>Java</u>Script?"
Quando o JavaScript foi criado, inicialmente tinha outro nome: "LiveScript". Mas Java era muito popular naquela época, então foi decidido que posicionar uma nova linguagem como um "irmão mais novo" de Java ajudaria.

Mas à medida que ele evoluiu, o JavaScript se tornou uma linguagem totalmente independente com sua própria especificação chamada [ECMAScript] (http://en.wikipedia.org/wiki/ECMAScript), e agora ele não tem nenhuma relação com Java.
```
Expand All @@ -26,7 +26,7 @@ Interpretadores diferentes têm "codinomes" diferentes. Por exemplo:

- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- no Chrome e no Opera.
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- no Firefox.
- ...Há outros codinomes como "Trident" e "Chakra" para diferentes versões do IE, "ChakraCore" para Microsoft Edge, "Nitro" e "SquirrelFish" para Safari, etc.
- ...Há outros codinomes como "Chakra" para o IE, "ChakraCore" para Microsoft Edge, "Nitro" e "SquirrelFish" para Safari, etc.

Os termos acima são bons para lembrar, pois são usados em artigos de desenvolvedores na internet. Vamos usá-los também. Por exemplo, se "um recurso X é suportado pelo V8", então ele provavelmente funciona no Chrome e no Opera.

Expand All @@ -38,7 +38,7 @@ Os interpretadores são complicados. Mas o básico é fácil.
2. Depois converte ("compila") o script para a linguagem da máquina.
3. E então o código da máquina é executado, bem rápido.

O interpretador aplica otimizações em cada etapa do processo. Ele ainda observa o script compilado enquanto ele roda, analisa os dados que passam por ele e aplica otimizações ao código da máquina com base nesse conhecimento. Quando isso é feito, os scripts são executados rapidamente.
O interpretador aplica otimizações em cada etapa do processo. Ele ainda observa o script compilado enquanto ele roda, analisa os dados que passam por ele e aplica otimizações ao código da máquina com base nesse conhecimento.
```

## O que o JavaScript no navegador pode fazer?
Expand Down Expand Up @@ -94,7 +94,6 @@ Isso é o que torna o JavaScript único. É por isso que é a ferramenta mais di

Ao passo que planeja aprender uma nova tecnologia, é benéfico verificar suas perspectivas. Então, vamos seguir para as tendências modernas que o afetam, incluindo novas linguagens e habilidades de navegador.


## Linguagens "sobre" JavaScript

A sintaxe do JavaScript não se adapta às necessidades de todos. Pessoas diferentes querem características diferentes.
Expand All @@ -108,10 +107,12 @@ Ferramentas modernas tornam a transpilação muito rápida e transparente, permi
Exemplos de tais linguagens:

- [CoffeeScript](http://coffeescript.org/) é um "açúcar sintático" para JavaScript. Ele introduz uma sintaxe mais curta, permitindo-nos escrever um código mais claro e preciso. Normalmente, Ruby devs gostam dele.
- [TypeScript](http://www.typescriptlang.org/) está concentrado em adicionar "dados estritos de digitação" para simplificar o desenvolvimento e suporte de sistemas complexos. É desenvolvido pela Microsoft.
- [Dart](https://www.dartlang.org/) é uma linguagem autônoma que tem seu próprio mecanismo que roda em ambientes sem navegador (como aplicativos móveis). Ela foi inicialmente oferecida pelo Google como um substituto para JavaScript, mas a partir de agora, os navegadores exigem que ela seja transpilada para JavaScript da mesma forma que as anteriores.
- [TypeScript](http://www.typescriptlang.org/) está concentrado em adicionar "estritos tipos de dados" para simplificar o desenvolvimento e suporte de sistemas complexos. É desenvolvido pela Microsoft.
- [Flow](http://flow.org/) também adiciona tipos de dados, mas de uma forma diferente. Desenvolvido pela Facebook.
- [Dart](https://www.dartlang.org/) é uma linguagem autônoma que tem seu próprio interpretador que roda em ambientes fora do navegador (como aplicativos móveis), mas também pode ser transpilada para JavaScript. Desenvolvido pela Google.
- [Brython](https://brython.info/) é um transpilador de Python para JavaScript que permite escrever aplicativos em puro Python, sem JavaScript.

Há mais. Claro que, mesmo que usemos uma dessas linguagens, também devemos saber JavaScript para entender o que estamos fazendo.
Há mais. Claro que, mesmo que usemos uma dessas linguagens transpiladas, também devemos saber JavaScript para entender o que estamos fazendo.

## Resumo

Expand Down
5 changes: 3 additions & 2 deletions 1-js/01-getting-started/2-manuals-specifications/article.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@

# Manuais e especificações

Este livro é um *tutorial*. Ele tem como objetivo lhe ajudar a aprender gradualmente a linguagem. Mas uma vez familiarizado com o básico, irá precisar de outros recursos.

## Especificação

A [Especificacão ECMA-262](https://www.ecma-international.org/publications/standards/Ecma-262.htm) contém as mais profundas, detalhadas e formalizadas informações sobre JavaScript. Ela define a linguagem.
A [Especificação ECMA-262](https://www.ecma-international.org/publications/standards/Ecma-262.htm) contém as mais profundas, detalhadas e formalizadas informações sobre JavaScript. Ela define a linguagem.

Mas, estando num formato mais formal, fica difícil de entender à primeira vista. Porém, se você precisa da mais confiável fonte de informações sobre detalhes da linguagem, está no lugar certo. Contudo, não é para o uso cotidiano.

Uma nova versão dessa especificação é lançada todos os anos. Entre estes lançamentos, a sua última versão de esboço se encontra em <https://tc39.es/ecma262/>.

Para ler sobre as mais novas funcionalidades (*bleeding-edge features*), incluindo as que estão em fase de padronização (chamadas também de "estágio 3"), veja as suas propostas em <https://github.com/tc39/proposals>.

E mais, se você está desenvolvendo para browsers, há outras especificações que cobrem esta demanda na [segunda parte](https://javascript.info/browser-environment) do tutorial.
E mais, se você está desenvolvendo para browsers, há outras especificações que cobrem esta demanda na [segunda parte](info:browser-environment) do tutorial.

## Manuais

Expand Down
23 changes: 6 additions & 17 deletions 1-js/01-getting-started/3-code-editors/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,8 @@ Uma IDE carrega o projeto (que pode ter muitos arquivos), permite navegação en

Se você ainda não tiver selecionado uma IDE, considere as seguintes opções:

- [WebStorm](http://www.jetbrains.com/webstorm/) para desenvolvimento de front-end. A mesma empresa oferece outros editores para outras linguagens (pago).
- [Netbeans](http://netbeans.org/) (livre).

Todas essas IDEs são multi-plataforma.
- [Visual Studio Code](https://code.visualstudio.com/) (plataforma cruzada, livre).
- [WebStorm](http://www.jetbrains.com/webstorm/) (plataforma cruzada, pago).

Para Windows, há também "Visual Studio", que não deve ser confundido com "Visual Studio Code". "Visual Studio" é um editor pago e poderoso somente para Windows, bem adequado para a plataforma .NET . Uma versão gratuita é chamada [Visual Studio Community](https://www.visualstudio.com/vs/community/).

Expand All @@ -33,25 +31,16 @@ Na prática, os editores leves podem ter muitos plug-ins, incluindo analisadores

As seguintes opções merecem sua atenção:

- [Visual Studio Code](https://code.visualstudio.com/) (plataforma cruzada, livre) também tem muitos recursos similares a IDE.
- [Atom](https://atom.io/) (multi-plataforma, livre).
- [Sublime Text](http://www.sublimetext.com) (multi-plataforma, shareware).
- [Atom](https://atom.io/) (plataforma cruzada, livre).
- [Visual Studio Code](https://code.visualstudio.com/) (plataforma cruzada, livre).
- [Sublime Text](http://www.sublimetext.com) (plataforma cruzada, shareware).
- [Notepad++](https://notepad-plus-plus.org/) (Windows, livre).
- [Vim](http://www.vim.org/) e [Emacs](https://www.gnu.org/software/emacs/) também são legais se você sabe como usá-los.

## Os meus favoritos

A preferência pessoal do autor deve ter uma IDE para projetos e um editor leve para edição de arquivo rápida e fácil.

Eu estou usando:

- Como uma IDE para JS -- [WebStorm](http://www.jetbrains.com/webstorm/) (Eu mudo para uma das outras ofertas do JetBrains quando uso outras linguagens)
- Como um editor de peso leve -- [Sublime Text](http://www.sublimetext.com) ou [Atom](https://atom.io/).

## Não vamos discutir

Os editores nas listas acima são aqueles que eu ou os meus amigos que eu considero bons desenvolvedores têm usado por um longo tempo e estão felizes com eles.

Há outros grandes editores no nosso grande mundo. Por favor, escolha o que você mais gosta.

A escolha de um editor, como qualquer outra ferramenta, é individual e depende de seus projetos, hábitos e preferências pessoais.
A escolha de um editor, como qualquer outra ferramenta, é individual e depende de seus projetos, hábitos e preferências pessoais.
20 changes: 10 additions & 10 deletions 1-js/01-getting-started/4-devtools/article.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Console do desenvolvedor

O código é propenso a erros. Você provavelmente cometerá erros ... Oh, do que estou falando? Você está * inevitavelmente * cometendo erros, pelo menos se você for um humano, não um [robô] (https://pt.wikipedia.org/wiki/Bender_Bending_Rodr%C3%ADguez).
O código é propenso a erros. Você provavelmente cometerá erros ... Oh, do que estou falando? Você está *inevitavelmente* cometendo erros, pelo menos se você for um humano, não um [robô] (<https://pt.wikipedia.org/wiki/Bender_Bending_Rodr%C3%ADguez).>

Mas no navegador, os usuários não vêem os erros por padrão. Assim, se algo correr mal no script, não veremos de onde está partindo e não poderemos corrigir.

Para que possamos visualizar erros e obter muitas outras informações úteis sobre scripts, as "ferramentas de desenvolvedor" foram incorporadas aos navegadores.

A maioria dos desenvolvedores escolhem o Chrome ou o Firefox para o desenvolvimento porque esses navegadores têm as melhores ferramentas de desenvolvedor. Outros navegadores também fornecem ferramentas de desenvolvedor, às vezes com recursos especiais, mas geralmente estão jogando "catch-up" no Chrome ou Firefox. Assim, a maioria dos desenvolvedores tem um navegador "favorito" e muda para outros se um problema é específico do navegador.

As ferramentas do desenvolvedor são potentes; elas têm muitos recursos. Para começar, vamos aprender como abri-las, olhar para erros e executar comandos JavaScript.
As ferramentas do desenvolvedor são potentes; elas têm muitos recursos. Para começar, vamos aprender como as abrir, olhar para erros e executar comandos JavaScript.

## Google Chrome

Expand All @@ -29,10 +29,16 @@ O aspecto exato das ferramentas de desenvolvimento depende da sua versão do Chr
- Aqui podemos ver a mensagem de erro de cor vermelha. Neste caso, o script contém um comando "lalala" desconhecido.
- À direita, há um link clicável para o código-fonte `bug.html:12` com o número da linha onde o erro ocorreu.

Abaixo da mensagem de erro, há um símbolo azul `>`. Ele marca uma "linha de comando" onde podemos digitar comandos JavaScript. Pressione `key:Enter` para executá-los (`key:Shift+Enter` para introduzir comandos multi-linha).
Abaixo da mensagem de erro, há um símbolo azul `>`. Ele marca uma "linha de comando" onde podemos digitar comandos JavaScript. Pressione `key:Enter` para executá-los.

Agora podemos ver erros, e isso é suficiente para começar. Voltaremos mais tarde às ferramentas de desenvolvedor e abordaremos a depuração mais profundamente no capítulo <info:debugging-chrome>.

```smart header="Multi-line input"
Usually, when we put a line of code into the console, and then press `key:Enter`, it executes.

To insert multiple lines, press `key:Shift+Enter`. This way one can enter long fragments of JavaScript code.
```

## Firefox, Edge, e outros

A maioria dos outros navegadores usam `key:F12` para abrir ferramentas de desenvolvimento.
Expand All @@ -49,15 +55,9 @@ Abra Preferências e vá para o painel "Avançado". Há uma caixa de seleção n

Agora o `key:Cmd+Opt+C` pode alternar o console. Além disso, note que o novo item do menu superior chamado "Develop" apareceu. Ele tem muitos comandos e opções.

## Entrada multi-linha

Normalmente, quando colocamos uma linha de código no console, e então pressionamos `key:Enter`, ele executa.

Para inserir várias linhas, pressione `key:Shift+Enter`.

## Resumo

- As ferramentas de desenvolvedor nos permitem ver erros, executar comandos, examinar variáveis e muito mais.
- Elas podem ser abertas com `key:F12` para a maioria dos navegadores no Windows. O Chrome para Mac precisa de `key:Cmd+Opt+J`, Safari: `key:Cmd+Opt+C` (precisa ser ativado primeiro).

Agora temos o ambiente pronto. Na próxima seção, chegaremos ao JavaScript.
Agora temos o ambiente pronto. Na próxima seção, chegaremos ao JavaScript.
12 changes: 12 additions & 0 deletions 1-js/02-first-steps/01-hello-world/1-hello-alert/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>

<body>

<script>
alert( "I'm JavaScript!" );
</script>

</body>

</html>
2 changes: 2 additions & 0 deletions 1-js/02-first-steps/01-hello-world/1-hello-alert/solution.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@

[html src="index.html"]
2 changes: 1 addition & 1 deletion 1-js/02-first-steps/01-hello-world/1-hello-alert/task.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
importância: 5
importance: 5

---

Expand Down
12 changes: 5 additions & 7 deletions 1-js/02-first-steps/01-hello-world/article.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Olá, mundo!

O tutorial que você está lendo é sobre a core do JavaScript, que é independente de plataforma. Mais tarde, você vai aprender sobre Node.js e outras plataformas que o usam.
Esta parte do tutorial é sobre a core do JavaScript, a própria linguagem.

Mas precisamos de um ambiente de trabalho para rodar nossos scripts e, como esse livro está online, o navegador é uma boa escolha. Vamos manter a quantidade de comandos específicos do navegador (como `alert`) no mínimo para que você não gaste tempo com eles se você planeja se concentrar em outro ambiente (como Node.js). Vamos focar em JavaScript no navegador na [próxima parte](/ui) do tutorial.

Expand All @@ -9,7 +9,7 @@ Então, primeiro, vamos ver como anexar um script a uma página. Para ambientes

## A tag "script"

Os programas JavaScript podem ser inseridos em qualquer parte de um documento HTML com a ajuda da tag `<script>`.
Os programas JavaScript podem ser inseridos em quase qualquer parte de um documento HTML com a ajuda da tag `<script>`.

Por exemplo:

Expand Down Expand Up @@ -49,7 +49,7 @@ O atributo `type`: <code>&lt;script <u>type</u>=...&gt;</code>
: O antigo padrão HTML, HTML4, requeria um script para ter um `type`. Normalmente era `type="text/javascript"`. Não é mais necessário. Além disso, o moderno padrão HTML, HTML5, mudou totalmente o significado deste atributo. Agora, ele pode ser usado para módulos JavaScript. Mas esse é um tópico avançado; vamos falar sobre módulos em outra parte do tutorial.

O atributo `language`: <code>&lt;script <u>language</u>=...&gt;</code>
: Este atributo foi criado para mostrar o idioma do script. Este atributo não faz mais sentido porque JavaScript é a linguagem padrão. Não há necessidade de usá-lo.
: Este atributo foi criado para mostrar o idioma do script. Este atributo não faz mais sentido porque JavaScript é a linguagem padrão. Não há necessidade de o usar.

Comentários antes e depois dos scripts.
: Em livros e guias realmente antigos, você pode encontrar comentários dentro de tags `<script>`, assim:
Expand All @@ -73,14 +73,12 @@ Os arquivos de script são anexados ao HTML com o atributo `src`:
<script src="/path/to/script.js"></script>
```

Aqui, `/path/to/script.js` é um caminho absoluto para o arquivo script (da raiz do site).

Você também pode fornecer um caminho relativo a partir da página atual. Por exemplo, `src="script.js"` significaria um arquivo `"script.js"` na pasta atual.
Aqui, `/path/to/script.js` é um caminho absoluto para o arquivo script (da raiz do site). Você também pode fornecer um caminho relativo a partir da página atual. Por exemplo, `src="script.js"` significaria um arquivo `"script.js"` na pasta atual.

Nós também podemos dar uma URL completa. Por exemplo:

```html
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
```

Para anexar vários scripts, use múltiplas tags:
Expand Down
9 changes: 5 additions & 4 deletions 1-js/02-first-steps/02-structure/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,10 @@ alert('Mundo')

Aqui, o JavaScript interpreta a quebra de linha como um ponto-e-vírgula "implícito". Isso é chamado de [inserção automática de ponto-e-vírgula](https://tc39.github.io/ecma262/#sec-automatic-semicolon-insertion).

**Na maioria dos casos, uma nova linha implica um ponto e vírgula. Mas "na maioria dos casos" não significa "sempre"!
**Na maioria dos casos, uma nova linha implica um ponto e vírgula. Mas "na maioria dos casos" não significa "sempre"!**

Há casos em que uma nova linha não significa ponto e vírgula. Por exemplo:

```js run no-beautify
alert(3 +
1
Expand Down Expand Up @@ -93,7 +94,7 @@ Mas devem ser duas declarações separadas, não uma. Tal fusão neste caso é c

Recomendamos colocar ponto e vírgula entre as frases, mesmo que estejam separadas por novas linhas. Esta regra é amplamente adotada pela comunidade. Vamos notar mais uma vez -- *é possível* deixar de fora os pontos e vírgulas na maior parte do tempo. Mas é mais seguro -- especialmente para um iniciante -- usá-los.

## Comentários
## Comentários [#code-comments]

Com o passar do tempo, os programas tornam-se cada vez mais complexos. Torna-se necessário adicionar *comentários* que descrevem o que o código faz e porquê.

Expand Down Expand Up @@ -135,11 +136,11 @@ alert('Mundo');
```

```smart header="Use hotkeys!"
Na maioria dos editores, uma linha de código pode ser comentada pressionando a tecla de atalho `key:Ctrl+/` para um comentário de linha única e algo como `key:Ctrl+Shift+/` -- para comentários multilinha (selecione um pedaço de código e pressione a tecla de atalho). Para Mac, tente `key:Cmd` em vez de `key:Ctrl`.
Na maioria dos editores, uma linha de código pode ser comentada pressionando a tecla de atalho `key:Ctrl+/` para um comentário de linha única e algo como `key:Ctrl+Shift+/` -- para comentários multilinha (selecione um pedaço de código e pressione a tecla de atalho). Para Mac, tente `key:Cmd` em vez de `key:Ctrl` e `key:Option` em vez de `key:Shift`.
```

````warn header="Comentários aninhados não são suportados!"
Pode não haver `/*...*/` dentro de outro `/*...*/`.
Não pode haver `/*...*/` dentro de outro `/*...*/`.

Tal código morrerá com um erro:

Expand Down
Loading