Вы находитесь на странице: 1из 5

2002 / 2003 Programao

Licenciatura em Eng Civil Licenciatura em Eng do Territrio

1 Data
DECivil Departamento de Engenharia Civil e Arquitectura 22 de Janeiro de 2003

Exame sem consulta (2 horas + 30 minutos).


DESLIGUE O SEU TELEMVEL. RESOLVA OS PROBLEMAS EM FOLHAS SEPARADAS. NUMERE TODAS AS FOLHAS COM O SEU NMERO DE ALUNO(A).

1 PROBLEMA (5 valores)
Num clube, todos os scios contribuem para a existncia de um conjunto de filmes para ver em casa, sendo permitido o visionamento de qualquer um dos filmes por qualquer um dos associados. Os filmes so identificados por um nmero nico. Este clube pretende a criao de uma base de dados onde seja possvel registar qual (ou quais) o(s) compradores de cada filme; bem como, se for o caso, quem est a utilizar um determinado filme, com acesso data de incio e a data prevista de fim de utilizao. Cada filme caracterizado por um nome e uma categoria, e cada scio possui um nmero, um nome e uma morada. a) (1,5 valores) Desenhe o Diagrama de Entidades e Relacionamentos que descreve a situao dada.

b) (1,5 valores) Apresente o esquema das tabelas que seria possvel criar a partir do diagrama da alnea anterior.

1/5

Filmes(Numero, Nome, Categoria) Socios(NSocio, Nome, Morada) Doacoes(NSocio, Numero) Emprestimos(NSocio, Numero, DataI, DataF) c) (1 valor) Identifique no esquema proposto quais os atributos que so chaves estrangeiras. NSocio e Numero nas tabelas Doacoes e Emprestimos. d) (1 valor) Escreva em SQL uma consulta que permita listar o nome e a categoria de todos os filmes em que o scio n 98 foi um dos compradores. SELECT Nome, Categoria FROM Filmes, Doacoes WHERE Filmes.Numero = Doacoes.Numero AND Doacoes.NSocio = 98

2 PROBLEMA (7 valores)
Pretende-se criar um programa para a bilheteira de um parque aqutico. Existem dois perodos de utilizao, manh e tarde. Cada um destes perodos custa 3. Os banhistas que utilizem o dia todo beneficiam de um desconto de 20%. Os banhistas com menos que 5 anos ou a partir dos 55 anos beneficiam de um desconto de 15%. Pretende-se um programa que pergunte a idade ao utilizador, o(s) perodo(s) de utilizao, e mostre no ecr o preo da entrada. a) (2 valores) Faa o diagrama de Michael Jackson do programa pretendido.

Nota: no caso de serem utilizados os dois perodos, o eventual desconto pela idade aplicado sobre um valor (3*2*0.8) j resultante de um primeiro desconto. Poderia ter sido utilizada outra forma de aplicar os descontos, por exemplo som-los antes da multiplicao pelo preo. b) (3 valores) Escreva em C# o cdigo desse programa.
using System; class ParqueAquatico { static void Main() { int idade, nPeriodos; double preco=3, desconto=1; Console.WriteLine("Um ou dois perodos?");

2/5

Console.Write("(1 ou 2)> "); nPeriodos = Int32.Parse(Console.ReadLine()); Console.Write("Idade?"); idade = Int32.Parse(Console.ReadLine()); if(nPeriodos == 2) preco = preco * 2 * 0.8; // 2 periodos + 20% de desconto if(idade >= 55 || idade < 5) desconto = 0.85; Console.WriteLine("Preo: {0} euros", preco * desconto); } }

c) (2 valores) Indique justificando que casos teste usaria para testar o programa da alnea anterior por cobertura de decises. O programa possui duas instrues condicionais, para test-lo por cobertura de decises devem ser propostos valores que permitam testar as expresses lgicas em cada condio. Para a primeira, os valores 1 e 2 para a varivel nPeriodos permitem testar a falsidade e a veracidade, respectivamente. No que respeita a segunda condio, que uma disjuno lgica com duas expresses, o valor 4 para a varivel idade permite testar quando a 1 expresso resulta falsa e a segunda verdadeira. O valor 56 permite testar quando a 1 expresso resulta verdadeira e a segunda falsa. O valor 30 permite testar quando ambas as expresses so falsas. Note-se que as duas expresses no podem ser verdadeiras simultaneamente. Os valores atrs propostos podem ser combinados em 3 casos de teste, por exemplo: (nPeriodos=1 e idade=4), (nPeriodos=1 e idade=56) e (nPeriodos=2 e idade=30).

3 PROBLEMA (4 valores)
a) (2 valores) Desenvolva um programa que leia do teclado uma matriz de 7 X 7 inteiros e mostre no ecr uma matriz em que o valor de cada posio resulta do valor na mesma posio da matriz recebida subtrado do maior valor na quarta coluna da matriz recebida.
using System; class SubtraiMaiorColuna4 { static void Main() { int maior, l, c; int [,] M = new int [7,7]; //Preencher a matriz de entrada. for(l=0; l<7; l++) for(c=0; c<7; c++) { Console.Write("Introduza o valor da linha {0} e da coluna {1} da matriz 1 >", l+1, c+1); M[l,c] = Int32.Parse(Console.ReadLine()); } //Procurar o maior valor da coluna 4. maior = M[0,3]; for(l=1; l<7; l++) if(M[l,3]>maior) maior=M[l,3]; //Mostrar resultado no ecra. for(l=0; l<7; l++) {

3/5

for(c=0; c<7; c++) Console.Write("{0} ", M[l,c] - maior); Console.WriteLine(""); } } }

