Correção do 1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de 2006, 2º Semestre

Documentos relacionados
1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de º Semestre

Introdução ao FORTRAN 90. Aula 4

Introdução à Programação Aula prática Nº O número de bactérias numa cultura pode ser estimado pela expressão:

Estruturação de Procedimentos

Programação estruturada no Fortran 90-3

Exercícios Data Modeling

MATLAB. Programação básica

Computação e Programação 201*/201* - 1º Semestre

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Blocos, Escopo de variáveis, procedimentos e funções. 1- Blocos

MATLAB. Programação básica. Abordagem topo-base. Início. Definição das. Divisão em Sub-problemas. Divisão em Sub-problemas. Abordagem topo-base

Tópicos avançados sobre funções (cont.)

Introdução à Programação. Uma Abordagem Funcional

COMPUTAÇÃO E PROGRAMAÇÃO

1.a) Qual a diferença entre uma linguagem de programação de alto nível e uma linguagem de programação de baixo nível?

Objectivos. Introdução à programação Macros em Microsoft Excel Introdução ao Visual Basic para Aplicações (VBA)

Departamento de Matemática Universidade de Coimbra

Fundamentos da Programação

Funções em Matlab. Subprogramas em Matlab são funções.

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python

Programação com Funções. Subprogramas do tipo Função

Programação I Estruturas de Decisão

Exercícios de Fixação Aula 09

1. O número de bactérias numa cultura pode ser estimado pela expressão:

Linguagem de programação: Pascal

Procedimento. Função. Selecção Condicional - a instrução if-then-else. expressão if lógica then instrução else instrução

Computação e Programação

Introdução ao Fortran 90-4

/media/juan/c c/ l5q14.f90 Página 1 de 7 ter 11 jun :23:20-03 module implicit none character dimension allocatable real

Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

Modularização. Prof. Antonio Almeida de Barros Junior

UNIVERSIDADE ESTADUAL PAULISTA JÚLIO DE MESQUITA FILHO

Aquecimento. program math2 integer:: x,num1 write(*,*)"digite dois números read(*,*) x,num1 write(*,*)"a soma é",x+y end program math2

Exercícios de VBA. Paulo Melo Joana Dias Óscar Lourenço 17 de Maio de 2006

Fundamentos de Programação

Programação de Computadores III

Introdução ao Fortran 90-3

Universidade Federal do Rio Grande Bacharelado em Matemática Aplicada Disciplina de Algoritmos e Programação de Computadores

Mini-Projecto Nº2 INTRODUÇÃO À PROGRAMAÇÃO 3ª feira das 12 às 14h

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Programação estruturada no Fortran 90-2

Modularidade. Objetivos: Introduzir noções básicas de modularidade. Funções e procedimentos

Programação estruturada no Fortran 90-1

Universidade Federal de Mato Grosso do Sul. Lista de Exercícios 2

Sistemas e Sinais. Laboratório 0 (parte a) (Iniciação ao MATLAB ) Miguel Pedro Silva e João Reis

Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas

Fundamentos da Programação

Câmpus de Bauru Plano de Ensino Curso Ênfase Identificação Disciplina Docente(s) Unidade Departamento Créditos Carga Horária Seriação ideal

Exercícios de Fixação Introdução ao FORTRAN

Exercícios de Fixação Introdução ao FORTRAN

Fundamentos de Programação

Prática 10 - Funções

1. Faça uma função que recebe por parâmetro o raio de uma esfera e calcula o seu volume.

Computação e Programação Exame Época de recurso

Este Exame é individual, sem consulta e com a duração de 90 minutos. Responda às questões no próprio teste, no espaço próprio.

Programação em MATLAB

2 Programação de Simulink S-functions

RESOLUÇÃO. Computação e Programação (2009/2010-1º Semestre) 1º Teste (11/11/2009) Nome. Número. Leia com atenção os pontos que se seguem:

Computação e Programação Exame Época de recurso

Fundamentos de Programação

Programação em MATLAB

Informática para Ciências e Engenharias 2013/14. Teórica 7

Programação de Computadores III

Treinamento Olimpíada Brasileira de Informática

Lógica de Programação I

Introdução ao Fortran 90. Aula 3

Conceitos Introdutórios sobre a Linguagem FORTRAN

Introdução à Computação - FORTRAN

Linguagens de Programação

Exercícios Extra de Computação. Secção de Matemática Departamento de Engenharia Civil FEUP

Estruturas de Controle de Fluxo Pseudocódigo/Exercício Construa o pseudocódigo de um algoritmo para obter o resultado da divisão de dois números

