INSTITUTO SUPERIOR DE ENGENHARIA DO PORTO Departamento: Civil Curso: E.Civil Cadeira: APROG 1º Ano Exame Teórico Data: 31 / 1 / 2008 Leia o teste com atenção. Seja claro(a), preciso(a) e conciso(a). Use letra legível. A prova é individual. Nº : Nome : Turma : PREENCHA O CABEÇALHO RESOLUÇÃO Grupo 1 (Visual Basic) 1. Considere o seguinte fragmento de programa em Visual Basic. Analise o seu funcionamento considerando que introduziria na InputBox o seu nº de aluno do ISEP. Private Sub Command1_Click() Dim x As Long Dim x1 As Integer Dim s As integer Dim N as integer x = Val(InputBox("Introduza o seu nº de aluno do ISEP", "Número: ")) x1 = x Mod 10 If x1 <= 2 OR x1 > 7 Then x1 = 5 End If s = 0 n = 0 Do Until x1 = 0 s = s + x1 ^ 2 x1 = x1-1 Instrução A n = n + 1 Loop lblx1.caption = s lbln.caption = n End Sub a) Qual o último valor contido na variável s? [ Cotação: 1.5 valores ] Se o nº lido for, por exemplo, 1080234, s = 30 b) Quantas vezes funcionará o ciclo? [ Cotação: 1 valor ] Se o nº lido for, por exemplo, 1080234, o ciclo funcionará 4 vezes, ou seja, o nº de vezes igual ao valor de x1.
c) O que aconteceria se se retirasse a instrução A? [ Cotação: 1.5 valor ] Ocorreria um ciclo infinito, já que a condição de termo do ciclo nunca se tornaria verdadeira. 2. O programa cuja interface se descreve na figura permite dar entrada dos pesos de 2 cargas (Carga1 e Carga2) a serem transportadas regularmente num navio. A soma dessas cargas não deve exceder 200 toneladas. Os valores destes dois pesos são introduzidos pelo operador nas respectivas TextBox (txtc1 e txtc2). lblmsg txtc1 lblmsg lblmsg cmdver txtc1 Quando o botão cmdverificar for pressionado, o programa deve apresentar no Label lblmsg os seguintes avisos: Caso os pesos das cargas escolhidas pelo operador sejam superiores ao valor limite (200), deve ser apresentada a mensagem Carga Excessiva. Em caso contrário, se a diferença entre as duas cargas for superior a 20% da carga total, o programa deve apresentar a mensagem Cargas Desequilibradas. Se não ocorrer nenhuma das condições atrás descritas, deve ser apresentada a mensagem Tudo em ordem. a) Complete o programa esboçado abaixo de modo a afixar no objecto lblmsg as mensagens referidas atrás. [ Cotação: 2.5 valores ] Private Sub XXXXX_Click() Dim p1 As Integer Dim p2 As Integer p1 = txtc1.text p2 = txtc2.text If (p1 + p2) > 200 Then lblmsg = "Carga Excessiva" ElseIf Abs(p1 - p2) > 100 Then lblmsg = "Carga Desequilibrada" Else lblmsg = "OK" End If End Sub
b) Diga a que objecto associaria o programa referido na alínea anterior. [ Cotação: 0.5 valor ] Ao botão de comando cmdver. 3. Considere o seguinte fragmento de programa que se dedica a processar o vector vec (com 30 elementos) representado abaixo: vec 45 49 52 51 49 56 59 70 79 81 86... i 1 2 3 4 5 6 7 8 9 10 11... Option Base 1... i = 2 d = 0 Do Until d > 10 Or i=30 d = Abs(vec(i) - vec(i - 1)) i = i + 1 Loop... a) Preencha a tabela ao lado com os valores que as variáveis referidas vão assumindo ao longo do funcionamento do programa. [ Cotação: 2.5 valores ] i Vec(i) d 2 49 4 3 52 3 4 51 1 5 49 2 6 56 7 7 59 3 8 70 11
b) Diga qual o efeito que teria a não inclusão no programa da linha i = i + 1. [ Cotação: 1 valor ] A leitura far-se-ia sempre na mesma localização do vector, já que i é a variável índice. Como consequência o ciclo seria infinito visto a condição de termo nunca se tornar verdadeira. 4. Elabore o código da função contavogais que recebendo uma string devolve o nº de vogais que ela econtem. [ Cotação: 1.5 valores ] Public Function contavogais(st As String) As Integer Dim v As Integer Dim c As String v = 0 Do While st <> "" c = Left(st, 1) If c = "a" Or c = "e" Or c = "i" Or c = "o" Or c = "u" Then v = v + 1 End If st = Right(st, Len(st) - 1) Loop contavogais = v End Function
Grupo 2 (Excel) A. A folha de cálculo acima contem dados referentes a Cadeiras leccionadas num dado Curso. Elabore as fórmulas necessárias para obter os seguintes resultados: 1. Qual o maior nº de alunos numa cadeira? [ Cotação: 0.5 valor ] =MAX(D4:D14) 2. Qual o nº de horas semanais leccionadas pelo docente cujo código seja introduzido na célula E18 (fórmula a colocar na célula F18)? [ Cotação: 1 valor ] =SUMIF(B4:B14;E18;E4:E14) 3. Como conseguir que na célula H18 surja o aviso Insuficiente caso as horas leccionadas sejam inferiores a 10 e Demasiado se forem superiores a 16? [ Cotação: 1.5 valores ] =IF(F18<10;"Insuficiente";IF(F18>16;"Demasiado";""))
4. Quantas cadeiras têm mais que 50 alunos? [ Cotação: 1 valor ] =COUNTIF(D4:D14;">50") 5. Como obter na célula F20 a informação de qual o nº de turmas da cadeira cujo código for introduzido na célula E20? [ Cotação: 1 valor ] =VLOOKUP(E20;C4:F14;4;0) 6. Como obter na célula F21 a informação de qual a cadeira com menos alunos? [ Cotação: 1 valor ] =INDEX(B4:F14;MATCH(MIN(D4:D14);D4:D14;0);2) B. Escreva nas células abaixo o critério a usar por um filtro avançado para visualizar apenas as linhas referentes às cadeiras leccionadas pelo professor XAD com mais de 50 alunos, as cadeiras leccionadas pelo professor BLA e as cadeiras com mais de 60 alunos [ Cotação: 2 valores ] Docente NºAlunos XAD >50 BLA >60