lez. 11 (10/11) - pbelementi di programmazione1 lezione 11 esercizi

22
Lez. 11 (10/11) - PB Elementi di Programmazion e 1 Lezione 11 Esercizi

Upload: lauretta-palmisano

Post on 01-May-2015

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 1

Lezione 11

Esercizi

Page 2: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 2

Domanda 1Option ExplicitOption Base 1

Function prova(ByVal a As Integer, ByRef b As Integer) As Integer

Dim c As Integer c = a + b b = a Mod b prova = b + 1End Function Sub ex() Dim x As Integer, y As Integer, z As Double y = 10 x = 5 z = prova(y, x) y = prova(8, y) z = x / yEnd Sub

Mostrare la valorizzazione delle variabili durante l’esecuzione del presente programma

Page 3: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 3

Domanda 1Option ExplicitOption Base 1Function prova(ByVal a As Integer, ByRef b As

Integer) As Integer Dim c As Integer c = a + b b = a Mod b prova = b + 1End Function Sub ex() Dim x As Integer, y As Integer, z As Double y = 10 x = 5 z = prova(y, x) y = prova(8, y) z = x / yEnd Sub

x y z 5 10 0 a b c prova 5 10 0 10 ^x 0 0 5 10 0 10 ^x 15 0 0 10 0 10 ^x 15 0 0 10 0 10 ^x 15 1 0 10 1 1<- 0 10 1 8 ^y 0 0 0 10 1 8 ^y 18 0 0 8 1 8 ^y 18 0 0 8 1 8 ^y 18 9 0 9 1 0 9 0

NB: 8 : 10 = 0 0 8

Page 4: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 4

Domanda 2Trasformare usando l’istruzione

do While ... Loop

Do A = A + 3 If A > 5 Then Do B = B -1 C = C + 1 Loop While (C>0) End If C = 2Loop While (A < B)

Page 5: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 5

Domanda 2

Trasformare usando l’istruzione

do While ... Loop

Do A = A + 3 If A > 5 Then Do B = B -1 C = C + 1 Loop While (C>0) End If C = 2Loop While (A < B)

A = A + 3If A > 5 Then B = B -1 C = C + 1 Do While (C>0) B = B -1 C = C + 1 Loop End IfC = 2

Do While (A < B) A = A + 3 If A > 5 Then B = B -1 C = C + 1 Do While (C>0) B = B -1 C = C + 1 Loop End If C = 2Loop

Page 6: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 6

Domanda 2

Do x=x+1Loop While x >0

x=x+1Do While x>0 x=x+1Loop

APPLICAZIONE REGOLA GENERALE

Page 7: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 7

Domanda 2

Do x=x+1 Do y = y +1 Loop While y<0Loop x >0

x=x+1 Do y = y +1 Loop While y<0Do While x>0 x=x+1 Do y = y +1 Loop While y<0Loop

Partenza

Passo 1:E’ indifferente partire

Dal ciclo interno o esterno

Page 8: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 8

Domanda 2

x=x+1 Do y = y +1 Loop While y<0Do While x>0 x=x+1 Do y = y +1 Loop While y<0Loop

x=x+1y = y +1Do While y<0 y = y +1LoopDo While x>0 x=x+1 y = y + 1 Do While y<0 y = y +1 Loop Loop

Passo 1 Passo 2

Page 9: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 9

Domanda 2Do x = x +1Loop While x < 0X56

x=x+1Do while x <0 x= x + 1LoopX56

Do while x <0 x= x + 1Loop X 5

Vera equivalenza

Equivalenza errata

Page 10: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 10

Domanda 3

Date le seguenti dichiarazioni:

Dim a As Boolean, b As BooleanDim c As Double, d As Integered i seguenti valori iniziali:

a = False b = True c = 2.5 d = 4Indicare il valore delle espressioni:

d = d / 3 + ca = b OR (c > d - c)c = d / 3 + 7

Page 11: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 11

Domanda 3

Date le seguenti dichiarazioni:

Dim a As Boolean, b As BooleanDim c As Double, d As Integered i seguenti valori iniziali:

a = False b = True c = 2.5 d = 4Indicare il valore delle espressioni:

d = d / 3 + ca = b OR (c > d - c)c = d / 3 + 7

• d = d / 3 + cd= 1.333 + 2.5d= 4 ‘arrotonda!!!