3) Faça um algoritmo para ler a base e a altura de um triângulo. Em seguida, escreva a área do mesmo. Obs.: Área = ( Base * Altura ) / 2

Capítulo III : A Linguagem Pascal Estruturas de Controlo

Informática para Ciências e Engenharias 2014/15. Teórica 7

Programação de Computadores III

In I t n rto r d o u d ç u ão ã o à à Com o pu p t u a t ç a ão ã Linguagem Fortran! " 1

Programação de Computadores III

Métodos de Programação I (2005/2006) 1. Ficheiro (file)

Fundamentos de Programação

11 ª Lista de Exercícios

Introdução à Programação na linguagem F. Jaime Ramos, Amílcar Sernadas e Paulo Mateus

Computação e Programação

Computação e Programação (2010/2011-1º Semestre)

Map05 - Métodos Matriciais Computacionais Mat Álgebra Matricial Computacional Primeiro Exercicio Computacional, entregar ao Prof: 22/10/2012

Uma introdução ao GAP

Computação e Programação

Programação imperativa

2. Diga qual é a diferença entre tipos de informação elementares e tipos de informação estruturados.

p A modularização consiste num método utilizado para facilitar a construção de grandes programas;

(LEAmb, LEMat, LQ, MEBiol, MEQ) Exame 2 28 de Janeiro de 2008, 9h00

Laboratório 5 Estruturas de Selecção

Introdução à Computação

Linguagens de Programação Aula 11

Métodos de Programação I Ana Maria de Almeida 92. Um objecto (uma função, um método) diz-se recorrente se é definido em termos de si próprio.

UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS 1º Semestre 2011/2012

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

Introdução à Programação. João Manuel R. S. Tavares

Linguagem C. Programação Estruturada. Estruturas de Controle. Prof. Luis Nícolas de Amorim Trigo

Transcrição:

Correção do º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 3 de Junho de 26, 2º Semestre. (2.) Perguntas de resposta rápida de Fortran (.4 valores cada).. Todos os componentes de uma ficha (tipo derivado ou estrutura) têm de ser do mesmo tipo simples (V/F). Falso.2 Qual a saída produzida pela construção IF em baixo se n=89? E se n=? IF (n >= 9) THEN WRITE(*,*) Excelente ELSE IF (n >= 8) THEN WRITE(*,*) Bom ELSE IF (n >= 7) THEN WRITE(*,*) Suficiente ELSE WRITE(*,*) Mau END IF Bom e Mau.3. O que está errado neste ciclo DO, se é que está alguma coisa errada? DO I =, WRITE(*,*) I I = I + END DO Alterar o calor da variável de controlo I dentro do ciclo..4. Defina uma estrutura chamada Data cujos componentes são o nome do Mês, o Dia e o Ano. Escreva uma forma simples de carregar a variável Hoje do tipo Data com 3, Junho e 26. TYPE Data INTEGER :: Dia CHARACTER(9) :: Mes INTEGER :: Ano END TYPE Data TYPE(Data) :: Hoje Hoje = Data(3, Junho, 26)

.5. Considere a seguinte declaração: INTEGER, DIMENSION(2,3) :: H, & A = RESHAPE((/, 2, 3, 4, 5, 6/), (/2, 3/)) Diga qual é o valor de H, dado por: WHERE (A < 4) H = A + ELSEWHERE H = A - END WHERE H = 3 49 2 39 59 2. (2.) Perguntas de resposta rápida de Matlab (.4 valores cada). 2. Suponha que x = 3 e y = 4. Escreva as linhas de código em Matlab necessárias para avaliar a expressão: x y 2 3 ( x y) x = 3; y = 4; (.2) res = x^2 * y^3 / (x y)^2 2 2.2 Qual o valor da matriz a depois das seguintes atribuições: a = eye(3,3); b = [ 2 3]; a(2,:) = b; a = 2 3 2.3 Considerando a matriz M, escreva o código que lhe permite obter a submatriz sombreada. M 5 = 9 3 2 6 4 3 7 5 4 8 2 6 M(:2,2:3) 2

2.4 Diga se o código em baixo está correcto ou incorrecto. No caso de estar correcto, indique o resultado da execução. No caso de estar incorrecto, diga qual é o erro. cor = amarelo ; switch (cor) case vermelho, disp( Parar agora! ); case amarelo, disp( Preparar para parar. ); case verde, disp( Seguir para o cruzamento. ); otherwise disp( Cor ilegal encontrada. ); end >> Preparar para parar. 2.5 Considere a seguinte definição da matriz a: a{,} = [ 2 3; 4 5 6; 7 8 9]; a{,2} = { Linha de comentario }; a{2,} = j; a{2,2} = a{,} a{,}(2,2) Uma das expressões em baixo está incorrecta. Diga o que está incorrecto nessa expressão, e escreva o resultado da outra. 2*a{2,2} 2*a(2,2) 4 3 2 2*a{2,2} = 2* 2 3 4 = 8 6 4 2 2 4 6 8 2*a(2,2) é ilegal, pois não se pode multiplicar uma estrutura por um valor. 3

