22 |
28 |
29 |
--------------------------------------------------------------------------------
/modulo_a/6_tratamento_de_dados/divertimento_04.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
13 |
14 |
15 |
16 |
22 |
23 |
--------------------------------------------------------------------------------
/modulo_a/README.md:
--------------------------------------------------------------------------------
1 | # Módulo A: Conhecendo o JavaScript (Aulas 1-4)
2 |
3 | # Aula 1: O que o JavaScript é capaz de fazer
4 |
5 | - Client x Server
6 | - Website é composto por basicamente 3 tecnologias:
7 | * Jornalista (**HTML**): escreve texto, usa imagens, cataloga vídeos e imagens etc.
8 | * Designer (**CSS**): pega as mídias e torna-se bonitas, organizando-as em formatos diferentes
9 | * Programador (**JavaScript**): trata da engenharia da entrega do jornal
10 | - O HTML organiza os textos, o conteúdo
11 | - O CSS pega o texto e o organiza para torná-lo mais agradável
12 | - O JS faz as interações, como uma legenda em uma imagem, amplia uma imagem ao passar o mouse em cima dela etc. Ele inclusive modifica elementos escritos em HTML e CSS
13 | - Quem utiliza o JS?
14 |
15 | * Google, YouTube, LinkedIn, Netflix etc.
16 |
17 |
18 |
19 | # Aula 2: como chegamos até aqui
20 |
21 | Uma (interessantíssima) aula com um breve histórico do JavaScript (doravante **JS**) — e da própria web em si.
22 |
23 | # Aula 3: Dando os primeiros passos
24 |
25 | ## Como aprender?
26 |
27 | * 💻 Assistindo aos vídeos das aulas
28 | * ⌨️ Escrevendo código
29 | * 📒 Lendo livros sobre JS e outros materiais de referência
30 | * Livro: [JavaScript: O Guia Definitivo (David Flanagan)](https://www.amazon.com.br/JavaScript-Guia-Definitivo-David-Flanagan/dp/856583719X)
31 | * Livro: [JavaScript: Guia do Programador (Maurício Samy Silva)](https://novatec.com.br/livros/javascript-guia-programador/)
32 | * Livro: [JavaScript Eloquente - 2ª edição (Marijn Haverbeke)](https://github.com/braziljs/eloquente-javascript)
33 | * Guia de referência: [Referência JavaScript (Mozilla)](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference)
34 | * Guia de referência: [ECMAScript® Language Specification](https://www.ecma-international.org/ecma-262/9.0/index.html#Title)
35 | * 📘 Fazendo anotações (como esta) das aulas
36 | * 👨👩👧👦 Interagindo com outras pessoas
37 | * Estudar em conjunto
38 | * Tirar dúvidas com outras pessoas
39 | * 🖥 Desenvolver projetos próprios
40 | * Aplicar a ferramenta de programação para solucionar problemas reais do dia a dia
41 |
42 | ## Dúvidas comuns de quem está começando a programar
43 |
44 | ### 👨🏿Será que eu sou velho demais ou novo demais para começar a aprender a programar?
45 |
46 | Não existe idade mínima e máxima para aprender. Cada um aprende no seu ritmo. Além disso, não ouça pessoas que tentarem te convencer de que você está velho demais ou novo demais.
47 |
48 | ### 👩🏾💻 Programação não é 'coisa de homem'?
49 |
50 | * Bom, pra começar a primeira linguagem de programação foi desenvolvida por uma matemática chamada [Ada Lovelace](https://pt.wikipedia.org/wiki/Ada_Lovelace). Historicamente, os primeiros profissionais da computação foram, na verdade, mulheres (Fonte: [Wikipedia](https://en.wikipedia.org/wiki/Women_in_computing)). Todos podem aprender a programar, independentemente de fatores como sexo, gênero, orientação sexual ou etnia.
51 |
52 | ### 🏡 Eu preciso morar em uma cidade grande?
53 |
54 | Com a internet, o fator lugar deixa de ser tão relevante, pois todos em teoria têm acesso aos conteúdos "*core*", necessários ao aprendizado, disponibilizados online.
55 |
56 | ### 🤓 Eu preciso ser 'nerd' para gostar de programar?
57 |
58 | Não. Você só precisa querer aprender a programar. Ninguém é *especial* só porque sabe programar.
59 |
60 | ### 🇺🇸 É obrigatório ser bom em matemática e/ou ser bom em inglês para aprender a programar?
61 |
62 | Há hoje ótimos materiais em português para quem está começando. E não é necessário ter aptidão para matemática para aprender, basta **querer** aprender.
63 |
64 | ### ♟ Aprender lógica de programação é perda de tempo?
65 |
66 | Assim como, no filme Karate Kid, o personagem principal é colocado para aprender a pintar cerca para poder aprender Karatê, na programação, quando você aprende lógica, você aprende a moldar o seu *mindset*, o que tornará o seu processo de aprendizado mais assertivo.
67 |
68 | ### 💵 Todo programador ganha muito dinheiro?
69 |
70 | Programadores iniciantes não vão ganhar muito dinheiro, nem o melhor emprego. Quando você tiver experiência, o seu salário não será mais seu objetivo, ele será sua consequência.
71 |
72 | ### 🏆 Qual a melhor linguagem de programação que existe?
73 |
74 | A resposta é: nenhuma. Linguagens de programação cumprem propósitos específicos. Não seja o tipo de pessoa que defende uma linguagem em detrimento das demais.
75 |
76 | ### 📒 É mais fácil aprender JS através de frameworks?
77 |
78 | Não. O ECMAScript/JavaScript é o ponto de partida de todo mundo que está querendo programar. Não tente começar a partir da complexidade.
79 |
80 | Literalmente **todo mundo** que você conhece um dia começou com um "*Hello, world!*".
81 |
82 | ## Requerimentos de Software
83 |
84 | * Um computador
85 | * Um browser (Google Chrome, Firefox, Safari etc.)
86 | * Um editor de código (Visual Studio Code, Sublime Texto, Atom etc.)
87 | * Node.js (*sem etc.*)
88 |
89 | # Aula 4: Criando seu primeiro script
90 |
91 | Aprendemos onde a tag fica no HTML e onde o fica. Aprendemos também a usar o `window.alert()`, o `window.confirm()` e o `window.prompt()`.
--------------------------------------------------------------------------------
/modulo_b/README.md:
--------------------------------------------------------------------------------
1 | # Módulo B (aulas 5 - 8)
2 |
3 | # Aula 5: Variáveis e tipos primitivos
4 |
5 | ## Adicionando comentários em JS:
6 |
7 | Para comentar uma linha, utilize barras duplas:
8 |
9 | ````javascript
10 | var testVar = "Variável de teste." // isto é um comentário em JS.
11 | ````
12 |
13 | Para comentar duas ou mais linhas, utilize **barra + asterisco** para abrir e **asterisco + barra** para fechar:
14 |
15 | ````javascript
16 | /* Isto é um comentário em uma linha.
17 |
18 | JAVASCRIPTO EH TOPSTER <3
19 |
20 | E isto é a linha final de um comentário. */
21 |
22 | var testVar = "Isto é um código fora da área de comentários.";
23 | ````
24 |
25 | ## Variáveis
26 |
27 | * Um único sinal de igual (=) nunca é chamado de 'igual', sempre de '**recebe**'.
28 | * Se vocie atribui `Null` a uma variável, tudo dentro dela é destruído.
29 |
30 | **Curiosidade**: No JavaScript moderno, além de utilizar a palavra **var**, também podemos usar a palavra **let** para definir variáveis.
31 |
32 | ````javascript
33 | var n1 = 5
34 | var n2 = 8.5
35 | var n3 = 15
36 |
37 | var s1 = "JavaScript"
38 | var s2 = `Curso em vídeo`
39 | var s3 = 'Guanabara'
40 | ````
41 |
42 | ### Identificadores
43 |
44 | As variáveis se chamam identificadores, e eles possuem regras de formação.
45 |
46 | * Variáveis podem começar com **letra**, **$** (cifrão) ou **_** (*underscore*).
47 | * Não podem começar com **números**
48 | * É possível usar **letras** ou **números**
49 | * É possível utilizar **acentos** e **símbolos**
50 | * Não podem conter **espaços**
51 | * Não podem ser **palavras reservadas** (uma variável chamada `var`, por exemplo.)
52 |
53 | ### Node.js
54 |
55 | #### Shell do Node.js no terminal:
56 |
57 | 
58 |
59 | #### Shell do Node.js no terminal do VSCode:
60 |
61 | 
62 |
63 | ### Dicas na hora de nomear identificadores
64 |
65 | * **Maiúsculas** e **minúsculas** fazem diferença
66 | * Tente escolher **nomes coerentes** para as variáveis
67 | * Evite se tornar um **programador alfabeto** ou um **programador contador**
68 | * O programador alfabeto é aquele que nomeia todas as variáveis como `a`, `b`, `c`, `d`, `e`, `f`, `g`, `h` ou `x`, `y`, `z`
69 | * O programador contador é aquele que nomeia todas as variáveis como `n1`, `n2`, `n3`, `n4`, `n5`
70 |
71 | ## Tipos primitivos
72 |
73 | O JS trata diferentemente tipos diferentes de dados. Há três deles que são especiais e conhecidos como *tipos primitivos primordiais*, — `number`, `string` e `boolean` —, pois deles são derivados outros tipos. Em JS, há uma série de outros tipos primitivos e alguns subtipos, derivados dos tipos primitivos.
74 |
75 | * Dentro de **number**, temos os subtipos:
76 | * Infinity
77 | * NaN (Not a Number)
78 | * **null**
79 | * **undefined**
80 | * O **object** também possui vários subtipos, dentre eles:
81 | * Array
82 | * **function**
83 |
84 | Usando o operador `tipeof` e passando para ele qualquer tipo, você pede para a linguagem checar para você com qual tipo ela está lidando:
85 |
86 | ````javascript
87 | > var n = 200 // atribuindo à variável n o número 200
88 | undefined
89 | > n // chamando a variável n
90 | 200
91 | > typeof n // pedindo o tipo de n
92 | 'number'
93 | > n = "DuckDuckGo" // atribuindo agora uma string à variável
94 | 'DuckDuckGo'
95 | > typeof n // checando se o tipo foi alterado
96 | 'string'
97 | > typeof 6
98 | 'number'
99 | > typeof 6.5
100 | 'number'
101 | > typeof "6.5"
102 | 'string'
103 | > typeof []
104 | 'object'
105 | > typeof {}
106 | 'object'
107 | > typeof function(){}
108 | 'function'
109 | > typeof undefined
110 | 'undefined'
111 | > typeof NaN
112 | 'number'
113 | > typeof Infinity
114 | 'number'
115 | > typeof null
116 | 'object'
117 |
118 | ````
119 |
120 | Um detalhe interessante é que o JS considera `null` um objeto.
121 |
122 | # Aula 6: Tratamento de dados
123 |
124 | * Esta aula fala principalmente sobre os tipos **number** e **string**.
125 |
126 | * Para printar no `alert()` uma variável juntamente com uma string, basta concatená-las usando o operador `+`:
127 | ```javascript
128 | var nome = window.prompt("Qual é o seu nome?")
129 | ```
130 | Ou -- como eu gosto de fazer -- você pode usar um recurso chamado *string interpolation* (Interpolação de string):
131 | ```javascript
132 | window.alert("É um grande prazer te conhecer, " + nome)
133 | window.alert(`É um grande prazer te conhecer, ${nome}.`)
134 | ```
135 |
136 | ## Conversão de string para Number
137 |
138 | Como o operador `+` serve tanto para soma quanto para concatenação, você precisa dizer ao JS qual tipo de ação você está requerindo desse operador, visto que, por exemplo, o `window.prompt` automaticamente converte o que recebe para **string**. Há várias maneiras, no JS, de se fazer a conversão de **string** para **number**:
139 |
140 | * `Number.parseInt(n)`: converte um número para um número **inteiro**
141 | * `Number.parseFloat(n)`: converte um número para um **float**/**real**
142 | * `Number()`: modo mais moderno de conversão, tanto para **inteiro** quanto para **float**
143 |
144 | ## Conversão para String
145 |
146 | * `String(n)`
147 | * `n.toString()`
148 |
149 | ## Outros métodos de String
150 |
151 | * `s.length`
152 | * `s.toUpperCase()`
153 | * `s.toLowerCase()`
154 |
155 | ## Outros métodos de Number
156 |
157 | * `n1.toFixed(n)`
158 | * Substituir ponto por vírgula em números decimais: `n1.toFixed(2).replace('.', ',')`
159 |
160 | * `n1.toLocaleString('pt-BR', {style: 'currency', currency: 'BRL'})`:
161 | * --> R$ 1,545.50
162 |
163 | # Aula 7: Operadores (Parte 1/2)
164 |
165 | Os operadores que veremos no curso serão os operadores: **aritméticos**, de **atribuição**, **relacionais**, **lógicos ** e **ternário**.
166 |
167 | * Nesta aula, focaremos nos operadores **aritméticos** e nos operadores de **atribuição**.
168 |
169 | ## Operadores Aritméticos:
170 |
171 | * `+`: soma/concatenação
172 | * `-`: subtração
173 | * `*`: multiplicação
174 | * `/`: divisão real
175 | * `%`: módulo/resto
176 | * `**`: potenciação
177 |
178 | ## Operadores de atribuição
179 |
180 | * `var a = (5 + 3)`
181 |
182 | #### LEMBRETE: um cuidado com o qual sempre devemos tomar é com a precedência dos operadores ([PEMDAS](https://pt.khanacademy.org/math/pre-algebra/pre-algebra-arith-prop/pre-algebra-order-of-operations/v/more-complicated-order-of-operations-example)):
183 |
184 | * Ordem de precedência na programação: Parênteses **>** Potência **>** Multiplicação, Divisão, Módulo **>** Adição, Subtração
185 |
186 | ## Há também as **autoatribuições**:
187 |
188 | ```javascript
189 | var n = 3
190 | n = n + 4
191 | n = n - 5
192 | n = n * 4
193 | n = n / 2
194 | n = n ** 2
195 | n = n % 5
196 | ```
197 |
198 | ### Simplificando as autoatribuições em JavaScript:
199 |
200 | ```javascript
201 | var n = 3
202 | n += 4
203 | n -= 5
204 | n *= 4
205 | n /= 2
206 | n %= 5
207 | ```
208 |
209 | ### Simplificando ainda mais as autoatribuições em JavaScript usando incrementos e decrementos
210 |
211 | ```javascript
212 | var n = 3
213 | n++
214 | n--
215 |
216 | // ou
217 |
218 | ++n
219 | --n
220 | ```
221 |
222 | # Aula 8: Operadores (Parte 2/2)
223 |
224 | Nesta aula, falaremos sobre **operadores relacionais**, **operadores lógicos** e sobre o **operador ternário**.
225 |
226 | ## Operadores Relacionais
227 |
228 | * Os operadores relacionais são:
229 | * `>` (maior)
230 | * `<` (menor)
231 | * `>=` (maior ou igual)
232 | * `<=` (menor ou igual)
233 | * `==`(igual)
234 | * `!=` (diferente)
235 |
236 | Note que: o resultado de expressões que utilizam operadores relacionais será sempre booleano (*true* ou *false*):
237 |
238 | ```javascript
239 | 5 > 2
240 | true
241 |
242 | 7 < 4
243 | false
244 |
245 | 8 >= 8
246 | true
247 |
248 | 9 <= 7
249 | false
250 |
251 | 5 == 5
252 | true
253 |
254 | 4 != 4
255 | false
256 |
257 | ```
258 |
259 | ### Operadores de identidade
260 |
261 | Há também os operadores de identidade:
262 |
263 | ```javascript
264 | 5 == 5 // retorna true
265 | 5 == '5' // returna true
266 | ```
267 |
268 | O operador de igualdade do JavaScript **não testa tipos**, então **'5'** continua sendo **5**.
269 |
270 | O operador de identidade é o "**===**", também chamado de **operador de igualdade restrita**:
271 |
272 | ```javascript
273 | 5 === '5' // retorna false, pois 5 é do tipo number e '5' é do tipo string.
274 | ```
275 |
276 | ## Operadores Lógicos
277 |
278 | O JS possui 3 operadores lógicos:
279 |
280 | * A exclamação (`!`) significa **negação**;
281 | * Os dois &&s comerciais (`&&`) significam **conjunção** ou **e**;
282 | * Os dois pipes (`||`) significam **disjunção** ou **ou**.
283 |
284 | ### Negação (!)
285 |
286 | O operador de negação é **unário**, ou seja, ele só possui um único operando.
287 |
288 | ```javascript
289 | !true --> false
290 | !false -- true
291 | ```
292 |
293 | ### Conjunção (&&)
294 |
295 | O operador de conjunção é **binário**, isto é, ele aceita dois operadores lógicos, um de cada lado.
296 |
297 | ```javascript
298 | true && true --> true
299 | true && false --> false
300 | false && true --> false
301 | false && false --> false
302 | ```
303 |
304 | ### Disjunção (||)
305 |
306 | O operador de disjunção, assim como o de conjunção, também é **binário**.
307 |
308 | ```javascript
309 | true || true --> true
310 | true || false --> true
311 | false || true --> true
312 | false || false -- false
313 | ```
314 |
315 | Exemplos:
316 |
317 | ```javascript
318 | var a = 5
319 | var b = 8
320 | a > b && b % 2 == 0
321 | false
322 | ```
323 |
324 | O exemplo retorna *false* porque primeiro são feitos os **operadores aritméticos**, depois os **operadores relacionais** e depois os **operadores lógicos**:
325 |
326 | * `b % 2 == 0` é `true`
327 | * `a > b` é `false`
328 | * então `false && true` retorna `false`
329 |
330 | ```javascript
331 | var a = 5
332 | var b = 8
333 | a <= b || b / 2 == 2
334 | true
335 | ```
336 |
337 | * `b / 2 == 2` retorna `false`
338 | * `a <= b` retorna `true`
339 | * então `true` || `false` retorna `true`
340 |
341 | ```javascript
342 | idade >= 15 && idade <= 17 // idade está entre 15 e 17?
343 | estado == "RJ" || estado == "SP" // o estado é RJ ou SP?
344 | salario > 1500 && sexo != "M" // o salário é acima de R$ 1.500,00 e não é homem?
345 | ```
346 |
347 | **Importante**: se numa mesma expressão houver vários operadores lógicos, primeiro é computada a **negação**, depois a **conjunção** e depois a **disjunção**.
348 |
349 | ## Precedência de operadores
350 |
351 | 
352 |
353 | ## Operador Ternário
354 |
355 | Ele é composto por dois símbolos, o `?` e o `:`, que aparecem na mesma operação. O nome dele é **ternário** porque ele é composto por três argumentos:
356 |
357 | ```javascript
358 | media >= 7.0? "Aprovado" : "Reprovado"
359 | ```
360 |
361 | ```javascript
362 | var res = x % 2 == 0? 5: 9
363 | res
364 | 5
365 |
366 | // Eu achei isso MARAVILHOSO
367 | ```
368 |
369 | ```javascript
370 | var idade = 19
371 | var r = idade >= 18? "Maior": "Menor"
372 | r
373 | 'Maior'
374 |
375 | // ADOREI o operador ternário do JS!
376 | ```
--------------------------------------------------------------------------------
/modulo_c/10_eventos_DOM/divertimento_06.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Eventos DOM
8 |
19 |
20 |
21 |
21 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/modulo_c/README.md:
--------------------------------------------------------------------------------
1 | # Módulo C (aulas 9 - 10)
2 |
3 | # Aula 9: Introdução ao DOM
4 |
5 | DOM é um acrônimo para **Document Object Model**. É um conjunto de objetos que darão acesso aos componentes internos de um website.
6 |
7 | O DOM está estruturado em forma de árvore (tree structure) cujo ramo mais alto é o `window`:
8 |
9 | * `window`
10 | * `location`
11 | * `document`
12 | * `html`
13 | * `head`
14 | * `meta`
15 | * `title`
16 | * `body`
17 | * `h1`
18 | * `p`
19 | * `p`
20 | * `strong`
21 | * `div`
22 | * `history`
23 |
24 | ## Seleção de elementos
25 |
26 | Nesta aula, veremos 5 métodos de acesso a elementos:
27 |
28 | * por Marca (TagName)
29 |
30 | * `getElementsByTagName()`
31 |
32 | * por ID
33 |
34 | * `getElementById()`
35 |
36 | * por Nome
37 |
38 | * `getElementsByName()`
39 |
40 | * por Classe
41 |
42 | * `getElementsByClassName()`
43 |
44 | * por Seletor CSS
45 |
46 | * `querySelector()`
47 | * `querySelectorAll()`
48 |
49 |
50 |
51 | # Aula 10: Eventos DOM
52 |
53 | ## Exemplos de Eventos
54 |
55 | Há vários tipos de eventos de interação. Os mais comuns são os de mouse, tais como, por exemplo:
56 |
57 | * `mouseenter`: apontar o mouse dentro de um elemento
58 | * `mousemove`: mover o mouse dentro da área do elemento
59 | * `mousedown`: clicar e segurar o botão esquerdo do mouse no elemento
60 | * `mouseup`: soltar o botão esquerdo do mouse
61 | * `click`: clique normal dentro do elemento
62 | * `mouseout`: mover o mouse para fora do elemento
63 |
64 | ## Funções (ou funcionalidades)
65 |
66 | São um conjunto de códigos que só são executados quando um determinado evento ocorrer.
67 |
68 | Esses conjuntos são também chamados de blocos e são delimitados por chaves (`{}`).
69 |
70 | ```javascript
71 | function nomeDaAção(parâmetro) {
72 | // aqui fica o código da função.
73 | }
74 | ```
75 |
76 |
--------------------------------------------------------------------------------
/modulo_d/11_Condicoes_Parte_Um/divertimento_08.js:
--------------------------------------------------------------------------------
1 | var vel = 78.2
2 | console.log(`A velocidade do seu carro é ${vel}km/h!`)
3 |
4 | if (vel > 60) { // condição simples
5 | console.log(`ATENÇÃO: Você ultrapassou a velocidade permitida. MULTADO!`)
6 | }
7 | console.log(`Dirija sempre usando cinto de segurança.`)
--------------------------------------------------------------------------------
/modulo_d/11_Condicoes_Parte_Um/divertimento_09.js:
--------------------------------------------------------------------------------
1 | var pais = "Brasil"
2 |
3 | console.log(`Vivendo em ${pais}`)
4 |
5 | if (pais == "Brasil") {
6 | console.log("Você é brasileiro")
7 | } else {
8 | console.log("Você é estrangeiro")
9 | }
--------------------------------------------------------------------------------
/modulo_d/11_Condicoes_Parte_Um/divertimento_10.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
10 |