Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação de Computadores Solução do 2o Exercício 1 – ALGORITMO SAÍDA a 6, 5, 4, 3, 2, 1 b 6, 12, 18 2 - ALGORITMO O QUE FAZ a Escreve os números inteiros de 1 a 10 b Escreve os números inteiros de 1 a N, sendo N fornecido na entrada c Determina se um número é primo d Calcula a soma dos algarismos de um número e Determina o maior divisor de um número f Escreve os números impares entre 100 e 1 g Calcula a raiz quadrada exata de 10 números, caso existam h Determina o menor divisor comum não trivial de dois números, caso exista 3 – { Escreve os números inteiros múltiplos de 3 compreendidos entre 1 e 100 } Algoritmo declare X numérico { número múltiplo de 3 } X ← 3 repita escreva X X ← X + 3 se X > 100 então interrompa fim se fim repita fim algoritmo 4– { Escreve os números ímpares compreendidos em um dado intervalo } Algoritmo Defina o tipo das variáveis leia A, B X ← A repita se X > B então interrompa fim se escreva X X ← X + 2 fim repita fim algoritmo ref: Defina o tipo das variáveis declare A, B { números inteiros ímpares que definem o intervalo - entrada } X { número ímpar no intervalo } numérico fim ref 5 – { Tabula a função trigonométrica sen(Ө) no intervalo de 0 a 2π radianos } Algoritmo Defina o tipo das variáveis A ← 0 repita Seno ← sen(A) escreva A, Seno A ← A + 0,1 se A > 6,28 então interrompa fim se fim repita fim algoritmo ref: Defina o tipo das variáveis declare A { ângulo em radianos } Seno { valor da função sen() para o ângulo A } numérico fim ref 6 – { Escreve todos os divisores de um número inteiro positivo fornecido na entrada } Algoritmo Defina o tipo das variáveis leia N D ← 1 repita se resto(N , D ) = 0 então escreva D fim se D ← D + 1 se D > N então interrompa fim se fim repita fim algoritmo ref: Defina o tipo das variáveis declare N, { número inteiro positivo qualquer - entrada } D { possível divisor } numérico fim ref PS: Este algoritmo pode ser mais eficiente? Como exemplo de uma solução melhor, o algoritmo da Questão 7 será alterado para diminuir significativamente o número de execuções do comando de repetição. 7– { Escreve todos os divisores de um número inteiro positivo e a calcula a quantidade destes divisores } Algoritmo Defina o tipo das variáveis leia N NumDivisores ← 0 D ← 1 repita se resto(N , D ) = 0 então Q ← quociente( N, D ) { o quociente é outro divisor, relacionado ao divisor D } escreva D, Q NumDivisores ← NumDivisores + 2 fim se D ← D + 1 se D ≥ √ N então { acima da raiz de N estão os divisores relacionados a D, } interrompa { que já foram encontrados } fim se fim repita se resto(N, D) = 0 e D = quociente(N, D) então { a “raiz quadrada” exata é um caso particular, } escreva D { pois deve ser escrita e contada uma única vez } NumDivisores ← NumDivisores + 1 fim se escreva NumDivisores fim algoritmo ref: Defina o tipo das variáveis declare N, { número inteiro positivo qualquer - entrada } D { possível divisor } NumDivisores { quantidade de divisores de N, exceto 1 e o próprio N - saída} numérico fim ref 8– { Calcula e escreve a média aritmética de 100 números fornecidos na entrada } Algoritmo declare Numero { número do conjunto para cálculo da média } Soma { soma dos números fornecidos na entrada } Media { média do conjunto de números } K { contador } numérico Soma ← 0 k ← 0 repita leia Numero Soma ← Soma + Numero k ← k + 1 se k = 100 então ‘ interrompa fim se fim repita Media ← Soma / 100 escreva Media fim algoritmo 9– { Calcula e escreve a média aritmética de N números fornecidos na entrada } Algoritmo Defina o tipo das variáveis leia N Soma ← 0 k ← 0 repita leia Numero Soma ← Soma + Numero k ← k + 1 se k = N então ‘ interrompa fim se fim repita Media ← Soma / N escreva Media fim algoritmo ref: Defina o tipo das variáveis declare N { quantidade de números a serem fornecidos na entrada } Numero { número do conjunto para cálculo da média } Soma { soma dos números fornecidos na entrada } Media { média do conjunto de números } K { contador } numérico fim ref 10– { Calcula e escreve a média aritmética de uma quantidade indeterminada de nos fornecidos na entrada } Algoritmo declare Numero { número do conjunto para cálculo da média } Soma { soma dos números fornecidos na entrada } Media { média do conjunto de números } K { contador } numérico Soma ← 0 k ← 0 repita leia Numero se Numero ≤ 0 então ‘ interrompa fim se Soma ← Soma + Numero k ← k + 1 fim repita Media ← Soma / k escreva Media fim algoritmo ref: Defina o tipo das variáveis declare Numero { número do conjunto para cálculo da média } Soma { soma dos números fornecidos na entrada } Media { média do conjunto de números } K { contador } numérico fim ref 11 – { Determina a maior altura de um grupo de 100 pessoas } Algoritmo Defina o tipo das variáveis leia Altura MaiorAltura ← Altura { considera a 1ª altura a maior do grupo } K ← 1 repita leia Altura se Altura > MaiorAltura então { verifica se altura é maior do que as anteriores } MaiorAltura ← Altura fim se K ← K + 1 se K = 100 então interrompa fim se fim repita escreva Maioraltura fim algoritmo ref: Defina o tipo das variáveis declare Altura, { altura de uma pessoa em metros } MaiorAltura { maior altura do grupo } K { contador de pessoas } numérico declare Nome { nome de uma pessoa } literal fim ref 12 – { Determina as duas maiores alturas de um grupo de 100 pessoas } Algoritmo Defina o tipo das variáveis leia Altura PrimeiraMaiorAltura ← Altura { em um grupo de 1 altura, ela é a primeira e a segunda maior } SegundaMaiorAltura ← Altura K ← 1 repita leia Altura Determine se a nova Altura é a primeira maior ou a segunda maior K ← K + 1 se K = 100 então interrompa fim se fim repita escreva PrimeiraMaiorAltura, SegundaMaiorAltura fim algoritmo ref: Determine se a nova Altura é a primeira maior ou a segunda maior se Altura > PrimeiraMaiorAltura então SegundaMaiorAltura ← PrimeiraMaiorAltura PrimeiraMaiorAltura ← Altura senão se Altura > SegundaMaiorAltura então SegundaMaiorAltura ← Altura fim se fim ref ref: Defina o tipo das variáveis declare Altura { altura de uma pessoam metros } K { contador de pessoas } Primeira MaiorAltura { primeira maior altura do grupo } SegundaMaiorAltura { segunda maior altura do grupo } numérico fim ref 13 – { Determina o nome da pessoa mais alta de um grupo de 100 pessoas } Algoritmo Defina o tipo das variáveis leia Nome, Altura MaiorAltura ← Altura PessoaMaisAlta ← Nome { o que se busca é o nome, e não a altura da pessoa } K ← 1 repita leia Nome, Altura se Altura > MaiorAltura então MaiorAltura ← Altura PessoaMaisAlta ← Nome { o nome da pessoa acompanha a sua altura } fim se K ← K + 1 se K = 100 então interrompafim se fim repita escreva PessoaMaisAlta fim algoritmo ref: Defina o tipo das variáveis declare Altura, { altura de uma pessoa em metros } K { contador de pessoas } numérico declare Nome { nome de uma pessoa } PessoaMaisAlta { nome da pessoa mais alta } literal fim ref 14 – { Determina os divisores comuns para 30 pares de números inteiros } Algoritmo Defina o tipo da variáveis K ← 1 repita se K > 30 então interrompa fim se leia A, B escreva A, B Determine e escreva os divisores comuns de A e B K ← K + 1 fim repita fim algoritmo ref: Determina os divisores comuns de A e B D ← 1 repita se resto(A , D ) = 0 e resto(B , D ) = 0 então escreva D fim se D ← D + 1 se ( D > A ) ou ( D > B ) então interrompa fim se fim repita fim ref ref: Defina o tipo das variáveis declare A, B {números inteiros a serem lidos} K {contador} D {possível divisor} numérico fim ref 15 – { Calcula o fatorial de um conjunto de n números inteiros} Algoritmo defina o tipo das variáveis leia n Cont ← 0 repita leia X Calcule o fatorial de X escreva X, FatX Cont ← Cont + 1 se Cont = n então interrompa fim se fim repita fim algoritmo ref : Calcula o fatorial de X FatX ← 1 I ← 2 repita se I > X então interrompa fim se FatX ← FatX x I I ← I + 1 fim repita fim ref ref: defina o tipo das variáveis declare n { quantidade de valores } X { número inteiro positivo fornecido na entrada } FatX { valor do fatorial do número lido } Cont { contador de valores } I { auxiliar } numérico fim ref 16 – { Escreve mensagem para números inteiros positivos fornecidos na entrada que sejam Primos } Algoritmo defina o tipo das variáveis repita leia N se N < 0 então { o usuário fornece número negativo para finalizar entrada de dados } interrompa fim se Verifica se N é primo fim repita fim algoritmo ref : Verifica se N é primo Primo ← verdadeiro { assume que N é primo e tenta provar o contrário } D ← 2 repita se ( D > √ N ) ou ( não Primo ) então { acima da raiz quadrada só existem divisores corres- } interrompa { pondentes aos que estão abaixo } fim se { quando achar um divisor também interrompe } se resto(N , D ) = 0 então Primo ← falso { provou que N não é primo } fim se D ← D + 1 fim repita se Primo e N ≠ 1 então { a variável Primo sinaliza o resultado da verificação } escreva “NÚMERO PRIMO” { o número 1 não é primo } senão escreva “NÚMERO NÃO É PRIMO” fim se fim ref ref: defina o tipo das variáveis declare N { número inteiro positivo candidato a ser primo } D { possível divisor para N } numérico declare Primo { sinaliza o resultado da verificação } lógico fim ref Solução alternativa do refinamento para verificar se o número é primo, sem utilizar a variável lógica. ref : Verifica se N é primo D ← 2 repita se D > √ N ou resto(N , D ) = 0 então { interrompe por uma das condições: ou não tem } interrompa { mais candidatos a divisor, ou achou um divisor } fim se D ← D + 1 fim repita se D > √ N e N ≠ 1 então { pela condição que interrompeu o repita, sabe-se } escreva “NÚMERO PRIMO” { o resultado a verificação. } senão { Também evita considerar o no 1 como primo } escreva “NÚMERO NÃO É PRIMO” fim se fim ref 17 – { Tabula a série S = 52 + 62 + 72 + 82 + 92 + ... utilizando os 100 primeiros termos } Algoritmo declare S { valor da série } N { auxiliar para gerar os termos } k { contador de termos } numérico S ← 0 k ← 0 N ← 5 repita S ← S + N2 N ← N + 1 k ← k + 1 se k = 20 então interrompa fim se fim repita escreva S fim algoritmo 18 – { Tabula a série S = (1/ 11) – (2/22) + (3/33) – (4/44) + (5/55) – ... utilizando os 20 primeiros termos } Algoritmo defina o tipo das variáveis S ← 0 Sinal ← 1 N ← 1 repita S ← S + ( N / NN ) x Sinal Sinal ← - Sinal N ← N + 1 se N > 20 então interrompa fim se fim repita escreva S fim algoritmo ref: defina o tipo das variáveis declare S { valor da série } N { auxiliar para gerar e contar os termos } numérico fim ref 19 – { Ex. 1.12.5 do livro: Calcular o no de anos necessários para que a população de um país A ultrapasse } { ou iguale a população do país B, dada a população atual e a taxa de crescimento de cada país } Algoritmo declare PopulacaoPaisA, { população atual de 90.000.000 e taxa de crescimento de 3% } PopulacaoPaisB { população atual de 200.000.000 e taxa de crescimento de 1,5% } TotalDeAnos { número de anos a ser calculado } numérico TotalDeAnos ← 0 PopulacaoPaisA ← 90.000.000 PopulacaoPaisB ← 200.000.000 repita se PopulaçãoPaisA ≥ PopulacaoPaisB então interrompa fim se PopulacaoPaisA ← PopulacaoPaisA x 1,03 { a população do país A aumenta de 3% por ano } PopulacaoPaisB ← PopulacaoPaisB x 1,015 { a população do país B aumenta de 1,5% por ano } TotalDeAnos ← TotalDeAnos + 1 fim repita escreva TotalDeAnos fim algoritmo 20 – { Ex. 1.12.10 do livro: Calcula porcentagens de audiência de emissoras de TV } Algoritmo defina o tipo das variáveis atribua valores inicias necessários repita leia Canal, NumPessoas se Canal = 0 então interrompa fim se contabilize a audiência fim repita calcule e escreva as porcentagens de audiência fim algoritmo ref : contabilize a audiência se Canal = 4 então C4 ← C4 + NumPessoas senão se Canal = 5 então C5 ← C5 + NumPessoas senão se Canal = 7 então C7 ← C7 + NumPessoas senão C12 ← C12 + NumPessoas fim se fim se fim se fim ref ref : calcule e escreva as porcentagens Total ← C4 + C5 + C7 + C12 Porcentagem ← (C4 / Total ) / 100 escreva 4 , Porcentagem Porcentagem ← (C5 / Total ) / 100 escreva 5 , Porcentagem Porcentagem ← (C7 / Total ) / 100 escreva 7 , Porcentagem Porcentagem ← (C12 / Total ) / 100 escreva 12 , Porcentagem fim ref ref : atribua os valores iniciais necessários C4 ← 0 C5 ← 0 C7 ← 0 C12 ← 0 fim ref ref: defina o tipo das variáveis declare Canal { número do canal assistido } NumPessoas { quantidade de pessoas assistindo o canal } C4, C5, C7, C12 { contadores de audiência por canal } Porcentagem { porcentagem de audiência } Total { total de pessoas } numérico fim ref 21 – { Ex. 1.12.13 do livro: Pesquisa sobre o consumo mensal de energia elétrica em uma cidade } Algoritmo defina o tipo das variáveis atribua valores inicias necessários leia PrecoKwh, Consumidor, Consumo, TipoConsumidor MaiorConsumo ← Consumo MenorConsumo ← Consumo repita TotalAPagar ← Consumo x PrecoKwh escreva Consumidor, TotalAPagar NC ← NC + 1 leia PrecoKwh, Consumidor, Consumo, TipoConsumidor se Consumidor = 0 então interrompa fim se Determine se este Consumo é o maior ou o menor da cidade Calcule o total de consumo para cada um dos três tipos fim repita MediaGeral ← ( TotalResidencial + TotalComercial + TotalIndustrial ) / NC escreva MaiorConsumo, MenorConsumo escreva TotalResidencial, TotalComercial, TotalIndustrical, MediaGeral fim algoritmo ref : Determine se este Consumoé o maior ou o menor da cidade se Consumo > MaiorConsumo então MaiorConsumo ← Consumo senão se Consumo < MenorConsumo então MenorConsumo ← Consumo fim se fim ref ref : Calcule o total de consumo para cada um dos três tipos se Tipo = “Residencial” então TotalResidencial ← TotalResidencial + Consumo senão se Tipo = “Comercial” então TotalComercial ← TotalComercial + Consumo senão TotalIndustrial ← TotalIndustrial + Consumo fim se fim se fim ref ref : atribua os valores iniciais necessários NC ← 0 TotalResidencial ← 0 TotalComercial ← 0 TotalIndustrial ← 0 fim ref ref: defina o tipo das variáveis declare Consumidor { número do consumidor } PrecoKWh { preço unitário do Kilowatt/hora } Consumo { consumo mensal em Kilowatts/hora } TipoConsumidor { um dos códigos: residencial, comercial ou industrial } TotalAPagar { valor total mensal a ser pago pelo consumidor } NC { número de consumidores - contador } MenorConsumo { menor consumo verificado no mês } MaiorConsumo { maior consumo verificado no mês } TotalResidencial { total mensal de consumo para consumidores do tipo Residencial } TotalComercial { total mensal de consumo para consumidores do tipo Comercial } TotalIndustrial { total mensal de consumo para consumidores do tipo Industrial } numérico fim ref 22 – { Ex. 1.12.22 do livro: Otimiza o lucro de uma fábrica de rádios } Algoritmo Defina o tipo das variáveis leia X, Y NumOpStandard ← 24 { 1ª tentativa: 24 operários na linha standart e nenhum linha luxo } NumOpLuxo ← 0 LucroMáximo ← 0 Sinal ← 1 repita Lucro ← NumOpStandard x X + (NumOpLuxo / 2) x Y se Lucro > LucroMáximo então LucroMáximo ← Lucro MelhorNumOpStandard ← NumOpStandard { objetivo: saber a melhor alocação de operários} MelhorNumOpLuxo ← NumOpLuxo fim se NumOpStandard ← NumOpStandard – 2 { próxima alocação possível para os operários } NumOpLuxo ← NumOpLuxo + 2 se NumOpStandard < 0 então interrompa fim se fim repita NumRadiosStandard ← MelhorNumOpStandard NumRadiosLuxo ← MelhorNumOpLuxo / 2 escreva LucroMáximo escreva MelhorNumOpStandard, NumRadiosStandard escreva MelhorNumOpLuxo, NumRadiosLuxo fim algoritmo ref: Defina o tipo das variáveis declare X, { lucro em reais na venda de um rádio standard } Y { lucro em reais na venda de um rádio luxo } NumOpStandard { número de operários na linha Standard - máximo de 24 } NumOpLuxo { número de operários na linha Luxo - máximo de 32 } MelhorNumOpStandard { número de operários na linha Standard para lucro máximo } MelhorNumOpLuxo { número de operários na linha Luxo para lucro máximo } LucroMáximo { lucro máximo da empresa } NumRadiosStandard { número de rádios produzidos na linha Standard para lucro máximo } NumRadiosLuxo { número de rádios produzidos na linha Luxo para lucro máximo } numérico fim ref 23 – { Ex. 1.12.32 do livro: Calcula o valor aproximado de π } Algoritmo Defina o tipo das variáveis S ← 1 CT ← 1 N ← 3 repita S ← S + ( 1 / N3 ) x (-1) CT CT ← CT + 1 se CT = 51 então { utiliza os primeiros 51 termos da série } interrompa fim se N ← N + 2 fim repita Pi ← 3 32×S escreva Pi fim algoritmo ref: Defina o tipo das variáveis declare N { Números impares, denominador da serie} S { Valor da serie } Pi { Valor aproximado para π } CT { Contador de Termos } numérico fim ref 24 – { x. 1.12.55 do livro: Calcula a trigésima aproximação da raiz da equaçãp X3 – 3X2 + 1 = 0 } Algoritmo declare X { Raiz aproximada da equação } N { Contador de aproximações } numérico X ← 1,5 N ← 0 repita se N = 30 então interrompa fim se N ← N + 1 X ← (X3 - 3 x X2 + 1) / (3 x X2 - 6 x X) fim repita escreva X fim algoritmo 25 – { Ex. 1.12.56 do livro: tabulação de função F = (x2 + 3x + y2) / (xy – 5y – 3x + 15) } Algoritmo Defina o tipo das variáveis N ← 1 repita se N > 10 então interrompa fim se X ← N2 { X assume como valores os quadrados perfeitos entre 1 e 100 } Calcule e escreva o valor da função para cada valor de Y N ← N + 1 fim repita fim algoritmo ref: Calcule e escreva o valor da função para cada valor de Y Y ← 0 repita se Y > 5 então interrompa fim se F ← (X2 + 3 x X + Y2) / (X x Y – 5 x Y – 3 x X + 15) escreva X, Y, F Y ← Y + 1 fim repita fim ref ref: Defina o tipo das variáveis declare X, Y { incógnitas da função } F { função a ser calculada } N { auxiliar para gerar os valores de X } numérico fim ref 26 – { Ex. 1.12.66 do livro: Determina os nos menores que 10.000 que são quadrados perfeitos e capicuas } Algoritmo Defina o tipo das variáveis X ← 1 repita N ← X2 Determine o número formado pelos algarismos invertidos de N se N = NInvertido então { se N é capicua } escreva N fim se X ← X + 1 se X > 100 então interrompa fim se fim repita fim algoritmo ref: Determine o número formado pelos algarismos invertidos de N NInvertido ← 0 Aux ← N { cópia de N, cujo valor será alterado } repita se Aux = 0 então interrompa fim se NInvertido ← NInvertido x 10 + Resto( Aux, 10 ) Aux ← Quociente( Aux, 10 ) fim repita fim ref ref: Defina o tipo das variáveis declare X { número inteiro de 1 a 100 } N { quadrado perfeito de X – número entre 1 e 10.000 } NInvertido { número formado pelos algarismos invertidos de N } Aux { variável auxiliar para salvar o valor de N } numérico fim ref
Compartilhar