3. (.5) Quais são as vantagens de utilizar sub-programas? Descreva os tipos de subprogramas existentes em Fortran 9 e em Matlab, explicando sucintamente quando deverá utilizar cada um deles. Os problemas complexos devem ser divididos em sub-problemas, seguindo a filosofia topo-base, onde um problema deve ser dividido em sub-problemas mais simples, os quais deverão ter um dado nome. Qualquer linguagem de programação contém sub-programas, os quais permitem o desenvolvimento deste tipo de filosofia de programação. Estes sub-programas são unidades para tarefas específicas dentro do programa principal, cuja forma básica é semelhante, tendo as mesmas regras de alcance. Recebem qualquer número de argumentos, e podem ser usadas noutros subprogramas. No caso do Fortran 9 temos: Funções (function) Este sub-programa é caracterizado por retornar sempre um valor através do seu nome, sendo chamada directamente pelo seu nome. Subrotinas (subroutine) As subrotinas podem retornar mais (ou menos) do que um valor ao programa. São chamadas pela instrução CALL. No caso do Matlab temos: Funções (function) Este sub-programa é caracterizado por retornar sempre um valor através do nome. Pode ter de zero a um número especificado de entradas, tendo de ter sempre uma saída. Em comparação com o Fortran, estas funções são muito mais versáteis, e podem implementar tarefas de subrotinas em Fortran. Script files podem ser utilizadas com programa principal ou para procedimentos parciais de programação. 4. (.5) Diga quais os vários tipos de documentação que deve ter um programa e descreva-os sucintamente. Um programa deve ter documentação para o utilizador, que permita a este saber o que faz o programa, quais os dados de que precisa, que resultados devolve, e como deve ser operado. 2 Deve também ter documentação técnica externa, isto é, um manual do programador, que explique o algoritmo utilizado, descreva a estrutura do código e as estruturas de informação empregues, e justifique as opções de codificação tomadas. 3 Por fim, deve ter documentação técnica interna, isto é, comentários que esclareçam os pontos difíceis do código e que expliquem sumariamente a finalidade de cada programa ou subprograma. 4

5. (.5) Escreva um algoritmo que lê um texto caracter a caracter e conta o número de caracteres, palavras e frases desse texto. Algoritmo ProcessaTexto NumeroCaracteres = NumeroPalavras = NumeroFrases = Repete o seguinte: Se terminou o texto acaba o ciclo Ler próximo Caracter NumeroCaracteres = NumeroCaracteres + Se Caracter é espaço ou fim de linha então NumeroPalavras = NumeroPalavras + Se Caracter é ponto final então NumeroFrases = NumeroFrases + 6. (.5) Um número primo é um inteiro que apenas é divisível por ele próprio e pela unidade. Escreva um programa em Fortran 9 que recebe um inteiro e determina se ele é um número primo. PROGRAM NumeroPrimo!-----------------------------------------------------------! Programa que verifica se um numero dado pelo utilizador! e primo.!! Entrada: Numero inteiro dado pelo utilizador! Saida: Resposta se o numero e primo ou nao!---------------------------------------------------------- IMPLICIT NONE INTEGER :: Numero, Divisor = WRITE(*,*) Escreva um numero para verificar se e primo: READ(*,*) Numero DO Divisor = Divisor + IF ((Divisor == Numero).OR. (MOD(Numero,Divisor)==)) EXIT END DO IF (Divisor = Numero) then WRITE(*,*) O numero, Numero, e primo. ELSE WRITE(*,*) O numero, Numero, nao e primo. END IF END PROGRAM NumeroPrimo 5

7. (.5) Escreva a seguinte função de uma forma não recursiva. Resolução:!--Factorial---------------------------------------! Funcao que calcula factoriais recursivamente!! Recebe: inteiro n >=! Retorna: n!!-------------------------------------------------- RECURSIVE FUNCTION Factorial(n) RESULT(Fact) INTEGER :: Fact! Variavel com resultado INTEGER, INTENT(IN) :: n IF (n == ) THEN Fact = ELSE Fact = n * Factorial(n - ) END IF END FUNCTION Factorial!--Factorial---------------------------------------! Funcao que calcula o factorial N! de N,! que e se N =, e * 2 * * N se N >.!! Recebe: Inteiro N! Retorna: Inteiro N!!------------------------------------------------ FUNCTION Factorial(N) INTEGER :: Factorial INTEGER, INTENT(IN) :: N INTEGER :: I Factorial = DO I = 2, N Factorial = Factorial * I END DO END FUNCTION Factorial 6

