├── calculadora_simples ├── index.html ├── scripts.js └── styles.css ├── quiz ├── index.html ├── scripts.js └── styles.css └── teoria ├── avancando.js ├── avancando_exercicios.js ├── dom.js ├── fundamentos.js ├── fundamentos_exercicios.js ├── index.html ├── javascript_moderno.js └── styles.css /calculadora_simples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Calculadora simples 7 | 8 | 9 | 10 | 11 |
12 |
13 | 14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 |
34 | 35 | 36 | -------------------------------------------------------------------------------- /calculadora_simples/scripts.js: -------------------------------------------------------------------------------- 1 | // 2 | // D: Curso de Projetos 3 | // 4 | 5 | // Seleção dos elementos 6 | const display = document.querySelector("#displayInput"); 7 | const botaoIgual = document.querySelector(".igual"); 8 | const botaoPonto = document.querySelector(".ponto"); 9 | const botoesNumeros = document.querySelectorAll(".num"); 10 | const botoesOperadores = document.querySelectorAll(".operador"); 11 | 12 | // Variáveis globais 13 | let operacaoAtual = ""; 14 | let operador = null; 15 | let valorAnterior = ""; 16 | let calculando = false; 17 | 18 | // Funções 19 | const atualizaDisplay = () => { 20 | display.value = operacaoAtual; 21 | }; 22 | 23 | const insereNumero = (evento) => { 24 | if (calculando) { 25 | operacaoAtual = evento.target.textContent; 26 | calculando = false; 27 | } else { 28 | operacaoAtual += evento.target.textContent; 29 | } 30 | atualizaDisplay(); 31 | }; 32 | 33 | const insereOperador = (evento) => { 34 | if (operacaoAtual !== "") { 35 | if (!calculando) { 36 | if (operador !== null) calcula(); 37 | valorAnterior = operacaoAtual; 38 | operacaoAtual = ""; 39 | } 40 | operador = evento.target.textContent; 41 | } 42 | }; 43 | 44 | const calcula = () => { 45 | let resultado = null; 46 | const operandoAnterior = parseFloat(valorAnterior); 47 | const operandoAtual = parseFloat(operacaoAtual); 48 | 49 | switch (operador) { 50 | case "+": 51 | resultado = operandoAnterior + operandoAtual; 52 | break; 53 | case "-": 54 | resultado = operandoAnterior - operandoAtual; 55 | break; 56 | case "*": 57 | resultado = operandoAnterior * operandoAtual; 58 | break; 59 | case "/": 60 | if (operandoAtual !== 0) { 61 | resultado = operandoAnterior / operandoAtual; 62 | } else { 63 | alert("Erro: Divisão por zero não é permitida!"); 64 | return; 65 | } 66 | break; 67 | } 68 | operacaoAtual = String(resultado); 69 | valorAnterior = operacaoAtual; 70 | calculando = true; 71 | atualizaDisplay(); 72 | }; 73 | 74 | const inserePonto = () => { 75 | if (operacaoAtual.indexOf(".") === -1) { 76 | operacaoAtual += "."; 77 | atualizaDisplay(); 78 | } 79 | }; 80 | 81 | // EventListeners 82 | botaoIgual.addEventListener("click", () => { 83 | if (operador !== null && operacaoAtual !== "" && !calculando) { 84 | calcula(); 85 | operador = null; 86 | } 87 | }); 88 | botaoPonto.addEventListener("click", inserePonto); 89 | botoesNumeros.forEach((botao) => botao.addEventListener("click", insereNumero)); 90 | botoesOperadores.forEach((botao) => 91 | botao.addEventListener("click", insereOperador) 92 | ); 93 | 94 | // 95 | // D: Formação Front-end 96 | // 97 | -------------------------------------------------------------------------------- /calculadora_simples/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | height: 100vh; 6 | background-color: #f5f5f5; 7 | margin: 0; 8 | font-family: Arial, sans-serif; 9 | } 10 | 11 | #calculadora { 12 | width: 200px; 13 | background-color: #fff; 14 | box-shadow: 0px 0px 5px 2px rgba(0, 0, 0, 0.1); 15 | } 16 | 17 | #display { 18 | width: 100%; 19 | height: 50px; 20 | border-bottom: 1px solid #ccc; 21 | display: flex; 22 | justify-content: flex-end; 23 | align-items: center; 24 | padding: 0 10px; 25 | box-sizing: border-box; 26 | } 27 | 28 | #displayInput { 29 | text-align: right; 30 | width: 100%; 31 | border: none; 32 | } 33 | 34 | #teclado { 35 | display: grid; 36 | grid-template-columns: repeat(4, 1fr); 37 | } 38 | 39 | button { 40 | height: 60px; 41 | border: none; 42 | font-size: 2em; 43 | transition: background-color 0.3s ease; 44 | cursor: pointer; 45 | } 46 | 47 | button:hover { 48 | background-color: #ccc6c6; 49 | } 50 | 51 | button:active { 52 | background-color: #eee; 53 | } 54 | 55 | button.num, 56 | button.ponto, 57 | button.igual { 58 | color: #333; 59 | } 60 | 61 | button.operador { 62 | color: #f7931b; 63 | } 64 | -------------------------------------------------------------------------------- /quiz/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Quiz 7 | 8 | 9 | 10 | 11 |
12 |

