DATA MODELLING : 19-03-2015 (1H 45)
Faça cada grupo numa folha separada
I (6 Valores)
Construa um quadro com a evolução das variáveis e assinale os outputs dos seguintes programas:
Considere que é inicialmente chamado o procedimento P
1)
a) [1,5]
Function xpto(ByVal S As String, ByVal P As Integer) As Integer
Do While InStr("0123456789", Mid(S, P, 1)) = 0
P=P+1
Loop
If Mid(S, P, 1) = Mid(S, Len(S) - P + 1, 1) Then
xpto = P
Else
xpto = 0
End If
End Function
Sub P()
Dim T As String, X As Integer
T = "AB2Y4C5X2BC"
X=1
Do
Call MsgBox(X)
X = 1 + xpto(T, X)
Loop Until X = 1
End Sub
b) [1,5]
Sub P()
Dim X As Integer, Y As Integer
Dim P As Integer, Z As Integer
X = 23
Y=1+X\3
For P = Y To X Step 3
Z = P Mod Y
Call MsgBox(Z)
Next
End Sub
c) [1] Reconstrua o procedimento P () da alinea b), substituindo o ciclo FOR por um DO … LOOP UNTIL equivalente.
2) [2] Verifique, justificando, se as seguintes expressões estão correctas, assinalando, se possível, o seu tipo e valor
a) Chr(Asc("DUMMY") + 3)
b) Left("ANA", 2) & Mid("CANTIGAS", 4, 4) & Right("SEMENTE", 5)
c) 7 \ -2 Mod 2
d) Sqr(49) * Int(10 / 3)
II (4 Valores)
1) Construa um procedimento para copiar todos os nomes começados por “A” e que terminam em “R”, da coluna A
do Sheet1, para a coluna B do mesmo WorkSheet. Deve começar na linha 1 e parar quando for encontrada uma
célula vazia na coluna A. Não devem ficar células vazias entre os valores da coluna B. Considere que a coluna A só
contem texto.
2) Construa um procedimento que coloque na coluna “A”, de um WorkSheet , as letras maiusculas de “A” a “Z”
(uma letra em cada célula)
III (5 Valores)
1)Construe uma função que receba uma string e devolva o valor da string. Assuma queas letras valem (minusculas ou
maiusculas) A - 1, B – 2, C – 3... Z – 26, qualquer outro caracter tem o valor 0. “Ac5C4b” -» 1+3+0+3+0+2
2) Construa um procedimento que peça ao utilizador para introduzir uma string e, utilizando a função da alínea
anterior, mostre no ecrã o valor da string.
IV (5 Valores)
1)Construa uma função chamada “FindStr”que replique o funcionamento da função VBA InStr.
(Não pode, obviamente, usar as funções VBA InStr ou EXCEL Find, Search)
2) Construa uma função que receba uma range (contendo valores numéricos) e devolva a soma dos produtos de
cada linha.
3
5
7
2
13
6
8
4
10
12
9
1
= (3x5x7) +(2*13*6)+(8*4*10)+(12*9*1)
19-03-2015 (1H45) English Version
I (6 points)
Build a table with the value for all the variables (during the execution of the following code) and mark all outputs.
Sub P will be called first.
1)
a) [1,5]
Function xpto(ByVal S As String, ByVal P As Integer) As Integer
Do While InStr("0123456789", Mid(S, P, 1)) = 0
P=P+1
Loop
If Mid(S, P, 1) = Mid(S, Len(S) - P + 1, 1) Then
xpto = P
Else
xpto = 0
End If
End Function
Sub P()
Dim T As String, X As Integer
T = "AB2Y4C5X2BC"
X=1
Do
Call MsgBox(X)
X = 1 + xpto(T, X)
Loop Until X = 1
End Sub
b) [1,5]
Sub P()
Dim X As Integer, Y As Integer
Dim P As Integer, Z As Integer
X = 23
Y=1+X\3
For P = Y To X Step 3
Z = P Mod Y
Call MsgBox(Z)
Next
End Sub
c) [1] Replace the FOR loop in b) by an equivalent DO … LOOP UNTIL.
2) [2] Justify if the following expressions are correct in VBA. For correct ones show their type and value
a) Chr(Asc("DUMMY") + 3)
b) Left("ANA", 2) & Mid("CANTIGAS", 4, 4) & Right("SEMENTE", 5)
c) 7 \ -2 Mod 2
d) Sqr(49) * Int(10 / 3)
II (4 Points)
1) Create a SUB to copy all names, starting with “A” and ending with “R”, from Sheet1 column A to Sheet1 column
B. Program should stop in the first empty cell in column A. There should be no empty cells between values in
column B.
2) Create a SUB to write, in the first column of a worksheet, the uppercase letters “A” to “Z” (one in each cell)
III (5 Points)
1) Create a function that, given a string, returns the string value. Assume the value for all letters (upper or
lowercase) is: A - 1, B – 2, C – 3 ... Z – 26, the value for any other character is 0. “Ac5C4b” -» 1+3+0+3+0+2
2) Create a SUB to ask the user to enter a string and, using the previous function, shows a message with the string
value.
IV (5 Points)
1) Create a function named “FindStr” to replicate (do the same as) the VBA InStr function. (You cannot use VBA InStr
or EXCEL Find/Search)
2) Create a function that, given a range, returns the sum of the multiplication of values in each row.
3
5
7
2
13
6
8
4
10
12
9
1
= (3x5x7) +(2*13*6)+(8*4*10)+(12*9*1)
Download

DATA MODELLING : 19-03-2015 (1H 45) Faça cada grupo numa