Baixe o app para aproveitar ainda mais
Prévia do material em texto
� Lista de Exercícios 2 - Algoritmos e Programação Prof. Francisco Marcelo OBS.: Os códigos fontes de resposta devem ser colados dentro deste documento. Não poste no blackboard arquivos zipados ou código fonte sob pena de não ter o trabalho corrigido I - Desenvolva os seguintes algoritmos: 1) Crie um programa que permita fazer a conversão cambial entre Reais e Dólares. Considere como taxa de câmbio US$1,0 = R$3,40. Leia um valor, pergunte se o valor informado esta em dolar ou real e, após, imprima o valor convertido. RESPOSTA:: programa { funcao inicio() { // 1) Crie um programa que permita fazer a conversão cambial entre Reais e Dólares. //Considere como taxa de câmbio US$1,0 = R$3,40. //Leia um valor, pergunte se o valor informado esta em dolar ou real e, após, imprima o valor convertido. real cambio = 3.40 real valor_informado = 0.0 real valor_final = 0.0 inteiro tipo = 1 escreva("Digite o valor a ser convertido: ") leia(valor_informado) escreva("Digite o tipo de conversão:","\n") escreva(" 1 de Real para Dolar","\n") escreva(" 2 de Dolar para Real","\n") leia(tipo) se (tipo == 1) { valor_final = valor_informado / cambio } senao { valor_final = valor_informado * cambio } escreva("Valor convertido: ",valor_final,"\n") } } 2) Calcule quantos azulejos são necessários para azulejar uma parede. É necessário conhecer a altura da parede (AP), a sua largura (LP), e a altura do azulejo (A) e sua largura (LA). Leia os dados através do teclado (obs.: não considere o rejunte). RESPOSTA: programa { funcao inicio() { // 2) Calcule quantos azulejos são necessários para azulejar uma parede. // É necessário conhecer a altura da parede (AP), a sua largura (LP), e a altura do azulejo (A) e sua largura (LA). // Leia os dados através do teclado. real AP = 0.0, LP = 0.0, A = 0.0, LA = 0.0 real area_parede = 0.0, area_azulejo = 0.0 real qtde_azulejos = 0.0 escreva ("Digite a altura da parede: ") leia (AP) escreva ("Digite a largura da parede: ") leia (LP) escreva ("Digite a altura da azulejo: ") leia (A) escreva ("Digite a largura da azulejo: ") leia (LA) area_parede = AP * LP area_azulejo = A * LA qtde_azulejos = area_parede / area_azulejo escreva("Será necessário a compra de ",qtde_azulejos," azulejos") } } 3) Faça um programa que, a partir das medidas dos lados de um retângulo, lidos via teclado, calcule a área e o perímetro deste retângulo. Área = a.b Perímetro = 2.a + 2.b RESPOSTA:: programa { funcao inicio() { // Faça um programa que, a partir das medidas dos lados de um retângulo, // lidos via teclado, calcule a área e o perímetro deste retângulo. //Área = a.b //Perímetro = 2.a + 2.b real area = 0.0, perimetro = 0.0, a = 0.0, b =0.0 escreva("Digite a Altura: ") leia(a) escreva("Digite a Base: ") leia(b) area = a * b perimetro = 2 * a + 2 * b escreva ("A área é ",area, " e o Perímetro é ",perimetro) } } 4) A condição física de uma pessoa pode ser medida com base no cálculo do IMC, Índice de Massa Corporal, o qual é calculado dividindo-se a massa da pessoa (em kg) pela altura da mesma (em m) elevada ao quadrado (IMC= massa/altura²). Escreva um programa que leia a massa e a altura de uma pessoa, calcule e mostre o IMC. RESPOSTA programa { inclua biblioteca Matematica --> mat funcao inicio() { // 4) A condição física de uma pessoa pode ser medida com base no cálculo do IMC, // Índice de Massa Corporal, o qual é calculado dividindo-se a massa da pessoa (em kg) pela altura da mesma (em m) // elevada ao quadrado (IMC= massa/altura²). // Escreva um programa que leia a massa e a altura de uma pessoa, calcule e mostre o IMC. real IMC = 0.0, massa = 0.0, altura = 0.0 escreva ("Digite a altura (em m): ") leia (altura) escreva ("Digite a massa / peso (em kg): ") leia (massa) //funcao real potencia(real base, real expoente) IMC = massa / mat.potencia (altura, 2.0) escreva("O IMC é ", IMC) } } 5) Dado o valor do raio (r) de uma circunferência, elaborar um programa para calcular e imprimir sua área (A) e o seu comprimento (C). A fórmula da área do círculo é A = pi r2 e do comprimento é C=2pi r. onde pi = 3,1415... RESPOSTA: programa { inclua biblioteca Matematica --> mat funcao inicio() { // 5) Dado o valor do raio (r) de uma circunferência, // elaborar um programa para calcular e imprimir sua área (A) e o seu comprimento (C). // A fórmula da área do círculo é A = pi r2 e do comprimento é C=2pi r. onde pi = 3,1415... real area = 0.0, comprimento = 0.0, raio = 0.0 escreva ("Digite o raio de uma circunferência: ") leia (raio) //funcao real potencia(real base, real expoente) area = mat.PI * mat.potencia(raio, 2.0) comprimento = 2 * mat.PI * raio escreva("A área é ", area, " e o comprimento é ", comprimento) } } 6) Elaborar um programa para calcular e imprimir o volume (V) de uma esfera e a área (A) de sua superfície, dado o valor de seu raio (R). A fórmula da área é 4*pi*r^2 e do volume é (4*pi*r^3)/3 RESPOSTA: programa { inclua biblioteca Matematica --> mat funcao inicio() { // 6) Elaborar um programa para calcular e imprimir o volume (V) de uma esfera e a área (A) de sua superfície //, dado o valor de seu raio (R). // A fórmula da área é 4*pi*r^2 e do volume é (4*pi*r^3)/3 real area = 0.0, volume = 0.0, raio = 0.0 escreva ("Digite o raio de uma esfera: ") leia (raio) //funcao real potencia(real base, real expoente) area = 4 * mat.PI * mat.potencia(raio, 2.0) volume = (4 * mat.PI * mat.potencia(raio, 3.0))/3 escreva("A área é ", area, " e o volume é ", volume) } } 7) Faça um programa para calcular a média final de um aluno, supondo-se que há quatro notas bimestrais durante o ano e que esta é calculada através de uma média aritmética simples (todos os bimestres têm o mesmo peso). RESPOSTA: programa { funcao inicio() { real nota1 = 0.0, nota2 = 0.0, nota3 = 0.0, nota4 = 0.0, media = 0.0 escreva("Informe a primeira nota: ") leia (nota1) escreva("Informe a segunda nota: ") leia (nota2) escreva("Informe a terceira nota: ") leia (nota3) escreva("Informe a quarta nota: ") leia (nota4) media = (nota1+nota2+nota3+nota4)/4 escreva ("Média Final = ", media) } } 8) O critério de avaliação semestral de determinada escola segue a regra: P1 – primeira avaliação do semestre. P2 – segunda avaliação do semestre. Ativ – nota atribuída pelas atividades realizadas no semestre. Média = P1 x 0,4 + P2 x 0,4 + Ativ x 0,2 Escreva um programa que leia as notas das provas (P1 e P2) e da atividade (Ativ), calcule e mostre a média, seguindo o cálculo acima. RESPOSTA: programa { funcao inicio() { real P1, P2, Ativ, media escreva("Informe a nota primeira avaliação do semestre: ") leia (P1) escreva("Informe a nota segunda avaliação do semestre: ") leia (P2) escreva ("Informe a nota atribuída pelas atividades realizadas no semestre: ") leia (Ativ) media = P1*0.4 + P2*0.4 + Ativ*0.2 escreva ("Média final = ",media) } } 9) Elaborar um programa para receber valores, via teclado, nas variáveis "a" e "b". Após isto, o programa, utilizando-se de uma 3a. variável "c", deverá trocar o conteúdo das variáveis "a" e "b". RESPOSTA: programa { funcao inicio() { inteiro a = 0 ,b = 0, c = 0 escreva("Digite a:") leia(a) escreva("Digite b:") leia(b) //invertendo c=b b=a a=c escreva("a=",a," e b=",b) } } 10) Elaborar um programa que receba, via teclado, os valores do espaço percorrido e do tempo gasto por um veículo em movimento, para calcular e apresentar em tela sua velocidade média. RESPOSTA: programa { funcao inicio() { real s,t,v escreva("Informe o espaço percorrido (em kilometros):") leia(s) escreva("Informe o tempo gasto (em horas): ") leia(t) v = s / t escreva("Velocidade Média = ",v,"km/h") } } 11) Num laboratório de física, em uma experiência de Movimento Uniformemente Variado, foram encontrados os seguintes valores: s0=2m, v0=3m/s, a=10m/s. Digitado o valor de t (segundos), apresentar em tela o valor de s (metros). Dada a fórmula acima RESPOSTA: programa { inclua biblioteca Matematica --> mat funcao inicio() { real s = 0.0, s0 =0.0,v0 = 0.0, t, a s0 = 2.0 v0 = 3.0 a = 10.0 escreva("Informe o tempo (em segundos):") leia(t) s = s0 + v0*t + ((1/2)*a*mat.potencia(t, 2.0)) escreva("Movimento Uniformemente Variado s=",s) } } 12) Suponha que um simples vírus tenha infectado o sistema de banco de dados da universidade e que, como único estrago, ele tenha alterado os RA(Registro Acadêmico)s dos alunos. Após algum tempo, descobriu-se que dado o RA gerado pelo vírus RAV = x1 x2 x3 x4 x5 x6 x7 x8 x9, o RA correto RAC = y1 y2 y3 y4 y5 y6 y7 y8 y9 poderia ser obtido através das seguintes operações: y1 = x1, y2 = x2, y3 = x8, y4 = x7, y5 = x5, y6 = x6, y7 = x3, y8 = x4, y9 = x9 Exemplificando, se RAV=197845602 então RAC=190645782. Elabore um programa em que leia RAV e gere RAC com 9 dígitos. RESPOSTA programa { inclua biblioteca Matematica --> mat inclua biblioteca Texto --> texto inclua biblioteca Tipos --> tipo funcao inicio() { cadeia x = "", y="" escreva ("Digite uma informação com 9 posições: ") leia(x) //funcao inteiro numero_caracteres(cadeia cadeia) se (texto.numero_caracteres(x) == 9) { //funcao caracter obter_caracter(cadeia cad, inteiro indice) // funcao cadeia caracter_para_cadeia(caracter valor) // como o primeiro indice do tipo cadeia= 0 entao vamos ter que diminuir 1 do valor informado no exercicio para cada posicao // y1 = x1 y = tipo.caracter_para_cadeia(texto.obter_caracter(x,0)) //y2 = x2 y = y + tipo.caracter_para_cadeia(texto.obter_caracter(x,1)) //y3 = x8 y = y + tipo.caracter_para_cadeia(texto.obter_caracter(x,7)) //y4 = x7 y = y + tipo.caracter_para_cadeia(texto.obter_caracter(x,6)) //y5 = x5 y = y + tipo.caracter_para_cadeia(texto.obter_caracter(x,4)) //y6 = x6 y = y + tipo.caracter_para_cadeia(texto.obter_caracter(x,5)) //y7 = x3 y = y + tipo.caracter_para_cadeia(texto.obter_caracter(x,2)) //y8 = x4 y = y + tipo.caracter_para_cadeia(texto.obter_caracter(x,3)) //y9 = x9 y = y + tipo.caracter_para_cadeia(texto.obter_caracter(x,8)) escreva("y=",y) } } } 13) Para garantirmos segurança na transmissão de dados, podemos codificá-los antes de transmitir. Suponha um número X qualquer de 4 dígitos na forma d1 d2 d3 d4 (por exemplo, 2371 onde d1 =2, d2 =3, d3 =7 e d4 =1). Escreva um programa que transforme o número X = d1 d2 d3 d4 em um número Y = f1 f2 f3 f4, que corresponde a X codificado usando a seguinte regra: f i = ((di + 7) % 10) para i=1, 2, 3, 4. Exemplificando. Se X=7149 então Y=4816 pois : Deve ser lido X e impresso Y. RESPOSTA programa { inclua biblioteca Matematica --> mat inclua biblioteca Texto --> texto inclua biblioteca Tipos --> tipo funcao inicio() { //f i = ((di + 7) % 10) para i=1, 2, 3, 4. //Exemplificando. Se X=7149 então Y=4816 pois : cadeia d = "", f = "" escreva ("Digite uma informação com 4 posições: ") leia(d) //funcao inteiro numero_caracteres(cadeia cadeia) se (texto.numero_caracteres(d) == 4) { //funcao caracter obter_caracter(cadeia cad, inteiro indice) // funcao cadeia caracter_para_cadeia(caracter valor) // como o indice do tipo cadeia = 0 entao vamos ter que diminuir 1 do valor // informado no exercicio para cada posicao //funcao caracter obter_caracter(cadeia cad, inteiro indice) // funcao cadeia inteiro_para_cadeia(inteiro valor, inteiro base) //f1 f = tipo.inteiro_para_cadeia( (( tipo.caracter_para_inteiro(texto.obter_caracter(d,0)) + 7) % 10) , 10) //f2 f = f + tipo.inteiro_para_cadeia( (( tipo.caracter_para_inteiro(texto.obter_caracter(d,1)) + 7) % 10) , 10) //f3 f = f + tipo.inteiro_para_cadeia( (( tipo.caracter_para_inteiro(texto.obter_caracter(d,2)) + 7) % 10) , 10) //f4 f = f + tipo.inteiro_para_cadeia( (( tipo.caracter_para_inteiro(texto.obter_caracter(d,3)) + 7) % 10) , 10) escreva(f) } } } 14) Faça um algoritmo que leia a idade de uma pessoa expressa em anos, meses e dias e escreva a idade dessa pessoa expressa apenas em dias. Considerar ano com 365 dias e mês com 30 dias. RESPOSTA: programa { funcao inicio() { inteiro anos = 0, meses =0, dias = 0, resultado = 0 escreva("Informe Quantidade de Dias: ") leia(dias) escreva("Informe Quantidade de Meses: ") leia(meses) escreva("Informe Quantidade de Anos: ") leia(anos) resultado = 365 * anos + 30 * meses + dias escreva("Total de dias: ",resultado) } } 15) Escreva um algoritmo para ler o número total de eleitores de um município, o número de votos brancos, nulos e válidos. Calcular e escrever o percentual que cada um representa em relação ao total de eleitores. RESPOSTA: programa { funcao inicio() { real Brancos = 0.0, Nulos = 0.0, Validos = 0.0, total_votos = 0.0 real percentual_Brancos = 0.0, percentual_Nulos = 0.0, percentual_Validos = 0.0 escreva("Informe o número de votos em brancos: ") leia(Brancos) escreva("informe o número de votos nulos: ") leia(Nulos) escreva("informe o número de votos válidos: ") leia(Validos) total_votos = Brancos + Nulos + Validos percentual_Brancos = (Brancos/total_votos)*100 percentual_Nulos = (Nulos/total_votos)*100 percentual_Validos = (Validos/total_votos)*100 escreva("Percentual de votos brancos:",percentual_Brancos,"%","\n") escreva("Percentual de votos nulos:",percentual_Nulos,"%","\n") escreva("Percentual de votos válidos:",percentual_Validos,"%") } } 16) O custo de um carro novo ao consumidor é a soma do custo de fábrica com a porcentagem do distribuidor e dos impostos (aplicados ao custo de fábrica). Supondo que o percentual do distribuidor seja de 28% e os impostos de 45%, escrever um algoritmo para ler o custo de fábrica de um carro, calcular e escrever o custo final ao consumidor. RESPOSTA: programa { funcao inicio() { real custodefabrica = 0.0, imposto = 0.0,distribuidor= 0.0, custofinal= 0.0 escreva ("Informe o custo de fábrica do veículo: ") leia (custodefabrica) distribuidor = custodefabrica * 0.28 imposto = custodefabrica * 0.45 custofinal = custodefabrica + distribuidor + imposto escreva("Custo final do veículo: R$",custofinal) } } 17) Uma revendedora de carros usados paga a seus funcionários vendedores um salário fixo por mês e mais 5% do valor das vendas por ele efetuadas. Escrever um algoritmo que leia o valor total de suas vendas e o salário fixo. Calcule e escreva o salário final do vendedor. RESPOSTA programa { funcao inicio() { real vendas = 0.0, salario_fixo = 0.0, salario_final = 0.0 escreva("Informe o valor total das vendas:") leia(vendas) escreva("informe o valor do sálario fixo:") leia(salario_fixo) salario_final = (salario_fixo)+(vendas*0.05) escreva("Salário final = ",salario_final) } } 18) Escreva um algoritmo para ler uma temperatura em graus Fahrenheit, calcular e escrever o valor correspondente em graus Celsius. Observação: Para testar se a sua resposta está correta saiba que 100oC = 212F RESPOSTA: programa { funcao inicio() { real grausF = 0.0, grausC = 0.0 escreva("Informe a temperatura (em graus Fahrenheit): ") leia(grausF) grausC = (grausF*100)/212 escreva("Temperatura em graus Célsius = ",grausC,"°C") } } II - Utilizando estruturas condicionais desenvolva os seguintes algoritmos: 19) Ler um valor e escrevera mensagem É MAIOR QUE 10! se o valor lido for maior que 10, caso contrário escrever NÃO É MAIOR QUE 10! RESPOSTA programa { funcao inicio() { inteiro valor = 0 escreva ("Digite um valor: ") leia(valor) se (valor>10) { escreva("É MAIOR QUE 10!") } senao { escreva("NÃO É MAIOR QUE 10!") } } } 20) Ler um valor e escrever se é positivo ou negativo (considere o valor zero como positivo). RESPOSTA programa { funcao inicio() { inteiro valor escreva("Digite um valor: ") leia(valor) se (valor>=0) { escreva("VALOR É POSITIVO") } senao { escreva("VALOR É NEGATIVO") } } } 21) As maçãs custam R$ 1,30 cada se forem compradas menos de uma dúzia, e R$ 1,00 se forem compradas pelo menos 12. Escreva um programa que leia o número de maçãs compradas, calcule e escreva o custo total da compra. RESPOSTA programa { funcao inicio() { real valorunidade = 0.0, custo = 0.0 inteiro quantidade = 0 escreva("Informe a quantidade de maçãs compradas: ") leia(quantidade) se (quantidade>=12) { valorunidade = 1.00 } senao { valorunidade = 1.30 } custo = valorunidade*quantidade escreva("Custo total = R$ ",custo) } } 22) Ler as notas da 1a. e 2a. avaliações de um aluno. Calcular a média aritmética simples e escrever uma mensagem que diga se o aluno foi ou não aprovado (considerar que nota igual ou maior que 6 o aluno é aprovado). Escrever também a média calculada. RESPOSTA: programa { funcao inicio() { real nota1 = 0.0, nota2 = 0.0, media = 0.0 escreva("Informe a primeira nota: ") leia(nota1) escreva("Informe a segunda nota: ") leia(nota2) media = (nota1+nota2)/2 escreva ("Média =", media,"\n") se (media>=6) { escreva("ALUNO APROVADO.") } senao { escreva("ALUNO REPROVADO.") } } } 23) Ler o ano atual e o ano de nascimento de uma pessoa. Escrever uma mensagem que diga se ela poderá ou não votar este ano (não é necessário considerar o mês em que a pessoa nasceu). RESPOSTA: programa { funcao inicio() { inteiro anoatual,anonascimento escreva("Informe o ano atual: ") leia(anoatual) escreva("Informe o ano de seu nascimento: ") leia(anonascimento) se((anoatual-anonascimento)>=16) { escreva("Poderá votar em ",anoatual) } senao { escreva("Não poderá votar em ",anoatual) } } } 24) Ler dois valores (considere que não serão lidos valores iguais) e escrever o maior deles. RESPOSTA programa { funcao inicio() { inteiro valor1 = 0, valor2 = 0 escreva("Digite o Primeiro Valor: ") leia(valor1) escreva("Digite o Segundo Valor: ") leia(valor2) se(valor1 > valor2) { escreva("O PRIMEIRO VALOR É O MAIOR: ",valor1) } senao { se (valor2 > valor1) { escreva("O SEGUNDO VALOR É O MAIOR: ",valor2) } senao { escreva("OS DOIS VALORES SÃO IGUAIS") } } } } 25) Ler dois valores (considere que não serão lidos valores iguais) e escrevê-los em ordem crescente. RESPOSTA: programa { funcao inicio() { inteiro valor1 = 0, valor2 = 0 escreva("Digite o Primeiro Valor: ") leia(valor1) escreva("Digite o Segundo Valor: ") leia(valor2) se(valor1 > valor2) { escreva(valor2, "-> ", valor1) } senao { se (valor2 > valor1) { escreva(valor1, "-> ", valor2) } senao { escreva("OS DOIS VALORES SÃO IGUAIS") } } } } 26) Ler a hora de início e a hora de fim de um jogo de Xadrez (considere apenas horas inteiras, sem os minutos) e calcule a duração do jogo em horas, sabendo-se que o tempo máximo de duração do jogo é de 24 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte. RESPOSTA programa { funcao inicio() { inteiro horainicio = 0,horafim = 0,duracao = 0 escreva("Informe a hora de início do jogo de Xadrez (em horas):") leia(horainicio) escreva("Informe a hora de término do jogo de Xadrez (em horas):") leia(horafim) se(horainicio > horafim) { duracao = (24-horainicio)+horafim } senao { duracao = horafim - horainicio } escreva("Duração do jogo: ",duracao," horas.") } } 27) A jornada de trabalho semanal de um funcionário é de 40 horas. O funcionário que trabalhar mais de 40 horas receberá hora extra, cujo cálculo é o valor da hora regular com um acréscimo de 50%. Escreva um algoritmo que leia o número de horas trabalhadas em um mês, o salário por hora e escreva o salário total do funcionário, que deverá ser acrescido das horas extras, caso tenham sido trabalhadas (considere que o mês possua 4 semanas exatas). RESPOSTA: programa { funcao inicio() { inteiro horas_trabalhadas = 0, qtde_horas_extras = 0, total_horas_mes_normal = 0 real valor_hora = 0.0, salario_total = 0.0 escreva("Informe o número de horas trabalhadas no mês: ") leia(horas_trabalhadas) escreva("Informe o salário por hora: R$") leia(valor_hora) total_horas_mes_normal = 40 * 4 qtde_horas_extras = horas_trabalhadas - total_horas_mes_normal se (qtde_horas_extras <= 0) { salario_total = horas_trabalhadas * valor_hora } senao { salario_total = total_horas_mes_normal * valor_hora salario_total = salario_total + qtde_horas_extras * 1.5 * valor_hora } escreva("salário total = R$ ",salario_total) } } 28) Faça um algoritmo para ler: número da conta do cliente, saldo, débito e crédito. Após, calcular e escrever o saldo atual (saldo atual = saldo - débito + crédito). Também testar se saldo atual for maior ou igual a zero escrever a mensagem 'Saldo Positivo', senão escrever a mensagem 'Saldo Negativo'. RESPOSTA: programa { funcao inicio() { inteiro numerodaconta = 0 real saldo = 0.0, debito = 0.0, credito = 0.0, saldoatual = 0.0 escreva("Numero da conta: ") leia(numerodaconta) escreva("Saldo: ") leia(saldo) escreva("Debito: ") leia(debito) escreva("Credito: ") leia(credito) saldoatual = saldo - debito + credito se (saldoatual>=0) { escreva("Saldo atual = R$ ",saldoatual," - Saldo Positivo") } senao { escreva("Saldo atual = R$ ",saldoatual," - Saldo Negativo") } } } 29) Faça um algoritmo para ler: quantidade atual em estoque, quantidade máxima permitida em estoque e quantidade mínima permitido em estoque de um produto. Calcular e escrever o valor médio permitido em estoque ((quantidade média = quantidade máxima + quantidade mínima)/2). Se a quantidade atual em estoque for menor ou igual a quantidade média escrever a mensagem 'Efetuar a compra', senão escrever a mensagem 'Não efetuar compra'. RESPOSTA: programa { funcao inicio() { inteiro quantimax = 0,quantimin = 0,quantiatual = 0 real quantimedia = 0.0 escreva("Informe a quantidade atual em estoque do produto: ") leia(quantiatual) escreva("Informe a quantidade máxima permitida em estoque do produto: ") leia(quantimax) escreva("Informe a quantidade mínima permitida em estoque do produto: ") leia(quantimin) quantimedia = (quantimax+quantimin)/2 se (quantiatual>=quantimedia) { escreva("Efetuar compra") } senao { escreva("Não efetuar compra") } } } 30) Ler um valor e escrever se é par ou impar. RESPOSTA programa { funcao inicio() { inteiro valor = 0 escreva ("Digite um valor: ") leia(valor) se (valor % 2 == 0 ) { escreva("VALOR É POSITIVO") } senao { escreva("VALOR É NEGATIVO") } } } 31) Ler 3 valores (considere que não serão informados valores iguais) e escrever o maior deles. RESPOSTA programa { funcao inicio() { inteiro valor1 = 0,valor2 = 0,valor3 = 0,MAIOR = 0 escreva("Digite o Primeiro Valor: ") leia(valor1) escreva("Digite o Segundo Valor: ") leia(valor2) escreva("Digite o Terceiro Valor: ") leia(valor3) se (valor1 ==valor2 e valor2 == valor3) { escreva("TODOS OS VALORES SÃO IGUAIS") } senao { se (valor1 >= valor2 e valor1 >= valor3) { MAIOR = valor1 } se (valor2 >= valor1 e valor2 >= valor3) { MAIOR = valor2 } se (valor3 >= valor1 e valor3 >= valor2) { MAIOR = valor3 } escreva("Maior é ",MAIOR) } } } 32) Ler dois valores e imprimir uma das três mensagens a seguir: ‘Números iguais’, caso os números sejam iguais ‘Primeiro é maior’, caso o primeiro seja maior que o segundo; ‘Segundo maior’, caso o segundo seja maior que o primeiro. RESPOSTA programa { funcao inicio() { inteiro valor1 = 0,valor2 = 0 escreva("Digite o Primeiro Valor: ") leia(valor1) escreva("Digite o Segundo Valor: ") leia(valor2) se (valor1==valor2) { escreva("Números iguais") } se (valor1>valor2) { escreva("Primeiro é maior") } se (valor2>valor1) { escreva("Segundo é maior") } } } 33) Um posto está vendendo combustíveis com a seguinte tabela de descontos: até 20 litros, desconto de 3% por litro Álcool acima de 20 litros, desconto de 5% por litro até 20 litros, desconto de 4% por litro Gasolina acima de 20 litros, desconto de 6% por litro Escreva um algoritmo que leia o número de litros vendidos e o tipo de combustível (codificado da seguinte forma: A-álcool, G-gasolina), calcule e imprima o valor a ser pago pelo cliente sabendo-se que o preço do litro da gasolina é R$ 3,30 e o preço do litro do álcool é R$ 2,90. REPOSTA programa { funcao inicio() { real litros,valor,desconto,valortotal,valorlitro, preco_gasolina, preco_alcool cadeia tipo escreva("Tipo do combustível (digite 'A', se Alcool ou 'G', se Gasolina):") leia (tipo) escreva("Informe a quantidade de litros comprada: ") leia(litros) preco_gasolina = 3.3 preco_alcool = 2.9 se (tipo == "A") { se (litros>20) { valorlitro = preco_alcool - (preco_alcool*0.05) } senao { valorlitro = preco_alcool - (preco_alcool*0.03) } } se (tipo == "G") { se (litros>20) { valorlitro = preco_gasolina - (preco_gasolina*0.06) } senao { valorlitro = preco_gasolina - (preco_gasolina*0.04) } } valortotal = litros*valorlitro escreva("valor total da compra: R$ ",valortotal) } } 34) Uma fruteira está vendendo frutas com a seguinte tabela de preços: Fruta Até 5kg Acima de 5kg Morango R$ 2,50 por Kg R$ 2,20 por Kg Maçã R$ 1,80 por Kg 1,50 por Kg Se o cliente comprar mais de 8 Kg em frutas ou o valor total da compra ultrapassar R$ 25,00, receberá ainda um desconto de 10% sobre este total. Escreva um algoritmo para ler a quantidade (em Kg) de morangos e a quantidade (em Kg) de maças adquiridas e escreva o valor a ser pago pelo cliente. RESPOSTA programa { funcao inicio() { real kgmorangos,kgmacas,valormorangos,valormacas,valortotal escreva("informe quantidade de morangos(em kilogramas): ") leia(kgmorangos) escreva("informe quantidade de maçãs(em kilogramas): ") leia(kgmacas) se (kgmorangos>5) { valormorangos = 2.20 } senao { valormorangos = 2.50 } se(kgmacas>5) { valormacas = 1.50 } senao { valormacas = 1.80 } valortotal = kgmorangos*valormorangos + kgmacas*valormacas se (((kgmorangos+kgmacas)>8) ou (valortotal>25)) { valortotal = valortotal - valortotal*0.10 } escreva("Valor total da compra = R$ ",valortotal) } } 35) Uma empresa quer verificar se um empregado está qualificado para a aposentadoria ou não. Para estar em condições, um dos seguintes requisitos deve ser satisfeito: Ter no mínimo 65 anos de idade. Ter trabalhado no mínimo 30 anos. Ter no mínimo 60 anos e ter trabalhado no mínimo 25 anos. Com base nas informações acima, faça um algoritmo que leia: o número do empregado (código), o ano de seu nascimento e o ano de seu ingresso na empresa. O programa deverá escrever a idade e o tempo de trabalho do empregado e a mensagem 'Requerer aposentadoria' ou 'Não requerer'. RESPOSTA programa { funcao inicio() { inteiro codigo,anonascimento,anoingresso,idade,tempotrabalho escreva("informe seu código:") leia(codigo) escreva("informe seu ano de nascimento:") leia(anonascimento) escreva("informe o ano em que ingressou na empresa:") leia(anoingresso) idade=2015-anonascimento tempotrabalho = 2015 - anoingresso escreva("Idade: ",idade, " Tempo trabalhado: ",tempotrabalho,"\n") se (idade>=65 ou tempotrabalho>=30 ou (idade>=60 e tempotrabalho>=25)) { escreva("Requerer Aposentadoria") } senao { escreva("Não Requerer") } } } III - Utilizando estruturas de repetição desenvolva os seguintes algoritmos: 36) Escreva um algoritmo para ler 2 valores e se o segundo valor informado for ZERO, deve ser lido um novo valor, ou seja, para o segundo valor não pode ser aceito o valor zero e imprimir o resultado da divisão do primeiro valor lido pelo segundo valor lido. Acrescentar uma mensagem de 'VALOR INVÁLIDO' caso o segundo valor informado seja ZERO. RESPOSTA programa { funcao inicio() { real valor1 = 0.0, valor2 = 0.0, divisao = 0.0 inteiro contador = 0 escreva("Informe o Primeiro Valor:") leia(valor1) enquanto (valor2==0) { escreva("Informe o Segundo Valor:") leia(valor2) se (valor2 == 0) { escreva("VALOR INVÁLIDO, informe outro valor","\n") } } se (valor2 > 0) { divisao = valor1/valor2 escreva("Resultado: ",divisao) } } } 37) Faça um algoritmo que leia um conjunto de números (X) e imprima sua soma (Soma) e sua média (Media). Admita que o valor 9999 é utilizado como sentinela para fim de leitura. Ex.: 1, 2, 3 => Soma=6 Media=2 RESPOSTA programa { funcao inicio() { real valor1,soma = 0.0, media = 0.0 inteiro contador = 0 valor1 = 0.0 enquanto(valor1!=9999) { escreva("Informe um valor :") leia(valor1) se (valor1!=9999) { contador = contador + 1 soma = soma + valor1 } } se (contador > 0) { media = soma/contador escreva ("SOMA = ",soma," MÉDIA = ", media) } } } 38) Faça um algoritmo que leia um conjunto de dados numéricos (X) e imprima o maior dentre eles. Admita que o valor 9999 é utilizado como sentinela. Ex.: 1, 2, 3 => Maior=3 RESPOSTA programa { funcao inicio() { real valor1, maior maior = -99999.0 valor1 = 0.0 inteiro contador = 0 enquanto(valor1!=9999) { escreva("Informe um valor :") leia(valor1) se (valor1!=9999) { se (valor1 > maior) { maior = valor1 } contador = contador + 1 } } se (contador > 0) { escreva ("MAIOR = ",maior) } } } 39) (DIFÍCIL) Faça um algoritmo que leia dois números inteiros positivos (Num1 e Num2) e imprima o quociente (Quoc) e o resto (Resto) da divisão de Num1 por Num2, utilizando apenas as operações de adição e subtração. Ex.: N1=10; N2=2 => Q=5 R=0 RESPOSTA programa { funcao inicio() { inteiro dividendo = 0, divisor = 0, resto = 0 inteiro contador = 0 escreva("Informe o Dividendo: ") leia(dividendo) escreva("Informe o Divisor: ") leia(divisor) resto = dividendo enquanto (resto >= divisor) { resto = resto - divisor contador = contador + 1 } escreva("Resto: ",resto,"\n") escreva("Quociente: ",contador,"\n") } } 40) Faça um algoritmo que leia um conjunto de números (X) e imprima a quantidade de números pares (QPares) e a quantidade de números impares (QImpares) lidos. Admita que o valor 9999 é utilizado como sentinela para fim de leitura. Ex.: 1,2,3,4,5 => Pares=2 Impares=3 RESPOSTA programa { funcao inicio() { inteiro valor1, qpares = 0, qimpares = 0 inteiro contador = 0 valor1 = 0 enquanto(valor1!=9999) { escreva("Informeum valor :") leia(valor1) se (valor1!=9999) { se (valor1 % 2 == 0) { qpares = qpares + 1 } senao { qimpares = qimpares +1 } contador = contador +1 } } se (contador > 0) { escreva ("Quantidade de pares = ",qpares," Quantidade de impares = ",qimpares) } } } 41) Faça um algoritmo que calcule e imprime a soma dos inteiros de 1 a 10. Utilize uma estrutura de repetição para fazer um laço com as instruções de cálculo e incremento. O laço deve terminar quando o valor de x se tornar 11. RESPOSTA programa { funcao inicio() { inteiro soma = 0 para (inteiro x = 0; x <=10; x++) { soma = soma + x } escreva ("A SOMA DOS INTEIROS DE 1 A 10 É = ",soma) } } 42) Foi feita uma pesquisa com um grupo de alunos de uma universidade, na qual se perguntou para cada aluno o número de vezes que utilizou o restaurante da universidade no último mês. Admita que o valor 9999 é utilizado como sentinela para fim de leitura. Construa um algoritmo que determine: a) O percentual de alunos que utilizaram menos que 10 vezes o restaurante; b) O percentual de alunos que utilizaram entre 10 e 15 vezes; c) O percentual de alunos que utilizaram o restaurante acima de 15 vezes. Ex.: 2, 3, 11, 12, 21, 22, 23 = a) 28%; b) 28%; c) 42% RESPOSTA programa { funcao inicio() { inteiro valor1, contador = 0 real contadorMenorDez = 0.0, contadorMaiorQuinze =0.0, contadorEntreDezQuinze = 0.0 valor1 = 0 enquanto(valor1!=9999) { escreva("Informe Quantas Vezes Utilizou o Restaurante :") leia(valor1) se (valor1!=9999) { se (valor1 > 15) { contadorMaiorQuinze = contadorMaiorQuinze + 1 } senao { se (valor1 >=10) { contadorEntreDezQuinze = contadorEntreDezQuinze + 1 } senao { contadorMenorDez = contadorMenorDez + 1 } } contador = contador + 1 } } se (contador > 0) { escreva ("% menor que 10 vezes: ",contadorMenorDez/contador * 100,"\n") escreva ("% entre 10 e 15 vezes: ",contadorEntreDezQuinze/contador * 100,"\n") escreva ("% acima de 15 vezes: ", contadorMaiorQuinze/contador * 100,"\n") } } } 43) Faça um algoritmo que calcule a média de salários de uma empresa, pedindo ao usuário o nome dos funcionários e os salários e devolvendo a média, o salário mais alto e o salário mais baixo. Use nome = “fim” para encerrar a leitura. RESPOSTA programa { funcao inicio() { inteiro contador = 0 real maior =0.0, menor = 0.0, salario = 0.0, soma = 0.0 cadeia nome = "" //9) Faça um algoritmo que calcule a média de salários de uma empresa, //pedindo ao usuário o nome dos funcionários e os salários e devolvendo a média, //o salário mais alto e o salário mais baixo. Use nome = “fim” para encerrar a leitura. maior = -9999.0 menor = 9999.0 enquanto(nome!="fim") { escreva("Digite o nome :") leia(nome) se (nome!="fim") { escreva("Digite o salário :") leia(salario) se (salario > maior) { maior = salario } se (salario < menor) { menor = salario } soma = soma + salario contador = contador + 1 } } se (contador > 0) { escreva ("Media: ",soma / contador,"\n") escreva ("Maior: ",maior,"\n") escreva ("Menor: ",menor,"\n") } } } 44) Faça um algoritmo que leia um número e divida-o por dois (sucessivamente) ate que o resultado seja menor que 1. Mostre o resultado da ultima divisão e a quantidade de divisões efetuadas. RESPOSTA programa { funcao inicio() { inteiro numero inteiro contador = 0 real resto escreva("Informe o Segundo Valor:") leia(numero) resto = numero enquanto (resto >= 1) { resto = resto / 2 contador = contador + 1 } escreva("Resultado: ",resto,"\n") escreva("Contador: ",contador) } } IV - Utilizando Vetores e/ou modularização 45) Escreva um programa para ler um vetor A de 15 posições e imprimir seus elementos. programa { funcao inicio() { inteiro vetor[15],i para(i=0;i<15;i++){ leia(vetor[i]) } para(i=0;i<15;i++){ escreva(vetor[i]+" ") } } } 46) Faça um algoritmo que solicite que o usuário informe valores para um vetor com 10 posições e, após, implemente uma função que retorne verdadeiro caso dentro deste vetor tenha algum número repetido. programa { funcao inicio() { inteiro vetor[15],i para(i=0;i<15;i++){ leia(vetor[i]) } para(i=0;i<15;i++){ escreva(vetor[i]+" ") } } } 47) Crie um algoritmo que imprima na tela os elementos de um vetor de 10 números inteiros na ordem inversa. programa { funcao inicio() { inteiro vetor[15],i para(i=0;i<15;i++){ vetor[i] = i+1 } para(i=14;i>=0;i--){ escreva(vetor[i]+" ") } } } 48) Escreva um programa para ler um vetor Y (inteiro), de tamanho N (N<=20), determinar e imprimir o maior e o menor elemento deste vetor. programa { funcao inicio() { inteiro vetor[20],i inteiro maior = 0 inteiro menor =0 para(i=0;i<20;i++){ leia(vetor[i]) } maior = vetor[1] menor = vetor [1] para(i=0;i<20;i++){ se(vetor[i] > maior){ maior = vetor[i] } se(vetor[i] < menor){ menor = vetor[i] } } escreva("Maior "+maior) escreva(" Menor "+menor) } } 49) Escreva um programa para ler 5 elementos do vetor X de inteiros. Calcular e imprimir a soma dos elementos impares. Supor que o vetor poderá não ter nenhum elementos com esta propriedade e neste caso, mostrar mensagem. programa { funcao inicio() { inteiro vetor[5],i inteiro soma_impares = 0 para(i=0;i<5;i++){ leia(vetor[i]) } para(i=0;i<5;i++){ se(vetor[i] % 2 != 0) { soma_impares = soma_impares + vetor[i] } } se(soma_impares == 0){ escreva(" nao foram digitados numeros impares") }senao{ escreva(" Soma: "+soma_impares) } } } 50) Escreva um programa para ler 5 elementos do vetor X de inteiros. Criar e imprimir um novo vetor Y tal que seja formado pelos elementos pares do vetor X lido. Supor que o vetor poderá não ter nenhum elemento com esta propriedade e neste caso, mostrar mensagem. programa { funcao inicio() { inteiro vetor[5],i,vetor_pares[5] logico existe_par = falso para(i=0;i<5;i++){ leia(vetor[i]) vetor_pares[i] = 0 } para(i=0;i<5;i++){ se(vetor[i] % 2 == 0) { vetor_pares[i] = vetor[i] existe_par = verdadeiro } } se(existe_par){ para(i=0;i<5;i++){ se(vetor_pares[i] != 0) escreva(vetor_pares[i]+" ") } }senao{ escreva(" nao foram digitados numeros pares") } } } 51) Escreva um programa para ler dois vetores A e B, A de 5 elementos e B de 8 elementos, intercalar A e B gerando e imprimindo o vetor C. programa { funcao inicio() { inteiro vetorA[5],i,a=0,b=0,vetorB[8],vetorC[8] logico existe_par = falso escreva("Vetor A") para(i=0;i<5;i++){ leia(vetorA[i]) } escreva("Vetor B") para(i=0;i<8;i++){ leia(vetorB[i]) } para(i=0;i<8;i++){ se(i==0 ou i==2 ou i==4){ vetorC[i] = vetorA[a] a++ }senao{ vetorC[i] = vetorB[b] b++ } } para(i=0;i<8;i++){ escreva(vetorC[i]+" ") } } } 52) Escreva um programa para ler um vetor RTde número binário de no máximo 8 elementos (0 e 1 obrigatoriamente). O programa deve converte o número binário para decimal. programa { funcao inicio() { inteiro binario[8],i,num=3,decimal =0 para(i=0;i<8;i++){ escreva("Digite 0 ou 1: ") enquanto(num!=0 e num!=1){ leia(num) binario[i] = num } num = 3 } para(i=0;i<8;i++){ decimal = decimal + (2^(i+1) * binario[i]) } escreva(" "+decimal) } } V - Utilizando Arquivos 53) Foi feita uma pesquisa entre os habitantes de uma região e os seguintes dados foram coletados: idade, sexo (M/F) e salário. Cada um destes dados foi armazenado em arquivos diferentes conforme detalhado abaixo: 1 -arquivo idade.txt 18 33 48 18 59 40 2 - arquivo sexo.txt F M M F M M 3 - arquivo salario.txt 1200 1800 790 2500 4800 2300 Faça um algoritmo que informa: a) A média de salário do grupo programa { inclua biblioteca Arquivos inclua biblioteca Tipos funcao inicio() { cadeia linha inteiro arquivo,contador=0,acumulador=0,media,numero=0 arquivo = Arquivos.abrir_arquivo("C:/Users/Desktop/Nova Pasta/salario.txt",Arquivos.MODO_LEITURA) linha = Arquivos.ler_linha(arquivo) contador++ enquanto(linha!=""){ numero = Tipos.cadeia_para_inteiro(linha,numero) acumulador = acumulador + numero } media = acumulador /contador escreva("Media ="+media) } } b) Maior e menor idade do grupo programa { inclua biblioteca Arquivos inclua biblioteca Tipos funcao inicio() { cadeia linha inteiro arquivo,maior,numero=0 arquivo = Arquivos.abrir_arquivo("C:/Users/Desktop/Nova Pasta/salario.txt",Arquivos.MODO_LEITURA) linha = Arquivos.ler_linha(arquivo) numero = Tipos.cadeia_para_inteiro(linha,numero) maior = Tipos.cadeia_para_inteiro(linha,numero) enquanto(linha!=""){ numero = Tipos.cadeia_para_inteiro(linha,numero) se(numero > maior){ maior = numero } } escreva("Maior ="+maior) } } c) Quantidade de homens programa { inclua biblioteca Arquivos inclua biblioteca Tipos funcao inicio() { cadeia linha inteiro arquivo,num_homens=0 arquivo = Arquivos.abrir_arquivo("C:/Users/Desktop/Nova Pasta/sexo.txt",Arquivos.MODO_LEITURA) linha = Arquivos.ler_linha(arquivo) enquanto(linha!=""){ se(linha == "M"){ num_homens++ } } escreva("Qtd Homens = "+num_homens) } } Dica.: infelizmente no Portugol Studio você deve criar um arquivo para cada informação (idade, sexo e salário) pois ele ainda não possui uma função para dividir um string em um vetor. 54) Elabore um programa para verificar que produtos precisam ser comprados e a quantidade a ser adquirida tendo as seguintes informações (arquivos): 1-arquivo produto.txt Arroz Feijão Sal Açúcar Macarrão Farinha 2-arquivo qtdmin.txt 10 20 30 40 10 8 3-arquivo qtdest.txt 40 5 32 38 8 15 Um produto somente deverá ser comprado quando: a quantidade em estoque for menor ou igual a quantidade mínima: QTCOMPRAR = (QTDMAX – QTDEST) Grave em outro arquivo: Produto e Quantidade a Comprar Dica.: infelizmente no Portugol Studio você deve criar um arquivo para cada informação (idade, sexo e salário) pois ele ainda não possui uma função para dividir um string em um vetor. programa { inclua biblioteca Arquivos inclua biblioteca Tipos funcao inicio() { cadeia produto[6] inteiro arquivo[3],num_homens=0,i,j,qtdmin[6],qtdest[6] arquivo[0] = Arquivos.abrir_arquivo("C:/Users/Desktop/Nova Pasta/ produto.txt", Arquivos.MODO_LEITURA) arquivo[1] = Arquivos.abrir_arquivo("C:/Users/Desktop/Nova Pasta/qtdmin.txt", Arquivos.MODO_LEITURA) arquivo[2] = Arquivos.abrir_arquivo("C:/Users/Desktop/Nova Pasta/qtdest.txt", Arquivos.MODO_LEITURA) arquivo[3] = Arquivos.abrir_arquivo("C:/Users/Desktop/Nova Pasta/qtdcompra.txt", Arquivos.MODO_LEITURA) para(i=0;i<6;i++){ produto[i] = Arquivos.ler_linha(arquivo[0]) qtdmin[i] = Tipos.cadeia_para_inteiro(Arquivos.ler_linha(arquivo[1]),qtdmin[i]) qtdest[i] = Tipos.cadeia_para_inteiro(Arquivos.ler_linha(arquivo[2]),qtdmin[i]) se((qtdest[i] - qtdmin[i]) <0){ Arquivos.escrever_linha(produto[i] + (qtdmin[i]-qtdest[i]), arquivo[3]) } } escreva("Qtd Homens = "+num_homens) } } �PAGE�1� / �NUMPAGES�19�
Compartilhar