Você está na página 1de 4

UNIVERSIDADE EDUARDO MONDLANE

FACULDADE DE CIENCIAS Departamento de Matemtica e Informtica a a INFORMATICA II Cursos: Engenharia Civil, Elctrica, Mecnica, Qu e a mica e Electrnica o Primeiro Teste VARIANTE 1 GUIA DE CORRECCAO OFICIAL 1. (3.0 v) Construa um uxograma que leia trs nmeros na tela, N1 e N2 e N3 nesta ordem, e os imprima em e u ordem numrica decrescente. Deve-se tambm imprimir uma mensagem sobre o maior deles. e e Resluo: ca Data: 06 de Setembro de 2008 Durao: 100 Minutos ca

2. (3.0 v) Determinar a sa da execuso do seguinte programa: da a Program TestFunction Character :: DevolveString Print *, DevolveString(4,2) Print *, DevolveString(1,2) Print *, DevolveString(4,4) End Program TestFunction Character Function DevolveString(a,b) Implicit None Integer, Intent(IN) :: a,b PRINT *, "A=",A,"B=",B IF(a>b) THEN DevolveString="1o Parametro e maior que o 2o." 1

ELSE IF(a==b) THEN DevolveString="1o Parametro e igual que o 2o." ELSE DevolveString="1o Parametro e menor que o 2o." END IF END Function DevolveString Resluo: Sa ca da: A= 1o A= 1o A= 1o 4 B= 2 Parametro e maior que o 2o. 1 B= 2 Parametro e menor que o 2o. 4 B= 4 Parametro e igual que o 2o.

3. (3.0 v) Escreva uma sub-rotina que receba por parmetro trs valores de a, b e c da equao quadrtica a e ca a ax2 + bx + c = 0 e devolve tambm por parmetro as duas ra e a zes e o tipo de ra zes (distintas, iguais ou sem raizes). Resluo: ca
SUBROUTINE raizes(a,b,c,r1,r2,tipo) IMPLICIT NONE REAL, INTENT(IN):: a,b,c REAL, INTENT(OUT)::r1,r2 CHARACTER, INTENT(OUT):: tipo REAL :: delta delta=b*b-4*a*c IF(delta<0) THEN tipo="Equacao sem raizes" ELSE IF(delta>0) THEN r1=(-b-SQRT(delta))/(2.0*a) r2=(-b+SQRT(delta))/(2.0*a) tipo="Raizes distintas" ELSE r1=-b/(2.0*a) r2=r1 tipo="Raizes iguais" END IF END SUBROUTINE raizes

4. (4.0 v) Faa um programa Fortran que permite classicar o tringulo em issceles, ou equiltero ou escaleno. c a o a Os lados do tringulo devem ser introduzidos via teclado. De salientar que a condio para que as dimenses dos a ca o lados formem um tringulo que a soma de dois lados deve ser maior que o terceiro, isto , [(lado1+lado2)>lado3] a e e e [(lado1+lado3)>lado2] e [(lado2+lado3)>lado1]. O programa deve usar uma funo getTipoTriangulo que tem ca trs argumentos de passagem de valores, os lados introduzido e retornar issceles, equiltero ou escaleno. Um e o a tringulo issceles quando tem dois lados iguais, equiltero tem todos lados iguais e escaleno tem todos lados a e o a diferentes. Resluo: ca
PROGRAM Triangulo IMPLICIT NONE REAL :: lado1,lado2lado3 CHARACTER ::getTipoTriangulo READ (*,*) lado1,lado2,lado3 IF((lado1+lado2>lado3).AND.(lado1+lado3>lado2).AND.(lado2+lado3>lado1)) THEN

PRINT *,"O TRIANGULO E",getTipoTriangulo(lado1,lado2,lado3) ELSE PRINT *,"OS LADOS INTRODUZIDOS NA SAO DUM TRIANGULO" ENDIF END PROGRAM Triangulo CHARACTER FUNCTION getTipoTriangulo(lado1,lado2,lado3) IMPLICIT NONE REAL, INTENT(IN)::lado1,lado2,lado3 IF((lado1==lado2).OR.(lado1==lado3).OR.(lado2==lado3)) THEN getTipoTriangulo="ISOSCELES" ELSE IF((lado1==lado2).AND.(lado2==lado3)) THEN getTipoTriangulo="EQUILATERO" ELSE getTipoTriangulo="ESCALENO" ENDIF END FUNCTION

5. (4.0 v) Escreva um programa que leia uma sequncia de 10 nmeros, armazene-os em um vetor (array), e informe e u o total de ocorrncias no vetor do ultimo nmero lido. Exemplo: supondo a seguinte sequncia de nmeros e u e u 38 4 23 5 6 7 4 12 4 4

o resultado ser: O nmero 4 apareceu 4 vezes. a u Resluo: ca


PROGRAM exercicio5 IMPLICIT NONE INTEGER :: I,CONT INTEGER, DIMENSION(1:10):: ARRAY !INTRODUZIR OS ELEMENTOS DO ARRAY DO I=1,10 PRINT *,"ELEMENTO [",I,"]=" READ(*,*) ARRAY(I) END DO CONT=0 DO I=1,10 IF(ARRAY(i)==ARRAY(10)) THEN CONT=CONT+1 END IF END DO !IMPRIMIR O ULTIMO ELEMENTO E O No DE OCORRENCIAS PRINT *,"O ULTIMO No",ARRAY(10),"APARECE",CONT,"VEZES." END PROGRAM exercicio5

6. (3.0 v) Indique o(s) erro(s) cometido(s) no seguinte programa: Program Variante1 IMPLICIT NONE Integer :: a,b a = 5 b = -2 c = 3 CALL soma(a,b,c) Print *, soma(a,b,c) Print *, soma(2,5,3) 3

End Program Variante1 Integer Function (x1,x2,x3) IMPLICIT NONE Integer :: x1,x2,x3 soma=x1+x2+x3 End Function soma Resluo: Erros: ca Linha 6: A varivel c no tem tipo (no foi declarada). a a a Linha 7: O comando CALL no se aplica na chamada de Funes. a co LInha 9: soma no existe. a LInha 10: soma no existe. a Linha 12: Falta o nome da funo. ca Linha 14: Falta ,Intent(IN) Docentes: Dr. Jos Antnio Nhavoto & Dr. Anselmo Leonardo Nhane e o

Você também pode gostar