SEGUNDA LISTA DE EXERCÍCIOS DE PROGRAMAÇÃO DE COMPUTADORES III Aviso: Os programas em FORTRAN 77 correspondentes a estes pseudocódigos deverão ser entregues no dia da terceira prova. I)Obtenha o máximo divisor comum entre dois números naturais X e Y, onde X > Y, usando o algoritmo de Euclides que pode ser apresentado da seguinte maneira: Divida X por Y e obtenha o resto R1. Se R1 for zero, o mdc entre X e Y é Y. Se R1 não for zero, divida Y por R1 e obtenha o resto R2. Se R2 for zero, o mdc entre X e Y é R1. Se R2 não for zero, divida R1 por R2 e obtenha o resto R3. Se R3 for zero, o mdc entre X e Y é R2. ... Se Rn não for zero, divida Rn-1 por Rn e obtenha o resto Rn+1. Se Rn+1 for zero, o mdc entre X e Y é Rn. Obs: O esquema apresentado acima claramente não é conveniente para implementação em pseudocódigo ou em uma linguagem de programação pois gera uma sucessão de variáveis (R1, R2, etc.) que é de número indeterminado. No entanto, é simples contornar este problema. II) Gere e imprima uma matriz com a estrutura abaixo de ordem arbitrária. 1 n M= ⋮ 3 2 ( 2 1 ⋮ 4 3 3 2 ⋮ 5 4 ⋯ n ⋯ n−1 ⋮ ⋮ ⋯ 2 ⋯ 1 ) 1 exemplo M = 4 3 2 ( 2 1 4 3 3 4 2 3 1 2 4 1 ) III) O traço de uma matriz M de componentes m ij é definido como o somatório das componentes da diagonal, ou seja, n Tr ( M )=∑ m ij . 1 Faça um pseudocódigo que calcule o o traço de uma matriz dada. Sugiro que usem o feito no item anterior, para exemplificar a implementação. IV) O Algoritmo de Horner é o que mais eficientemente calcula valores de um polinômio. Para ilustrar, suponha que você tenha o seguinte polinômio 2 3 p4 (x )=a 0+ a1 x +a 2 x + a3 x + a4 x 4 . Para facilitar a análise do custo computacional, suporemos que as potências de x serão calculadas por meio de multiplicações. Assim feito vemos que para calcular um valor para o polinômio assim serão necessárias 4 somas e .1+2+3+4 = 10 multiplicações. Para o caso de um polinômio de graus n o número de operações será n somas e n(n+1)/2 multiplicações. O algoritmo de Horner pode ser ilustrado pelo polinômio acima da seguinte forma p4 (x )=a 0+ a1 x + a2 x +a3 x + a4 x =a0 + x ( a1 +a 2 x +a3 x + a4 x ) =a0 + x ( a 1+ x ( a 2+ a3 x + a4 x 2 3 4 2 3 2 )) e finalmente p4 (x )=a 0+ x ( a1 + x ( a2 +a3 x +a 4 x 2 ) )=a0 + x ( a1 + x ( a2 + x ( a3 +a 4 x ) ) ) . Se contamos o número de operações teremos 4 somas e 4 multiplicações. Para o caso de polinômio de graus n teríamos n somas e n multiplicações. Escreva um pseudocódigo que calcule um valor de um polinômio pelo algoritmo de Horner, tendo os valores dos coeficientes conhecidos. V) Crie um pseudocódigo que gere os números de Bell numa matriz. Estes podem ser obtidos como no exemplo abaixo onde paramos no quinto nível: 1 . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . 1 2 . . . . . . . . . . . . . . . . . . 1 . . . . 1 2 . . . 2 . . . . . . . . . . . . . . 1 . . . . 1 2 . . . 2 3 . . . . . . . . . . . . . 1 . . . . 1 2 . . . 2 3 5 . . . . . . . . . . . . ( )( )( )( )( ) ( )( )( )( ) ( )( )( ) , 1 . . . . 1 2 . . . 2 3 5 . . 5 . . . . . . . . . , , 1 . . . . 1 2 . . . 2 3 5 . . 5 7 . . . . . . . . 1 . . . . 1 2 . . . 2 3 5 . . 5 7 10 15 . 15 20 . . . , , , 1 . . . . 1 2 . . . 2 3 5 . . 5 7 10 15 . . . . . . 1 . . . . 1 2 . . . 2 3 5 . . 5 7 10 15 . 15 20 27 . . , , , 1 . . . . 1 2 . . . 2 3 5 . . 5 7 10 15 . 15 . . . . 1 . . . . 1 2 . . . 2 3 5 . . 5 7 10 15 . 15 20 27 37 52 , , . Observe que o processo duplica o número da primeira linha na primeira posição da segunda linha, gera o número ao lado deste pela soma dos dois valores que estão um sobre o outro, dado o valor dois que é posto na segunda posição da segunda linha. Feito isto, este número é duplicado na primeira posição da terceira linha e o número ao lado é obtido pela soma dos dois valores contidos nesta coluna neste momento dado o núlero 5 na terceira posição da terceira linha. O procedimento continua até atingirmos a última linha. Depois de gerar os números de Bell, imprima-os em forma triangular. VI) Crie um pseudocódigo que gere uma matriz de ordem n com os números naturais como ilustrado abaixo no caso de ordem 4. ( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ) .