8. (3.) Escreva uma função em Fortran 9 para calcular o seno, usando a seguinte expressão: 3 5 7 + 2n+ x x x x sin x = x + + = 3! 5! 7! 2! n= n ( ) ( n + ) de modo a que o mesmo difira do valor calculado pela função SIN no máximo de,. Pode implementar uma função chamada meu_seno se considerar conveniente. Assuma que pode calcular o factorial usando a seguinte função que já existe:!--factorial---------------------------------------! Funcao que CALCULA O factorial de n!-------------------------------------------------- RECURSIVE FUNCTION Factorial(n) RESULT(Fact) INTEGER :: Fact! Variavel com resultado INTEGER, INTENT(IN) :: n IF (n == ) THEN Fact = ELSE Fact = n * Factorial(n - ) END IF END FUNCTION Factorial FUNCTION Meu_Seno(angulo)! REAL :: Meu_Seno REAL, INTENT(IN) :: angulo REAL :: Valor INTEGER :: n Valor = SIN(angulo) n = Meu_Seno = DO Meu_Seno = Meu_Seno + (-)**n * angulo**(2*n+)/factorial(2*n+) IF (ABS(Meu_Seno - Valor) <.) EXIT n = n + END DO END FUNCTION Meu_Seno 7

9. (.) Apresente os resultados devolvidos pelo Matlab em cada uma das seguintes linhas de código:» a = :3 a = :3 b = [a; a.*a; 2*a-a] x = sum(b(:,2)) a = 2 3» b = [a; a.*a; 2*a - a] b = 2 3 4 9 2 3» x = sum(b(:,2)) x = 8. (.) Considerando as matrizes A, B e C, escreva o código em Matlab que lhe permite obter a matriz D. 2 6 2 5 5 A = B = 3 9 C = 3 4 7 3 2 3 D = 6 9 3 2 4 5 7 5 3 R (uma possível):» A=[2 6;3 9];» B=[ 2;3 4];» C=[-5 5;7 3];» D = [A ones(2,2) zeros(2,2);zeros(2,2) B... zeros(2,2);zeros(2,2) ones(2,2) C] 8

. (2.) Escreva uma função em Matlab que recebe o valor de dois ângulos e devolve a classificação de um triângulo (equilátero, isósceles ou escaleno) que contém esses ângulos. function triangulo(ang, ang2) % TRIANGULO indica a classificacao de um triangulo % Funcao HIPOTENUSA recebe os valores dde dois angulos (em graus) % de um triangulo e indica ao utilizador se o triangulo e % equilátero, isósceles ou escaleno. % Chamada da função: % triangulo(ang,ang2) % Variaveis: % ang, ang2 entradas de dois angulos do triangulo % ang3 - valor do terceiro angulo do triangulo ang3 = 8 - (ang + ang2); if (ang == ang2) && (ang2 == ang3) disp('o triangulo e equilatero') elseif (ang == ang2) (ang2 == ang3) (ang == ang3) disp('o triangulo e isosceles') else disp('o triangulo e escaleno') end 2. (.) Escreva um script file para fazer o gráfico da função sen(x)/x para valores de x entre π/ e π. x = pi/:pi/:*pi; plot(x,sin(x)./x) % atenção porque se não se fizer./ a divisão entre dois % vectores é completamente diferente 9

3. (.5) Escreva um script file que recebe os valores dos catetos de um triângulo e escreve no écran o valor da hipotenusa, usando a seguinte função: function h = hipotenusa(a,b) %HIPOTENUSA devolve o valor da hipotenusa num triângulo rectângulo % Funcao HIPOTENUSA recebe os valores dos catetos a e b, e devolve % o comprimento da hipotenusa. % Chamada da função: % h = hipotenusa(a,b) % Variaveis: % a, b - comprimentos dos catetos % h - comprimento da hipotenusa h = sqrt((a^2)+(b^2)); end % script testa_hipotenusa % recebe o valor dos catetos de um triangulo e escreve no ecran % o valor da hipotenusa recorrendo à função hipotenusa(a,b) cat = input('insira o valor de um cateto = '); cat2 = input('insira o valor do outro cateto = '); hip = hipotenusa(cat,cat2); fprintf('o valor da hipotenusa é = %f \n',hip)