Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação de Computadores Solução do 1o Exercício 1 – ALGORITMO RESPOSTA 1a linha, 1a coluna 321 1a linha, 2a coluna NÃO 2a linha, 1a coluna DENTRO FIM 2a linha, 2a coluna INICIO FORA 3a linha, 1a coluna 4 3a linha, 2a coluna B D 4a linha, 1a coluna ERRO1 4a linha, 2a coluna falso 2 – ALGORITMO RESPOSTA 1a linha, 1a coluna Determina o menor de três números quaisquer 1a linha, 2a coluna Determina se dois números positivos são iguais 2a linha, 1a coluna Determina se um nº é a raiz quadrada de outro 2a linha, 2a coluna Determina se um nº é divisor comum de outros dois 3 – { Imprime quatro números em ordem contrária em que foram lidos } Algoritmo declare A, B, C, D numérico { números quaisquer } leia A, B, C, D { a ordem das variáveis neste comando é a ordem de entrada dos valores } escreva D, C, B, A { a ordem das variáveis neste comando é a ordem de escrita } fim algoritmo 4 – { Converte um dado número decimal de dois dígitos para o binário correspondente } Algoritmo declare ND, NB { Número Decimal e Número Binário correspondente } D1, D2,D3,D4,D5,D6,D7 { Dígitos binários } numérico leia ND { o maior número decimal de 2 dígitos é 99, que corresponde a um binário de 7 bits: 1100011 } { Para decimais menores, os bits a mais serão iguais a zero, mais à esquerda, o que não altera o resultado } D1 ← Resto( ND, 2 ) { obtém o bit mais à direita do nº binário correspondente } ND ← Quociente( ND, 2 ) D2 ← Resto( ND, 2 ) { obtém o segundo bit mais à direita do nº binário correspondente, ... } ND ← Quociente( ND, 2 ) D3 ← Resto( ND, 2 ) ND ← Quociente( ND, 2 ) D4 ← Resto( ND, 2 ) ND ← Quociente( ND, 2 ) D5 ← Resto( ND, 2 ) ND ← Quociente( ND, 2 ) D6 ← Resto( ND, 2 ) ND ← Quociente( ND, 2 ) D7 ← Resto( ND, 2 ) NB ← D1 + D2x101 + D3x102 + D4x103 + D5x104 + D6x105 + D7x106 escreva NB fim algoritmo 5 – { Calcula a área de um triângulo pela fórmula de Hierão } Algoritmo declare a, b, c { medidas dos lados do triângulo } s { semiperímetro } A { área do triângulo } numérico leia a, b, c s ← (a + b + c) / 2 A = √ s x (s-a) x (s-b) x (s-c) escreva A fim algoritmo 6 – { Encontra solução de um sistema de duas equações e duas incógnitas } Algoritmo declare a, b, c, d, e, f { coeficientes das equações } x1, x2 { solução do sistema } numérico leia a, b, c, d, e, f x1 ← (c x e – b x f) / (d x e – b x d) { se o denominador assumir o valor zero } x2 ← (a x f – e x d) / (a x e – b x d) { a execução do programa é abortada – erro em tempo de execução! } escreva x1, x2 fim algoritmo 7 – { Calcula a Raiz Média Quadrática de um conjunto de 6 números quaisquer } Algoritmo declare A, B, C, D, E, F, { conjunto de números fornecido } RMQ { Raiz Média Quadrática } numérico leia A, B, C, D, E, F RMQ ← √ (A2 + B2 + C2 + D2 + E2 + F2) / 6 escreva RMQ fim algoritmo 8 – { Determina o maior de dois números quaisquer } Algoritmo declare X, Y numérico { números quaisquer } leia X, Y se X > Y então { no caso de X ser igual a Y, tanto faz escrever X ou Y } escreva X senão escreva Y fim se fim algoritmo 9 – { Classifica em ordem crescente dois números quaisquer } Algoritmo declare X, Y numérico { números quaisquer } leia X, Y se X < Y então { no caso de X ser igual a Y, tanto faz escrever primeiro X ou Y } escreva X, Y senão escreva Y, X fim se fim algoritmo 10– { Verifica se um dado número é PAR ou IMPAR } Algoritmo declare N numérico { número inteiro qualquer } leia N se Resto( N, 2 ) = 0 então escreva “PAR” senão escreva “ÍMPAR” fim se fim algoritmo 11 – { Escreve a mensagem POSITIVO, NEGATIVO ou ZERO, conforme o sinal de um número } Algoritmo declare N numérico { número qualquer } leia N se N > 0 então escreva “POSITIVO” senão se N < 0 então escreva “NEGATIVO” senão escreva “ZERO” fim se fim se fim algoritmo 12– { Escreve mensagem sinalizando se um dado número pertence ao intervalo fechado [0, 100] } Algoritmo declare N numérico { número qualquer } leia N se N ≥ 0 e N ≤ 100 então escreva “O NÚMERO PERTENCE AO INTERVALO” senão escreva “O NÚMERO NÃO PERTENCE AO INTERVALO” fim se fim algoritmo 13– { Dado um número de 3 dígitos, determina o número formado pela inversão de seus dígitos } Algoritmo declare N { número inteiro de três dígitos } D1, D2, D3 { dígitos de N } numérico leia N D3 ← Resto( N, 10 ) { dígito das unidades } N ← Quociente( N, 10 ) D2 ← Resto( N, 10 ) { dígito das dezenas } D1 ← Quociente( N, 10 ) { dígito das centenas } N ← (D3 x 100) + (D2 x 10) + (D1) { montagem do número invertido } escreva N fim algoritmo 14– { Determina qual o conceito de um aluno de Programação de Computadores a partir de sua nota } Algoritmo declare Nota numérico declare Conceito literal leia Nota Determine o conceito do aluno escreva Conceito fim algoritmo ref: Determine o conceito do aluno se Nota >= 90 então { A Nota deve ser um número entre 0 e 100. Não é feita consistência de dados } Conceito ← “A” senão se Nota >= 80 então Conceito ← “B” senão se Nota >= 70 então Conceito ← “C” senão se Nota >= 60 então Conceito ← “D” senão se Nota >= 40 então Conceito ← “E” senão Conceito ← “F” fim se fim se fim se fim se fim se fim ref 15 – { Verifica se três medidas podem formar um triângulo, e de qual tipo } Algoritmo declare A, B, C numérico leia A, B, C se A < B+C e B < A+C e C < A+ B então Determine qual o tipo do triângulo senão escreva “As medidas não formam um triângulo” fim se fim algoritmo ref: Determine qual o tipo do triângulo se (A = B) e (B = C) então escreva “Triângulo Equilátero” senão se A = B ou A = C ou B = C então escreva “Triângulo Isóceles” senão escreva “Triângulo Escaleno” fim se fim se fim ref 16– { Determina quantoas notas de 50, 10 e 1 reais são necessárias para se pagar uma conta de buteco } Algoritmo declare ValorConta { valor da conta do buteco em reais } Notas50 { número de notas de 50 reais } Notas10 { número de notas de 10 reais } Notas1 { número de notas de 1 real } numérico leia ValorConta Notas50 ← Quociente( ValorConta, 50 ) { multiplicidade do número 50 no valor da conta } ValorConta ← Resto( ValorConta, 50 ) Notas10 ← Quociente( ValorConta, 10 ) { quantidade de dezenas no restante do valor } Notas1 ← Resto( ValorConta, 10 ) { número de unidades } escreva Notas50, Notas10, Notas01 fim algoritmo 17 – { Determina o maior valor dentre quatro números dados } Algoritmo declare A, B, C, D numérico { quatro números quaisquer fornecidos na entrada } leia A, B, C se A > B e A > C e A > D então escreva A senão Determine o maior valor dentre B, C e D fim se fim algoritmo ref: Determine o maior valor dentre B, C e D se B > C e B > D então escreva B senão Determine o maior valor dentre C e D fim se fim se fim ref ref: Determine o maior valor dentre C e D se C > D então escreva C senão escreva D fim se fim ref 18 – { classifica três valores em ordem decrescente } Algoritmo declare A, B, C { valores de entrada } Primeiro { maior valor } Segundo{ valor do meio } Terceiro { menor valor } numérico leia A, B, C se A>B e A>C então Primeiro ← A Ordena os dois valores B e C senão se B >C então Primeiro ← B Ordena os dois valores A e C senão Primeiro ← C Ordena os dois valores A e B fim se fim se escreva Primeiro, Segundo, Terceiro fim algoritmo ref: Ordena os dois valores B e C se B > C então Segundo ← B Terceiro ← C senão Segundo ← C Terceiro ← B fim se fim ref ref: Ordena os dois valores A e C se A > C então Segundo ← A Terceiro ← C senão Segundo ← C Terceiro ← A fim se fim ref ref: Ordena os dois valores A e B se A > B então Segundo ← A Terceiro ← B senão Segundo ← B Terceiro ← A fim se fim ref Observação : Quando utilizar “refinamentos sucessivos” não é necessário montar a versão final do algoritmo. Isto será feito diretamente na etapa de codificação do programa. { classifica três valores em ordem decrescente } Algoritmo declare A, B, C { valores de entrada } numérico leia A, B, C se A>B e A>C e B>C então escreva A, B, C fim se se A>B e A>C e C>B então escreva A, C, B fim se se B>A e B>C e A>C então escreva B, A, C fim se se B>A e B>C e C>A então escreva B, C, A fim se se C>A e C>B e A>B então escreva C, A, B fim se se C>A e C>B e B>A então escreva C, B, A fim se fim algoritmo Observação: Aparentemente a segunda solução é melhor que a primeira, pois o algoritmo é menor. Contudo, podemos verificar que existe um padrão de raciocínio na primeira solução. Imagine que sejam quatro valores ao invés de três! Veremos adiante que a primeira solução pode ser “modularizada”, o que diminuirá o seu tamanho e a tornará muito mais simples. S O L U Ç Ã O A L T E R N A T I V A 19 – { Determina o maior dentre dez números quaisquer } Algoritmo declare A, B, C, D, E, F, G, H , I, J numérico { números quaisquer } leia A, B, C, D, E, F, G, H , I, J se A>B e A>C e A>D e A>E e A>F e A>G e A>H e A>I e A>J então escreva A senão se B>C e B>D e B>E e B>F e B>G e B>H e B>I e B>J então escreva B senão se C>D e C>E e C>F e C>G e C>H e C>I e C>J então escreva C senão se D>E e D>F e D>G e D>H e D>I e D>J então escreva D senão se E>F e E>G e E>H e E>I e E>J então escreva E senão se F>G e F>H e F>I e F>J então escreva F senão se G>H e G>I e G>J então escreva G senão se H>I e H>J então escreva H senão se I>J então escreva I senão escreva J fim se fim se fim se fim se fim se fim se fim se fim se fim se fim algoritmo Observações: Solução estranha, não? Como daria trabalho se fossem 100 ou 1000 números! Dizemos que a solução é possível, mas impraticável. Este problema foi colocado na lista para mostrar que falta alguma coisa a mais na notação algorítimica. É isso. O que falta é o comando de repetição, que irá abrir novas possibilidades ao raciocínio e levar a soluções bem mais simples. O problema seguinte tem o mesmo propósito de mostrar a necessidade do comando de repetição. Observe a solução apresentada e imagine como seria para o caso de uma quantidade maior ainda de valores. 20 – { classifica cinco valores em ordem decrescente } Algoritmo declare A, B, C, D, E { valores de entrada } Primeiro { primeiro valor em magnitude } Segundo { segundo valor em magnitude } Terceiro { terceiro valor em magnitude } Quarto { quarto valor em magnitude } Quinto { quinto valor em magnitude } numérico leia A, B, C, D, E se A>B e A>C e A>D e A>E então Primeiro ← A Ordena os quatro valores B, C, D e E senão se B >C e B>D e B>E então Primeiro ← B Ordena os quatro valores A, C, D e E senão se C>D e C>E então Primeiro ← C Ordena os quatro valores A, B, D e E senão se D >E então Primeiro ← D Ordena os quatro valores A, B, C e E senão Primeiro ← E Ordena os quatro valores A, B, C e D fim se fim se fim se fim se escreva Primeiro, Segundo, Terceiro, Quarto, Quinto fim algoritmo ref: Ordena os quatro valores B, C, D e E se B > C e B > D e B > E então Segundo ← B Ordena os três valores C, D e E senão se C > D e C > E então Segundo ← C Ordena os três valores B, D e E senão se D > E então Segundo ← D Ordena os três valores B, C e E senão Segundo ← E Ordena os três valores B, C e D fim se fim se fim se fim ref ref: Ordena os quatro valores A, C, D e E . . . fim ref ref: Ordena os quatro valores A,B, D e E . . . fim ref ref: Ordena os quatro valores A, B, C e E . . . fim ref ref: Ordena os quatro valores A, B, C e D . . . fim ref ref: Ordena os três valores C, D e E se C > D e C > E então Terceiro ← C Ordena os dois valores D e E senão se D > E então Terceiro ← D Ordena os dois valores C e E senão Terceiro ← E Ordena os dois valores C e D fim se fim se fim ref ref: Ordena os três valores B, D e E . . . fim ref ref: Ordena os três valores B, C e E . . . fim ref ref: Ordena os três valores B, C e D . . . fim ref ref: Ordena os dois valores D e E se D > E então Quarto ← D Quinto ← E senão Quarto ← E Quinto ← D fim se fim ref ref: Ordena os dois valores C e E . . . fim ref ref: Ordena os dois valores C e D . . . fim ref Comentários: Observe que para cada refinamento “Ordene os quatro valores...” que não foi desenvolvido surgirão outros quatro novos refinamentos do tipo “Ordene os três alores...” e assim por diante. Mais uma vez estamos diante de um problema cuja solução não é praticável. Imagine se fossem 10 ou 100 valores a serem ordenados!
Compartilhar