Baixe o app para aproveitar ainda mais
Prévia do material em texto
DOMINANDO JAVASCRIPT: 100 Exercícios Resolvidos e Comentados para Acelerar seu Aprendizado Ruhan Avila da Conceição Prefácio Seja bem-vindo a este livro onde são apresentados exercícios resolvidos e comentados de JavaScript. Neste livro, você encontrará uma coleção de 100 exercícios elaborados para ajudá-lo a aprimorar suas habilidades de programação nessa poderosa linguagem, amplamente utilizada tanto no front- end, quanto no back-end. Aprender a programar envolve não apenas a compreensão dos conceitos teóricos, mas também a aplicação prática desses conceitos em situações reais. É exatamente isso que você encontrará neste livro: uma ampla variedade de problemas que abrangem desde os fundamentos básicos até desafios mais complexos. Cada exercício é acompanhado de uma solução completa e detalhada, que não apenas apresenta o código-fonte, mas também explica o raciocínio por trás da abordagem adotada. Esses comentários elucidam conceitos importantes, fornecem dicas valiosas e ajudam a entender como a lógica de programação pode ser aplicada de maneira eficiente na resolução de problemas. À medida que você avança pelos exercícios, será desafiado a lidar com questões de manipulação de fórmulas matemáticas, strings, condicionais, laços de repetição, manipulação de vetores, matrizes e muito mais. O objetivo principal deste livro é fornecer um recurso prático e abrangente para programadores em busca de aprimoramento. Seja você um iniciante em JavaScript procurando consolidar seus conhecimentos ou um programador experiente desejando aprofundar sua expertise, esses exercícios servirão como um excelente guia de estudo e referência. Em diversas questões, são apresentadas mais de uma solução para o mesmo problema proposto, envolvendo estratégias e técnicas distintas. Além disso, esse livro pode ser utilizado por professores que desejam obter uma coletânea de exercícios criativos para repassar a seus alunos como exemplos, ou até mesmo atividades. Aproveite esta jornada de aprendizado e aventure-se pelos exercícios resolvidos e comentados de JavaScript. Prepare-se para desafios estimulantes, soluções criativas e uma oportunidade única de aprimorar suas habilidades de programação. Este livro foi escrito utilizando ferramentas de inteligência artificial na elaboração do conteúdo, porém todo material foi revisado e editado pelo autor, a fim de entregar um produto final de alta qualidade. Boa leitura, bons estudos e divirta-se explorando o mundo fascinante da programação em JavaScript! Ruhan Avila da Conceição. Sumário Introdução Fórmulas Matemáticas Strings Condicionais Laços de Repetição Vetores Matrizes Funções Recursivas Lista Completa de Exercícios Sobre o Autor Introdução Se você adquiriu este livro, você quer começar a programar e ser desafiado logicamente o quanto antes, não querendo ler um sermão da montanha. Mas, é importante ressaltarmos algumas coisas antes. Por mais que diversos exercícios possam ser considerados fáceis, se você é novo nesta jornada de programação, é importante você primeiramente tentar resolver o problema para então ir para a resolução do mesmo. Existe mais de uma solução possível para o mesmo problema. E, você precisa pensar e elaborar a sua solução. Então, você compara com a proposta no livro, verifica quais potencialidade de cada uma, e tenta aprender um pouco mais. Se o exercício for muito difícil, e não conseguir resolver, pule para o próximo, e tente novamente no dia seguinte. Não vá de imediato para a resposta, mesmo que você não consiga resolver, e muito menos vá para a resposta sem ao menos tentar. Aprender lógica de programação não é obter a resposta, mas sim trilhar o caminho até chegar na resposta. Dito isto, os demais capítulos deste livro estão divididos de acordo com os tópicos de programação dos exercícios propostos: ● Fórmulas Matemáticas (15 exercícios) ● Strings (10 exercícios) ● Condicionais (20 exercícios) ● Laços de Repetição (25 exercícios) ● Vetores (10 exercícios) ● Matrizes (10 exercícios) ● Funções Recursivas (10 exercícios) Você pode conferir a lista completa de exercícios ao final do livro. A partir de agora, é tudo com você! Fórmulas Matemáticas 1. Escreva um programa que solicite ao usuário dois números e exiba a soma, subtração, multiplicação e divisão entre eles. Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, realizamos as operações de soma, subtração, multiplicação e divisão entre os números. Por fim, utilizamos console.log() para exibir os resultados no console. Ao executar o programa, ele solicitará ao usuário para digitar os dois números. Após a entrada, calculará e exibirá a soma, subtração, multiplicação e divisão dos números fornecidos. 2. Escreva um programa que calcule a média aritmética de dois números. Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, calculamos a média aritmética somando os dois números e dividindo por 2. Por fim, utilizamos console.log() para exibir a média aritmética no console. Ao executar o programa, ele solicitará ao usuário para digitar os dois números. Após a entrada, calculará e exibirá a média aritmética dos números fornecidos. 3. Crie um programa que calcule e exiba a média aritmética de três notas informadas pelo usuário. Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, calculamos a média aritmética somando as três notas e dividindo por 3. Por fim, utilizamos console.log() para exibir a média aritmética no console. Ao executar o programa, ele solicitará ao usuário para digitar as três notas. Após a entrada, calculará e exibirá a média aritmética das notas fornecidas. 4. Escreva um programa que calcule a média geométrica entre três números informados pelo usuário Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, calculamos a média geométrica multiplicando os três números e tirando a raiz cúbica da multiplicação. A função Math.pow() é utilizada para elevar o produto dos números à potência 1/3, que é equivalente a tirar a raiz cúbica. Por fim, utilizamos console.log() para exibir a média geométrica no console. Ao executar o programa, ele solicitará ao usuário para digitar os três números. Após a entrada, calculará e exibirá a média geométrica dos números fornecidos. 5. Escreva um programa que calcule o IMC de um indivíduo, utilizando a fórmula IMC = peso / altura² Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, calculamos o IMC dividindo o peso pela altura ao quadrado. Por fim, utilizamos console.log() para exibir o valor do IMC com duas casas decimais no console. Ao executar o programa, ele solicitará ao usuário para digitar o peso em kg e a altura em metros. Após a entrada, calculará e exibirá o IMC correspondente. 6. Crie um programa que calcule e exiba o perímetro de um círculo, solicitando o raio ao usuário. Neste código, utilizamos a função parseFloat() para converter a entrada do usuário em um número de ponto flutuante. Em seguida, calculamos o perímetro do círculo usando a fórmula 2 * π * raio, onde π é uma constante representada por Math.PI. Por fim, utilizamos console.log() para exibir o valor do perímetro com duas casas decimais no console. Ao executar o programa, ele solicitará ao usuário para digitar o raio do círculo. Após a entrada, calculará e exibirá o perímetro correspondente. 7. Escreva um programa que calcule a área de um círculo a partir do raio, utilizando a fórmula A = πr² Neste código, utilizamos a função parseFloat() para converter a entrada do usuário em um número de ponto flutuante. Em seguida, calculamos a área do círculo usando a fórmula π * raio^2, onde π é uma constante representadapor Math.PI e Math.pow(raio, 2) é usado para elevar o raio ao quadrado. Por fim, utilizamos console.log() para exibir o valor da área com duas casas decimais no console. Ao executar o programa, ele solicitará ao usuário para digitar o raio do círculo. Após a entrada, calculará e exibirá a área correspondente. 8. Escreva um programa que calcule a equação de segundo grau (ax² + bx + c = 0) utilizando as fórmulas de Bhaskara. Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, calculamos o discriminante (delta) utilizando a fórmula b^2 - 4ac. Em seguida, verificamos o valor do discriminante para determinar o tipo de raízes da equação. Se o discriminante for maior que 0, calculamos as duas raízes reais distintas utilizando as fórmulas de Bhaskara. Se o discriminante for igual a 0, calculamos a raiz real única. Caso contrário, exibimos uma mensagem informando que a equação não possui raízes reais. Utilizamos console.log() para exibir as raízes calculadas no console. Ao executar o programa, ele solicitará ao usuário os valores dos coeficientes a, b e c. Após a entrada, calculará e exibirá as raízes reais correspondentes, se existirem, ou uma mensagem informando a ausência de raízes reais. 9. Escreva um programa que calcule o perímetro e a área de um retângulo, utilizando as fórmulas P = 2(l + c) e A = lc, onde l é a largura e c é o comprimento Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, calculamos o perímetro utilizando a fórmula P = 2(l + c) e a área utilizando a fórmula A = lc. Utilizamos console.log() para exibir o perímetro e a área calculados no console. Ao executar o programa, ele solicitará ao usuário a largura e o comprimento do retângulo. Após a entrada, calculará e exibirá o perímetro e a área correspondentes. 10. Escreva um programa que calcule o perímetro e a área de um triângulo, utilizando as fórmulas P = a + b + c e A = (b * h) / 2, onde a, b e c são os lados do triângulo e h é a altura relativa ao lado b. Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, calculamos o perímetro utilizando a fórmula P = a + b + c e a área utilizando a fórmula A = (b * h) / 2. Utilizamos console.log() para exibir o perímetro e a área calculados no console. Ao executar o programa, ele solicitará ao usuário os valores dos lados do triângulo e a altura relativa ao lado B. Após a entrada, calculará e exibirá o perímetro e a área correspondentes. 11. Escreva um programa que calcule a velocidade média de um objeto, utilizando a fórmula v = Δs/Δt, onde v é a velocidade média, Δs é a variação de espaço e Δt é a variação de tempo Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, calculamos a velocidade média utilizando a fórmula v = Δs/Δt. Utilizamos console.log() para exibir a velocidade média calculada no console. Ao executar o programa, ele solicitará ao usuário a variação de espaço (Δs) e a variação de tempo (Δt). Após a entrada, calculará e exibirá a velocidade média correspondente. 12. Escreva um programa que calcule a energia cinética de um objeto em movimento, utilizando a fórmula E = (mv²) / 2, onde E é a energia cinética, m é a massa do objeto e v é a velocidade. Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, calculamos a energia cinética utilizando a fórmula E = (mv²) / 2. Utilizamos console.log() para exibir a energia cinética calculada no console. Ao executar o programa, ele solicitará ao usuário a massa do objeto (m) e a velocidade do objeto (v). Após a entrada, calculará e exibirá a energia cinética correspondente. 13. Escreva um programa que calcule o trabalho realizado por uma força que atua sobre um objeto, utilizando a fórmula T = F * d, onde T é o trabalho, F é a força aplicada e d é a distância percorrida pelo objeto. Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, calculamos o trabalho utilizando a fórmula T = F * d. Utilizamos console.log() para exibir o trabalho realizado no console. Ao executar o programa, ele solicitará ao usuário a força aplicada (F) e a distância percorrida (d). Após a entrada, calculará e exibirá o trabalho realizado pela força. 14. Escreva um programa que leia a posição x e y de dois pontos no plano cartesiano, e calcule a distância entre ambos. Neste código, utilizamos a função parseFloat() para converter as entradas do usuário em números de ponto flutuante. Em seguida, calculamos a diferença entre as coordenadas x e y dos dois pontos. Utilizamos a fórmula da distância Euclidiana para calcular a distância entre os pontos, que envolve a raiz quadrada da soma dos quadrados das diferenças nas coordenadas x e y. Finalmente, exibimos a distância entre os pontos no console usando console.log(). Ao executar o programa, ele solicitará ao usuário as coordenadas x e y de ambos os pontos. Após a entrada, calculará e exibirá a distância entre eles. 15. Crie um programa que solicite ao usuário o valor do raio de uma esfera e calcule e exiba o seu volume. Neste código, utilizamos a função parseFloat() para converter a entrada do usuário em um número de ponto flutuante. Em seguida, aplicamos a fórmula do volume da esfera, que envolve o raio elevado ao cubo. A constante Math.PI é utilizada para representar o valor de π (pi) na fórmula. Finalmente, exibimos o volume da esfera usando console.log(). Usamos o método toFixed(2) para limitar o resultado a duas casas decimais. Ao executar o programa, ele solicitará ao usuário o valor do raio da esfera. Após a entrada, calculará e exibirá o volume da esfera. Strings 16. Crie um programa que leia duas palavras e as concatene, exibindo a palavra resultante. Neste programa, utilizamos a função prompt() para solicitar ao usuário que digite as duas palavras. As palavras digitadas pelo usuário são armazenadas nas variáveis palavra1 e palavra2. Em seguida, utilizamos o operador + para concatenar as duas palavras, formando a palavra resultante, que é armazenada na variável palavraResultante. Por fim, usamos console.log() para exibir a palavra resultante no console do navegador. 17. Faça um programa que receba uma palavra e exiba cada letra separadamente. Neste programa, utilizamos a função prompt() para solicitar ao usuário que digite uma palavra. A palavra digitada é armazenada na variável palavra. Em seguida, utilizamos um laço de repetição for para percorrer cada letra da palavra. A condição i < palavra.length verifica se o índice i é menor que o comprimento da palavra, para percorrer todas as letras. Dentro do laço, utilizamos console.log(palavra[i]) para exibir cada letra separadamente. A expressão palavra[i] representa a letra da palavra na posição i. Ao executar o programa, ele solicitará ao usuário uma palavra. Em seguida, exibirá cada letra da palavra separadamente no console do navegador. 18. Crie um programa que receba uma frase e substitua todas as letras "a" por "e". Utilizando Replace Neste programa, utilizamos a função prompt() para solicitar ao usuário que digite uma frase. A frase digitada é armazenada na variável frase. Em seguida, utilizamos o método replace() em frase para substituir todas as ocorrências de "a" por "e". A expressão /a/g é uma expressão regular que encontra todas as ocorrências da letra "a" na frase. Utilizamos o modificador "g" para fazer a substituição global, ou seja, substituir todas as ocorrências. O resultado da substituição é armazenado na variável novaFrase. Por fim, utilizamos console.log() para exibir a nova frase no console do navegador. Ao executar o programa, ele solicitará ao usuário uma frase. Em seguida, exibirá a nova frase onde todas as letras "a" foram substituídas por "e".Utilizando Laço de Repetição Neste programa, utilizamos a função prompt() para solicitar ao usuário que digite uma frase. A frase digitada é armazenada na variável frase. Em seguida, utilizamos o método split("") em frase para convertê-la em um array de caracteres. Isso nos permite percorrer cada caractere individualmente. Utilizamos um laço de repetição for para percorrer cada caractere da frase. Dentro do laço, verificamos se o caractere atual é igual a "a" (maiúsculo ou minúsculo) utilizando o método toLowerCase(). Se for verdadeiro, substituímos o caractere por "e". Depois de percorrer todos os caracteres, utilizamos o método join("") para unir novamente os caracteres em uma única string, formando a nova frase com as substituições. Por fim, exibimos a nova frase com as substituições utilizando console.log(). Ao executar o programa, ele solicitará ao usuário uma frase. Em seguida, exibirá a nova frase com todas as letras "a" substituídas por "e". 19. Escreva um programa que receba um nome e verifique se o mesmo começa com a letra "A". Neste programa, utilizamos a função prompt() para solicitar ao usuário que digite um nome. O nome digitado é armazenado na variável nome. Em seguida, utilizamos o método charAt(0) em nome para obter o primeiro caractere do nome. Em seguida, utilizamos o método toUpperCase() para converter esse caractere para maiúsculo. Então, comparamos o resultado com a letra "A" utilizando o operador de igualdade (===). Se for verdadeiro, exibimos a mensagem "O nome começa com a letra A". Caso contrário, exibimos a mensagem "O nome não começa com a letra A". Ao executar o programa, ele solicitará ao usuário um nome. Em seguida, exibirá uma mensagem informando se o nome começa com a letra "A" ou não. 20. Faça um programa que leia uma palavra e verifique se a mesma é palíndromo (se pode ser lida da mesma forma de trás para frente). Utilizando Reverse Neste programa, utilizamos a função prompt() para solicitar ao usuário que digite uma palavra. A palavra digitada é armazenada na variável palavra. Em seguida, utilizamos o método toLowerCase() para converter a palavra para minúsculas. Isso garante que a comparação de palíndromo seja feita de forma case-insensitive, ou seja, sem levar em consideração se a palavra é escrita em maiúsculas ou minúsculas. Utilizamos o método split("") para converter a palavra em um array de caracteres. Em seguida, utilizamos os métodos reverse() e join("") para inverter a ordem dos caracteres e uni-los novamente em uma única string, formando a palavra invertida. Por fim, verificamos se a palavra original é igual à palavra invertida. Se forem iguais, significa que a palavra é um palíndromo e exibimos essa informação. Caso contrário, exibimos que a palavra não é um palíndromo. Ao executar o programa, ele solicitará ao usuário uma palavra. Em seguida, exibirá se a palavra é um palíndromo ou não. Utilizando Laço de Repetição Neste programa, utilizamos a função prompt() para solicitar ao usuário que digite a palavra. A palavra digitada é armazenada na variável palavra. Em seguida, utilizamos o método toLowerCase() para converter a palavra para minúsculas. Isso garante que a comparação do palíndromo seja feita de forma case-insensitive, ou seja, sem levar em consideração se a palavra é escrita em maiúsculas ou minúsculas. Inicializamos a variável palavraInvertida vazia, que será usada para armazenar a palavra invertida. Utilizamos um laço de repetição for para percorrer a palavra de trás para frente. Começamos no último índice da palavra (palavra.length - 1) e decrementamos o índice até chegar ao primeiro caractere (i >= 0). Em cada iteração, concatenamos o caractere na variável palavraInvertida. Após percorrer toda a palavra, verificamos se a palavra invertida (palavraInvertida) é igual à palavra original (palavra). Se forem iguais, significa que a palavra é um palíndromo e exibimos essa informação. Caso contrário, exibimos que a palavra não é um palíndromo. Ao executar o programa, ele solicitará ao usuário que digite uma palavra. Em seguida, exibirá se a palavra é um palíndromo ou não. 21. Crie um programa que leia duas palavras e verifique se a segunda palavra é um anagrama da primeira. Neste programa, utilizamos a função prompt() para solicitar ao usuário que digite as duas palavras. As palavras digitadas são armazenadas nas variáveis palavra1 e palavra2. Em seguida, utilizamos o método toLowerCase() para converter as palavras para minúsculas. Isso garante que a comparação dos anagramas seja feita de forma case-insensitive, ou seja, sem levar em consideração se as palavras são escritas em maiúsculas ou minúsculas. Utilizamos o método split("") para converter as palavras em arrays de caracteres. Em seguida, utilizamos o método sort() para ordenar os arrays de caracteres em ordem alfabética. Por fim, verificamos se os arrays ordenados são iguais. Se forem iguais, significa que a segunda palavra é um anagrama da primeira e exibimos essa informação. Caso contrário, exibimos que a segunda palavra não é um anagrama da primeira. Ao executar o programa, ele solicitará ao usuário as duas palavras. Em seguida, exibirá se a segunda palavra é um anagrama da primeira. 22. Escreva um programa que receba um nome completo e exiba somente o primeiro nome. Neste programa, utilizamos a função prompt() para solicitar ao usuário que digite o nome completo. O nome completo digitado é armazenado na variável nomeCompleto. Em seguida, utilizamos o método split(" ") para dividir o nome completo em partes, utilizando o espaço como separador. Isso cria um array chamado partesNome, onde cada elemento do array representa uma parte do nome. O primeiro nome está na primeira posição do array partesNome, que corresponde ao índice 0. Armazenamos o primeiro nome na variável primeiroNome. Por fim, exibimos o primeiro nome utilizando a função console.log(). Ao executar o programa, ele solicitará ao usuário que digite o nome completo. Em seguida, exibirá apenas o primeiro nome. 23. Faça um programa que receba uma frase e exiba a quantidade de espaços em branco presentes na mesma. Utilizando Laço de Repetição Neste programa, utilizamos a função prompt() para solicitar ao usuário que digite uma frase. A frase digitada é armazenada na variável frase. Em seguida, inicializamos a variável quantidadeEspacos com o valor zero, que será utilizada para contar a quantidade de espaços em branco. Utilizamos um laço de repetição for para percorrer cada caractere da frase. Para cada caractere, verificamos se ele é um espaço em branco, comparando- o com " ". Se for um espaço em branco, incrementamos a variável quantidadeEspacos. Por fim, utilizamos a função console.log() para exibir a quantidade de espaços em branco presentes na frase. Ao executar o programa, ele solicitará ao usuário que digite uma frase. Em seguida, exibirá a quantidade de espaços em branco presentes na frase. Sem Utilizar Laço de Repetição Se você deseja contar os espaços em branco em uma frase sem usar laço de repetição, você pode utilizar a função split para dividir a frase em palavras e, em seguida, calcular o comprimento do array resultante. Aqui está um exemplo de como fazer isso em JavaScript: Neste exemplo, utilizamos a função split para dividir a frase em palavras, utilizando o espaço em branco como delimitador. Em seguida, subtraímos 1 do comprimento do array palavras para obter a quantidade de espaços em branco. A subtração é necessária porque a quantidade de espaços em branco é sempre igual ao número de palavras menos 1. Por fim, exibimos a quantidade de espaços em branco utilizando console.log. Dessa forma, o programa contará quantas palavras existem na frase e exibirá a quantidade de espaços em branco. 24. Crie um programa que leia uma palavra e exiba a quantidade de vogais presentes na mesma. Para contar a quantidade de vogais em uma palavra em JavaScript, você pode percorrer cada letra da palavra e verificar se ela é uma vogal. Aqui está um exemplo de comofazer isso: Utilizando Laço de Repetição Neste exemplo, usamos um loop for para percorrer cada letra da palavra. Dentro do loop, verificamos se a letra é uma vogal, comparando-a com as vogais "a", "e", "i", "o" e "u". Se a letra for uma vogal, incrementamos a variável quantidadeVogais. Por fim, exibimos a quantidade de vogais utilizando console.log. Dessa forma, o programa contará quantas vogais existem na palavra digitada pelo usuário. Lembre-se de que este exemplo considera apenas as vogais "a", "e", "i", "o" e "u" em letras minúsculas. Se você deseja considerar vogais maiúsculas ou outras vogais acentuadas, você pode adicionar mais condições no if ou utilizar expressões regulares para fazer a verificação. Utilizando Expressões Regulares Você também pode utilizar expressões regulares para contar a quantidade de vogais em uma palavra em JavaScript. Veja como você pode fazer isso: Neste exemplo, utilizamos a função match em conjunto com a expressão regular [aeiou] para encontrar todas as vogais na palavra. O modificador g indica que queremos encontrar todas as ocorrências e o modificador i torna a busca case-insensitive, considerando tanto letras maiúsculas quanto minúsculas. Em seguida, verificamos se foram encontradas vogais utilizando um operador ternário. Se vogais for verdadeiro (ou seja, se foram encontradas vogais), obtemos o seu comprimento, que representa a quantidade de vogais. Caso contrário, a quantidade de vogais é definida como zero. Por fim, exibimos a quantidade de vogais utilizando console.log. Dessa forma, o programa contará quantas vogais existem na palavra digitada pelo usuário, utilizando expressões regulares. Utilizando Programação Funcional Utilizando a função filter em conjunto com um array de vogais, podemos contar a quantidade de vogais em uma palavra. Veja como ficaria o código: Neste exemplo, criamos um array vogais contendo as vogais que desejamos buscar. Em seguida, utilizamos a função split para converter a palavra em um array de caracteres, e a função filter para filtrar apenas as letras que estão presentes no array de vogais. Utilizamos também a função toLowerCase para tornar a comparação case-insensitive. Por fim, obtemos a quantidade de vogais encontradas através do comprimento do array vogaisEncontradas e exibimos o resultado utilizando console.log. Assim, o programa irá contar quantas vogais existem na palavra digitada pelo usuário, utilizando a função filter. 25. Escreva um programa que receba um nome completo e exiba o sobrenome (último nome) primeiro. Para exibir o sobrenome primeiro em um nome completo, podemos usar a função split para dividir o nome em partes e, em seguida, reorganizar a ordem dos elementos. Veja como pode ser feito em JavaScript: Neste exemplo, o programa solicita ao usuário o nome completo. Em seguida, usamos a função split para dividir o nome em partes, utilizando o espaço como separador. Isso nos dá um array contendo cada parte do nome. Em seguida, usamos a função pop para obter o último elemento do array, que corresponde ao sobrenome. Removemos esse elemento do array utilizando pop. Depois, usamos a função unshift para adicionar o sobrenome no início do array partesNome, reorganizando a ordem dos elementos. Por fim, utilizamos a função join para juntar as partes do nome em uma única string, separadas por espaços. A variável nomeInvertido contém o nome completo com o sobrenome primeiro. Condicionais 26. Faça um programa que solicite a idade de uma pessoa e exiba se ela é maior de idade ou não. Neste programa, utilizamos a função prompt para solicitar a idade da pessoa ao usuário. Em seguida, usamos uma estrutura de condicional if...else para verificar se a idade é maior ou igual a 18. Se for, exibimos a mensagem "Maior de idade". Caso contrário, exibimos a mensagem "Menor de idade". Você pode executar esse código em um ambiente JavaScript, como o console do navegador, para testá-lo. Lembre-se de fornecer um valor numérico válido para a idade. 27. Faça um programa que leia dois números e informe qual é o maior. Neste programa, utilizamos a função prompt para solicitar os dois números ao usuário. Em seguida, convertemos as entradas de string para número utilizando a função parseFloat. Em seguida, comparamos os números utilizando uma estrutura de condicional if...else. Se o numero1 for maior que o numero2, exibimos a mensagem "O primeiro número é maior". Se o numero2 for maior que o numero1, exibimos a mensagem "O segundo número é maior". Caso contrário, exibimos a mensagem "Os números são iguais". Você pode executar esse código em um ambiente JavaScript, como o console do navegador, para testá-lo. Lembre-se de fornecer valores numéricos válidos para os números. 28. Escreva um programa que solicite três números ao usuário e exiba o maior deles. Neste programa, utilizamos a função prompt para solicitar os três números ao usuário. Em seguida, convertemos as entradas de string para número utilizando a função parseFloat. Em seguida, utilizamos uma variável maior para armazenar o maior número encontrado. Inicialmente, consideramos o primeiro número como o maior. Em seguida, comparamos o segundo e terceiro número com o atual maior, atualizando o valor da variável maior se necessário. Por fim, exibimos o maior número utilizando console.log. 29. Faça um programa que leia um número e informe se ele é par ou ímpar. Neste programa, utilizamos a função prompt para solicitar um número ao usuário. Em seguida, convertemos a entrada de string para número utilizando a função parseInt. Em seguida, verificamos se o número é par ou ímpar utilizando o operador de módulo %. Se o resto da divisão por 2 for igual a 0, o número é par. Caso contrário, é ímpar. Utilizamos a estrutura condicional if...else para exibir a mensagem correspondente. 30. Faça um programa que leia um número e informe se ele é positivo, negativo ou zero. Neste programa, utilizamos a função prompt para solicitar um número ao usuário. Em seguida, convertemos a entrada de string para número utilizando a função parseFloat. Em seguida, utilizamos uma estrutura condicional if...else if...else para verificar se o número é positivo, negativo ou zero. Se o número for maior que 0, ele é positivo. Se for menor que 0, é negativo. Caso contrário, é zero. 31. Faça um programa que leia as notas de duas provas e informe se o aluno foi aprovado (nota maior ou igual a 6) ou reprovado (nota menor que 6) em cada uma das provas. Neste programa, utilizamos a função prompt para solicitar as notas das provas ao usuário. Em seguida, convertemos as entradas de string para números utilizando a função parseFloat. Em seguida, utilizamos uma estrutura condicional if...else para verificar se o aluno foi aprovado ou reprovado em cada prova. Se a nota for maior ou igual a 6, o aluno é aprovado. Caso contrário, é reprovado. 32. Faça um programa que leia as notas de duas provas, calcule a média aritmética simples, e informe se o aluno foi aprovado (média maior ou igual a 6) ou reprovado (média menor que 6). Neste programa, utilizamos a função prompt para solicitar as notas das provas ao usuário. Em seguida, convertemos as entradas de string para números utilizando a função parseFloat. Calculamos a média aritmética das notas dividindo a soma delas por 2. Em seguida, utilizamos uma estrutura condicional if...else para verificar se a média é maior ou igual a 6. Se sim, o aluno é aprovado. Caso contrário, é reprovado. A função toFixed(2) é usada para limitar o número de casas decimais da média para duas. 33. Faça um programa que leia três números, e informe se a soma deles é divisível por 5 ou não. Neste programa, lemos os três números informados pelo usuário usando a função prompt e convertemos os valores para números inteiros usando a função parseInt. Em seguida, calculamos a soma dos números. Por fim, verificamos se a soma é divisível por 5 usando o operador de módulo %. Se o resto da divisão for igual a zero, significa que a soma é divisível por 5 e exibimos amensagem correspondente. Caso contrário, exibimos a mensagem de que a soma não é divisível por 5. 34. Crie um programa que leia três números e verifique se a soma deles é positiva, negativa ou igual a zero Neste programa, lemos os três números informados pelo usuário usando a função prompt e convertemos os valores para números de ponto flutuante usando a função parseFloat. Em seguida, calculamos a soma dos números. Depois, verificamos o resultado da soma usando condicionais if, else if e else. Se a soma for maior que zero, exibimos a mensagem de que a soma é positiva. Se a soma for menor que zero, exibimos a mensagem de que a soma é negativa. Caso contrário, exibimos a mensagem de que a soma é igual a zero. 35. Faça um programa que leia três números e informe qual é o maior e qual é o menor. Neste programa, lemos os três números informados pelo usuário usando a função prompt e convertemos os valores para números de ponto flutuante usando a função parseFloat. Em seguida, utilizamos condicionais if para comparar cada número com as variáveis maior e menor. Se algum número for maior que o atual valor de maior, atualizamos a variável maior com esse número. Da mesma forma, se algum número for menor que o atual valor de menor, atualizamos a variável menor com esse número. Por fim, exibimos o resultado na tela utilizando a função console.log, informando qual é o maior número e qual é o menor número. 36. Faça um programa que leia a idade de três pessoas e informe se alguma delas é maior de idade (idade maior ou igual a 18), se todas são maiores de idade, ou se todas são menores de idade (idade inferior a 18 anos). Neste programa, utilizamos a função prompt para ler as idades informadas pelo usuário e convertemos os valores para números inteiros usando a função parseInt. Em seguida, usamos condicionais if para verificar as idades. Primeiro, verificamos se todas as idades são maiores ou igual a 18 usando o operador lógico && (E). Se a condição for verdadeira, exibimos a mensagem "Todas as pessoas são maiores de idade". Depois, verificamos se todas as idades são menores que 18 usando o operador lógico && (E). Se a condição for verdadeira, exibimos a mensagem "Todas as pessoas são menores de idade". Por fim, se nenhuma das condições anteriores for verdadeira, significa que ao menos uma pessoa é maior de idade (porém não todas), então exibimos a mensagem "Alguma das pessoas é maior de idade". 37. Faça um programa que leia três números e informe se eles podem ser os lados de um triângulo (a soma de dois lados deve ser sempre maior que o terceiro lado). Neste programa, usamos a função prompt para ler os valores dos três lados do triângulo fornecidos pelo usuário. Utilizamos a função parseFloat para converter os valores em números decimais. Em seguida, aplicamos a condição para verificar se a soma de dois lados é sempre maior que o terceiro lado. Se essa condição for verdadeira para todos os três lados, exibimos a mensagem "Os números podem ser os lados de um triângulo". Caso contrário, exibimos a mensagem "Os números não podem formar um triângulo". 38. Faça um programa que leia o ano de nascimento de uma pessoa e informe se ela está apta a votar (idade maior ou igual a 16 anos). Neste programa, utilizamos a função getFullYear do objeto Date para obter o ano atual. Em seguida, solicitamos ao usuário que digite o ano de nascimento. A função parseInt é usada para converter o valor em um número inteiro. Calculamos a idade da pessoa subtraindo o ano de nascimento do ano atual. Em seguida, verificamos se a idade é maior ou igual a 16 anos. Se for, exibimos a mensagem "Você está apto(a) a votar!". Caso contrário, exibimos a mensagem "Você ainda não está apto(a) a votar." 39. Faça um programa que leia a idade de uma pessoa e informe se ela não está apta a votar (idade inferior a 16 anos), se está apta a votar, porém não é obrigada (16, 17 anos, ou idade igual ou superior a 70 anos), ou se é obrigada (18 a 69 anos). Neste programa, lemos a idade da pessoa usando a função parseInt para converter o valor em um número inteiro. Em seguida, utilizamos condicionais if, else if e else para verificar as condições de votação. Se a idade for inferior a 16, exibimos a mensagem "Você não está apto(a) a votar". Caso contrário, se a idade estiver entre 16 e 17 anos ou igual ou superior a 70 anos, exibimos a mensagem "Você está apto(a) a votar, porém não é obrigado(a)". Por fim, se a idade estiver entre 18 e 69 anos, exibimos a mensagem "Você está apto(a) a votar e é obrigado(a) a participar das eleições". 40. Faça um programa que leia três notas de um aluno e informe se ele foi aprovado (nota final maior ou igual a 7), reprovado (nota final menor que 4) ou ficou de recuperação (nota final entre 4 e 7). Neste programa, lemos as três notas do aluno usando a função parseFloat para converter os valores em números decimais. Em seguida, calculamos a média das notas dividindo a soma das três notas por 3. Depois disso, utilizamos condicionais if, else if e else para verificar a situação do aluno com base na média obtida. Se a média for maior ou igual a 7, exibimos a mensagem "Aluno aprovado!". Se a média for menor que 4, exibimos a mensagem "Aluno reprovado!". Caso contrário, ou seja, se a média estiver entre 4 e 7, exibimos a mensagem "Aluno em recuperação!". 41. Faça um programa que solicite o nome de um dia da semana e exiba se é um dia útil (segunda a sexta-feira) ou um dia de fim de semana (sábado e domingo). Neste programa, utilizamos a função prompt para solicitar o nome do dia da semana ao usuário. Em seguida, convertemos o nome para letras minúsculas usando o método toLowerCase() para facilitar a comparação. Utilizamos condicionais if e else if para verificar se o dia informado é um sábado, domingo, segunda-feira, terça-feira, quarta-feira, quinta-feira ou sexta-feira. Se for um sábado ou domingo, exibimos a mensagem "É um dia de fim de semana!". Se for um dos dias úteis (segunda a sexta-feira), exibimos a mensagem "É um dia útil!". Caso contrário, ou seja, se o dia informado não corresponder a nenhum dos dias válidos, exibimos a mensagem "Dia inválido!". Note que neste exemplo, a entrada "segunda-feira", por exemplo, seria rejeitada. Para consertar isso, podemos considerar o código abaixo: Neste código, utilizamos o método includes() para verificar se a string dia contém as palavras "sábado", "domingo", "segunda", "terça", "quarta", "quinta" ou "sexta". Se a palavra estiver presente na string, a condição correspondente será satisfeita. Assim, a entrada "segunda-feira", por exemplo, seria considerada como um dia útil, ao invés de um dia inválido. 42. Escreva um programa que solicite a altura e o peso de uma pessoa e calcule o seu índice de massa corporal (IMC), exibindo a categoria correspondente (abaixo do peso, peso normal, sobrepeso, obesidade, obesidade grave). Neste programa, solicitamos a altura e o peso da pessoa usando prompt() e armazenamos os valores nas variáveis altura e peso, respectivamente. Em seguida, calculamos o IMC dividindo o peso pela altura ao quadrado. Depois, utilizamos uma sequência de condicionais if e else if para determinar em qual faixa de IMC a pessoa se encontra. Com base no valor do IMC, exibimos a categoria correspondente. 43. Escreva um programa que solicite um número inteiro e verifique se é divisível por 3 e por 5 ao mesmo tempo. Neste programa, utilizamos prompt() para solicitar um número inteiro ao usuário e armazenamos o valor na variável numero. Em seguida, verificamos se o número é divisível por 3 e por 5 ao mesmo tempo usando o operador % para calcular o resto da divisão. Se o resto da divisão por 3 for igual a 0 e o resto da divisão por 5 também for igual a 0, o número é divisível por 3 e por 5 simultaneamente. Caso contrário, o número não é divisível por 3 e por 5 ao mesmo tempo. 44. Crie um programa que solicite a idade de uma pessoa e exiba se ela é criança (0-12 anos), adolescente (13-17 anos), adulto (18-59 anos) ou idoso (60anos ou mais). Neste programa, utilizamos prompt() para solicitar a idade da pessoa e armazenamos o valor na variável idade. Em seguida, utilizamos uma sequência de if e else if para verificar a faixa etária correspondente. 45. Faça um programa que solicite dois números e exiba se o primeiro é divisível pelo segundo. Neste programa, utilizamos prompt() para solicitar os dois números e armazenamos os valores nas variáveis numero1 e numero2. Em seguida, verificamos se o resto da divisão entre numero1 e numero2 é igual a zero utilizando o operador %. Se for igual a zero, isso significa que o primeiro número é divisível pelo segundo. Caso contrário, o primeiro número não é divisível pelo segundo. O programa exibe uma mensagem indicando se o primeiro número é divisível pelo segundo ou não. Laços de Repetição 46. Escreva um programa que exiba os números de 1 a 10 utilizando um laço de repetição Utilizando while Nesse programa, definimos a variável i com o valor inicial 1. Em seguida, utilizamos um laço de repetição while para iterar enquanto i for menor ou igual a 10. A cada iteração, exibimos o valor de i utilizando console.log() e, em seguida, incrementamos o valor de i utilizando o operador ++. Utilizando for Neste programa, utilizamos um for para iterar de 1 a 10. A variável i começa com o valor 1 e o laço se repete enquanto i for menor ou igual a 10. A cada iteração, exibimos o valor de i utilizando console.log(). 47. Escreva um programa que exiba todos os números de 1 a 100 Utilizando while Neste programa, inicializamos a variável i com 1 fora do loop. Em seguida, usamos um loop while que verifica se i é menor ou igual a 100 a cada iteração. Dentro do loop, usamos a função console.log() para exibir o valor de i no console do navegador ou do ambiente Node.js. Por fim, incrementamos a variável i em 1 a cada iteração do loop. Utilizando for Neste programa, usamos um loop for que itera de 1 até 100, incrementando de 1 em 1 a cada iteração. Dentro do loop, usamos a função console.log() para exibir o valor de i no console do navegador ou do ambiente Node.js. 48. Escreva um programa que exiba todos os números pares de 1 a 100. Utilizando while Nesse programa, iniciamos a variável i com o valor 2 (o primeiro número par) e, em seguida, utilizamos um laço de repetição while. A condição i <= 100 garante que o laço irá executar até o número 100. Dentro do laço, exibimos o valor de i utilizando console.log() e, em seguida, incrementamos i em 2 unidades com i += 2. Utilizando for Nesse programa, utilizamos um laço de repetição for com uma variável i iniciando em 2 (o primeiro número par) e incrementando de 2 em 2 a cada iteração. A condição i <= 100 garante que o laço irá executar até o número 100. Em cada iteração, exibimos o valor de i utilizando console.log(). 49. Escreva um programa que exiba os números pares de 1 a 50 e os números ímpares de 51 a 100 utilizando um laço de repetição. Utilizando while Nesse programa, utilizamos dois laços de repetição while. O primeiro laço exibe os números pares de 1 a 50, iniciando a variável i com o valor 2 e incrementando-a em 2 unidades a cada iteração. O segundo laço exibe os números ímpares de 51 a 100, iniciando a variável j com o valor 51 e incrementando-a em 2 unidades a cada iteração. Ao executar esse programa, ele irá exibir os números pares de 1 a 50 e os números ímpares de 51 a 100 no console. Utilizando for Nesse programa, utilizamos dois laços de repetição for. O primeiro laço exibe os números pares de 1 a 50, iniciando a variável i com o valor 2 e incrementando-a em 2 unidades a cada iteração. O segundo laço exibe os números ímpares de 51 a 100, iniciando a variável i com o valor 51 e incrementando-a em 2 unidades a cada iteração. Ao executar esse programa, ele irá exibir os números pares de 1 a 50 e os números ímpares de 51 a 100 no console. Utilizando apenas um laço de repetição Neste programa, utilizamos um único laço de repetição while. A variável num inicia em 1 e incrementa em 1 unidade a cada iteração. Dentro do laço, verificamos se o número está na faixa de 1 a 50 e é par. Se sim, exibimos o número seguido de "(par)". Caso contrário, verificamos se o número está na faixa de 51 a 100 e é ímpar. Se sim, exibimos o número seguido de "(ímpar)". 50. Crie um programa que solicite ao usuário um número e exiba a tabuada desse número utilizando um laço de repetição. Neste programa, utilizamos a função prompt para solicitar ao usuário um número. Em seguida, criamos um laço de repetição for que itera de 1 a 10, calculando o resultado da multiplicação entre o número informado e o valor da iteração. A cada iteração, exibimos a multiplicação na forma "número x i = resultado" utilizando a função console.log. 51. Escreva um programa que imprima na tela a tabuada de todos os números de 1 a 10 Neste programa, usamos um primeiro laço de repetição for que itera de 1 a 10, representando o número para o qual queremos gerar a tabuada. Dentro desse laço, temos outro laço de repetição for que itera de 1 a 10, representando os multiplicadores da tabuada. A cada iteração, calculamos o resultado da multiplicação e exibimos na forma "número x multiplicador = resultado". Depois de imprimir a tabuada de um número, adicionamos uma linha em branco para separar as tabuadas. 52. Escreva um programa que solicite ao usuário um número N e exiba a soma de todos os números de 1 a N. Neste programa, utilizamos a função parseInt() para converter a entrada do usuário em um número inteiro. Em seguida, verificamos se o número digitado é um valor válido (positivo e maior ou igual a 1). Se não for, exibimos uma mensagem de erro. Caso o número seja válido, inicializamos uma variável soma com valor zero e utilizamos um loop for para somar os números de 1 a N. A cada iteração, somamos o valor atual de i à variável soma. 53. Faça um programa que calcule e exiba a soma dos números pares de 1 a 100 utilizando um laço de repetição. Neste programa, iniciamos a variável soma com o valor zero. Em seguida, utilizamos um loop for para percorrer os números de 1 a 100, incrementando de 2 em 2 (apenas os números pares). A cada iteração, adicionamos o valor atual de i à variável soma. 54. Escreva um programa que calcule e exiba o valor da potência de um número informado pelo usuário elevado a um expoente também informado pelo usuário, utilizando laços de repetição. Neste programa, utilizamos a função prompt para solicitar ao usuário o número base e o expoente. Os valores informados são convertidos para números inteiros usando parseInt. Em seguida, temos um loop for que multiplica o número base pelo próprio número base, repetindo o processo de acordo com o valor do expoente. A cada iteração, o resultado é atualizado com a multiplicação do resultado anterior pelo número base. Por fim, exibimos o resultado da potência calculada usando console.log. Versão simplificada Neste programa, utilizamos a função prompt para solicitar ao usuário o número base e o expoente. O valor da base é convertido para um número de ponto flutuante usando parseFloat, enquanto o valor do expoente é convertido para um número inteiro usando parseInt. Em seguida, utilizamos a função Math.pow() para calcular a potência do número base elevado ao expoente informado pelo usuário. Por fim, exibimos o resultado da potência calculada usando console.log. 55. Escreva um programa que solicite ao usuário um número N e diga se o mesmo é primo ou não. Lembre-se de que um número primo é aquele que é divisível apenas por 1 e por ele mesmo, sem ter outros divisores. Neste programa, solicitamos ao usuário um número usando a função prompt e o convertemos para um número inteiro usando parseInt. Em seguida, utilizamos um laço for para verificar se o número é divisível por algum número entre 2 e a sua metade. Se encontrar um divisor, definimos a variável primo como false e interrompemos o laço usando break. Por fim, exibimos o resultado usando console.log, informando se o número é primoou não. 56. Escreva um programa que solicite ao usuário um número N e exiba todos os números primos menores que N. Neste programa, utilizamos a função prompt para solicitar ao usuário um número, que é armazenado na variável numero após ser convertido para um número inteiro usando parseInt. Em seguida, utilizamos um laço for para percorrer os números de 2 até numero - 1. Para cada número, definimos uma variável isPrimo como true e, em seguida, utilizamos outro laço for para verificar se o número é divisível por algum número entre 2 e o próprio número - 1. Se for divisível por algum número, atualizamos a variável isPrimo para false e interrompemos o laço usando break. Após percorrer todos os possíveis divisores, verificamos se a variável isPrimo é true. Se for, significa que o número é primo e o exibimos usando console.log. Utilizando Funções Neste programa, utilizamos a função prompt para solicitar ao usuário um número, que é armazenado na variável numero após ser convertido para um número inteiro usando parseInt. Em seguida, definimos a função isPrimo para verificar se um número é primo. A função verifica se o número é menor ou igual a 1 (caso seja, não é primo) e, em seguida, verifica se o número é divisível por algum número entre 2 e a sua raiz quadrada. Se for divisível por algum número, não é primo; caso contrário, é primo. Por fim, utilizamos um laço for para percorrer os números de 2 até numero - 1. Para cada número, verificamos se é primo usando a função isPrimo e, se for, exibimos o número usando console.log. 57. Crie um programa que exiba os primeiros N números primos, onde N é informado pelo usuário, utilizando um laço de repetição. Neste programa, removemos a função isPrimo e incorporamos a lógica de verificação diretamente no laço while. A cada iteração do laço, verificamos se o número atual (num) é primo ou não. Dentro do laço while, definimos uma variável booleana isPrimo como true. Em seguida, utilizamos um laço for para verificar se o número é divisível por algum valor entre 2 e a raiz quadrada do número. Se encontrar um divisor, atualizamos isPrimo para false e interrompemos o laço utilizando break. Após o laço for, verificamos se isPrimo é verdadeiro. Se for, exibimos o número atual (num) e incrementamos a variável count. Assim, continuamos o processo até exibir os primeiros N números primos. Utilizando uma função específica Neste programa, utilizamos a função prompt para solicitar ao usuário um número, que é armazenado na variável N após ser convertido para um número inteiro usando parseInt. Em seguida, temos a função isPrimo que verifica se um número é primo. Começamos verificando se o número é menor que 2, pois por convenção, números menores que 2 não são considerados primos. Em seguida, utilizamos um laço for para iterar de 2 até a raiz quadrada do número, verificando se o número é divisível por algum desses valores. Se for divisível, retornamos false, caso contrário, retornamos true. Depois disso, utilizamos um laço while para exibir os primeiros N números primos. Enquanto a variável count for menor que N, incrementamos o número i e verificamos se ele é primo utilizando a função isPrimo. Se for primo, exibimos o número e incrementamos o count. Assim, continuamos até atingir a quantidade desejada de números primos. 58. Crie um programa que exiba os primeiros N números primos, onde N é informado pelo usuário, utilizando um laço de repetição. Neste programa, utilizamos um laço for para calcular o fatorial do número informado pelo usuário. Começamos com o valor fatorial igual a 1 e, em cada iteração do laço, multiplicamos o valor de fatorial pelo número atual (i), que varia de 2 até o número informado (N). Ao final do laço, o valor de fatorial será o fatorial de N. Em seguida, utilizamos console.log para exibir o resultado ao usuário. 59. Escreva um programa que solicite ao usuário dois números A e B e exiba todos os números entre A e B. Neste programa, utilizamos a estrutura de controle if-else para verificar se o número A é menor que o número B ou se é maior. Dependendo dessa comparação, utilizamos o laço for para iterar pelos números entre A e B. Se A for menor que B, percorremos os números entre A+1 e B-1 (excluindo A e B) em ordem crescente e exibimos cada um deles usando console.log. Se A for maior que B, percorremos os números entre A-1 e B+1 (excluindo A e B) em ordem decrescente e exibimos cada um deles usando console.log. Caso A seja igual a B, significa que não há números entre eles e exibimos uma mensagem indicando isso. Dessa forma, o programa solicita dois números A e B, exibe todos os números entre eles (em ordem crescente ou decrescente) e trata o caso em que os números são iguais. 60. Escreva um programa que leia números do usuário até que seja digitado um número negativo, e exiba a soma dos números positivos. Neste programa, utilizamos um laço de repetição do-while para ler os números do usuário até que seja digitado um número negativo. A cada iteração do laço, verificamos se o número digitado é maior ou igual a zero. Se for, adicionamos esse número à variável sum, que armazena a soma dos números positivos. Ao ser digitado um número negativo, o laço é interrompido e exibimos a soma dos números positivos usando console.log. 61. Faça um programa que solicite ao usuário um número e exiba a sequência de Fibonacci até o número informado utilizando um laço de repetição. Neste programa, solicitamos ao usuário um número e armazenamos o valor em number. Inicializamos duas variáveis: prevNumber para armazenar o número anterior na sequência de Fibonacci e currentNumber para armazenar o número atual. Em seguida, usamos um laço de repetição while para gerar a sequência de Fibonacci até que o currentNumber seja menor ou igual ao número informado. A cada iteração, exibimos o currentNumber usando console.log e calculamos o próximo número da sequência somando o prevNumber ao currentNumber. Em seguida, atualizamos o prevNumber com o valor anterior e o currentNumber com o próximo valor. Utilizando Array Neste programa, solicitamos ao usuário um número e armazenamos o valor em number. Em seguida, inicializamos a sequência de Fibonacci com os dois primeiros números, 0 e 1, na array sequence. Usamos um laço de repetição while para gerar a sequência de Fibonacci até que o último número gerado seja menor ou igual ao número informado. A cada iteração, calculamos o próximo número somando os dois últimos números da sequência e adicionamos esse número à array sequence. Depois de gerar a sequência, utilizamos outro laço de repetição for para percorrer a array sequence e exibir cada número em uma linha separada usando console.log. 62. Escreva um programa que leia números do usuário até que seja digitado zero, e exiba a média dos números digitados. Neste programa, utilizamos um laço de repetição do-while para ler os números digitados pelo usuário. O programa continuará lendo números até que seja digitado zero. A cada iteração, verificamos se o número digitado é diferente de zero. Se for, adicionamos o número à variável sum para calcular a soma total dos números e incrementamos a variável count para contar a quantidade de números digitados. Após o término do laço, verificamos se a variável count é diferente de zero para evitar a divisão por zero. Se houver números digitados, calculamos a média dividindo a soma sum pela quantidade count e exibimos o resultado utilizando console.log. Caso nenhum número tenha sido digitado, exibimos uma mensagem informando que nenhum número foi digitado. 63. Escreva um programa que solicite ao usuário uma lista de números, até o usuário digitar o número zero, e exiba o maior e o menor número da lista. Para resolver esse problema em JavaScript sem utilizar um array, você pode armazenar as variáveis min e max para acompanhar o menor e o maior número, respectivamente. A cada número digitado pelo usuário, você atualiza essas variáveis se o número for menor que min ou maior que max. O programa continuasolicitando números até que o usuário digite zero. Aqui está um exemplo: Neste programa, utilizamos um loop do-while para garantir que pelo menos um número seja inserido. As variáveis min e max são inicializadas com valores extremos para garantir que qualquer número digitado pelo usuário seja menor que min e maior que max inicialmente. Utilizando Array Neste programa, utilizamos um laço do-while para solicitar ao usuário um número repetidamente até que seja digitado o número zero. Cada número digitado pelo usuário é convertido para um número de ponto flutuante usando parseFloat e adicionado ao array numbers, desde que seja diferente de zero e seja um número válido. Após a finalização do laço, verificamos se o array numbers contém algum número. Se contiver, inicializamos as variáveis min e max com o primeiro número do array e, em seguida, percorremos os números restantes no array para encontrar o menor e o maior número, atualizando as variáveis min e max quando necessário. Finalmente, se o array numbers estiver vazio, exibimos a mensagem "Nenhum número foi digitado." Caso contrário, exibimos o menor número e o maior número usando console.log. 64. Escreva um programa que solicite ao usuário uma frase e exiba a quantidade de vogais na frase. Neste exemplo, criamos um array vogais com todas as vogais minúsculas. Em seguida, percorremos a frase caractere por caractere usando um loop for. Para cada caractere, convertemos para minúsculo usando toLowerCase() para que possamos comparar com as vogais em minúsculo. Dentro do loop, verificamos se o caractere atual está presente no array vogais usando includes(). Se estiver, incrementamos a variável quantidadeVogais. Utilizando Expressões Regulares Para contar a quantidade de vogais em uma frase em JavaScript, você pode utilizar expressões regulares e o método match() para encontrar todas as ocorrências de vogais na frase. Aqui está um exemplo de como você pode fazer isso: Neste exemplo, utilizamos a expressão regular /[aeiou]/gi para encontrar todas as ocorrências de vogais na frase. A flag g é usada para encontrar todas as ocorrências e a flag i é usada para ignorar a diferença entre letras maiúsculas e minúsculas. Em seguida, verificamos se o resultado de frase.match(/[aeiou]/gi) é diferente de null, o que significa que foram encontradas vogais na frase. Se sim, contamos o comprimento do array vogais para obter a quantidade de vogais. Caso contrário, exibimos a mensagem de que a frase não contém vogais. 65. Escreva um programa que solicite ao usuário uma frase e exiba a frase de trás para frente Neste exemplo, utilizamos um loop for iniciando na última posição da frase (frase.length - 1) e percorrendo até a primeira posição (i >= 0). A cada iteração do loop, concatenamos o caractere atual à variável fraseInvertida. No final do programa, exibimos a frase invertida através do console.log(). Forma simplificada Você pode inverter uma frase digitada pelo usuário em JavaScript utilizando o método split, reverse e join. Aqui está um exemplo de como fazer isso: Neste exemplo, utilizamos o método split('') para dividir a frase em um array de caracteres, o método reverse() para inverter a ordem dos elementos do array e o método join('') para juntar os caracteres do array de volta em uma única string. Em seguida, exibimos a frase invertida através do console.log(). 66. Escreva um programa que leia uma sequência de caracteres e indique se a mesma é um palíndromo ou não. Neste exemplo, utilizamos o mesmo princípio de remover os espaços em branco e converter todos os caracteres para letras minúsculas. Em seguida, percorremos a metade da sequência de caracteres utilizando um laço de repetição. Se encontrarmos um par de caracteres diferentes (o caractere no índice i e o caractere no índice correspondente ao final da sequência), definimos a variável ehPalindromo como false e interrompemos o laço utilizando o break. Por fim, exibimos uma mensagem indicando se a sequência é um palíndromo ou não através do console.log(). Utilizando uma função Neste exemplo, a função verificarPalindromo recebe uma sequência de caracteres como parâmetro. Primeiro, removemos os espaços em branco e convertemos todos os caracteres para letras minúsculas para facilitar a comparação. Em seguida, utilizamos um laço de repetição para comparar os caracteres do início com os caracteres do fim. Se em algum momento os caracteres forem diferentes, retornamos false, indicando que a sequência não é um palíndromo. Caso contrário, retornamos true, indicando que a sequência é um palíndromo. Por fim, solicitamos ao usuário uma sequência de caracteres, chamamos a função verificarPalindromo passando a sequência como argumento e exibimos uma mensagem indicando se a sequência é um palíndromo ou não através do console.log(). 67. Escreva um programa que solicite ao usuário um número e exiba os seus divisores. Neste programa, utilizamos a função parseInt() para converter o valor digitado pelo usuário em um número inteiro. Em seguida, utilizamos um laço de repetição for para percorrer todos os números de 1 até o número digitado. Dentro do laço, verificamos se o número é divisível pelo valor atual do laço, ou seja, se o resto da divisão entre o número e o valor atual é igual a zero. Se for, significa que o valor atual é um divisor do número, então o exibimos no console utilizando console.log(). 68. Faça um programa que determine o menor múltiplo comum (MMC) entre dois números informados pelo usuário. Neste programa, solicitamos ao usuário os dois números e os armazenamos nas variáveis numero1 e numero2. Em seguida, determinamos o maior número entre os dois utilizando uma estrutura condicional if-else. Essa informação será útil para o loop que busca encontrar o MMC. Inicializamos o MMC com o valor do maior número, na variável mmc. Em seguida, entramos em um loop infinito com a declaração while (true). Dentro do loop, verificamos se o MMC é divisível tanto por numero1 quanto por numero2 usando a operação de módulo %. Se for divisível por ambos, significa que encontramos o MMC e podemos sair do loop utilizando a instrução break. Caso contrário, incrementamos o MMC pelo valor do maior número e continuamos a repetição do loop até encontrar o MMC. Por fim, o resultado é exibido no console utilizando console.log(), mostrando o MMC calculado entre os dois números informados pelo usuário. 69. Faça um programa que determine o máximo divisor comum (MDC) entre dois números informados pelo usuário. Neste programa, solicitamos ao usuário os dois números e os armazenamos nas variáveis numero1 e numero2. Em seguida, determinamos o menor número entre os dois utilizando uma estrutura condicional if-else. Essa informação será útil para o loop que busca encontrar o MDC. Inicializamos o MDC com o valor mínimo possível, que é 1, na variável mdc. Em seguida, utilizamos um loop for que vai de 1 até o menor número encontrado. Dentro do loop, verificamos se tanto numero1 quanto numero2 são divisíveis por i usando a operação de módulo %. Se forem divisíveis, atualizamos o valor do MDC para o valor de i. Ao final do loop, teremos encontrado o MDC entre os dois números informados pelo usuário. O resultado é exibido no console utilizando console.log(), mostrando o MDC calculado. 70. Faça um programa que solicite o CPF do usuário e então faça a validação do mesmo. Neste programa, a validação do CPF é realizada diretamente no fluxo principal, sem a utilização de uma função separada. Primeiro, removemos qualquer caractere não numérico do CPF informado pelo usuário utilizando a função replace() com uma expressão regular. Em seguida, verificamos se o CPF possui 11 dígitos. Se não possuir, exibimos a mensagem de CPF inválido. Depois, verificamos se todos os dígitos do CPF são iguais utilizando uma expressão regular. Se forem, exibimos a mensagem de CPF inválido. Em seguida, calculamos os dígitos verificadores do CPF. Primeiro, calculamos o primeiro dígito verificador através de umloop for e a fórmula específica. Verificamos se o primeiro dígito verificador calculado é igual ao dígito informado pelo usuário. Depois, calculamos o segundo dígito verificador utilizando um loop for e a fórmula específica. Verificamos se o segundo dígito verificador calculado é igual ao dígito informado pelo usuário. Por fim, exibimos no console se o CPF é válido ou inválido. Vetores 71. Crie um programa que leia um vetor de números inteiros e exiba a soma de todos os elementos. Neste programa, solicitamos ao usuário a quantidade de elementos que ele deseja inserir no vetor. Em seguida, criamos um vetor vazio. Utilizando um loop for, preenchemos o vetor com os números informados pelo usuário. Cada número é convertido para inteiro utilizando a função parseInt() e adicionado ao vetor usando o método push(). Em seguida, utilizamos outro loop for para percorrer cada elemento do vetor e somar seus valores na variável soma. Por fim, exibimos a soma dos elementos do vetor no console. 72. Faça um programa que leia um vetor de números inteiros e exiba o maior elemento presente no vetor. Neste programa, solicitamos ao usuário a quantidade de elementos que ele deseja inserir no vetor. Em seguida, criamos um vetor vazio. Utilizando um loop for, preenchemos o vetor com os números informados pelo usuário. Cada número é convertido para inteiro utilizando a função parseInt() e adicionado ao vetor usando o método push(). Em seguida, inicializamos a variável maior com o primeiro elemento do vetor. Utilizando outro loop for, percorremos os elementos do vetor a partir do segundo elemento. Para cada elemento, comparamos com o valor armazenado na variável maior e, caso seja maior, atualizamos o valor de maior. Por fim, exibimos o maior elemento do vetor no console. 73. Escreva um programa que leia um vetor de números inteiros e exiba a média dos elementos. Neste programa, solicitamos ao usuário a quantidade de elementos que ele deseja inserir no vetor. Em seguida, criamos um vetor vazio. Utilizando um loop for, preenchemos o vetor com os números informados pelo usuário. Cada número é convertido para inteiro utilizando a função parseInt() e adicionado ao vetor usando o método push(). Em seguida, calculamos a soma de todos os elementos do vetor, percorrendo-o com outro loop for e acumulando os valores na variável soma. Por fim, calculamos a média dos elementos dividindo a soma pelo tamanho do vetor. A média é armazenada na variável media e exibida no console. 74. Crie um programa que leia dois vetores de números inteiros com o mesmo tamanho e exiba um novo vetor com a soma dos elementos correspondentes dos dois vetores. Neste programa, solicitamos ao usuário a quantidade de elementos que ele deseja inserir nos vetores. Em seguida, criamos dois vetores vazios: vetor1 e vetor2. Utilizando um loop for, preenchemos os vetores com os números informados pelo usuário. Para cada posição i, solicitamos o número correspondente para cada vetor e o adicionamos ao vetor correspondente utilizando o método push(). Em seguida, criamos um novo vetor chamado vetorSoma para armazenar a soma dos elementos correspondentes dos dois vetores. Utilizando novamente um loop for, percorremos os vetores vetor1 e vetor2 e calculamos a soma dos elementos correspondentes para cada posição i. A soma é armazenada na variável soma e adicionada ao vetor vetorSoma utilizando o método push(). Por fim, exibimos o vetor vetorSoma que contém a soma dos elementos correspondentes dos dois vetores originais. 75. Faça um programa que leia um vetor de números inteiros e verifique se ele está em ordem crescente. Neste programa, solicitamos ao usuário a quantidade de elementos que ele deseja inserir no vetor. Em seguida, criamos um vetor vazio chamado vetor. Utilizando um loop for, preenchemos o vetor com os números informados pelo usuário. Para cada posição i, solicitamos o número correspondente e o adicionamos ao vetor utilizando o método push(). A variável emOrdemCrescente é inicializada como true. Ela será usada para armazenar a informação se o vetor está em ordem crescente ou não. Em seguida, utilizamos outro loop for para percorrer o vetor e comparar cada elemento com o próximo. Se algum elemento for maior que o próximo, significa que o vetor não está em ordem crescente, e a variável emOrdemCrescente é definida como false. Caso contrário, o loop continua a verificar os elementos subsequentes. Após percorrer o vetor, exibimos uma mensagem informando se o vetor está em ordem crescente ou não, com base no valor da variável emOrdemCrescente. 76. Escreva um programa que leia um vetor de números inteiros e exiba os elementos na ordem inversa. Neste programa, solicitamos ao usuário a quantidade de elementos que ele deseja inserir no vetor. Em seguida, criamos um vetor vazio chamado vetor. Utilizando um loop for, preenchemos o vetor com os números informados pelo usuário. Para cada posição i, solicitamos o número correspondente e o adicionamos ao vetor utilizando o método push(). Em seguida, criamos outro vetor vazio chamado vetorInverso para armazenar os elementos na ordem inversa. Utilizando outro loop for, percorremos o vetor original de trás para frente, começando da última posição quantidade - 1 até a primeira posição 0. A cada iteração, adicionamos o elemento correspondente do vetor original ao vetor inverso utilizando o método push(). Por fim, exibimos os elementos do vetor original e do vetor inverso utilizando console.log(). Utilizando reverse Se você deseja exibir os elementos de um vetor na ordem inversa sem utilizar um laço de repetição, uma opção é utilizar o método reverse() do JavaScript, que inverte a ordem dos elementos de um vetor. Aqui está um exemplo de programa que utiliza essa abordagem: Neste programa, utilizamos o método reverse() para inverter a ordem dos elementos do vetor vetor. Em seguida, exibimos o vetor com os elementos já na ordem inversa utilizando console.log(). É importante notar que o método reverse() altera o vetor original, ou seja, os elementos serão modificados permanentemente na variável vetor. Se você não desejar modificar o vetor original, é possível criar uma cópia do vetor antes de aplicar o método reverse(), utilizando o operador de propagação/spread (...) ou o método slice(). 77. Crie um programa que leia um vetor de números inteiros e encontre o segundo maior elemento presente no vetor. Neste programa, primeiro solicitamos ao usuário a quantidade de elementos do vetor e preenchemos o vetor com os números informados. Em seguida, encontramos o maior elemento do vetor percorrendo-o uma vez com um laço de repetição. Após encontrar o maior elemento, inicializamos a variável segundoMaior com o menor valor possível (-Infinity) e percorremos o vetor novamente para encontrar o segundo maior elemento. Durante a iteração, verificamos se o elemento atual é diferente do maior e se é maior que o valor armazenado na variável segundoMaior. Se essas condições forem atendidas, atualizamos o valor de segundoMaior. Por fim, exibimos o segundo maior elemento utilizando console.log(). Utilizando sort Neste programa, primeiro solicitamos ao usuário a quantidade de elementos do vetor e preenchemos o vetor com os números informados. Em seguida, utilizamos o método sort para ordenar o vetor em ordem crescente. Após ordenar o vetor, verificamos se ele possui pelo menos dois elementos. Se sim, obtemos o segundo maior elemento acessando o elemento na posição vetor.length - 2. Caso contrário, exibimos uma mensagem informando que o vetor precisa ter pelo menos dois elementos. Por fim, utilizamos console.log() para exibir o segundo maior elemento encontrado. 78. Faça um programa que leia um vetor de números inteiros e exiba quantas vezes um número específico aparece no vetor. Neste programa, solicitamos ao usuário a quantidade de elementos do vetor e preenchemos o vetor com os números informados. Em seguida, solicitamos ao usuário o número específico que ele deseja buscar no vetor.Utilizamos uma variável contador para contar a quantidade de vezes que o número aparece no vetor. Percorremos o vetor com um loop for e, a cada iteração, verificamos se o elemento atual é igual ao número buscado. Se for, incrementamos o contador. Por fim, utilizamos console.log() para exibir a quantidade de vezes que o número aparece no vetor. 79. Escreva um programa que leia dois vetores de números inteiros com o mesmo tamanho e exiba um novo vetor com os elementos resultantes da multiplicação dos elementos correspondentes dos dois vetores. Neste programa, solicitamos ao usuário a quantidade de elementos dos vetores e, em seguida, preenchemos os vetores com os números informados pelo usuário. Criamos um novo vetor chamado vetorResultado para armazenar o resultado das multiplicação dos elementos correspondentes dos dois vetores. Utilizamos um loop for para percorrer os vetores vetor1 e vetor2 e, a cada iteração, multiplicamos os elementos correspondentes e armazenamos o resultado no vetor vetorResultado. Por fim, utilizamos console.log() para exibir o vetor resultado na tela. 80. Crie um programa que leia um vetor de números inteiros e verifique se todos os elementos são pares. Neste programa, solicitamos ao usuário a quantidade de elementos do vetor e, em seguida, preenchemos o vetor com os números informados pelo usuário. Em seguida, utilizamos um loop for para percorrer cada elemento do vetor e verificamos se ele é par. Se encontrarmos algum elemento ímpar, alteramos a variável todosPares para false e encerramos o loop utilizando break. Por fim, exibimos na tela o resultado da verificação utilizando console.log(). Se a variável todosPares for true, significa que todos os elementos do vetor são pares. Caso contrário, o vetor contém pelo menos um elemento ímpar. Utilizando filter Neste programa, solicitamos ao usuário a quantidade de elementos do vetor e preenchemos o vetor com os números informados. Em seguida, utilizamos a função filter para criar um novo vetor chamado impares, contendo apenas os elementos ímpares do vetor original. Se não houver nenhum elemento no vetor impares, significa que todos os elementos do vetor original são pares. Por fim, exibimos o resultado da verificação utilizando console.log(), informando se o vetor contém elementos ímpares ou se todos os elementos são pares. Matrizes 81. Faça um programa que preencha uma matriz 3x3 com valores informados pelo usuário e exiba a soma dos valores da diagonal principal. Neste programa, criamos uma matriz 3x3 vazia utilizando um loop for. Em seguida, solicitamos ao usuário que informe os valores para cada posição da matriz, preenchendo-a. Depois, utilizamos outro loop for para percorrer a diagonal principal (posições [0][0], [1][1] e [2][2]) e somamos os valores encontrados. Por fim, exibimos a soma dos valores da diagonal principal utilizando console.log(). 82. Faça um programa que preencha uma matriz 4x4 com valores aleatórios e exiba a matriz transposta. Neste programa, primeiro criamos uma matriz 4x4 utilizando dois loops for. Em seguida, preenchemos a matriz com valores aleatórios, gerando um número aleatório entre 0 e 99 para cada posição da matriz. Após preencher a matriz, exibimos a matriz original utilizando um loop for para percorrer cada linha da matriz e o método join(" ") para unir os elementos de cada linha em uma string, separados por espaços. Em seguida, criamos a matriz transposta, percorrendo as posições da matriz original e atribuindo os valores correspondentes à matriz transposta, invertendo a posição das linhas e colunas. Por fim, exibimos a matriz transposta utilizando um loop for para percorrer cada linha da matriz transposta e o método join(" ") para unir os elementos de cada linha em uma string, separados por espaços. 83. Faça um programa que leia duas matrizes 2x2 e exiba a soma das duas matrizes. Para resolver este exercício, primeiramente vamos definir uma função que leia a matriz, denominada lerMatriz(), conforme abaixo: Após, definiremos uma função que exiba a matriz, denominada exibirMatriz(), conforme abaixo: Então, segue abaixo o restante do código: Neste programa, utilizamos a função lerMatriz() para ler uma matriz 2x2 do usuário. Utilizamos um loop for aninhado para percorrer as posições da matriz e utilizamos a função parseInt() para converter a entrada do usuário em um número inteiro. A função exibirMatriz() é utilizada para exibir uma matriz no console. Utilizamos um loop for para percorrer cada linha da matriz e o método join(" ") para unir os elementos de cada linha em uma string, separados por espaços. No programa principal, lemos as duas matrizes do usuário, exibimos as matrizes informadas pelo usuário utilizando a função exibirMatriz(). Em seguida, somamos as duas matrizes utilizando loops for aninhados e armazenamos o resultado na matriz matrizSoma. Por fim, exibimos a matriz resultante da soma utilizando a função exibirMatriz(). 84. Faça um programa que preencha uma matriz 5x5 com números inteiros e exiba o maior valor da matriz e a posição em que ele se encontra. Neste programa, utilizamos dois loops for aninhados para percorrer cada posição da matriz e preencher com números informados pelo usuário. Em seguida, encontramos o maior valor percorrendo novamente a matriz com dois loops for. A cada iteração, comparamos o valor atual com o maior valor encontrado até o momento. Se encontramos um valor maior, atualizamos o maior valor e sua posição. Por fim, exibimos o maior valor e sua posição utilizando a função console.log(). 85. Faça um programa que leia uma matriz 3x3 e calcule a média dos valores presentes nas posições pares (soma dos índices par) da matriz. Neste programa, utilizamos dois loops for aninhados para percorrer cada posição da matriz e preencher com números informados pelo usuário. Em seguida, calculamos a média dos valores presentes nas posições pares da matriz. Utilizamos a condição (i + j) % 2 === 0 para verificar se a soma dos índices da posição é par. Se for par, somamos o valor e incrementamos o contador. Por fim, exibimos a média dos valores nas posições pares da matriz utilizando a função console.log(). O método toFixed(2) é utilizado para exibir a média com duas casas decimais. 86. Faça um programa que preencha uma matriz 4x4 com números aleatórios e exiba a soma dos valores presentes em cada linha e em cada coluna. Primeiramente, vamos definir uma função para gerar números aleatórios, denominada gerarNumeroAleatorio(), onde dois argumentos são passados, o valor mínimo e máximo. Após, utilizaremos a função definida no código abaixo: Neste programa, utilizamos uma função gerarNumeroAleatorio(min, max) para gerar números aleatórios entre os valores min e max (inclusivos). Em seguida, criamos uma matriz 4x4 e preenchemos cada posição com números aleatórios utilizando a função gerarNumeroAleatorio(). Depois, exibimos a matriz utilizando o método console.log() e um loop for. Em seguida, calculamos a soma dos valores presentes em cada linha da matriz. Para isso, utilizamos um loop for externo para percorrer cada linha e um loop for interno para percorrer cada coluna. A soma de cada linha é armazenada em uma variável somaLinha e exibida utilizando o método console.log(). Da mesma forma, calculamos a soma dos valores presentes em cada coluna da matriz. Utilizamos um loop for externo para percorrer cada coluna e um loop for interno para percorrer cada linha. A soma de cada coluna é armazenada em uma variável somaColuna e exibida utilizando o método console.log(). Dessa forma, obtemos a soma dos valores em cada linha e em cada coluna da matriz. 87. Faça um programa que leia uma matriz 3x3 e calcule o determinante da matriz. Para calcular o determinante de uma matriz 3x3, podemos usar a regra de Sarrus. Aqui está um programa em JavaScript que lê uma matriz 3x3 do usuário e calcula o determinante. Primeiramente, começamos definindo uma função denominada calcularDeterminante(). Então, utilizaremos
Compartilhar