b) (2 valores) Reproduza o resultado mostrado no ecr pela execuo do programa definido em baixo.
using System; class Class1 { static void Main() { int a = -18, b = 32; while(a != b) { Console.WriteLine("{1}, {0}", a, b); if(a > b) a = b; else { a = a + 6; b = b - 8; } } } }
32, -18 24, -12 16, -6 8, 0 0, 6

4 PROBLEMA (4 valores)
a) (2,5 valores) Indique quais das afirmaes seguintes so verdadeiras (V) ou falsas (F). 1. Uma ligao em HTML para permitir a navegao entre pginas define-se utilizando o elemento <a>. V 2. select uma linguagem de interaco com bases de dados. F 3. Os ficheiros s permitem aos programas memorizar dados durante uma mesma execuo. F 4. As classes contm dois tipos de membros: mtodos e dados. V 5. Os comentrios de bloco em C# so iniciados com /* e terminados com */. V 6. Para podermos testar um programa usando o critrio de cobertura de decises no precisamos conhecer o cdigo desse programa. F 7. Alguns navegadores para a Web (browsers) conseguem processar C#. F 8. Um array s pode guardar valores de um mesmo tipo. V 9. Para ser possvel a sua visualizao num navegador (browser), uma pgina tem necessariamente que possuir o elemento <html>. F 10. O operador new permite criar objectos de classes definidas pelo programador. V

4/5

b) (0,5 valores) Das respostas apresentadas, apenas uma est correcta. Poder assinalar uma fazendo uma cruz
no quadrado correspondente. Se errar sero descontados 0.125 valores.

Para definir em HTML duas frames verticais por forma a mostrar uma pgina com um menu esquerda, e outra direita, poderia fazer-se: 1. <set lines="*,*"> <frame name="menu " src="menu.html"> <frame name="principal " src="apresentacao.html"> </set> 2. <frame cols="*,*"> <set file="menu.html" name="menu" > <set file="apresentacao.html" name="principal"> </frame> 3. <set lines="170,*"> <frame src="menu.html" name="menu"> <frame src="apresentacao.html" name="principal"> </set> 4. <frameset cols="170,*"> <frame name="menu" src="menu.html"> <frame name="principal" src="apresentacao.html"> </frameset> 5. Nenhuma das anteriores.

c) (0,5 valores) Das respostas apresentadas, apenas uma est correcta. Poder assinalar uma fazendo uma cruz
no quadrado correspondente. Se errar sero descontados 0.125 valores.

Considere a instruo abaixo.

System.Windows.Forms.MessageBox.Show("Ol Mundo"); 1. System o namespace, Windows.Forms o mtodo e MessageBox.Show a classe. 2. System.Windows o namespace, Forms.MessageBox a classe e Show o mtodo. 3. System.Windows o namespace, Forms a classe e MessageBox.Show o mtodo. 4. System.Windows.Forms o namespace, MessageBox o mtodo e Show a classe. 5. Nenhuma das anteriores. d) (0,5 valores) Das respostas apresentadas, apenas uma est correcta. Poder assinalar uma fazendo uma cruz
no quadrado correspondente. Se errar sero descontados 0.125 valores.

Um compilador serve para...

1. ... produzir um ficheiro fonte. 2. ... editar um programa. 3. ... visualizar um ficheiro fonte. 4. ... corrigir um programa. 5. Nenhuma das anteriores.

5/5

Вам также может понравиться