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.
Download

1. Indique, justificando, qual o output dos seguintes