4N - Appunti di INFORMATICA

Transcript

4N - Appunti di INFORMATICA
lnx.brescianet.com
Sito didattico - Prof. Sechi Marco
FAQ
Profilo
Cerca
Lista degli utenti
Non ci sono nuovi messaggi
Gruppi utenti
Logout [ e01692 ]
4N - 3° Modulo
Indice del forum -> Classe 4N - 3°Modulo
Precedente :: Successivo
Autore
e01692
Site Admin
Registrato: 09/09/06 19:59
Messaggi: 277
Messaggio
Inviato: 21 Feb 2007 10:57 am
Oggetto: 4N - 3° Modulo
Appunti illustrati in laboratorio
Torna in cima
e01692
Site Admin
Registrato: 09/09/06 19:59
Messaggi: 277
Inviato: 21 Feb 2007 10:58 am
Oggetto: 4N - 21/02/2007
Maschere -> Bottone Nuovo --> seleziona "Visualizzazione Struttura" -->
Bottone "OK"
Visualizzazione Struttura ==> per costruire la mia maschera (Modalità
programmatore)
Visualizzazione Maschera ==> per utilizzare la mia maschera (modalità utente)
me.btnCliccaqui.Caption ==> indica la proprietà etichetta del bottone
BtnCliccaQui sulla maschera contenitore (me)
me.btnCliccaqui.Caption è equivalente a btnCliccaqui.Caption
in js me era this
Agli oggetti date un nome (proprieta name) le cui prime tre lettere
identificano il tipo
frm ==> maschere
Txt ==> caselle di testo
lbl ==> etichetta
btn ==> bottore
lst ==> elenco a discesa
-----------------Private Sub btnCliccaqui_Click()
MsgBox "ciao"
End Sub
Private Sub btnCliccaqui_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Me.btnCliccaqui.Caption = "[" & X & "," & Y & "]"
End Sub
--------------------Cliccando sulla maschera (parte in grigio scuro) richiamo l'evento Timer
Inserisco questo codice:
Private Sub Form_Timer()
Me.lblOrario.Caption = Format(Now, "hh.mm.ss")
End Sub
Imposto la proprieta "Intervallo timer" (in VBA TimerInterval) a 500 (mezzo
secondo)
Private Sub Form_Timer()
Me.lblOrario.Caption = Format(Now, "hh.mm.ss")
End Sub
Torna in cima
e01692
Site Admin
Registrato: 09/09/06 19:59
Messaggi: 277
Inviato: 24 Feb 2007 10:01 am
Oggetto: 4N - 24/02/2007
Me.lblCoordinate.Visible = Not Me.lblCoordinate.Visible
Me.lblCoordinate.BackColor = vbYellow
Me.lblCoordinate.ForeColor = vbBlue
Me.Corpo.BackColor = vbRed
una variabile è una zona di memoria dove posso parcheggiare dei dati frutto di input o di calcolo.
Option Explicit ==> obbliga a dichiarare tutte le variabili utilizzate
********************
Dim x As Integer
Dim varGen As Integer
Public Sub Prova()
Dim VarLoc As Integer
Dim x As Integer ' questa dichiarazione copre la dichiarazione
' della variabile esterna
VarGen=1
VarLoc=1
x=1
End Sub
sub btnClicca_click()
x=10
VarGen=10
Prova()
msgbox x
msgbox VarGen
end sub
**********
1) quando passo alla modalità di esecuzione e carico il form ACCESS crea lo spazio per le 2 variabili dichiarate esternamente
2) al click sul bottone "BtnClicca" verrà assegnato 10 a x e Vargen
3) La chiamata alla funzione prova determina l'allocazione (creazione) delle variabili locali x e VarLoc. La x locale ombreggia (shadowing)
quella globale e pertanto l'istruzione x=1 in prova in realtà modifica solo la x locale e non quella esterna. Il discorso non vale per VarGen
che risulta dicharata solo esternamente e pertanto prova() modificherà proprio quella con l'istruzione VarGen=1
4) finita l'esecuzione della sub "Prova()" tutta la memoria viene deallocata (liberata) e il contenuto delle variabili locali viene perso
5) verrà visualizzato per x il valore 10 mentre VarGen varrà 1
**********
Le variabili dichiarate fuori da qualsiasi sub sono visibili in tutto il modulo (script associato al nostro form)
le variabili dichiarate all'interno di una sub sono visibili all'interno di quella sub
**************************
DEBUG ==> operazione di test del codice scritto
1) definizione del breakpoint --> clicco in parte all'istruzione che deve essere sospesa (appare un pallino in parte)
2) Passo alla modalita di esecuzione del form e faccio in modo di attivare quel codice
3) Il prg si ferma e a video vedo le mie istruzioni. L'istruzione attiva è indicata con una freccia e evidenziata in giallo
4) con F8 eseguo passo passo le singole istruzioni - utilizzando la finestra immediata posso valutare il valore delle singole variabili: ad
esempio
print i ==> visualizzerà il valore di i attuale
--- arrivati alle routine
Torna in cima
e01692
Site Admin
Registrato: 09/09/06 19:59
Messaggi: 277
Inviato: 02 Mar 2007 07:21 am
Oggetto: 4N - 28/02/2007
y=f(x)
' questa è una variabile globale
Dim x
sub btnbottone_click()
x=3
Quadrato
Quadrato_2versione(3)
Quadrato_2versione(6)
Somma(4,8)
Somma(63,12)
y=Somma_2versione(63,12)
end sub
sub Quadrato()
y=x^2
debug.print y
end sub
sub Quadrato_2versione(z as long)
y=z^2
debug.print y
end sub
sub Somma(a as double, b as double)
Dim s as double
s=a+b
debug.print s
end sub
Function Somma_2Versione(a as double, b as double) as double
Dim s as double
s=a+b
Somma_2Versione= s
end Function
Struttura funzioni
*******************
function NomeFunzione(parametri) as tipo restituito
Variabili locali
... Istruzioni VBA
NomeFunzione=<valore da restituire>
end Function
leggivoti ' fase di input
m=calcolamedia(voti) ' algoritmo
stampaesitoscrutinio(m) 'output
Torna in cima
e01692
Site Admin
Inviato: 02 Mar 2007 09:46 am
Oggetto: 4N - 03/02/2007
Registrato: 09/09/06 19:59
Messaggi: 277
Sub SoluzioneEsercizio1()
Dim a As Long, b As Long, c As Long, d As Long, e As Long
Dim minore, NrValoricorretti As Byte
' ***********************************
' input
' ***********************************
NrValoricorretti = 0
If Not IsNull(Me.Txt_A) Then
If IsNumeric(Me.Txt_A) Then
a = Me.Txt_A
NrValoricorretti = NrValoricorretti + 1
End If
End If
If Not IsNull(Me.Txt_B) Then
If IsNumeric(Me.Txt_B) Then
b = Me.Txt_B
NrValoricorretti = NrValoricorretti + 1
End If
End If
If Not IsNull(Me.Txt_C) Then
If IsNumeric(Me.Txt_C) Then
c = Me.Txt_C
NrValoricorretti = NrValoricorretti + 1
End If
End If
If Not IsNull(Me.Txt_D) Then
If IsNumeric(Me.Txt_D) Then
d = Me.Txt_D
NrValoricorretti = NrValoricorretti + 1
End If
End If
If Not IsNull(Me.Txt_E) Then
If IsNumeric(Me.Txt_E) Then
e = Me.Txt_E
NrValoricorretti = NrValoricorretti + 1
End If
End If
If NrValoricorretti < 5 Then
MsgBox "Devi scrivere tutti numeri!!!", vbCritical, "Errore"
Exit Sub
End If
' ***********************************
' algoritmo
' ***********************************
minore = a
If minore > b Then
minore = b
End If
If minore > c Then
minore = c
End If
If minore > d Then
minore = d
End If
If minore > e Then
minore = e
End If
' ***********************************
' output
' ***********************************
Me.txt_output = "il minimo tra " & a & ", " & b & ", " & c & ", " & d & ", " & e & " è " & minore
End Sub
Torna in cima
e01692
Site Admin
Registrato: 09/09/06 19:59
Messaggi: 277
Inviato: 13 Mar 2007 12:37 pm
Oggetto: 4N - 13/03/2007
isnull(nomevariabile) ==> restituisce TRUE se
non è mai stata valorizzata e nella dichiarazione
non è specificato il tipo
esempio 1)
Dim x
IsNull(x) ==> vero
stringa vuota ==> "" ==> valore iniziale di variabili
di tipo stringa
esempio 2 )
Dim x as string
x="" ==> vero
valore iniziale di variabili di tipo numerico ==> 0
esempio 3)
Dim x as long
x=0 ==> vero
IsNumeric(argomento) ==> testo se è un numero
Call PulisciTabella(NomeTbl)
equivale a scrivere la sub senza le ()
PulisciTabella NomeTbl
cstr(#01/27/2004#) ==> “27/01/2004”
x =inputbox("Frase","Titolo", "Valore predefinito")
esplorare le funzioni elencate nel file di word
spiegato combobox (escluso esempio del for)
sintassi generica del for
for i=<valore iniziale> to <valore finale> [step passo]
.....
next
-------------sequenza 1, 2, 3 ...
s = ""
For i = 1 To n
s = s & i & ";"
Next
Me.cmbsequenza.RowSource = s
sequenza 1, -2, 3, -4 ...
s = ""
segno = 1
For i = 1 To n
s = s & (segno * i) & ";"
segno = -segno
Next
Me.cmbsequenza.RowSource = s
sequenza 100, -99, 98, -97 ...
s = ""
segno = 1
For i = 100 To 1 Step -1
s = s & (segno * i) & ";"
segno = -segno
Next
Me.cmbsequenza.RowSource = s
sequenza 1, 0, 1, 0 ...
s = ""
For i = 1 To n
s = s & (i Mod 2) & ";"
Next
Me.cmbsequenza.RowSource = s
sequenza primi n pari
s = ""
For i = 2 To n Step 2
s = s & i & ";"
Next
Me.cmbsequenza.RowSource = s
crea la tavola pitagorica
n = InputBox("Dammi N", "N", 10)
Me.cmbsequenza.ColumnCount = n
s = ""
For i = 1 To n
s = s & "0,7 cm;"
Next
Me.cmbsequenza.ColumnWidths = s
s = ""
For i = 1 To n
For j = 1 To n
s = s + CStr(i * j) & ";"
Next
Next
Me.cmbsequenza.RowSource = s
determinazione di un numero se è primo
numeroprimo = True
For i = 2 To n - 1
If n Mod i = 0 Then
' n non è primo
numeroprimo = False
End If
Next
If numeroprimo Then
MsgBox n & " è primo"
Else
MsgBox n & " è non è primo"
End If
Me.cmbsequenza.RowSource = s
---DoCmd.Close ==> chiudo la maschera
l'oggetto docmd è l'equivalente del menu di access
----Analisi esempi 01-02-03-04
Evento Exit ==> viene attivato quando esco dal controllo ==> usato per controllare la
correttezza dei dati digitati
stringa=stringa+"frase da accodare" ==> per aggiungere una stringa ad una variabile di tipo
stringa
Visibilita Variabili
Le variabili definite dentro una sub/function sono "vive" solo durante l'esecuzione di
quella sub/function. Le variabili locali ad una sub/function ombreggiano (shadowing)
quelle globali
esempio
************************
Dim Nominativo
Sub Saluta
Dim Nominativo
' verrà usata la variabile locale alla sub
msgbox Nominativo
end sub
*************************
I moduli sono collezioni di istruzioni VB contenenti sub e function di uso comune (esempio
la funzione che calcola la media di una sequenza di numeri) - La parola Public è messa
davanti alle variabili o alle procedure che devono essere usate ovunque nel vostro programma
esempio
Public X as long
Public function Somma(a as long, b as long) as long
Somma=a+b
end function
La dichiarazione
private X as long
fa in modo che la variabile X sia visibile solo all'interno del modulo dove è dichiarata
fatti esempi 01-02-03
Torna in cima
e01692
Site Admin
Registrato: 09/09/06 19:59
Messaggi: 277
Inviato: 17 Mar 2007 09:57 am
Oggetto: 4N - 17/03/2007
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
' elenco i controlli mediante un indice
me.controls ==> insieme dei controlli sul form corrente
For i = 0 To Me.Controls.Count - 1
msgbox Me.Controls(i).name
next
equivalente
for each controllo in me.controls
msgbox controllo.name
next
' Blocco tutti i controlli di tipo textbox (non richiesto)
for each controllo in me.controls
if controllo.controltype=acTextbox then
controllo.enabled=false
end if
next
' Elenco delle maschere Application è Access
For Each Frm In Application.CurrentProject.AllForms
msgbox Frm.Name
Next
currentdb ==> mdb che ho aperto
' Elenco delle tabelle (mediante insiemi)
For Each Tbl In currentdb.tabledefs
msgbox Tbl.Name
Next
' Elenco delle tabelle (mediante indice)
For i = 0 To CurrentDb.TableDefs.Count - 1
MsgBox CurrentDb.TableDefs(i).Name
Next
' (Il -1 è dovuto alla numerazione che va da 0 a N-1)
count ==> proprietà degli insiemi che indica il nr di elementi (-1)
currentdb => il file mdb che state usando
la proprietà
currentdb.name ==> nome del file (percorso)
il singolo elemento di un insieme può essere richiamato mediante un indice
CurrentDb.TableDefs(i) [utile nei for] oppure con il nome dell'oggetto
CurrentDb.TableDefs("Studenti")
' Scorrimento dei campi della tabella studenti (modo insiemistico)
set Tbl=CurrentDb.TableDefs("Studenti")
for each fld in tbl.fields
msgbox fld.name
Next
' Scorrimento dei campi della tabella studenti (modo con indice)
set Tbl=CurrentDb.TableDefs("Studenti")
For i = 0 To tbl.Fields.Count - 1
msgbox tbl.Fields(i).name
Next
-------------gestione dei files
"Scrittura in un files
1) apro il file passato come argomento in scrittura (for output) e lo gestisco con #1
Open "C:\pippo.txt" For Output As #1
2) Scrivo nel file indicato con #1
Print #1, "ciao sono una riga scritta"
3) Ho finito - lo chiudo
close #1
******
"Lettura dei files
1) apertura in lettura del file pippo.txt e lo gestisco con #1
Open "C:\pippo.txt" For Input As #1
2) Leggo una linea nel file gestito da #1 e posiziono il puntatore
di lettura in fondo
Input #1, linea ' legge una frase fino al primo invio che incontra
3) Ho finito - lo chiudo
close #1
La funzione EOF(Numero del file) restituisce vero se sono arrivato in fondo al file
La funzione LOF(Numero del file) restituisce la dimensione in byte del file gestito da #<Numero del file>
' Ripeto Istruzione VBA finchè la condizione è vera
while condizione
istruzione VBA
wend
esempio sui files
s=""
While Not EOF(1) ' end of file
Input #1, linea ' legge e passa sulla riga successiva
s = s + linea + vbCrLf
Wend
msgbox s
oppure (non richiesta)
strTesto = Input(LOF(1),1) ' Restituisce tutti i byte del file #1
CurrentDb.Execute (Comando SQL) ==> esegue la qry passata come argomento (sono escluse le qry di
selezione)
Nominativo=me.txtNominativo
Classe=me.txtClasse
CmdSQL="INSERT INTO STUDENTI (Nominativo, Classe) Values('"
CmdSQL=CmdSQL & Nominativo & "', '" & classe & "')
currentdb.excecute(CmdSQL)
Eliminazione studenti che contengono una certa lettera
currentdb.execute("DELETE * FROM Studenti Where Nominativo like '*" & me.txtlettera & "*'")
SCORRIMENTO tabella o qry
OGGETTO RECORDSET ==> consente la gestione di un elenco generato da una Qry o una tabella
metodi di spostamento per il recordset
rs.movefirst
rs.movenext
rs.moveprevious
rs.movelast
proprietà relative alla posizione nel recordset
rs.bof ==> vero se sono all'inizio
rs.eof ==> vero se sonop in fondo
rs.close ==> chiude la connessione con quel recordset
un recordset privo di record ha la proprietà eof posta a TRUE subito
openrecordset ==> metodo che consente di attaccare ad una variabile recordset (rs) una tabella
o una Qry passata come argomento a questo metodo
Scorrimento dal primo all'ultimo record
----------------------------------------Set rs = CurrentDb.OpenRecordset(ComandoSQL)
If Not rs.EOF Then ' evito l'errore se non ci sono record quando eseguo il rs.movefirst
rs.MoveFirst
While Not rs.EOF
MsgBox rs(NomeCampo da visualizzare)
rs.MoveNext
Wend
Else
MsgBox "Nessun record selzionato"
End If
rs.close
Scorrimento dall'ultimo record al primo
----------------------------------------Set rs = CurrentDb.OpenRecordset(ComandoSQL)
If Not rs.EOF Then
rs.MoveLast
While Not rs.BOF
MsgBox rs(NomeCampo da visualizzare)
rs.MovePrevious
Wend
Else
MsgBox "Nessun record selzionato"
End If
rs.close
esempio pratico (elenca gli studenti che nel nominativo presentano la lettera selezionata)
---------------Lettera = InputBox("Dammi la lettera che ricerchi nel nominativo studenti")
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Studenti where Nominativo Like '*" & Lettera & "*'")
If Not rs.EOF Then
rs.MoveFirst
While Not rs.EOF
MsgBox rs("Nominativo")
rs.MoveNext
Wend
Else
MsgBox "Nessun studente selezionato"
End If
rs.Close
---per martedi esercizi 1 e 2 del for
Torna in cima
e01692
Site Admin
Registrato: 09/09/06 19:59
Inviato: 20 Mar 2007 11:51 am
me.txtOUT=""
Oggetto: 4N - 20/3/2007
Messaggi: 277
for i=1 to n
x=prompt("Dammi il valore")
if ( ((x<=B) AND (x>=A)) OR ((x<=M*B) AND (x>=M*A)) )
me.txtOUT=me.txtOUT & x +vbcrlf
end if
NEXT
per martedi 3/4/2007 verifica
-------------------Sub IncrementaConByVal(ByVal Valore As Integer)
Valore = Valore + 1
End Function
Sub IncrementaConByRef(ByRef Valore As Integer)
Valore = Valore + 1
End Function
esempio
y=1
x=1
call IncrementaConByVal(x)
call IncrementaConByRef(y)
msgbox x ==> stampa 1
msgbox y ==> stampa 2
Quando una funzione/sub deve modificare dei parametri devo sempre passarli come byref
Un parametro dichiarato come byref non accetta valori costanti
call IncrementaConByVal(7)
call IncrementaConByRef(9) ==> darà errore poichè non può creare un link ad una variabile
Le chiamate byref creano un link verso lo spazio di memoria dove il parametro è stato allocato.
Le chiamate byval creano una variabile locale alla procedura che verrà deallocata al termine
dell'esecuzione della procedura stessa.
Optional => parametro opzionale
Function Incrementa(byval x as integer, optional passo as integer=1) as integer
Incrementa = x + passo
End Function
incrementa(7) ==> restituisce 8
incrementa(7,10) ==> restituisce 17
il comando QUIT ==> chiude access
docmd.close ==> chiude la maschera
no equ e imp
00000001
00000010
00000011
00000100
00000101
00000110
00000111
00001000
=>1
=>2
=>3
=>4
=>5
=>6
=>7
=>8
5 or 6
00000101 or
00000110
----------00000111
4 or 2
00000010 or
00000100
---------00000110
00000101 and
00000110
----------00000100
1011101
1011011
PrimaPortaAperta=1000000
SecondaPortaAperta=0100000
...
StatoDellePorte=1011101
if (PrimaPortaAperta AND StatoDellePorte >0) THEN
msgbox "La prima porta è aperta"
end if
PrimaPortaAperta AND StatoDellePorte
1000000 AND
1011101
---------1000000 ==> > 0
SecondaPortaAperta AND StatoDellePorte
0100000 AND
1011101
---------0000000 ==> =0
msgbox "ciao", vbquestion+vbyesno
VbQuestion ==> 32 ==> 00100000
vbyesno ==> 4 ==> 00000100
riprendere l'or/and a bit
Ultima modifica di e01692 il 23 Mar 2007 10:04 am, modificato 1 volta in totale
Torna in cima
e01692
Site Admin
Registrato: 09/09/06 19:59
Messaggi: 277
Inviato: 21 Mar 2007 11:01 am
Oggetto: 4N - 21/03/2007
-------tipo variant
dim x as variant
equivale a
dim x
x=inputbox("dammi x")
Utile quando non conosco il tipo di dato che sto per andare a leggere
Se metto il tipo di dato il prg andrà in errore se inserisco un valore non numerico
-----------------dim x as long
x=inputbox("dammi x")
if isnumeric(x) then
y=clng(x)
end if
---------------funzioni di conversione
esempio
cdate("01/01/2007") ==> #01/01/2007#
clng("129") ==> 129
cdbl("1,29281") ==> 1.29281
ARRAY
Elenco di valori accessibili mediante un unico nome + un indice scritto tra ()
esempio
Classe(i)="Mario Rossi"
Procedura con elenco in ordine inverso
Public Sub VisualizzaNumeriInOrdineInverso()
Dim X(1 To 10) As Long
For i = 1 To 10
X(i) = InputBox("Dammi il " & i & "° numero", 0)
Next
For i = 10 To 1 Step -1
MsgBox X(i)
Next
End Sub
Procedura di ricerca in un Array
=================================
Public Sub RicercaInArray()
Dim X(1 To 10) As Long
' richiede i valori
For i = 1 To 10
X(i) = InputBox("Dammi il " & i & "° numero", 0)
Next
ValoreCercato=InputBox("Che numero cerchi ?", 0)
For i = 1 To 10
if X(i)=ValoreCercato then
msgbox "Il valore è presente in " & i & "° posizione"
exit sub
end if
Next
msgbox "Il valore non è presente nell'elenco"
End Sub
Questo esempio non è richiesto
(Ricerca del nome dato un cognome)
-----------------------------Dim rs As Recordset
Dim X
Set rs = CurrentDb.OpenRecordset("Studenti")
X = rs.GetRows(5)
Cognome = InputBox("Dammi il cognome", "")
For i = 0 To 4
If Cognome = X(1, i) Then
MsgBox Cognome & " si chiama " & X(2, i)
Exit Sub
End If
Next
MsgBox Cognome & " non trovato!!", vbExclamation
------------------------------
Qui invece va studiato
Esempio creazione array bidimensionale contenente
la tavola pitagorica
Dim Tabella(1 To 10, 1 To 10) As Integer
For i=1 to 10
For j=1 to 10
Tabella(i,j)=i*j
Next
Next
------------------------- RIPRENDERE DA QUI
' Lettura di un elenco con un numero di valori
' non conosciuto a priori e stampa in ordine inverso
Dim Elenco(), X As Long, N As Long
X = InputBox("Dammi un valore")
N=0
While X <> 0
N=N+1
ReDim Preserve Elenco(N)
Elenco(N) = X
X = InputBox("Dammi un valore")
Wend
For i = N To 1 Step -1
MsgBox Elenco(i)
Next
Torna in cima
e01692
Site Admin
Registrato: 09/09/06 19:59
Messaggi: 277
Inviato: 24 Mar 2007 09:19 am
Oggetto: 4N - 24/03/2007
' Lettura di un elenco con un numero di valori
' non conosciuto a priori e stampa in ordine inverso
Dim Elenco(), X As Long, N As Long
X = InputBox("Dammi un valore")
N=0
While X <> 0
N=N+1
ReDim Preserve Elenco(N)
Elenco(N) = X
X = InputBox("Dammi un valore")
Wend
For i = N To 1 Step -1
MsgBox Elenco(i)
Next
next
redim allarga l'array (ma lo svuota dei valori)
esempio
dim x() as long
redim x(10) ==> crea un array di 10 elementi
redim preserve x(10) ==> allarga un array non dimensionato a 10 elementi (mantenendo i valori
precedentemente archiviati
for i=1 to N
istruznba
next
equivale a
i=1
while i<=N
istruznba
i=i+1
wend
soluzione IF - nr 11
Private n As Long
Sub SoluzioneEsercizio11()
n=0
Me.TimerInterval = 1000
End Sub
Private Sub Form_Timer()
Dim s As String
n=n+1
s = Format(n, "00000")
Me.Txt_A = Mid(s, 1, 1)
Me.Txt_B = Mid(s, 2, 1)
Me.Txt_C = Mid(s, 3, 1)
Me.Txt_D = Mid(s, 4, 1)
Me.Txt_E = Mid(s, 5, 1)
End Sub
---Sub SoluzioneEsercizio1()
Dim a As Double, b As Double, c As Double, d As Double, e As Double
Dim minimo As Double, NotOK As Boolean
NotOK
NotOK
NotOK
NotOK
NotOK
=
=
=
=
=
(IsNull(Me.Txt_A) Or Me.Txt_A = "" Or Not IsNumeric(Me.Txt_A))
NotOK Or (IsNull(Me.Txt_B) Or Me.Txt_B = "" Or Not IsNumeric(Me.Txt_B))
NotOK Or (IsNull(Me.Txt_C) Or Me.Txt_C = "" Or Not IsNumeric(Me.Txt_C))
NotOK Or (IsNull(Me.Txt_D) Or Me.Txt_D = "" Or Not IsNumeric(Me.Txt_D))
NotOK Or (IsNull(Me.Txt_E) Or Me.Txt_E = "" Or Not IsNumeric(Me.Txt_E))
If NotOK Then
MsgBox "Scrivi dei numeri!"
Else
a = CDbl(Me.Txt_A)
b = CDbl(Me.Txt_B)
c = CDbl(Me.Txt_C)
d = CDbl(Me.Txt_D)
e = CDbl(Me.Txt_E)
minimo = a
If b < minimo Then
minimo = b
End If
If c < minimo Then
minimo = c
End If
If d < minimo Then
minimo = d
End If
If e < minimo Then
minimo = e
End If
MsgBox "Il minimo è: " & minimo
End If
End Sub
SOLUZIONE FOr1
----------------------------------Sub SoluzioneEsercizio1()
Dim N As Double
Dim i As Double
Dim x As Double
Dim Mass As Double
N = Me.Txt_N
If N > 0 Then
Mass = InputBox("inserisci il 1°numero")
For i = 2 To N
x = InputBox("inserisci il" & i & "°numero")
If x > Mass Then
Mass = x
End If
Next
Me.TxtOut = "Il massimo è " & Mass
Else
Me.TxtOut = "Sequenza vuota"
End If
End Sub
Torna in cima
e01692
Site Admin
Registrato: 09/09/06 19:59
Messaggi: 277
Inviato: 28 Mar 2007 09:47 am
Sub SoluzioneEsercizio9()
Dim N As Long
Dim j As Long
Dim i As Long
Dim primo As Boolean
Dim s As String
N = Txt_N
Oggetto: 4N - 28/03/2007
s = ""
For i = 2 To N
primo = True
For j = 2 To i - 1
If (i Mod j) = 0 Then
primo = False
Exit For
End If
Next
If primo Then
s = s & i & ";"
End If
Next
LstElenco.RowSource = s
End Sub
Torna in cima
e01692
Site Admin
Registrato: 09/09/06 19:59
Messaggi: 277
Inviato: 13 Apr 2007 09:04 am
Oggetto: 4N - 13/04/2007 (aggiunta)
ESEMPI DI DOMANDE ORALI
1) stabilire se x è un numero positivo, negativo o nullo
2) Sintassi completa IF, WHILE, FOR, FUNCTION, SUB
3) stabilire se un valore x è numerico o nullo
4) scrivere la sintassi di 2 funzioni (esempio left , instr)
5) su cosa si basa la programmazione ad oggetti
6) AND e OR a bit
esempio di funzione che somma 2 valori
function somma(a as double,b as double) as double
'corpo della funzione
somma=a+b
end function
funzione che mette maiuscola la 1° lettera
function PrimaLetteraMaiuscola(s as string) as string
PrimaLetteraMaiuscola=ucase(left(s,1)) & lcase(mid(s,2))
end function
quando la usi
p=PrimaLetteraMaiuscola("ermenegildo") ==> p contiene "Ermenegildo"
funzione che dati 3 numeri restituisce il minimo
function Minimo(a as double, b as double, c as double) as double
Dim m
m=a
if (m > b) then m=b
if (m > c) then m=c
Minimo=m
end function
Lettura di una sequenza di numeri terminata con 0
x=inputbox("Dammi un numero")
while x<>0
x=inputbox("Dammi un numero")
wend
Sequenze
primi n termini della sequenza
1,2,3,4,5...
for i=1 to N
msgbox i
next
1,-2,3,-4,5...
segno=1
for i=1 to N
msgbox i*segno
segno=-segno
next
1,0,1,0....
for i=1 to N
msgbox (i mod 2)
next
1,0,-1, 1,0, -1 ....
for i=1 to N
if (i mod 3) = 1 THEN
msgbox 1
elseif (i mod 3) = 2 THEN
msgbox 0
else
msgbox -1
end if
next
"a","b","c","d","a","b"....
for i=1 to N
if (i mod 4) = 1 THEN
msgbox "a"
elseif (i mod 4) = 2 THEN
msgbox "b"
elseif (i mod 4) = 3 THEN
msgbox "c"
else
msgbox "d"
end if
next
10,20,30, N*10
for i=10 to N step 10
msgbox i
next
oppure
for i=1 to N
msgbox i*10
next
i MOD m ==> resto della divisione tra i e m
esempi
7 MOD 3 => 1
16 MOD 2 ==> 0
15 MOD 16 ==> 15
sostituire nella stringa s la lettera a con #
s="Ciao sono io"
p=""
for i=1 to len(s)
if mid(s,i,1)="a" THEN ' i-esimo carattere della stringa s
p=p & "#"
else
p=p & mid(s,i,1)
end if
NEXT
msgbox p ==> "Ci#o sono io"
Torna in cima
e01692
Site Admin
Registrato: 09/09/06 19:59
Messaggi: 277
Inviato: 21 Apr 2007 08:32 am
Oggetto: 4N - 21/04/2007
Esempi di domande
1) Elencare i campi di una tabella (ad esempio studenti)
for each t in currentdb.tabledefs
msgbox t.name
next
oppure
for i=0 to currentdb.tabledefs.count-1
msgbox currentdb.tabledefs(i).name
next
2) Elencare tutti i controlli della maschera corrente
3) Contare le "A" presenti in una stringa S
n=0
for i=1 to LEN(s)
if mid(s,i,1)="A" then
n=n+1
end if
next
msgbox "le a sono " & N
oppure per access non 97
n=len(s)- len(replace(s,"A",""))
msgbox "le a sono " & N
4) Costruire una funzione che dati 3 argomenti restituisce la somma dei numeri pari
function SommaPari(a as long, b as long, c as long) as long
Dim s as long
s=0
if a mod 2=0 then
s=s+a
end if
if b mod 2=0 then
s=s+b
end if
if c mod 2=0 then
s=s+c
end if
SommaPari=s
end function
5) Elencare mediante un recordset
set rs=currendb.openrecordset("SELECT Cognome FROM Studenti")
if Not rs.eof then
rs.movefirst
while not rs.eof
msgbox rs("Cognome")
rs.movenext
wend
endif
Torna in cima
Mostra prima i messaggi di: Tutti i messaggi
Prima i vecchi
Indice del forum -> Classe 4N - 3°Modulo
Vai
Tutti i fusi orari sono GMT
Pagina 1 di 1
Controlla questo Topic
Vai a: Classe 4N - 3°Modulo
Puoi inserire nuovi Topic in
Puoi rispondere ai Topic in
Puoi modificare i tuoi messaggi in
Puoi cancellare i tuoi messaggi in
Puoi votare nei sondaggi in
Puoi moderare
Administration Panel
Powered by phpBB 2.0.10 © 2001, 2002 phpBB Group
Vai
questo
questo
questo
questo
questo
questo
forum
forum
forum
forum
forum
forum

Documenti analoghi

4M - Appunti di INFORMATICA

4M - Appunti di INFORMATICA Dim minimo As Double NotOK = (IsNull(Me.Txt_A) Or Me.Txt_A = "") NotOK = NotOK Or (Not IsNumeric(Me.Txt_A)) NotOK = NotOK Or (IsNull(Me.Txt_B) Or Me.Txt_B = "") NotOK = NotOK Or (Not IsNumeric(Me.T...

Dettagli

4M - Appunti di INFORMATICA

4M - Appunti di INFORMATICA DoCmd.OpenForm "Esempio1" DoCmd.Close acForm, Me.Name ' DoCmd.Close acForm, "Maschera2" End Sub ----Torna in cima e01692 Site Admin Registrato: 07 Set 2004 Messaggi: 214

Dettagli

VBA XLS - Appunti di INFORMATICA

VBA XLS - Appunti di INFORMATICA For i = 1 To 5 ' chiedo l'i-esimo valore Xi x = InputBox("dammi un numero:", "lettura numero", i) ' Aggiungo il valore Xi alla somma dei valori precedentemente letti

Dettagli