Quiz Interativo

13 |

Pontuação: 0

14 |

Erros: 0

15 |

16 |
17 | 18 | 19 | 20 | 21 |
22 | 23 |
24 | 25 | 26 | -------------------------------------------------------------------------------- /quiz/scripts.js: -------------------------------------------------------------------------------- 1 | const questions = [ 2 | { 3 | question: "Qual é a capital do Brasil?", 4 | choices: ["Brasília", "Rio de Janeiro", "São Paulo", "Salvador"], 5 | answer: "Brasília", 6 | }, 7 | { 8 | question: "Qual é a capital da Argentina?", 9 | choices: ["Buenos Aires", "Brasília", "Lisboa", "Paris"], 10 | answer: "Buenos Aires", 11 | }, 12 | { 13 | question: "Qual é a capital da França?", 14 | choices: ["Roma", "Madri", "Paris", "Londres"], 15 | answer: "Paris", 16 | }, 17 | { 18 | question: "Qual é a capital da Espanha?", 19 | choices: ["Lisboa", "Madri", "Barcelona", "Valência"], 20 | answer: "Madri", 21 | }, 22 | { 23 | question: "Qual é a capital da Itália?", 24 | choices: ["Veneza", "Milão", "Roma", "Nápoles"], 25 | answer: "Roma", 26 | }, 27 | { 28 | question: "Qual é a capital do Canadá?", 29 | choices: ["Toronto", "Vancouver", "Ottawa", "Montreal"], 30 | answer: "Ottawa", 31 | }, 32 | { 33 | question: "Qual é a capital dos Estados Unidos?", 34 | choices: ["Nova York", "Los Angeles", "Chicago", "Washington D.C."], 35 | answer: "Washington D.C.", 36 | }, 37 | { 38 | question: "Qual é a capital do Reino Unido?", 39 | choices: ["Liverpool", "Manchester", "Edimburgo", "Londres"], 40 | answer: "Londres", 41 | }, 42 | ]; 43 | 44 | const questionElement = document.getElementById("question"); 45 | const choiceElements = Array.from(document.getElementsByClassName("choice")); 46 | const nextButton = document.getElementById("next"); 47 | const scoreElement = document.getElementById("score"); 48 | const wrongElement = document.getElementById("wrong"); 49 | 50 | let currentQuestion = 0; 51 | let score = 0; 52 | let wrong = 0; 53 | let answerChosen = false; 54 | 55 | function loadQuestion() { 56 | const currentQuestionData = questions[currentQuestion]; 57 | questionElement.innerText = currentQuestionData.question; 58 | 59 | const choices = shuffleArray(currentQuestionData.choices); 60 | for (let i = 0; i < choiceElements.length; i++) { 61 | choiceElements[i].innerText = choices[i]; 62 | } 63 | answerChosen = false; // reset flag when loading new question 64 | } 65 | 66 | function checkAnswer(e) { 67 | if (answerChosen) return; // prevent multiple answers 68 | answerChosen = true; 69 | 70 | if (e.target.innerText === questions[currentQuestion].answer) { 71 | score++; 72 | scoreElement.innerText = "Pontuação: " + score; 73 | alert("Correto!"); 74 | } else { 75 | wrong++; 76 | wrongElement.innerText = "Erros: " + wrong; 77 | alert( 78 | "Errado! A resposta correta é " + questions[currentQuestion].answer + "." 79 | ); 80 | } 81 | } 82 | 83 | choiceElements.forEach((element) => { 84 | element.addEventListener("click", checkAnswer); 85 | }); 86 | 87 | function restartQuiz() { 88 | currentQuestion = 0; 89 | score = 0; 90 | wrong = 0; 91 | scoreElement.innerText = "Pontuação: 0"; 92 | wrongElement.innerText = "Erros: 0"; 93 | loadQuestion(); 94 | } 95 | 96 | nextButton.addEventListener("click", () => { 97 | if (!answerChosen) { 98 | alert("Por favor, escolha uma resposta antes de prosseguir."); 99 | return; 100 | } 101 | 102 | currentQuestion++; 103 | 104 | if (currentQuestion < questions.length) { 105 | loadQuestion(); 106 | } else { 107 | alert( 108 | "Fim do Quiz! Você acertou " + 109 | score + 110 | " de " + 111 | questions.length + 112 | " perguntas." 113 | ); 114 | restartQuiz(); 115 | } 116 | }); 117 | 118 | function shuffleArray(array) { 119 | let currentIndex = array.length, 120 | temporaryValue, 121 | randomIndex; 122 | 123 | while (0 !== currentIndex) { 124 | randomIndex = Math.floor(Math.random() * currentIndex); 125 | currentIndex -= 1; 126 | 127 | temporaryValue = array[currentIndex]; 128 | array[currentIndex] = array[randomIndex]; 129 | array[randomIndex] = temporaryValue; 130 | } 131 | 132 | return array; 133 | } 134 | 135 | loadQuestion(); 136 | -------------------------------------------------------------------------------- /quiz/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: Arial, sans-serif; 3 | margin: 0; 4 | padding: 0; 5 | display: flex; 6 | justify-content: center; 7 | align-items: center; 8 | height: 100vh; 9 | background-color: #f5f5f5; 10 | } 11 | 12 | .container { 13 | text-align: center; 14 | box-shadow: 0px 0px 5px 2px rgba(0, 0, 0, 0.1); 15 | padding: 20px; 16 | background-color: #fff; 17 | width: 500px; 18 | } 19 | 20 | .choice { 21 | margin: 10px; 22 | border: 1px solid #000; 23 | padding: 10px; 24 | cursor: pointer; 25 | } 26 | 27 | .choice:hover { 28 | background-color: #f0f0f0; 29 | } 30 | 31 | #next { 32 | margin-top: 20px; 33 | padding: 10px 20px; 34 | border: none; 35 | background-color: #007bff; 36 | color: white; 37 | cursor: pointer; 38 | } 39 | 40 | #score, 41 | #wrong { 42 | font-size: 1.2em; 43 | color: #007bff; 44 | margin-top: 20px; 45 | } 46 | -------------------------------------------------------------------------------- /teoria/avancando.js: -------------------------------------------------------------------------------- 1 | // 3 - Avançando em JavaScript 2 | 3 | // 3.1 Manipulação de arrays 4 | 5 | const frutas = ["Maçã", "Banana"]; 6 | frutas.unshift("Laranja"); // Adiciona "Laranja" ao começo do array 7 | console.log(frutas); 8 | 9 | frutas.shift(); // Remove o primeiro elemento do array 10 | console.log(frutas); 11 | 12 | const numeros = [1, 2, 3, 4, 5, 6]; 13 | const numeroPar = numeros.find((num) => num % 2 === 0); // Encontra o primeiro número par 14 | console.log(numeroPar); // 2 15 | 16 | const numerosPares = numeros.filter((num) => num % 2 === 0); // Filtra todos os números pares 17 | console.log(numerosPares); // [2, 4, 6] 18 | 19 | // 3.2 Manipulação de strings avançada 20 | const frase = " Olá, mundo! "; 21 | const palavras = frase.trim().split(" "); // Remove espaços extra e divide a string em palavras 22 | console.log(palavras); // ["Olá,", "mundo!"] 23 | 24 | const stringSemEspacos = frase.trim(); // Remove espaços no início e no final da string 25 | console.log(stringSemEspacos); // "Olá, mundo!" 26 | 27 | const frase2 = "JavaScript é incrível!"; 28 | 29 | console.log(frase2.startsWith("Java")); // true 30 | console.log(frase2.endsWith("!")); // true 31 | 32 | // 3.3 Exceções e tratamento de erros 33 | /* 34 | 35 | const idade = 15; 36 | if (idade < 18) { 37 | throw new Error("Você deve ter pelo menos 18 anos."); 38 | } 39 | 40 | try { 41 | const idade = 15; 42 | if (idade < 18) { 43 | throw new Error("Você deve ter pelo menos 18 anos."); 44 | } 45 | } catch (erro) { 46 | console.log(erro.message); // "Você deve ter pelo menos 18 anos." 47 | } 48 | */ 49 | 50 | // 3.4 Callbacks 51 | function cumprimentar(nome, callback) { 52 | console.log("Olá, " + nome); 53 | callback(); 54 | } 55 | 56 | function mostrarSaudacao() { 57 | console.log("Como você está?"); 58 | } 59 | 60 | cumprimentar("Maria", mostrarSaudacao); // "Olá, Maria" "Como você está?" 61 | 62 | function mostrarMensagem() { 63 | console.log("Esta é uma mensagem após 3 segundos"); 64 | } 65 | 66 | setTimeout(mostrarMensagem, 3000); // Mostra a mensagem após 3 segundos 67 | 68 | // 3.5 Promises 69 | const promessa = new Promise((resolve, reject) => { 70 | const condicao = true; 71 | if (condicao) { 72 | resolve("A condição é verdadeira!"); 73 | } else { 74 | reject("A condição é falsa!"); 75 | } 76 | }); 77 | 78 | promessa 79 | .then((mensagem) => console.log(mensagem)) // "A condição é verdadeira!" 80 | .catch((erro) => console.log(erro)); 81 | 82 | const promessa1 = Promise.resolve(3); 83 | const promessa2 = new Promise((resolve, reject) => 84 | setTimeout(resolve, 100, "foo") 85 | ); 86 | 87 | Promise.all([promessa1, promessa2]).then((valores) => console.log(valores)); // [3, "foo"] 88 | 89 | // 3.6 Async/Await 90 | async function obterValor() { 91 | const promessa = new Promise((resolve, reject) => { 92 | setTimeout(() => resolve("Valor obtido!"), 2000); 93 | }); 94 | 95 | const valor = await promessa; 96 | console.log(valor); // "Valor obtido!" 97 | } 98 | 99 | obterValor(); 100 | 101 | /* 102 | 103 | async function obterValorComErro() { 104 | try { 105 | const promessa = new Promise((resolve, reject) => { 106 | setTimeout(() => reject("Erro ao obter valor!"), 2000); 107 | }); 108 | 109 | const valor = await promessa; 110 | console.log(valor); 111 | } catch (erro) { 112 | console.error(erro); // "Erro ao obter valor!" 113 | } 114 | } 115 | 116 | obterValorComErro(); 117 | 118 | */ 119 | 120 | // 3.7 JSON 121 | const objeto = { nome: "João", idade: 30 }; 122 | const jsonString = JSON.stringify(objeto); 123 | console.log(jsonString); // "{"nome":"João","idade":30}" 124 | 125 | const jsonString2 = '{"nome":"João","idade":30}'; 126 | const objeto2 = JSON.parse(jsonString); 127 | console.log(objeto); // { nome: "João", idade: 30 } 128 | -------------------------------------------------------------------------------- /teoria/avancando_exercicios.js: -------------------------------------------------------------------------------- 1 | // Exercício de Manipulação de Array 2 | 3 | // Crie uma lista de compras que é inicialmente vazia. 4 | // Adicione 5 itens à lista usando push(). 5 | // Agora, remova o primeiro item da lista usando shift(). 6 | // Imprima a lista final no console. 7 | 8 | const listaDeCompras = []; 9 | listaDeCompras.push("Leite", "Ovos", "Pão", "Manteiga", "Queijo"); 10 | listaDeCompras.shift(); 11 | console.log(listaDeCompras); // ['Ovos', 'Pão', 'Manteiga', 'Queijo'] 12 | 13 | // Exercício de Manipulação de Array - find() 14 | 15 | // Você tem um array de números: [3, 7, 14, 21, 29, 36, 42]. 16 | // Use a função find() para encontrar o primeiro número que é divisível por 7 17 | // e maior que 10. 18 | 19 | const numeros = [3, 7, 14, 21, 29, 36, 42]; 20 | const resultado = numeros.find((num) => num > 10 && num % 7 === 0); 21 | console.log(resultado); // 14 22 | 23 | // 24 | // D: Curso Desafios de JavaScript 25 | // 26 | 27 | // Exercício de Manipulação de Array - filter() 28 | 29 | // Dado o array de números: [5, 10, 15, 20, 25, 30, 35, 40]. 30 | // Use a função filter() para criar um novo array que contenha apenas os números 31 | // que são maiores que 20. 32 | 33 | const numeros2 = [5, 10, 15, 20, 25, 30, 35, 40]; 34 | const filtrados = numeros2.filter((num) => num > 20); 35 | console.log(filtrados); // [25, 30, 35, 40] 36 | 37 | // Exercício de Manipulação de String - split(), trim() 38 | 39 | // Dada a string: " Bom dia, mundo! ". 40 | // Remova os espaços em branco no início e no final da string e, 41 | // em seguida, divida a string em palavras. 42 | 43 | const frase = " Bom dia, mundo! "; 44 | const palavras = frase.trim().split(" "); 45 | console.log(palavras); // ["Bom", "dia,", "mundo!"] 46 | 47 | // Exercício de Manipulação de String - startsWith(), endsWith() 48 | 49 | // Dada a string: "O rato roeu a roupa do rei de Roma". 50 | // Verifique se a string começa com a palavra "O" e termina com a palavra "Roma". 51 | 52 | const frase2 = "O rato roeu a roupa do rei de Roma"; 53 | const comecaComO = frase2.startsWith("O"); 54 | const terminaComRoma = frase2.endsWith("Roma"); 55 | console.log(`Começa com 'O'? ${comecaComO}`); // true 56 | console.log(`Termina com 'Roma'? ${terminaComRoma}`); // true 57 | -------------------------------------------------------------------------------- /teoria/dom.js: -------------------------------------------------------------------------------- 1 | // 4 - DOM 2 | 3 | // 4.1 Selecionando elementos no DOM 4 | 5 | // Selecionando um elemento pelo id 6 | const elementoPorId = document.querySelector("#meuId"); 7 | 8 | console.log(elementoPorId); 9 | 10 | // Selecionando todos os elementos com a classe 'minhaClasse' 11 | const elementosPorClasse = document.querySelectorAll(".minhaClasse"); 12 | 13 | console.log(elementosPorClasse); 14 | 15 | // 4.2 Manipulando conteúdo de texto 16 | const elemento = document.querySelector("#meuId"); 17 | 18 | // Obtendo o conteúdo de texto 19 | console.log(elemento.textContent); 20 | 21 | // Alterando o conteúdo de texto 22 | elemento.textContent = "Novo Conteúdo"; 23 | 24 | // 4.3 Trabalhando com atributos 25 | const link = document.querySelector("a"); 26 | 27 | // Obtendo um atributo 28 | console.log(link.getAttribute("href")); 29 | 30 | // Definindo um atributo 31 | link.setAttribute("href", "https://www.novosite.com"); 32 | 33 | // Verificando se um atributo existe 34 | console.log(link.hasAttribute("target")); 35 | 36 | // Removendo um atributo 37 | link.removeAttribute("target"); 38 | 39 | // 40 | // D: Curso de JavaScript 41 | // 42 | 43 | // 4.4 Manipulando classes CSS 44 | const elemento2 = document.querySelector("#meuId"); 45 | 46 | // Adicionando uma classe 47 | elemento2.classList.add("novaClasse"); 48 | 49 | // Removendo uma classe 50 | elemento2.classList.remove("minhaClasse"); 51 | 52 | // Alternando uma classe 53 | elemento2.classList.toggle("outraClasse"); 54 | 55 | // 4.5 Trabalhando com estilos CSS 56 | const elemento3 = document.querySelector("#meuId"); 57 | 58 | // Alterando um estilo 59 | elemento3.style.color = "red"; 60 | 61 | // 4.6 Navegação entre nós 62 | 63 | const elemento4 = document.querySelector("#meuInput"); 64 | 65 | // Obtendo o elemento pai 66 | const pai = elemento4.parentNode; 67 | 68 | console.log(pai); 69 | 70 | // Obtendo o primeiro filho 71 | const primeiroFilho = pai.firstChild; 72 | 73 | console.log(primeiroFilho); 74 | 75 | // Obtendo o último filho 76 | const ultimoFilho = pai.lastChild; 77 | 78 | console.log(ultimoFilho); 79 | 80 | // 4.7 Manipulando a estrutura do DOM 81 | 82 | // Criando um novo elemento 83 | const novoElemento = document.createElement("div"); 84 | 85 | // Adicionando o novo elemento ao final do body 86 | document.body.appendChild(novoElemento); 87 | 88 | novoElemento.textContent = "Testando"; 89 | 90 | // Inserindo o novo elemento antes do primeiro filho do body 91 | document.body.insertBefore(novoElemento, document.body.firstChild); 92 | 93 | // Removendo um elemento 94 | document.body.removeChild(novoElemento); 95 | 96 | // 5 - Introdução aos Eventos 97 | 98 | // 5.1 Evento de click 99 | const botao = document.querySelector("button"); 100 | 101 | // Adicionando um ouvinte de eventos 102 | botao.addEventListener("click", function () { 103 | alert("Botão clicado!"); 104 | }); 105 | 106 | // 5.2 Eventos de mouse 107 | const elemento5 = document.querySelector("#meuId"); 108 | 109 | // Ouvindo o evento de passar o mouse 110 | elemento5.addEventListener("mouseover", function () { 111 | console.log("Mouse passou sobre o elemento!"); 112 | }); 113 | 114 | // 5.3 Eventos de teclado 115 | const campoInput = document.querySelector("input"); 116 | 117 | // Ouvindo o evento de pressionar tecla 118 | campoInput.addEventListener("keydown", function () { 119 | console.log("Tecla pressionada!"); 120 | }); 121 | 122 | // 5.4 Eventos de formulário 123 | 124 | const formulario = document.querySelector("form"); 125 | 126 | // Ouvindo o evento de submissão do formulário 127 | formulario.addEventListener("submit", function (evento) { 128 | // Previne a submissão do formulário 129 | evento.preventDefault(); 130 | 131 | console.log("Formulário submetido!"); 132 | }); 133 | 134 | // 5.5 Propagação de Eventos 135 | 136 | // Adicionando um ouvinte de eventos para a fase de captura 137 | document.querySelector("#elementoPai").addEventListener( 138 | "click", 139 | function () { 140 | console.log("Clique capturado no pai!"); 141 | }, 142 | true 143 | ); 144 | 145 | // Adicionando um ouvinte de eventos para a fase de propagação 146 | document.querySelector("#elementoFilho").addEventListener( 147 | "click", 148 | function () { 149 | console.log("Clique propagado no filho!"); 150 | }, 151 | false 152 | ); 153 | 154 | // 5.6 PreventDefault e StopPropagation 155 | document.querySelector("#meuLink").addEventListener("click", function (evento) { 156 | // Previne a ação padrão do link 157 | evento.preventDefault(); 158 | 159 | // Parar a propagação do evento 160 | evento.stopPropagation(); 161 | }); 162 | 163 | // 5.7 Eventos de Delegação 164 | 165 | // Adicionando um ouvinte de eventos no pai para delegar o evento 166 | document 167 | .querySelector("#elementoPai") 168 | .addEventListener("click", function (evento) { 169 | if (evento.target.matches(".classeDosFilhos")) { 170 | console.log("Evento delegado para o filho!"); 171 | } 172 | }); 173 | -------------------------------------------------------------------------------- /teoria/fundamentos.js: -------------------------------------------------------------------------------- 1 | // 1 - Configuração do ambiente de desenvolvimento 2 | // VS Code e teste de JS no console 3 | 4 | // 2 - Fundamentos de JavaScript 5 | 6 | // 2.1 Sintaxe básica 7 | var minhaVariavel = "Olá, mundo!"; 8 | 9 | console.log(minhaVariavel); 10 | 11 | // 2.2 Comentários 12 | 13 | // Isto é um comentário de uma linha 14 | /* Isto é um 15 | comentário de várias linhas */ 16 | 17 | // 2.3 Variáveis e tipos de dados 18 | var meuNumero = 10; // Number 19 | 20 | console.log(typeof meuNumero); 21 | 22 | var minhaString = "Texto"; // String 23 | 24 | console.log(typeof minhaString); 25 | 26 | var meuBooleano = true; // Boolean 27 | 28 | console.log(typeof meuBooleano); 29 | 30 | var meuObjeto = {}; // Object 31 | var meuArray = []; // Array 32 | var minhaNull = null; // Null 33 | var meuUndefined; // Undefined 34 | 35 | // 2.4 let e const 36 | let teste = 1; 37 | const PI = 3.14; 38 | 39 | console.log(teste, PI); 40 | 41 | // 2.5 Operadores 42 | const x = 10; 43 | const y = 5; 44 | 45 | // Operadores aritméticos 46 | console.log(x + y); // 15 47 | console.log(x - y); // 5 48 | console.log(x * y); // 50 49 | console.log(x / y); // 2 50 | 51 | // Operadores de comparação 52 | console.log(x == y); // false 53 | console.log(x != y); // true 54 | 55 | // Operadores lógicos 56 | console.log(x > y && y < 10); // true 57 | console.log(x > y || y > 10); // true 58 | 59 | // 2.6 Conversão de tipos 60 | const meuNumero2 = "123"; // String 61 | const meuNumeroConvertido = Number(meuNumero2); // Number 62 | console.log(typeof meuNumeroConvertido); // "number" 63 | 64 | // 65 | // D: Curso Formação Front-end 66 | // 67 | 68 | // 2.7 Estruturas de controle de fluxo 69 | 70 | // Condição if, else if, else 71 | const idade = 20; 72 | 73 | if (idade < 13) { 74 | console.log("Criança"); 75 | } else if (idade < 20) { 76 | console.log("Adolescente"); 77 | } else { 78 | console.log("Adulto"); 79 | } 80 | 81 | // Condição switch 82 | const fruta = "Maçã"; 83 | 84 | switch (fruta) { 85 | case "Banana": 86 | console.log("Eu gosto de bananas!"); 87 | break; 88 | case "Maçã": 89 | console.log("As maçãs são ok."); 90 | break; 91 | default: 92 | console.log("Nenhuma fruta selecionada"); 93 | } 94 | 95 | // 2.7 Estruturas de loop 96 | // Loop for 97 | for (let i = 0; i < 5; i++) { 98 | console.log(i); // 0, 1, 2, 3, 4 99 | } 100 | 101 | // Loop while 102 | let i = 0; 103 | while (i < 5) { 104 | console.log(i); // 0, 1, 2, 3, 4 105 | i++; 106 | } 107 | 108 | // Loop do while 109 | let j = 0; 110 | do { 111 | console.log(j); // 0, 1, 2, 3, 4 112 | j++; 113 | } while (j < 5); 114 | 115 | // 2.8 Funções 116 | 117 | function cumprimentar(nome) { 118 | console.log(`Olá, ${nome}!`); 119 | } 120 | cumprimentar("Maria"); // Olá, Maria! 121 | 122 | // 2.9 Escopo de Variáveis 123 | 124 | // Escopo global 125 | let cor = "azul"; 126 | 127 | function mostrarCor() { 128 | // Escopo local 129 | let cor = "verde"; 130 | console.log(cor); // verde 131 | } 132 | 133 | mostrarCor(); 134 | console.log(cor); // azul 135 | 136 | // 2.10 Hoisting 137 | testeHoisting(); 138 | 139 | function testeHoisting() { 140 | console.log("Deu certo!"); 141 | } 142 | 143 | // 2.11 Arrow function 144 | const testandoArrow = () => console.log("Isso também é uma função"); 145 | 146 | // 2.12 Truthy e Falsy 147 | const minhaVariavel1 = ""; // Falsy 148 | const minhaVariavel2 = "Algum texto"; // Truthy 149 | 150 | if (minhaVariavel1) { 151 | console.log("Variável1 é truthy"); 152 | } else { 153 | console.log("Variável1 é falsy"); // Isso será exibido 154 | } 155 | 156 | if (minhaVariavel2) { 157 | console.log("Variável2 é truthy"); // Isso será exibido 158 | } else { 159 | console.log("Variável2 é falsy"); 160 | } 161 | 162 | // 2.13 Arrays 163 | 164 | // Array 165 | const numeros = [1, 2, 3, 4, 5]; 166 | console.log(numeros[0]); // 1 167 | 168 | // Adição de elementos 169 | numeros.push(6); 170 | console.log(numeros); // [1, 2, 3, 4, 5, 6] 171 | 172 | // Remoção de elementos 173 | numeros.pop(); 174 | console.log(numeros); // [1, 2, 3, 4, 5] 175 | 176 | // 2.14 Manipulação de Strings 177 | 178 | // String 179 | const minhaStringNova = "Olá, Mundo!"; 180 | 181 | // Concatenação 182 | const minhaString2 = minhaStringNova + " Como você está?"; 183 | console.log(minhaString2); // Olá, Mundo! Como você está? 184 | 185 | // Interpolação 186 | const minhaString3 = `${minhaStringNova} Como você está?`; 187 | console.log(minhaString3); // Olá, Mundo! Como você está? 188 | 189 | // Métodos comuns 190 | console.log(minhaString3.length); // 31 191 | console.log(minhaString3.toUpperCase()); // OLÁ, MUNDO! COMO VOCÊ ESTÁ? 192 | 193 | // 2.15 Data e Hora 194 | 195 | // Data atual 196 | const agora = new Date(); 197 | console.log(agora); 198 | 199 | // Data específica 200 | const natal = new Date(2023, 11, 25); 201 | console.log(natal); 202 | 203 | // 2.16 Objeto Math 204 | 205 | // Número PI 206 | console.log(Math.PI); // 3.141592653589793 207 | 208 | // Arredondamento 209 | console.log(Math.round(3.6)); // 4 210 | 211 | // Raiz quadrada 212 | console.log(Math.sqrt(16)); // 4 213 | 214 | // Potência 215 | console.log(Math.pow(2, 3)); // 8 216 | -------------------------------------------------------------------------------- /teoria/fundamentos_exercicios.js: -------------------------------------------------------------------------------- 1 | // Exercício 1: Olá, Mundo! 2 | // Crie um script JavaScript que imprima "Olá, Mundo!" no console. 3 | 4 | console.log("Olá, Mundo!"); 5 | 6 | // Exercício 2: Conversão de Tipos 7 | // Dado o valor de uma string "1234", converta-o em um número e exiba o tipo da variável no console. 8 | 9 | const valorString = "1234"; 10 | const valorNumber = Number(valorString); 11 | console.log(typeof valorNumber); // "number" 12 | 13 | // 14 | // D: Curso Desafios de JavaScript 15 | // 16 | 17 | // Exercício 3: Manipulação de Strings 18 | // Dado uma string "JavaScript é incrível", escreva um código que conte quantos caracteres a string tem e quantas palavras existem na frase. 19 | 20 | const minhaString = "JavaScript é incrível"; 21 | const numeroDeCaracteres = minhaString.length; 22 | const numeroDePalavras = minhaString.split(" ").length; 23 | 24 | console.log(`Número de caracteres: ${numeroDeCaracteres}`); // Número de caracteres: 23 25 | console.log(`Número de palavras: ${numeroDePalavras}`); // Número de palavras: 3 26 | 27 | // Exercício 4: Loops e Arrays 28 | // Crie um array com cinco nomes. Use um loop for para imprimir cada nome no console. 29 | 30 | const nomes = ["Ana", "João", "Carlos", "Maria", "Beatriz"]; 31 | for (let i = 0; i < nomes.length; i++) { 32 | console.log(nomes[i]); 33 | } 34 | 35 | // Exercício 5: Funções, Strings e Math 36 | // Crie uma função que aceita uma string representando um horário no formato de 24 horas (por exemplo, "14:30"). A função deve retornar uma string que converta o horário para o formato de 12 horas (por exemplo, "2:30 PM"). Use o objeto Math para auxiliar nesta conversão. Certifique-se de que sua função lida corretamente com horários na meia-noite e no meio-dia. 37 | 38 | function converterHorario(horario24) { 39 | const [hora, minuto] = horario24.split(":"); 40 | let hora12 = hora % 12 || 12; 41 | const periodo = hora < 12 ? "AM" : "PM"; 42 | return `${hora12}:${minuto} ${periodo}`; 43 | } 44 | 45 | console.log(converterHorario("14:30")); // "2:30 PM" 46 | console.log(converterHorario("00:00")); // "12:00 AM" 47 | console.log(converterHorario("12:00")); // "12:00 PM" 48 | -------------------------------------------------------------------------------- /teoria/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Curso de JavaScript com exercícios e projetos 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |

Curso de JavaScript

18 | 19 | 20 | 21 | 22 |
Olá, mundo!
23 | Google 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 | 36 | 37 |
38 | 39 | 40 |
41 | Pai 42 |
Filho
43 |
44 | 45 | 46 | Link para o Google 47 | 48 | 49 | -------------------------------------------------------------------------------- /teoria/javascript_moderno.js: -------------------------------------------------------------------------------- 1 | // 4.0 JavaScript moderno 2 | 3 | // 4.1 let e const 4 | let numero = 10; // Declaração com 'let', pode ser reatribuída 5 | numero = 20; 6 | console.log(numero); // 20 7 | 8 | const nome = "João"; // Declaração com 'const', não pode ser reatribuída 9 | console.log(nome); // João 10 | 11 | function testeVar() { 12 | var x = 1; 13 | if (true) { 14 | var x = 2; // mesma variável 15 | console.log(x); // 2 16 | } 17 | console.log(x); // 2 18 | } 19 | 20 | function testeLet() { 21 | let x = 1; 22 | if (true) { 23 | let x = 2; // variável diferente 24 | console.log(x); // 2 25 | } 26 | console.log(x); // 1 27 | } 28 | 29 | testeVar(); 30 | testeLet(); 31 | 32 | // 4.2 Arrow Functions 33 | 34 | const soma = (a, b) => a + b; 35 | console.log(soma(3, 5)); // 8 36 | 37 | const quadrado = (numero) => numero * numero; 38 | console.log(quadrado(4)); // 16 39 | 40 | const cumprimento = (nome) => { 41 | const mensagem = `Olá, ${nome}!`; 42 | return mensagem; 43 | }; 44 | console.log(cumprimento("João")); // Olá, João! 45 | 46 | // 4.3 Template Literals: 47 | 48 | const nome2 = "Maria"; 49 | const idade = 22; 50 | console.log(`Meu nome é ${nome} e eu tenho ${idade} anos.`); 51 | 52 | const produto = "carro"; 53 | const preco = 50000; 54 | console.log(`O ${produto} custa R$ ${preco}.`); 55 | 56 | // 4.4 Destructuring 57 | 58 | const pessoa = { nome: "Carlos", idade: 30 }; 59 | const { nome3, idade2 } = pessoa; 60 | console.log(nome); // Carlos 61 | console.log(idade); // 30 62 | 63 | const numeros = [1, 2, 3, 4]; 64 | const [primeiro, segundo] = numeros; 65 | console.log(primeiro); // 1 66 | console.log(segundo); // 2 67 | 68 | // 4.5 Spread e Rest Operators 69 | 70 | const array1 = [1, 2, 3]; 71 | const array2 = [...array1, 4, 5, 6]; 72 | console.log(array2); // [1, 2, 3, 4, 5, 6] 73 | 74 | const soma2 = (...args) => args.reduce((total, numero) => total + numero, 0); 75 | console.log(soma(1, 2, 3, 4)); // 10 76 | 77 | // 4.6 Default Parameters: 78 | 79 | const saudacao = (nome = "visitante") => `Olá, ${nome}!`; 80 | console.log(saudacao()); // Olá, visitante! 81 | console.log(saudacao("Lucas")); // Olá, Lucas! 82 | 83 | // 4.7 Object Literal Enhancements 84 | 85 | const nomeNovo = "Felipe"; 86 | const idadeNova = 27; 87 | const pessoaNova = { nome, idade }; 88 | console.log(pessoa); // {nome: 'Felipe', idade: 27} 89 | 90 | const metodoPessoa = { 91 | dizerOi() { 92 | console.log("Oi!"); 93 | }, 94 | }; 95 | metodoPessoa.dizerOi(); // Oi! 96 | 97 | // 4.8 Array Methods (map, filter, reduce) 98 | 99 | const numerosNovos = [1, 2, 3, 4, 5]; 100 | const dobrados = numerosNovos.map((numero) => numero * 2); 101 | console.log(dobrados); // [2, 4, 6, 8, 10] 102 | 103 | const pares = numerosNovos.filter((numero) => numero % 2 === 0); 104 | console.log(pares); // [2, 4] 105 | 106 | const somaReduce = numerosNovos.reduce((total, numero) => total + numero, 0); 107 | console.log(soma); // 15 108 | 109 | // 4.9 Classes e Herança: 110 | 111 | class Pessoa { 112 | constructor(nome, idade) { 113 | this.nome = nome; 114 | this.idade = idade; 115 | } 116 | falar() { 117 | console.log(`Oi, meu nome é ${this.nome}.`); 118 | } 119 | } 120 | const pessoa1 = new Pessoa("Carlos", 25); 121 | pessoa1.falar(); // Oi, meu nome é Carlos. 122 | 123 | class Funcionario extends Pessoa { 124 | constructor(nome, idade, salario) { 125 | super(nome, idade); 126 | this.salario = salario; 127 | } 128 | falar() { 129 | super.falar(); 130 | console.log(`Eu ganho R$${this.salario}.`); 131 | } 132 | } 133 | const funcionario1 = new Funcionario("Ana", 30, 5000); 134 | funcionario1.falar(); // Oi, meu nome é Ana. Eu ganho R$5000. 135 | -------------------------------------------------------------------------------- /teoria/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: Arial, sans-serif; 3 | } 4 | 5 | #meuId { 6 | padding: 20px; 7 | margin: 20px 0; 8 | background-color: #f5f5f5; 9 | color: #333; 10 | } 11 | 12 | .minhaClasse { 13 | border: 1px solid #ccc; 14 | } 15 | 16 | button { 17 | display: block; 18 | margin: 10px 0; 19 | padding: 10px 20px; 20 | background-color: #4caf50; 21 | color: white; 22 | border: none; 23 | cursor: pointer; 24 | } 25 | 26 | button:hover { 27 | background-color: #45a049; 28 | } 29 | 30 | input[type="text"] { 31 | padding: 10px; 32 | margin: 10px 0; 33 | display: block; 34 | } 35 | 36 | form { 37 | margin: 20px 0; 38 | } 39 | 40 | form button { 41 | background-color: #008cba; 42 | } 43 | 44 | form button:hover { 45 | background-color: #007b9a; 46 | } 47 | 48 | a { 49 | display: block; 50 | margin: 20px 0; 51 | color: #333; 52 | } 53 | --------------------------------------------------------------------------------