├── .gitignore ├── respostas ├── _1hello.js ├── _2strings.js ├── _3math.js ├── _5loops.js ├── _4conditionals.js └── _6final-challenge.js └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /respostas/_1hello.js: -------------------------------------------------------------------------------- 1 | // Meu primeiro script Node.js 2 | console.log("Hello, Node.js!"); 3 | console.log("Node.js version:", process.version); 4 | console.log("Current directory:", process.cwd()); -------------------------------------------------------------------------------- /respostas/_2strings.js: -------------------------------------------------------------------------------- 1 | // Exercícios de manipulação de strings 2 | 3 | // 1. Declaração e concatenação 4 | const firstName = "Maria"; 5 | const lastName = "Silva"; 6 | const fullName = firstName + " " + lastName; 7 | console.log("Nome completo:", fullName); 8 | 9 | // 2. Template strings (ES6) 10 | const greeting = `Olá, meu nome é ${firstName} ${lastName}!`; 11 | console.log(greeting); 12 | 13 | // 3. Propriedades e métodos de strings 14 | console.log("Comprimento do nome:", fullName.length); 15 | console.log("Nome em maiúsculas:", fullName.toUpperCase()); 16 | console.log("Nome em minúsculas:", fullName.toLowerCase()); 17 | 18 | // DESAFIO: Faça estas operações 19 | // a. Extraia o primeiro nome usando o método slice ou substring 20 | // b. Verifique se o nome completo contém a letra 'a' 21 | // c. Substitua "Silva" por outro sobrenome usando replace 22 | 23 | // Soluções do desafio 24 | 25 | // a. Extração do primeiro nome 26 | console.log("Primeiro nome extraído:", fullName.slice(0, firstName.length)); 27 | // ou 28 | console.log("Primeiro nome extraído:", fullName.substring(0, firstName.length)); 29 | 30 | // b. Verificação da presença da letra 'a' 31 | console.log("Nome contém a letra 'a'?", fullName.includes('a')); 32 | // ou 33 | console.log("Nome contém a letra 'a'?", fullName.indexOf('a') !== -1); 34 | 35 | // c. Substituição do sobrenome 36 | const newLastName = fullName.replace("Silva", "Oliveira"); 37 | console.log("Novo nome completo:", newLastName); 38 | -------------------------------------------------------------------------------- /respostas/_3math.js: -------------------------------------------------------------------------------- 1 | // Exercícios de operações matemáticas 2 | 3 | // Operações básicas 4 | const a = 10; 5 | const b = 3; 6 | 7 | console.log("Adição:", a + b); 8 | console.log("Subtração:", a - b); 9 | console.log("Multiplicação:", a * b); 10 | console.log("Divisão:", a / b); 11 | console.log("Módulo (resto):", a % b); 12 | console.log("Exponenciação:", a ** b); // a elevado a b 13 | 14 | // Incremento e decremento 15 | let counter = 5; 16 | console.log("Valor inicial:", counter); 17 | console.log("Pós-incremento:", counter++); // Mostra 5, depois incrementa 18 | console.log("Novo valor:", counter); // Agora mostra 6 19 | console.log("Pré-incremento:", ++counter); // Incrementa primeiro, depois mostra 7 20 | console.log("Valor final:", counter); // Mostra 7 21 | 22 | // Conversão de tipos 23 | const numberAsString = "42"; 24 | console.log("String original:", numberAsString, typeof numberAsString); 25 | 26 | const convertedNumber = Number(numberAsString); 27 | console.log("Depois de converter:", convertedNumber, typeof convertedNumber); 28 | 29 | // DESAFIO: 30 | // a. Calcule a média de 3 números: 15, 25 e 38 31 | // b. Converta a string "123.45" em um número 32 | // c. Arredonde o resultado de 9.7 dividido por 2 para o inteiro mais próximo 33 | 34 | // Soluções do desafio 35 | // a. Cálculo da média 36 | const num1 = 15; 37 | const num2 = 25; 38 | const num3 = 38; 39 | 40 | const average = (num1 + num2 + num3) / 3; 41 | console.log("Média dos três números:", average); 42 | 43 | // b. Conversão da string "123.45" em um número 44 | const decimalString = "123.45"; 45 | const decimalNumber = parseFloat(decimalString); 46 | console.log("String convertida para número decimal:", decimalNumber, typeof decimalNumber); 47 | 48 | // c. Arredondamento do resultado de 9.7 dividido por 2 49 | const division = 9.7 / 2; 50 | console.log("Resultado da divisão:", division); 51 | console.log("Arredondado:", Math.round(division)); 52 | -------------------------------------------------------------------------------- /respostas/_5loops.js: -------------------------------------------------------------------------------- 1 | // Exercícios com loops 2 | 3 | // Loop for básico 4 | console.log("Contando de 1 a 5:"); 5 | for (let i = 1; i <= 5; i++) { 6 | console.log(i); 7 | } 8 | 9 | // Loop for com break 10 | console.log("\\nLoop com break:"); 11 | for (let i = 1; i <= 10; i++) { 12 | if (i === 6) { 13 | console.log("Encontrei o 6, parando o loop!"); 14 | break; 15 | } 16 | console.log(i); 17 | } 18 | 19 | // Loop for com continue 20 | console.log("\\nPulando números pares:"); 21 | for (let i = 1; i <= 10; i++) { 22 | if (i % 2 === 0) { 23 | continue; // Pula o resto da iteração 24 | } 25 | console.log(i); 26 | } 27 | 28 | // Iterando sobre arrays 29 | const fruits = ["Maçã", "Banana", "Laranja", "Manga", "Uva"]; 30 | console.log("\\nLista de frutas:"); 31 | for (let i = 0; i < fruits.length; i++) { 32 | console.log(`Fruta ${i+1}: ${fruits[i]}`); 33 | } 34 | 35 | // DESAFIO: 36 | // a. Crie um loop que imprima a tabuada do 7 (de 1 a 10) 37 | // b. Crie um array de números e calcule a soma deles usando um loop 38 | // c. Crie um loop que identifique o menor valor em um array de números 39 | 40 | // Soluções do desafio 41 | // a. Tabuada do 7 42 | console.log("\\nTabuada do 7:"); 43 | for (let i = 1; i <= 10; i++) { 44 | console.log(`7 x ${i} = ${7 * i}`); 45 | } 46 | 47 | // b. Soma de elementos de um array 48 | const numbers = [5, 10, 15, 20, 25]; 49 | let sum = 0; 50 | 51 | for (let i = 0; i < numbers.length; i++) { 52 | sum += numbers[i]; 53 | } 54 | 55 | console.log("\\nArray de números:", numbers); 56 | console.log("Soma dos números:", sum); 57 | 58 | // c. Encontrando o menor valor 59 | const values = [28, 14, 33, 7, 42, 19]; 60 | let smallest = values[0]; // Assume que o primeiro é o menor 61 | 62 | for (let i = 1; i < values.length; i++) { 63 | if (values[i] < smallest) { 64 | smallest = values[i]; 65 | } 66 | } 67 | 68 | console.log("\\nArray de valores:", values); 69 | console.log("Menor valor:", smallest); 70 | -------------------------------------------------------------------------------- /respostas/_4conditionals.js: -------------------------------------------------------------------------------- 1 | // Exercícios com estruturas condicionais 2 | 3 | // Verificação de idade 4 | const age = 17; 5 | 6 | if (age >= 18) { 7 | console.log("Você é maior de idade!"); 8 | } else { 9 | console.log("Você é menor de idade!"); 10 | } 11 | 12 | // Verificação com múltiplas condições 13 | const hour = 14; 14 | 15 | if (hour < 12) { 16 | console.log("Bom dia!"); 17 | } else if (hour < 18) { 18 | console.log("Boa tarde!"); 19 | } else { 20 | console.log("Boa noite!"); 21 | } 22 | 23 | // Operadores lógicos 24 | const isWeekend = false; 25 | const isHoliday = true; 26 | 27 | if (isWeekend || isHoliday) { 28 | console.log("Não precisa trabalhar hoje!"); 29 | } else { 30 | console.log("Dia de trabalho!"); 31 | } 32 | 33 | // Operador ternário 34 | const status = age >= 18 ? "Adulto" : "Menor"; 35 | console.log("Status:", status); 36 | 37 | // DESAFIO: 38 | // a. Crie um sistema de classificação de notas: 39 | // - 0-59: F 40 | // - 60-69: D 41 | // - 70-79: C 42 | // - 80-89: B 43 | // - 90-100: A 44 | // b. Verifique se um número é par ou ímpar 45 | // c. Crie uma verificação que diga se uma pessoa pode dirigir 46 | // (precisa ser maior de idade E ter habilitação) 47 | 48 | // Soluções do desafio 49 | // a. Sistema de classificação de notas 50 | const grade = 85; 51 | let letterGrade; 52 | 53 | if (grade >= 90) { 54 | letterGrade = "A"; 55 | } else if (grade >= 80) { 56 | letterGrade = "B"; 57 | } else if (grade >= 70) { 58 | letterGrade = "C"; 59 | } else if (grade >= 60) { 60 | letterGrade = "D"; 61 | } else { 62 | letterGrade = "F"; 63 | } 64 | 65 | console.log(`Nota numérica: ${grade}, Conceito: ${letterGrade}`); 66 | 67 | // b. Verificação de par ou ímpar 68 | const number = 7; 69 | if (number % 2 === 0) { 70 | console.log(`${number} é par`); 71 | } else { 72 | console.log(`${number} é ímpar`); 73 | } 74 | 75 | // c. Verificação para dirigir 76 | const personAge = 19; 77 | const hasLicense = true; 78 | 79 | if (personAge >= 18 && hasLicense) { 80 | console.log("Pode dirigir"); 81 | } else if (personAge >= 18 && !hasLicense) { 82 | console.log("Maior de idade, mas precisa de habilitação"); 83 | } else { 84 | console.log("Não pode dirigir, é menor de idade"); 85 | } 86 | 87 | -------------------------------------------------------------------------------- /respostas/_6final-challenge.js: -------------------------------------------------------------------------------- 1 | // Desafio final - integrando todos os conceitos 2 | 3 | // Dados de alunos 4 | const students = [ 5 | { name: "João", age: 20, grades: [85, 90, 78] }, 6 | { name: "Maria", age: 19, grades: [92, 95, 89] }, 7 | { name: "Pedro", age: 21, grades: [70, 65, 80] }, 8 | { name: "Ana", age: 18, grades: [60, 75, 68] }, 9 | { name: "Carlos", age: 22, grades: [90, 88, 92] } 10 | ]; 11 | 12 | // DESAFIO: 13 | // a. Para cada aluno, calcule a média das notas 14 | // b. Determine se cada aluno foi aprovado ou reprovado (média >= 70 para aprovar) 15 | // c. Conte quantos alunos foram aprovados e quantos foram reprovados 16 | // d. Encontre o aluno com a maior média 17 | // e. Calcule a média geral da turma 18 | 19 | // Use console.log() para mostrar todos os resultados com mensagens claras 20 | 21 | // Solução do desafio final 22 | console.log("Relatório de Desempenho dos Alunos\\n"); 23 | 24 | let approvedCount = 0; 25 | let failedCount = 0; 26 | let totalClassAverage = 0; 27 | let bestStudent = null; 28 | let highestAverage = 0; 29 | 30 | for (let i = 0; i < students.length; i++) { 31 | const student = students[i]; 32 | 33 | // a. Calculando a média do aluno 34 | let sum = 0; 35 | for (let j = 0; j < student.grades.length; j++) { 36 | sum += student.grades[j]; 37 | } 38 | const average = sum / student.grades.length; 39 | 40 | // b. Determinando status de aprovação 41 | const status = average >= 70 ? "APROVADO" : "REPROVADO"; 42 | 43 | // c. Contando aprovados e reprovados 44 | if (status === "APROVADO") { 45 | approvedCount++; 46 | } else { 47 | failedCount++; 48 | } 49 | 50 | // d. Verificando se é o melhor aluno 51 | if (average > highestAverage) { 52 | highestAverage = average; 53 | bestStudent = student.name; 54 | } 55 | 56 | // e. Adicionando à média da turma 57 | totalClassAverage += average; 58 | 59 | // Imprimindo relatório individual 60 | console.log(`Aluno: ${student.name} (${student.age} anos)`); 61 | console.log(`Notas: ${student.grades.join(", ")}`); 62 | console.log(`Média: ${average.toFixed(2)}`); 63 | console.log(`Status: ${status}\\n`); 64 | } 65 | 66 | // Calculando a média geral da turma 67 | totalClassAverage /= students.length; 68 | 69 | // Imprimindo estatísticas gerais 70 | console.log("ESTATÍSTICAS DA TURMA"); 71 | console.log(`Total de alunos: ${students.length}`); 72 | console.log(`Alunos aprovados: ${approvedCount}`); 73 | console.log(`Alunos reprovados: ${failedCount}`); 74 | console.log(`Média geral da turma: ${totalClassAverage.toFixed(2)}`); 75 | console.log(`Melhor aluno: ${bestStudent} com média ${highestAverage.toFixed(2)}`); 76 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Exercício 1: Primeiros Passos com Node.js 2 | 3 | **Objetivo**: Verificar a instalação do Node.js e executar o primeiro script. 4 | 5 | 1. Peça aos alunos que criem um arquivo `hello.js` com o seguinte conteúdo: 6 | 7 | ```jsx 8 | // Meu primeiro script Node.js 9 | console.log("Hello, Node.js!"); 10 | console.log("Node.js version:", process.version); 11 | console.log("Current directory:", process.cwd()); 12 | ``` 13 | 14 | 1. Executar o arquivo no terminal: 15 | 16 | ```bash 17 | node hello.js 18 | ``` 19 | 20 | ### Exercício 2: Manipulação de Strings 21 | 22 | **Objetivo**: Praticar operações básicas com strings. 23 | 24 | 1. Crie um arquivo `strings.js`: 25 | ```jsx 26 | // Exercícios de manipulação de strings 27 | 28 | // 1. Declaração e concatenação 29 | const firstName = "Maria"; 30 | const lastName = "Silva"; 31 | const fullName = firstName + " " + lastName; 32 | console.log("Nome completo:", fullName); 33 | 34 | // 2. Template strings (ES6) 35 | const greeting = `Olá, meu nome é ${firstName} ${lastName}!`; 36 | console.log(greeting); 37 | 38 | // 3. Propriedades e métodos de strings 39 | console.log("Comprimento do nome:", fullName.length); 40 | console.log("Nome em maiúsculas:", fullName.toUpperCase()); 41 | console.log("Nome em minúsculas:", fullName.toLowerCase()); 42 | ``` 43 | #### Desafios 44 | ##### a) Extraia o primeiro nome usando o método slice ou substring 45 | ##### b) Verifique se o nome completo contém a letra 'a' 46 | ##### c) Substitua "Silva" por outro sobrenome usando replace 47 | 48 | ### Exercício 3: Operações Matemáticas 49 | 50 | **Objetivo**: Praticar operações matemáticas e conversão de tipos. 51 | 52 | 1. Crie um arquivo `math.js`: 53 | ```jsx 54 | // Exercícios de operações matemáticas 55 | 56 | // Operações básicas 57 | const a = 10; 58 | const b = 3; 59 | 60 | console.log("Adição:", a + b); 61 | console.log("Subtração:", a - b); 62 | console.log("Multiplicação:", a * b); 63 | console.log("Divisão:", a / b); 64 | console.log("Módulo (resto):", a % b); 65 | console.log("Exponenciação:", a ** b); // a elevado a b 66 | 67 | // Incremento e decremento 68 | let counter = 5; 69 | console.log("Valor inicial:", counter); 70 | console.log("Pós-incremento:", counter++); // Mostra 5, depois incrementa 71 | console.log("Novo valor:", counter); // Agora mostra 6 72 | console.log("Pré-incremento:", ++counter); // Incrementa primeiro, depois mostra 7 73 | console.log("Valor final:", counter); // Mostra 7 74 | 75 | // Conversão de tipos 76 | const numberAsString = "42"; 77 | console.log("String original:", numberAsString, typeof numberAsString); 78 | 79 | const convertedNumber = Number(numberAsString); 80 | console.log("Depois de converter:", convertedNumber, typeof convertedNumber); 81 | ``` 82 | 83 | #### Desafios 84 | ##### a) Calcule a média de 3 números: 15, 25 e 38. 85 | ##### b) Converta a string "123.45" em um número. 86 | ##### c) Arredonde o resultado de 9.7 dividido por 2 para o inteiro mais próximo. 87 | 88 | ### Exercício 4: Estruturas Condicionais 89 | 90 | **Objetivo**: Praticar o uso de if/else e operadores lógicos. 91 | 92 | 1. Crie um arquivo `conditionals.js`: 93 | ```jsx 94 | // Exercícios com estruturas condicionais 95 | 96 | // Verificação de idade 97 | const age = 17; 98 | 99 | if (age >= 18) { 100 | console.log("Você é maior de idade!"); 101 | } else { 102 | console.log("Você é menor de idade!"); 103 | } 104 | 105 | // Verificação com múltiplas condições 106 | const hour = 14; 107 | 108 | if (hour < 12) { 109 | console.log("Bom dia!"); 110 | } else if (hour < 18) { 111 | console.log("Boa tarde!"); 112 | } else { 113 | console.log("Boa noite!"); 114 | } 115 | 116 | // Operadores lógicos 117 | const isWeekend = false; 118 | const isHoliday = true; 119 | 120 | if (isWeekend || isHoliday) { 121 | console.log("Não precisa trabalhar hoje!"); 122 | } else { 123 | console.log("Dia de trabalho!"); 124 | } 125 | 126 | // Operador ternário 127 | const status = age >= 18 ? "Adulto" : "Menor"; 128 | console.log("Status:", status); 129 | ``` 130 | 131 | #### Desafios 132 | ##### a) Crie um sistema de classificação de notas: 133 | - 0-59: F 134 | - 60-69: D 135 | - 70-79: C 136 | - 80-89: B 137 | - 90-100: A 138 | ##### b) Verifique se um número é par ou ímpar 139 | ##### c) Crie uma verificação que diga se uma pessoa pode dirigir 140 | (precisa ser maior de idade E ter habilitação) 141 | 142 | ### Exercício 5: Loops 143 | 144 | **Objetivo**: Praticar diferentes tipos de loops. 145 | 146 | 1. Crie um arquivo `loops.js`: 147 | ```jsx 148 | // Exercícios com loops 149 | 150 | // Loop for básico 151 | console.log("Contando de 1 a 5:"); 152 | for (let i = 1; i <= 5; i++) { 153 | console.log(i); 154 | } 155 | 156 | // Loop for com break 157 | console.log("\\nLoop com break:"); 158 | for (let i = 1; i <= 10; i++) { 159 | if (i === 6) { 160 | console.log("Encontrei o 6, parando o loop!"); 161 | break; 162 | } 163 | console.log(i); 164 | } 165 | 166 | // Loop for com continue 167 | console.log("\\nPulando números pares:"); 168 | for (let i = 1; i <= 10; i++) { 169 | if (i % 2 === 0) { 170 | continue; // Pula o resto da iteração 171 | } 172 | console.log(i); 173 | } 174 | 175 | // Iterando sobre arrays 176 | const fruits = ["Maçã", "Banana", "Laranja", "Manga", "Uva"]; 177 | console.log("\\nLista de frutas:"); 178 | for (let i = 0; i < fruits.length; i++) { 179 | console.log(`Fruta ${i+1}: ${fruits[i]}`); 180 | } 181 | ``` 182 | 183 | #### Desafios 184 | ##### a) Crie um loop que imprima a tabuada do 7 (de 1 a 10) 185 | ##### b) Crie um array de números e calcule a soma deles usando um loop 186 | ##### c) Crie um loop que identifique o menor valor em um array de números 187 | 188 | ### Exercício 6: Desafio Integrador 189 | 190 | **Objetivo**: Aplicar todos os conceitos aprendidos em conjunto. 191 | 192 | 1. Crie um arquivo `final-challenge.js`: 193 | ```jsx 194 | // Desafio final - integrando todos os conceitos 195 | 196 | // Dados de alunos 197 | const students = [ 198 | { name: "João", age: 20, grades: [85, 90, 78] }, 199 | { name: "Maria", age: 19, grades: [92, 95, 89] }, 200 | { name: "Pedro", age: 21, grades: [70, 65, 80] }, 201 | { name: "Ana", age: 18, grades: [60, 75, 68] }, 202 | { name: "Carlos", age: 22, grades: [90, 88, 92] } 203 | ]; 204 | ``` 205 | 206 | #### Desafios 207 | ##### a) Para cada aluno, calcule a média das notas 208 | ##### b) Determine se cada aluno foi aprovado ou reprovado (média >= 70 para aprovar) 209 | ##### c) Conte quantos alunos foram aprovados e quantos foram reprovados 210 | ##### d) Encontre o aluno com a maior média 211 | ##### e) Calcule a média geral da turma 212 | 213 | > Use console.log() para mostrar todos os resultados com mensagens claras 214 | --------------------------------------------------------------------------------