1. Indique, justificando, qual o output dos seguintes trechos de programas supondo que é inicialmente chamado o procedimento P a) Function f(ByVal x As Integer, ByVal y As single) As Integer f = Int(x + y ) End Function Private Sub P Dim x As single, z As Integer x = 11.8 z = 17 If f(z, x) > 30 Then Call MsgBox(x) Else Call MsgBox(z) End If End Sub b) c) Sub P1(ByVal y As Integer, ByRef x As Integer) function F1(byval Y As String) as string F1 = Mid(Y, InStr(Y, " ") + 1, Len(Y) - InStr(Y, " ")) Dim a As Integer a=9 End Function Private Sub P x = x+ a \ y End Sub Dim X As String, i as integer X = "Anabela Costa da Silva" Private Sub P For i=1 to 2 Dim x As Integer, z As Integer X = f1(x) &” Figueiredo” x=0 For z = 1 To 2 Call msgbox(X) next Call P1(x + 3, x) Call MsgBox(x) Call MsgBox(X) End Sub Next End Sub e) Substitua na alínea b), no procedimento P, o ciclo FOR por um ciclo DO WHILE ... LOOP equivalente 2) Indique, justificando, qual o output dos seguintes trechos de programas a) b) Sub p1(byval X as integer , byref Y as string) Function F(byval d as integer)as integer Dim x as integer y= left(y,x) End sub X= 3 F = d+x Sub p Dim x as string End function Sub P() X= “Anabela” Call p1(3,x) Dim x as integer For X=1 to 3 call msgbox(x) end sub Call Msgbox(F(X)) next End sub c) sub P(byval y As Integer, byval x as integer) Dim c As integer c=6 x = y-c End sub Sub p1 Dim x As Integer X=7 Call p(x + 3 , x) Call MsgBox(x) End Sub e) Substitua na alínea a), no procedimento P, o ciclo FOR por um ciclo DO WHILE LOOP equivalente 3) Construa uma função que dado dois números inteiros devolva o resto da divisão do número maior pelo número mais pequeno. 4) Construa um troço de programa que peça ao utilizador para introduzir os dois números e que (usando a função da alínea anterior) mostre uma mensagem com o valor do resto da divisão do número maior pelo mais pequeno. 5) Construa uma função que receba um código de erro (valor inteiro entre 1 e 5) e devolva a seguinte mensagem : (segundo o código de erro) : 1 “Erro de sistema” 2 “Erro de disco” 3 “Erro de Input/Output” 4 “Erro fatal” 5 “Erro de Overflow” Qualquer outro valor “Erro desconhecido” 6) Indique, justificando, qual o output dos seguintes trechos de programas a) b) Function F(byval X as integer , byval Y as string) as boolean Function F(byval d as integer)as integer If d=2 then F= left(y,x) = “A” End function F=5 Sub p Else Dim x as integer If d=3 then X=1 F=6 call msgbox(f(x,“Ana”)) Else F=7 end sub End if End if End function Sub P() Dim x as integer For X=2 to 4 Call Msgbox(F(X)) next End sub c) sub P(byval x As Integer, byref y as integer) Dim c As integer c=6 y = x-6 End sub Sub p1 Dim x As Integer X=7 Call p(x + 3 , x) Call MsgBox(x) End Sub e) Substitua na alínea a), no procedimento P, o ciclo FOR por um ciclo DO LOOP UNTIL equivalente 7) Indique, justificando se as seguintes expressões estão ou não correctas. Para as expressões que considerar correctas indique o seu tipo e se possível também o valor: a) b) c) 21 \ 5 + 3 mod 2 int(rnd *10 +2) left(“anabela”,3) 8) Construa uma função que receba um número inteiro (1 – 5) e devolva uma string que represente esse número escrito por extenso. (1 – UM, 2 – DOIS,.....,5 – CINCO). Se o número não estiver entre 1 e 5 a função deverá devolver a string “INVÁLIDO”. a) Use na resolução a instrução IF b) Use na resolução a instrução CASE c) Tendo em conta a função anterior, crie um troço de programa que peça ao utilizador um número inteiro (1 to 5) mostrando de seguida, numa mensagem, esse numero por extenso. 9) Construa uma função que receba uma frase e devolva a primeira palavra dessa frase. 10) Construa uma função que receba uma frase e devolva um booleano informando se há pelo menos duas letras iguais nessa frase. 11) Indique, justificando, qual o output dos seguintes trechos de programas a) b) x=5 …. f=1 x=3 For i=2 to x y=7 f=f*i Do while y>x*2 Next x=x+2 Call msgbox(f) y=y+3 Loop Call msgbox(x) Call msgbox(y) c) Function F(byval y As Integer) As Integer Dim a As Single a=2.8 F = round(a) * 5 + y End Function Sub p() Dim r As Integer r = F(3) Call MsgBox(r) End Sub e) Substitua na alínea a), o ciclo FOR NEXT por um ciclo DO WHILE ...LOOP equivalente 12) Indique, justificando se as seguintes expressões estão ou não correctas. Para as expressões que considerar correctas indique o seu tipo e se possível também o valor: a) b) c) 7 mod 5 18 \ 3 + 31 mid(“mariana”,3,4) 13) Indique, justificando, qual o output dos seguintes trechos de programas supondo que é inicialmente chamado o procedimento P b) a) Dim Z as Integer, y as Boolean Dim Z as Integer, y as Boolean Dim x as integer Dim x as integer X=0 X=0 Y=false Y=false For Z = 1 to 3 For Z = 3 to 1 step -1 Y= z mod 2 <>0 If y then X = X+Z If y then X = X+Z End if Y= z mod 2 <>0 End if Next Next Call msgbox(X) Call msgbox(X) c) Sub P1(ByVal s as string, byref x as integer) If s >"FRANCISCO" then X=8 Else X=0 End if end sub sub P dim b as string, y as integer b="FRADE" y=7 call p1(b, y) call MSGBOX(y) end sub d) Function F( byval X as integer) as integer Dim Y as integer Y= 200 \ 10 X= Y MOD 5+X F= X + Y end function Sub P Dim Y as integer Y=3 call msgbox(f(Y)) End sub e) Substitua na alínea a), o ciclo FOR por um ciclo DO ... LOOP UNTIL equivalente 14) Indique, justificando se as seguintes atribuições estão ou não correctas e qual o valor atribuído às variàveis DIM a as integer DIM c as single, b as boolean, s as string a) c=sqr (81)+(21 MOD -2) b) b= (“A”>”B”) OR NOT((-21 MOD 2)*5>0) ) c) a=Instr(“poderoso”, “ro”) d) s=Mid(“Maria de Fátima”,10 ,6) e) s=Mid(“anabela”,instr(“anabela”,”be”),3) 15) Considere as seguintes regras para atribuição do prémio, correspondente à terminação, dum bilhete da lotaria (número inteiro com menos de 5 dígitos): - Se o ultimo digito do bilhete for 0 ou par recebe 10 euros Escreva um conjunto de instruções (sem utilizar subprogramas) que leia o número de um bilhete de lotaria e informe (escreva no écran) qual o valor do respectivo prémio. 16) Crie uma função que receba uma nota (valor inteiro 0 – 20), e devolva uma string. qualificando essa nota, da seguinte maneira : MAU 0-4 MEDIOCRE 5-9 SUFICIENTE 10-13 BOM 14-16 MUITO BOM 17-20 17) Crie um troço de programa que permita ao utilizador introduzir o valor da nota, e que, recorrendo à função anterior, mostre no écran, o valor dessa nota qualificada. 18) Crie uma função que receba uma frase e devolva o número de caracteres diferentes existentes nessa frase. Não são consideradas diferenças entre letras maiúsculas e minúsculas. Exp. se frase for masmorra a função devolverá 5. 19) Considere a seguinte estrutura : Type TpTempMes NumDiasMes as integer ‘número de dias que o mês tem TempMedia(1 to 31) as integer ‘ Temperatura média em cada dia do mês End Type Construa uma função para determinar qual foi o dia, em que a diferença de temperatura, para o dia seguinte, foi maior. 20) Crie uma função que receba dois números inteiros X e Y e devolva o maior múltiplo de Y menor ou igual a X. Se X for <Y a função deverá devolver -1. Exemplo se X = 13 e Y = 4 a resposta será 12. 21) Escreva um troço de programa que peça ao utilizador para introduzir dois números inteiros (X e Y) e que (utilizando a função anterior) mostre no écran, uma mensagem, com o valor do maior múltiplo de Y menor ou igual a X. 22) Crie uma função que receba uma frase e devolva a mesma frase escrita ao contrário. 23) Indique, justificando, qual o output dos seguintes trechos de programas supondo (para as alíneas c e d) que é inicialmente chamado o procedimento P a) b) FOUND = FALSE Y = 12 For X = 1 To 7 Step 2 X=1 Y=2 Y=Y\X+1 do Next X=X\2+Y Call MsgBox(Y) Y=Y+1 FOUND = X = Y loop until FOUND call MsgBox(X) c) Sub P1(ByRef S As String, ByVal X As Integer) Dim A As String A = "" Do While X >= 1 A=A&S X=X-1 Loop S=A End Sub Sub P Dim A As Integer, B As String B = "X" A=4 Call P1(B, A) Call MsgBox(A) Call MsgBox(B) End Sub d) Function F(ByVal X As Integer, ByVal Y As Integer) As Integer Dim A As Integer, P As Integer P=1 For A = 1 To Y P=P*X Next F=P End Function Sub P Dim A As Integer, B As Integer A=4 Do B = F(2, A) Call MsgBox(B) A=A-1 Loop Until B <= 8 Call MsgBox(A) End Sub e) Substitua na alínea b), o ciclo FOR por um ciclo DO... LOOP UNTIL 24) Indique, justificando se as seguintes expressões estão ou não correctas. Para as expressões que considerar correctas indique o seu tipo e se possível também o valor. d) ROUND(7.62E2) \10 e) LEN(“CARA” & “MELO”) MOD -3 f) INT(SQR(26)) MOD 5 g) CHR(ASC(“A”)+INSTR(“ABCD”,”D”)) h) CHR(INT(65.2)+1) / 2 i) RIGHT(“LESMA”,2) & MID(“BARLAVENTO”,4,2) 25) Escreva um conjunto de instruções que apresente nas células A1:E1 da folha excel números aleatórios inteiros entre 1 e 20 inclusive. 26) Crie uma função que receba três números inteiros e devolva TRUE se algum dos números for igual á soma dos outros 2, FALSE no caso contrário. 27) Escreva um troço de programa que peça ao utilizador para introduzir três números inteiros e que (utilizando a função anterior) mostre no écran, uma mensagem, informando se algum dos números é igual à soma dos outros 2. 28) Crie uma função que receba uma string e um número inteiro N, devolvendo a repetição dessa string N vezes. Por exemplo, se a string for “BA” e N igual a 3, a função deverá devolver “BABABA” 29) Indique, justificando, qual o output dos seguintes trechos de programas supondo (para a alínea c) que é inicialmente chamado o procedimento P a) c) x=9 Function f(ByVal frase As String) As String y=6 Dim c As Integer, m As String m=9 m = Mid(frase, 1, 1) Do While m Mod y <> 0 For c = 2 To Len(frase) m=m+x If Mid(frase, c, 1) > m Then Loop m = Mid(frase, c, 1) Call MsgBox(m) End If Next b) f=m b = False End Function For x = 1 To 3 Sub p1(ByRef x As Integer, ByVal s As String) b = b Or x Mod 2 = 0 If x <> Asc(s) - Asc("A") Then Next x=x+1 Call MsgBox(b) End If End Sub Sub P() Dim letra As String, x As Integer, y As Integer letra = f("ACA") Call MsgBox(letra) x=1 Do y=x Call p1(x, letra) Loop Until x = y Call MsgBox(x) End Sub e) Substitua na alínea b), o ciclo FOR por um ciclo DO... LOOP UNTIL 30) Indique, justificando se as seguintes expressões estão ou não correctas. Para as expressões que considerar correctas indique o seu tipo e se possível também o valor. j) -23 mod 7 k) Int(chr(13)) \ 2 l) 2*instr(mid("FRANCISCO",2,6),"CI") m) INT(1+SQR(900E-2)^2) n) (ASC("MONA")-ASC("OSCAR"))^3 MOD 5 o) Right(“FULMINANTE”,4)=mid(“ANTERIOR”,1,4) 31) Escreva um conjunto de instruções (usando um ciclo de repetição) que apresente nas células A1:E1 da folha excel cada uma das letras da palavra “LESMA” 32) Crie uma função que receba uma string e devolva TRUE se o total de caracteres da string for número par, FALSE se for impar. 33) Escreva um troço de programa que peça ao utilizador para introduzir uma string e mostre, no écran, uma mensagem com a palavra “PAR” ou “IMPAR”, dependendo se o total de caracteres da string é número par ou número impar. (Recorra à função anterior) 34) Crie uma função que receba duas strings (t1 e t2) e devolva o nº de ocorrências de t2 dentro de t1. Exemplo : se t1 = “batata frita” e t2 = ”ta” a função deverá devolver 3. 35) Escreva um conjunto de instruções que calcule a soma dos 10 primeiros múltiplos de 3. 36) Indique, justificando, se as seguintes expressões estão ou não correctas. Para as expressões que considerar correctas, indique o seu tipo e se possível o seu valor: a) Mid(“INFORMATICA”, Instr(“CADEIRA”,”DE”),5) b) Int(3 + Len("CADEIRA") * Rnd) c) (-23 Mod 5) \ 2 d) Sqr(12 \ 3) + Asc("FRANÇA") - Asc("BELGICA") e) Round(Sqr(8))^2 f) “FRANÇA” > “BELGICA” And Right(“EUROPA”,2) = “PA” g) 323 Mod 10 = 323 \ 100 or 100<10 h) Chr(Asc(“A”)+2) * 5 37) Crie uma função que receba um número e devolva a parte fraccionária desse número. Suponha que não existe nenhuma função predefinida para esse efeito. 38) Crie um troço de programa que peça ao utilizador para introduzir um número, e que, recorrendo à função anterior, mostre uma mensagem mostrando a parte fraccionária desse número. 39) Crie uma função que receba uma frase, e devolva outra frase, com todas as letras maiúsculas trocadas por minúsculas, e vice versa. Considere apenas para a troca os caracteres de “a” a “z” e “A” a “Z” sem acentuação, todos os outros caracteres ficam inalterados. Exemplo : se entrar “Alem23Mar” sai “aLEM23mAR”. 40) Crie uma função que receba uma frase e informe quantos caracteres diferentes existem nessa frase. Exemplo: se entrar “católica” a função deverá devolver 6. 41) Crie uma função que receba 3 números inteiros e devolva o resto da divisão inteira, do número maior, pela soma dos outros 2. 42) Crie um troço de programa que peça ao utilizador para introduzir 3 números, e que, utilizando a função anterior, mostre no écran, o resto da divisão inteira, do número maior, pela soma dos outros 2.