Você está na página 1de 11
ALGORITMOS COM PSEUDOCODIGO LISTA DE EXERCICIOS RESOLVIDA E COMENTADA. OBS: Os algoritmos das solugdes abaixo esto com a sintaxe de acordo com o VisuAlg, (=F Lap EXERCICIOS SOBRE ESTRUTURAS SEQUENCIAIS: 1 calcular a area de um retangulo © A drea de uma figura geométrica retangular é calculada pela formula drea = largura x altura * As varidveis de entrada sao altura e largura, do tipo real, pois pode haver medida com parte fraciondria © Poderfamos criar uma varidvel de saida para a area, porém podemos calcular e mostrar 0 resultado sem usar essa varidvel © Oeesbogo da solucao em linguagem natural seri © Solicitar valor da largura e altura © Calcular drea e mostrar resultado algoritmo “area retangulo™ var altura, largura: real Escreva("Digite a altura Leia(altura) Escreva("Digite a largura: ") Leia(largura) Escreval("A area é: ",altura*largura) fimalgoritmo Armazenar dois ntimeros em varidveis e trocar os valores das varidveis algoritmo “troca variaveis” // para fazer a troca de valores de duas varidveis // & necessério uma varidvel auxiliar pois se fizermos // a troca direta, um dos valores serd perdido a,b,aux: inteiro inicio Escreva("Digite o valor para a variavel A: ") Leia(a) Escreva("Digite o valor para a variavel B: ") Leia (b) aux <- a // guarda valor de a em aux para néo ser perdido a0 entao escreva("0 nimero é positivo") fimse se num<0 entao escreva("0 nimero é negativo") escreva("0 numero é zero") fimse 3 - Faca uma algoritmo que leia trés valores que representam os trés lados de um tridngulo e verifiqui . Se o tridingulo é valido Se € um trifingulo equilitero, isdsceles ou escaleno. Propriedades de um tridngulo: © Asoma de dois lados nao pode ser menor que a do terceiro lado (ou 0 compriment de cada lado deve ser menor que a soma dos outros dois lados) © Equilitero: trés lados iguais * Isdsceles: dois lados iguais « Escaleno: trés lados diferentes. (veja solugdes nas folhas seguintes) Solugdo 1 (com o teste do is6sceles, que € mais complex) Rigoritmo "Triangulo™ var ladol, lado2 , lado3 : real Inicio Escreva("Digite o lado 1: Leia(ladol) Escreva("Digite o lado 2: ") Leia(1ado2) Escreva("Digite o lado 3: ") Leia(1ado3) // testa se o triangulo é valido // (a soma de dois lados ndo pode ser menor que a do terceiro lado se (ladol+lado2lado2) E (lado2<>1ado3) E (ladol<>lado3) entao Escreval(“0 triangulo é escaleno”) Senao // isosceles se ((ladol=lado2) E (Ladol<>lado3)) 0U ((lado2=1ado3) E (lado2<>1ladol)) OU ((ladol=lado3) E (ladol<>lade2)) entao Escreva("0 triangulo é isésceles") Fimse FimSe £imalgoritmo * Solugao 2: sem o teste do isésceles, usando estruturas se..senao Rlgoritmo "Triangulo” var ladol, lado2 , lado3 : real Inicio Escreva("Digite o lado 1: Leia(ladol) Escreva("Digite o lado 2: ") Leia (1ado2) Escreva("Digite o lado 3: Leia(lado3) // testa se o triangulo é v4lido // (a soma de dois lados nao pode ser menor que a do terceiro lado se (ladol+lado2lado2) E (lado2<>lado3) & (ladol<>lado3) entao Escreval(“0 triangulo € escaleno”) // se nao é egiiildétero nem escaleno, entao é isésceles Sendo Escreva("0 triangulo é isésceles") FinSe Fimse Finse fimalgoritmo EXERCICIOS SOBRE ESRUTURAS DE REPETICAO: Multiplicar dois ntimeros usando somas repetidas * Neste algoritmo 0 “segredo” é usar uma varidvel para acumular 0 valor da soma (que no caso sera a varidvel “produto” no algoritmo abaixo) de um dos fatores (no caso 0 multiplicando “num2”) repetindo essa soma na quantidade do multiplicador (num1), 0 comando que acumula a soma € produto<-produto+num2: algoritno “multiplicacao com somas* var numl,num2, aux, produto: inteiro Escreva(*"Digite o multiplicado: Leia(num1) Escreva("Digite o multiplicand Leia (num2) produto<-0 para aux de 1 ate numl faca produto<-produto+num2 fimpara escreva("O produto é: ", produto} Eimalgoritmo . 2 - Solicitar uma quantidade pré-determinada de ntimeros e calcular a soma e média entre esses niimeros Ss Jé vimos como fazer a soma de mimeros. Para calcular a média basta dividir a soma pela quantidade de nimeros digitados. Como nao sabemos a quantidade de nimeros que 0 usudrio quer digitar, entéo devemos perguntar e usar uma estrutura “para” para repetir os comandos de solicitar um niimero e somar esse miimero essa quantidade de vezes,. O cdleulo da média a apresentacéo dos resultados deve ficar apés a estrutura de repetiga Varidveis de entrada: quantidade de nimeros (“quantidade”) (tipo inteiro) Varidvel de contager Varidveis de processamento e satda: soma (inteiro) e media (real, pois a média pode ter parte fraciondria) algoritmo "soma e média de numeros” inicio escreva("Quantos nimeros vocé quer somar? ") leia(quantidade) para c de 1 ate quantidade faca fimpara media<-soma/quant idade Escreval("A soma é: ", soma) Escreval("A média 6: ",media) Fimalgoritmo quant idade, numero, soma,c: inteiro media: real escreva("Digite o Jeia (numero) soma<-somatnumero re, "0 numero: ") 3 - Calcular a soma dos ntimeros impares entre um intervalo informado . Este algoritmo é parecido com o anterior, sendo que, em vez de termos uma estrutura para de | até uma quantidade, teremos um intervalo Varidveis de entrada: valor inicial (“ini”), limite (tipo inteiro) Varidvel de contagem: Varidveis de_processamento e saida: soma (inteiro) var Algoritmo “soma numeros Impares" Inicio fimalgoritmo i, ini, limite, soma: Inteiro Escreva("Digite o nimero inicial: Leia(ini) Escreva("Digite o numero final: ") Leia (limite) soma<-0 Para i de ini ate limite faca se (i mod 2) <> 0 entao Escreval (i) soma<-somati Fimse FimPara Escreva("A soma desses mimeros impares é: ",soma) 4 - Calcular o fatorial de um ntimero. Dicas: N! = N*(n-1) * (0-2)... *1 Ex: 5) 5*4*3*1=60 © Podemos observar na formula do fatorial que precisaremos fazer multiplicagdes sucessivas, onde o resultado da tiltima multiplicagao serd multiplicado novamente por um outro niimero (ex: 5*4 = 20; 20 * 3 = 60; 60 * | = 60). Essa multiplicagao pode ser feita de ‘forma similar @ variével acumuladora, s6 que em vez de somar, multiplicando. Ex: res! <- res * num. © Precisaremos de uma estrutura PARA p/ obter os multiplicadores, que podem estar tanto em ordem crescente como decrescente © Um pequeno detalhe do algoritmo € que precisamos iniciar a varidvel acumuladora dos produtos com I ou com o primeiro mimero das multiplicacdes (conforme 0 algoritmo a ser usado), sendo estaremos multiplicando por zero Varidveis de entrada: niimero a calcular 0 fatorial (“num”) (tipo inteiro) Varidvel de contagem: ¢ Varidveis de processamento e satda: fatorial (inteiro) *_ Solugio 1: Rigoritmo "fatorial™ var num, ¢, fatorial: inteiro Inicio escreva("Numero a calcular o fatorial: ") Leia (num) fatorial<-1 para c de num ate 1 passo -1 faca fatorial<-fatorial*c fimpara escreva("0 fatorial é:", fatorial) fimalgoritmo © Solugio 2 (mais “enfeitada”, mostrando o Algoritmo "fatorial" num,c,fatorial: inteiro Inicio escreva("Numero a calcular o fatorial: ") leia(num) escreval ("Célculo do fatorial:") fatorial<-num Escreva(num) // imprime primeiro fator para c de num-1 ate 1 passo -1 faca Escreva(" * ",c) // imprime cada fator seguinte sucedido por * fatorial<-fatorial*c fimpara escreval(" = ",fatorial) // imprime sinal “=" e o fatorial fimalgoritmo © OBS: As duas solugdes acima estéo com a estrutura PARA em ordem decrescente, mas nada imprede que facamos 0 algoritmo com a estrutura PARA em ordem crescente (a ordem dos {fatores ndo altera o produto) EXERCICIOS SOBRE VETORES: 1- Faga algoritmo para ler um vetor de 10 valores inteiros e depois identificar e mostrar © menor valor * A l6gica deste algoritmo é: © Preencher o vetor © Percorrer cada posigdo do vetor, procurando qual é 0 menor nimero (ao iniciar, supomos que o menor é 0 primeiro do vetor) 2- Altere o algoritmo anterior para procurar um ndmero digitado pelo usudrio, informando a sua posigdo, se ele constar no vetor © Aqui acrescentamos os trechos destacados para a pergunta e um teste a mais dentro do PARA algoritme "Vetor 10 numeros” var vet: vetor[1..10] de inteiro c, menor, : inteiro // preenche o vetor para c de 1 ate 10 faca escreva("Digite o ",c,"o numero leia(vet {cl} fimpara // == procura o menor e o nimero digitado menor<-vet [1] // no inicio, o menor seré o primeiro do vetor para c de 1 ate 10 faca escreva (vet [c]) // se 0 niimero na posigao do vetor for menor que o menor se vet [c]maior entao maior<-num[1,c] Eimse inteiro fimpara escreval("") // salta linha fimpara escreval ("") escreval ("0 menor é:",menor) escreval("0 maior 6:",maior) fimalgoritmo 3- Faca um algoritmo para guardar os nomes e resultados de jogos da loteria esporti 4-Faga um algoritmo para multiplicar duas matrizes algoritmo "multiplica matrizes 4x4" matrizl: vetor{1..4,1..4] de inteiro matriz2: vetor[1..4,1..4] de inteiro 4d produto: vetor[1 --4] de inteiro 1c: inteiro /{ preenche a matriz 1 Escreval("Digite os valores para a matriz 1:") para 1 de 1 ate 4 faca para cde 1 ate 4 faca escreva("Digite o numero da pos.",1,")"/c,": ") leia(matrizl(1,c]) fimpara fimpara // preenche a matriz 2 Escreval("Digite os valores para a matriz 1:") para 1 de 1 ate 4 faca para cde 1 ate 4 faca escreva("Digite o numero da pos.",1,")"/cy leia(matriz2(1,cl) fimpara fimpara // multiplica Escreval ("Matriz-produto:”) para 1 de 1 ate 4 faca para c de 1 ate 4 faca produto(1,c]=matrizi(1,c] * matriz2[c,1) escreva (produto[1,¢l) fimpara escreval("") // salta linha fimpara fimalgoritmo "4 5-Faga um algoritmo para calcular o determinante de uma matriz. EXERCICIO SOBRE REGISTROS: 1. Crie um algoritmo para guardar 0 nome e as duas notas dos 40 alunos de uma turma e depois calcular a média e resultado de cada um deles, sendo que a média para aprovacao & 7 EXERCiCIOS SOBRE SUB-ALGORITMOS: 1, Reescreva um dos exercicios de vetores ou matrizes criando um procedimento para ler os dados e outro para processar e mostrar os resultados

Você também pode gostar