• a = b OR _ (c > d - c) True OR True Truec = d / 3 + 7

C=8.333

Page 12: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 12

Domanda 4

• Il codice che segue genera un errore di esecuzione; indicare quale e quale istruzione lo provoca:

Option ExplicitOption Base 1

Sub ex() Dim vet(3 To 8) vet(7) = 6 vet(8) = 1 vet(1) = 3End Sub

Page 13: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 13

Domanda 4• Il codice che segue genera un errore

di esecuzione; indicare quale e quale istruzione lo provoca:

Option ExplicitOption Base 1Sub ex() Dim vet(3 To 8) vet(7) = 6 vet(8) = 1 vet(1) = 3End Sub

• Vet(1) non esiste

Page 14: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 14

Domanda 5• Mostrare il contenuto della cella A2 dopo

l’esecuzione del seguente codice:Option ExplicitSub ex() Dim S As String S = "prova a provare" S = Replace(S, "va", "XX") Range("A1").Value = S Range("A2").Value=_

Left(S, 4) Range("A3").Value=_

right(S, 4)End Sub

Page 15: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 15

Domanda 5• Mostrare il contenuto della cella A2

dopo l’esecuzione del seguente codice:

Option ExplicitSub ex() Dim S As String S = "prova a provare" S = Replace(S, "va", "XX") Range("A1").Value = S Range("A2").Value=_

Left(S, 4) Range("A3").Value=_

right(S, 4)End Sub

proXX a proXXreproXXXre

Page 16: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 16

Domanda 6

• Date le seguenti dichiarazioni:Dim a As Integer, d As DoubleDim c As Boolean, b As Boolean • ed i seguenti valori iniziali: a = 8 d = 2.5 c = True b = FalseIndicare il valore delle espressioni: d = d / 3 + ca = b AND (c > 0)c = d /3 + 7 ‘d valore iniziale

Page 17: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 17

Domanda 6• Date le seguenti dichiarazioni:

Dim a As Integer, d As DoubleDim c As Boolean, b As Boolean • ed i seguenti valori iniziali:

a = 8 d = 2.5 c = True b = FalseIndicare il valore delle espressioni: d = d / 3 + ca = b AND (c > 0)c = d /3 + 7 ‘d valore iniziale

d = d / 3 + cd = 0.833 + (-1)d = -0.17

a=b AND (c > 0)a= false AND falsea=False

c=true

Page 18: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 18

Domanda 7

• Scrivere l’intestazione della funzione ft() che ha tre parametri X, Y, Z; di questi il primo è di tipo Double gli altri due sono facoltativi di tipo Integer il primo per valore, il secondo per riferimento. La funzione restituisce un tipo Double.

Page 19: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 19

Domanda 7

• Scrivere l’intestazione della funzione – ft()

– che ha tre parametri X, Y, Z;

– di questi il primo è di tipo Double

– gli altri due sono facoltativi di tipo Integer • il primo per valore, • il secondo per riferimento.

– La funzione restituisce un tipo Double.

Page 20: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 20

Domanda 7

• Scrivere l’intestazione della funzione ft() che ha tre parametri X, Y, Z; di questi il primo è di tipo Double gli altri due sono facoltativi di tipo Integer il primo per valore, il secondo per riferimento. La funzione restituisce un tipo Double.

function ft( X as Double, _Optional ByVal _

Y As Integer,_ Optional Z As Integer ) As Double

Page 21: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 21

Domanda 8• Indicare il contenuto delle celle B1 ed B2 dopo l’esecuzione del

seguente codice VBA: 

Option ExplicitSub ex() Dim x As Double, y As Double x = 4 y = 8 y = y ^ 2 + x / 3 x = y + 10 Range("B1").Value = Application.WorksheetFunction.Floor(x, 1) Range("B2").Value = yEnd Sub

Page 22: Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi

Lez. 11 (10/11) - PB Elementi di Programmazione 22

Domanda 8• Indicare il contenuto delle celle B1 ed B2

dopo l’esecuzione del seguente codice VBA: 

Option ExplicitSub ex() Dim x As Double, y As Double x = 4 y = 8 y = y ^ 2 + x / 3 x = y + 10 Range("B1").Value = _ Application.WorksheetFunction.Floor(x, 1) Range("B2").Value = yEnd Sub

x y 4 8 4 65.333 75.3333 65.333

B1 = 75B2 = 65.333