Classe 4a


 

IN FONDO ALLA PAGINA I FILE SEQUENZIALI

 

 

Ripasso Visual Basic: Le strutture di controllo

La progettazione e la realizzazione di un algoritmo costituito di parti che dipendono l’una dall’altra secondo un preciso modello organizzativo, si basa sull’affermazione che: qualsiasi algoritmo può essere scritto utilizzando soltanto tre strutture di base: sequenziale, alternativa , di ripetizione (Teorema di Jacopini-Bohm). Questi tre modelli organizzativi si chiamano Strutture di controllo.    Per rappresentare un algoritmo possiamo utilizzare il Diagramma a blocchi che raffigura così le tre strutture fondamentali:

          

In Visual basic traduciamo in istruzioni le strutture utilizzando la sintassi:

SEQUENZA

istruzione

istruzione

istruzione

 

STRUTTURA ALTERNATIVA

IF condizione THEN

      istruzione

      istruzione      

ELSE

      istruzione

      istruzione

END IF

 

RIPETIZIONE POST CONDIZIONALE

 DO

         Istruzioni

LOOP UNTIL condizione

 

Esercitazione Visual basic: esercizi sulle strutture di controllo

 

1)Struttura alternativa: Dato in input un numero, dire se è pari o dispari. Visualizzare il risultato in una Msgbox().

Inseriamo nel form cinque controlli: una label, una textbox, tre button.

     

 

Per sviluppare il programma utilizziamo la struttura alternativa a due vie scrivendo il codice nell'evento click del pulsante Esegui. Inseriamo anche i pulsanti Cancella ed Esci.

 

2) Struttura iterativa post-condizionale per falso: Date in input le età di un certo numero di ragazzi, contare quanti sono maggiorenni. Visualizzare il risultato in una Msgbox().

Inseriamo sul form una label e due button e nel pulsante Elabora inseriamo le istruzioni Visual basic applicando una struttura iterativa posticipata per falso con, all'interno, una struttura alternativa ad una via.

    

In questo esercizio abbiamo usato un contatore (variabile maggiorenni) che è un tipo di variabile numerica cui si assegna un valore iniziale = 0 (azzeramento della variabile) e si incrementa di 1 ogni volta che si verificano le condizioni poste. La sua funzione è quella di contare. L’espressione usata per incrementare il contatore è: 

 CONTATORE = CONTATORE + 1

Nella istruzione Msgbox() abbiamo anche effettuato un concatenamento di stringhe utilizzando il carattere &.

In questo caso abbiamo concatenato una stringa ("I maggiorenni sono ") con il contenuto della variabile

maggiorenni ottenendo il messaggio ed il risultato del calcolo.

                                                                                                           

Lezione Visual basic: Struttura di ripetizione con contatore

2) Struttura di ripetizione con contatore:

Esempio 1:Dati in input N numeri si vuole conoscere quanti sono i numeri pari.

 

INPUT :          N (quanti sono i numeri da controllare)

                        numero (ogni numero inserito)

LAVORO:      pari (contatore che conta i numeri pari)

OUTPUT :    pari (totale dei numeri pari)

Per l'INPUT utilizzeremo l'istruzione inputbox() mentre per l'OUTPUT utilizzeremo una textbox. Sul form avremo quindi, oltre a due pulsanti, solo una label e una textbox per l'output.

 

Per la soluzione del problema abbiamo usato la struttura di ripetizione con contatore FOR NEXT che viene utilizzata quando si sa a priori quante volte devono essere eseguite le istruzioni contenute nel ciclo. L'input della variabile n  (quante volte viene eseguito il ciclo) viene fatto quindi prima di iniziare il ciclo (prima dell'istruzione FOR). Con il ciclo For-Next non si deve contare quante volte viene effettuato il ciclo mediante un contatore (i = i + 1) perchè viene fatto in automatico.

 

In questo esercizio abbiamo usato un contatore (variabile pari) che è un tipo di variabile numerica cui si assegna un valore iniziale = 0 (azzeramento della variabile) e si incrementa di 1 ogni volta che si verificano le condizioni poste. La sua funzione è quella di contare. L’espressione usata per incrementare il contatore è: 

 CONTATORE = CONTATORE + 1 (in questo caso   pari = pari + 1)

Esempio 2: Inseriti da tastiera N valori diversi da zero, calcolate e visualizzate alla fine la media aritmetica dei medesimi e la percentuale dei positivi sul totale.

INPUT: n, num

OUTPUT: media, perc

LAVORO: cont, somma

In questo caso abbiamo utilizzato un contatore e un  totalizzatore che a differenza del contatore ha la funzione di effettuare somme successive e l'espressione usata per aggiungere una somma al totalizzatore è:

SOMMA = SOMMA + NUM

 (dove SOMMA  è la variabile cui viene aggiunto ogni volta il valore della variabile  NUM)

Abbiamo usato l'istruzione inputbox() per l'INPUT  e le textbox per l'OUTPUT.

 

 

 

 

Lezione Visual basic:Programmazione a oggetti

La programmazione a oggetti (OOP: Object-Oriented Programming) usa come elemento base l'oggetto e il programma si sviluppa come interazione tra gli oggetti. I form, i controlli e i componenti dell'interfaccia sono esempi di oggetti.

In particolare un oggetto ha le sue proprietà (elementi che caratterizzano gli oggetti, utili per descrivere le sue caratteristiche e il suo stato), può attivare dei metodi (comportamenti e funzionalità che l'oggetto mette a disposizione) possiede degli eventi (avvenimenti che provocano l'esecuzione di una procedura descritta in codice del linguaggio).

Nel linguaggio vb.NET gli oggetti vengono creati a partire dalle classi (descrizione astratta degli oggetti attraverso la dichiarazione di proprietà, metodi e d eventi). Per utilizzare un oggetto occorre crearlo come esemplare della classe, cioè come istanza di una classe. Il procedimento che crea un oggetto è un metodo predefinito dalla classe chiamato costruttore.

Per esempio i controlli della Casella degli strumenti sono classi. Inserendo un controllo all'interno del form se ne crea un'istanza cioè un oggetto.

Si possono utilizzare quindi istanze di classi esistenti ma si possono creare anche delle classi personalizzate.

Anche il form è una classe: quando il programma viene eseguito si crea una istanza della classe del form che è la finestra che normalmente utilizziamo.

In generale non possiamo utilizzare una classe astratta ma una sua istanza cioè un oggetto che dobbiamo dichiarare.

Per utilizzare più form in un progetto dobbiamo creare le istanze di ogni form aggiunto con la seguente procedura:

dal menù Progetto clicchiamo su Aggiungi Windows Form e, dopo aver assegnato un nome (nome esterno), andiamo a salvare cliccando sul pulsante Aggiungi.

 

Per utilizzare il nuovo form lo dichiariamo con l'istruzione:

 

dim nomeinterno as New nomesterno

 

Infine per aprire un form utilizziamo il metodo Show() e per chiuderlo il metodo Hide() secondo la seguente sintassi:

 

nomeinterno.Show()                   (è l'istruzione da inserire per aprire il form)

 

Me.Hide()                                      (è l'istruzione da inserire all'interno del form da chiudere).

 

Quando in un progetto utilizziamo più form bisogna fare attenzione alla dichiarazione delle variabili.

Le variabili possono essere locali, se dichiarate all'interno di una routine (ad esempio in un pulsante), e sono visibili solo all'interno della routine stessa. Le variabili globali vengono dichiarate nell'area pubblica e sono visibili in tutte le routine del form.

Se però nel nostro progetto sono presenti più form alcune variabili devono essere visibili in tutti i fom e quindi possiamo dichiararle come variabili pubbliche in un modulo.

Per creare un modulo dal menù Progetto clicchiamo su Aggiungi modulo e inseriamo la dichiarazione pubblica delle variabili.

 

 

 

 

 

Lezione Visual basic: Controllo MenuStrip

Il controllo MenuStrip è un componente della Casella degli strumenti e possiede sue proprietà ed eventi. Quando viene inserito   nel  form, si  posiziona nella  parte  bassa, contemporaneamente in alto compare una barra con  la scritta  Digitare quì dove possiamo inserire i menù e sottomenù.

 

Lezione Visual basic: Array

L'array è una struttura di dati e quindi non contiene un solo dato ma più dati dello stesso tipo, questi vengono identificati attraverso un indice. Gli array a una dimensione sono detti anche vettori. In Visual basic un array viene definito nel seguente modo:

                                          dim nomeArray () as tipo

tra parentesi si può anche indicare la dimensione massima dell'indice.

La numerazione dell'indice dell'array parte da 0 e quindi se, come nell'esempio, l'indice massimo del vettore è 5, il vettore avrà 6 posizioni.

 

In questo esempio abbiamo un vettore con 6 elementi di tipo stringa e quindi li dichiariamo:

                                     dim V(5) as string

Se vogliamo riferirci ad una posizione specifica del vettore basta indicarla nell'indice, ad esempio per riferirci alla terzo nome possiamo scrivere V(2) che contiene il nome Gianni.

 

Esercitazione n.1: Creare un progetto in vb.NET che consenta di caricare in due  vettori paralleli i nomi e i numeri telefonici dei clienti di una ditta, di visualizzarli in una listbox e di effettuare la ricerca del numero di telefono di un cliente dato in input.

Nel form inseriamo due listbox (si può utilizzare anche una sola listbox ed effettuare il concatenamento del nome e del numero) e quattro pulsanti.

 

 

In visual basic effettuiamo la codifica per il caricamento del vettore, la visualizzazione nelle listbox e per la ricerca del numero telefonico.

 

 

Lo stesso esercizio lo sviluppiamo con l'uso di più form. Nella pagina iniziale inseriamo un menù per accedere alle varie funzioni:

 

 

Nel menù carica scriviamo il codice per caricare i vettori nome() e numero().

 

Aggiungiamo i form visualizza e cercare e li dichiariamo.

 

             

 

 

Per la dichiarazione delle variabili creiamo un modulo dove dichiarare le variabili pubbliche che utilizzeremo in più form.

 

A questo punto nella finestra Esplora soluzioni possiamo vedere tutti i componenti del nostro progetto.

 

Nel   menù   mnuVisualizza  inseriamo l'istruzione per aprire il form visualizza utilizzando il metodo Show(). Nel mnuCerca chiediamo in input il nome da cercare e mettiamo "n" nella variabile controllo (variabile che servirà durante la ricerca) prima di aprire  il form cercare con il metodo Show().

Nel menù mnuEsci inseriamo l'istruzione end per chiudere il programma.

 



Passiamo allo sviluppo del form visualizza. Inseriamo nell'evento Activated del form, che si verifica ogni volta che il form viene caricato, il codice per passare i dati alle  listbox.

Nel pulsante btnEsci chiudiamo il form con il metodo Hide().

 


 

Nel form cercare scriviamo il codice nell'evento Activated del form per leggere il vettore e visualizzare nelle textbox il nome ed il numero cercato o, eventualmente, comunicare che il nome non esiste utilizzando la variabile controllo.

Nel pulsante Esci, dopo aver pulito le caselle presenti nel form, lo chiudiamo con il metodo Hide().

 

Lezione Visual basic 19/02/2013: Procedure e funzioni

Quando si devono sviluppare problemi complessi conviene suddividere il problema in sottoproblemi più semplici secondo la metodologia di sviluppo top-down che si concretizza in visual basic organizzando il codice in procedure  (Sub) e funzioni  (Function).

La differenza tra le due è che le procedure eseguono operazioni di tipo generale (serie di istruzioni collegate ad un evento o richiamate nel codice principale), mentre le funzioni rappresentano un procedimento di calcolo o una elaborazione che deve restituire un valore come risultato al programma chiamante.

Regole di visibilità: stabiliscono in quali parti del progetto sono visibili gli identificatori (costanti, variabili, procedure).

Variabili locali:  dichiarate con Dim all'interno di una Sub sono disponibili solo per la procedura stessa e non in altre procedure.

Variabili globali: dichiarate nella zona Dichiarazioni della finestra del codice di un form (prima delle sub) sono visibili a tutte le sottoprocedura di quel form.

Spesso però si ha la necessità di utilizzare queste risorse in  tutte le procedure di un progetto (quindi anche in più form). In questo caso possiamo utilizzare del codice a livello di modulo.

Un Modulo è una procedura generale che non è memorizzata nel codice del form ma costituisce un file a sè stante con estensione .vb che si aggiunge come elemento del progetto e può essere richiamato da un punto qualsiasi del progetto stesso.

Per creare un modulo si clicca sul menù Progetto - Aggiungi modulo, si assegna un nome e viene così aperta la finestra di codice del modulo.

Se andiamo a scrivere variabili, funzioni e procedure nel modulo, queste potranno essere usate in tutto il progetto, anche in form diversi. La sintassi è:

Variabili:

Public nomevariabile as tipo

 

Procedure:

Sub nomesub

          .........

          .........

End sub

 

Funzioni:

Function nomefunction

          .........

          .........

End Function

Abbiamo dichiarato le variabili utilizzando la parola chiave Public e non Dim ( o Private che è equivalente) in questo modo, essendo pubbliche, sono visibili in tutto il progetto.

 

Esercitazione Visual basic 19/02/2013: Peso ideale

Nello studio di un dietologo, per ogni paziente viene calcolato il peso ideale.

Dati in input il nome, l'altezza e il sesso dei pazienti, calcolare il peso ideale secondo la formula di Lorentz:

maschi:    peso ideale = altezza - 100 -((altezza-150)/4)

femmine: peso ideale = altezza - 100 -((altezza-150)/2)

 

Inserire una Procedura per l'input ed una Funzione per il calcolo del peso ideale.

 

Le variabili da utilizzare sono:

INPUT: nome, altezza, sesso, n

OUTPUT: nome, PI(peso ideale)

LAVORO: cont

 

Per la soluzione abbiamo utilizzato una struttura iterativa posticipata per falso e, all'interno una struttura altenativa.

 

Vediamo ora lo stesso diagramma a blocchi con l'uso di una procedura e di una funzione:

 

                                     

Procedura INSERISCI

                                                               

                                                             

   Funzione CALCOLA

 

                                                                        

Per il visual basic dobbiamo stabilire quali sono le variabili locali  quelle globali e quelle a livello di modulo:

 

Variabili globali (da dichiarare con Public nel Modulo): nome altezza, sesso,n

Variabili locali (da dichiarare nel form): n, cont.

 

Progettiamo il form con un solo Pulsante che avvia l'elaborazione.

 

Dichiariamo le variabili locali in generale e nell'evento click del Pulsante Esegui inseriamo il codice del programma principale con le chiamate alla Procedura e alla Funzione.

 

 

Nel modulo, precedentemente creato, inseriamo la dichiarazione delle variabili globali (Public) e il codice della Procedura INSERISCI() e della Funzione CALCOLA().

Nella Funzione CALCOLA dichiariamo la variabile locale PI.

L'istruzione Return definisce il valore che deve restituire la funzione CALCOLA().

 

Visual basic: File sequenziali

 

Un archivio di dati è un insieme di informazioni organizzate come  ad esempio:

  • i clienti di un'azienda

  • l'elenco telefonico

  • il registro di classe.

Comunemente per indicare un archivio si usa il termine file ed indica tutto ciò che può essere registrato su una memoria di massa. Un file può essere considerato come un insieme di record legati tra loro da un nesso logico. I file vengono identificati attraverso un nome di file (di solito nomi significativi che ricordano il contenuto del file) come ad esempio il nome FORNITORI per il file che contiene i fornitori di un'azienda.

 

Le operazioni principali che si effettuano sui file sono:

  • apertura (Open): prima di essere utilizzato il file deve essere aperto in modo idoneo a seconda dell'operazione che dobbiamo eseguire;

  • lettura (Input): per leggere i dati registrati in un file si deve eseguire l'istruzione Open nel modo Input;

  • scrittura (Output); per scrivere i dati in un file vuoto si deve eseguire prima l'istruzione Open nel modo Output;

  • accodamento (Append): per scrivere i dati in un file in cui sono già presenti altri dati si deve eseguire prima l'istruzione Open nel modo Append per accodare i dati a quelli già presenti nel file;

  • chiusura (Close): alla fine di ogni operazione eseguita sui file si deve chiudere con l'strizione Close.

 

Un file è composto da una serie di byte registrati su disco (per questo, a differenza degli array i dati vengono registrati in modo permanente e vengono conservati anche allo spegnimento del computer).

Le modalità con le quali il programma utilizza i byte contenuti nei blocchi fisici del disco, rendendoli disponibili in memoria centrale per l'elaborazione, rappresentano il tipo di accesso al file.

 

  • sequenziale: in questo tipo di accesso i record vengono registrati uno di seguito all'altro e, in fase di lettura, possono  essere ritrovati  scorrendo tutti i record a partire dal primo fino all'ultimo nello stesso ordine in cui sono stati registrati.

  • diretto o random: in questi tipo di accesso è possibile determinare l'esatta posizione del record all'interno del file e leggerlo senza leggere tutti i record che lo precedono.

La sintassi per l'Apertura di un file prevede, dopo la funzione FileOpen,  l'indicazione di:

  • n. del file, poichè in uno stesso programma possono essere aperti ed utilizzati più archivi. Il numero deve essere compreso tra 1 e 511 inclusi ed identifica il file all'interno del programma;

  • Pathname che specifica il nome del file e la sua posizione all'interno del disco;

  • Modalità di accesso (input, output, append, random).

                      FileOpen(1, "c:\giacenze.dat", OpenMode.Output)

La scrittura dei dati in un file sequenziale viene eseguita con l'istruzione PrintLine indicando il numero del file sul quale andremo a scrivere e la variabile contenente il dato da registrare.

             PrintLine(1, txtNome.Text)

In fase di lettura i dati vengono letti con l'istruzione LineInput indicando il numero del file ed assegnando il contenuto ad una variabile.

             nome = LineInput(1)

Poichè i dati vengono letti uno di seguito all'altro nello stesso ordine in cui sono stati scritti, occorre inserire nel programma un controllo sul raggiungimento della fine del file. Questo controllo si fa utilizzando la funzione EOF (end of file) che assume il valore true quando raggiunge la fine del file. Quindi possiamo utilizzare un ciclo Do While con la funzione EOF:

                  Do While Not EOF(1)

                            nome = LineInput(1)

                            lstNomi.Items.Add(nome)

                   Loop

Ogni volta che si esegue un'operazione su un file si chiude con ll'istruzione FileClose indicando il numero del file da chiudere:

                   FileClose(1)

Esercitazione: File sequenziali

Crea un progetto per archiviare i dati dei dipendenti su un file sequenziale e visualizzare i dati in una listbox. Prevedi anche la possibilità di elaborare  gli stipendi netti di ogni dipendente e registrarli su un altro file sequenziale. Effettuare la ricerca dello stipendio lordo di un dipendente dato in input il suo cognome.

 Struttura record del file dipendent.dat

 Public Structure dip

        Public matricola As Integer

        Public nome As String

        Public cognome As String

        Public lordo As Double

        Public figli As Integer

End Structure

 

Struttura record del file stip.dat

 

Public Structure netti

        Public n As String

        Public c As String

        Public sn As Double

End Structure

Il progetto viene sviluppato creando un form iniziale con un menù che ci permette di accedere ad ogni funzione.

 

Prima di elaborare i sottomenù aggiungiamo due nuovi  tipi di form: Inserisci, per l’inserimento dei dati del dipendente da utilizzare sia per creare che per aggiungere dipendenti;  Visualizza per visualizzare i dati di tutti i diepndenti.

         

 Aggiungiamo anche un modulo per dichiarare la struttura del record del file dipendenti da utilizzare in form diversi.

 Module Module1

    Public Structure dip

        Public matricola As Integer

        Public nome As String

        Public cognome As String

        Public lordo As Double

        Public figli As Integer

    End Structure

    Public dipendente As dip

End Module

 Nel menù Dipendenti  abbiamo tre sottomenù:

1) Crea per creare il file la prima volta. Dichiariamo il form Inserisci del tipo Inserisci precedentemente creato e dopo aver aperto il file in Output lo richiamiamo con il metodo show().

   Private Sub CreaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As 

   System.EventArgs) Handles CreaToolStripMenuItem.Click

        Dim inserisci As New Inserisci

        FileOpen(1, "c:\users\amalia\desktop\2013\dipendent.dat",  OpenMode.Output)

        inserisci.Show()

    End Sub

2)     Aggiungi per aggiungere dipendenti al file già esistente. Dichiariamo il form Aggiungi  del tipo Inserisci e, dopo aver aperto il file in Append, richiamiamo il form con il metodo show().

    Private Sub AggiungiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As

    System.EventArgs) Handles AggiungiToolStripMenuItem.Click

        Dim Aggiungi As New Inserisci

        FileOpen(1, "c:\users\amalia\desktop\2013\dipendent.dat", OpenMode.Append)

        Aggiungi.Show()

    End Sub

 

3)     Visualizza inserisce tutti i dati dei dipendenti in una listbox. Dichiaro un form di tipo Visualizza, apro il file in Input per la lettura e richiamo il form Visualizza con il metodo show().

 Private Sub VisualizzaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e

     As System.EventArgs) Handles VisualizzaToolStripMenuItem.Click

        Dim visualizza As New Visualizza

        FileOpen(1, "c:\users\amalia\desktop\2013\dipendent.dat", OpenMode.Input)

        visualizza.Show()

    End Sub

FORM INSERISCI

Nel pulsante Registra del form Inserisci scrivo le istruzioni per passare i dati dalle caselle di testo alla struttura del record con l’istruzione With e scriverle nel file dipendenti con l’struzione Writeline().

Con il metodo .Clear() cancello i dati dalle textbox.

   Private Sub btnRegistra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

   Handles btnRegistra.Click

        With dipendente

            .matricola = txtMatricola.Text

            .nome = txtNome.Text

            .cognome = txtCognome.Text

            .lordo = txtStipendio.Text

            .figli = txtFigli.Text

        End With

        WriteLine(1, dipendente.matricola, dipendente.nome, dipendente.cognome,

        dipendente.lordo, dipendente.figli)

        txtMatricola.Clear()

        txtNome.Clear()

        txtCognome.Clear()

        txtStipendio.Clear()

        txtFigli.Clear()

        txtMatricola.Focus()

    End Sub

Nel pulsante Esci chiudo il file ed il form.

 Private Sub btnEsci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

 btnEsci.Click

        FileClose(1)

        Me.Hide()

 End Sub

FORM VISUALIZZA

Nel pulsante Visualizza inserisco un ciclo che legge il file dipendenti e scrine i dati i una listbox.

  Private Sub btnVisualizza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

  Handles btnVisualizza.Click

    Do While Not EOF(1)

            With dipendente

                Input(1, .matricola)

                Input(1, .nome)

                Input(1, .cognome)

                Input(1, .lordo)

                Input(1, .figli)

            End With

      lstDipendente.Items.Add(dipendente.matricola, dipendente.nome,        dipendente.cognome, dipendente.lordo, dipendente.figli)

    Loop

  End Sub

Nel pulsante Esci pulisco la listbox, chiudo il file e il form.

  Private Sub btnEsci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

  btnEsci.Click

        lstDipendente.ClearSelected()

        FileClose(1)

        Me.Hide()

  End Sub

FORM ELABORA

Per elaborare gli stipendi netti creo un nuovo tipo di form Elabora con una listbox per visualizzare i dati da registrare sul secondo file.

 

Nel menù Elabora del form1 apro il file dipendenti in Input per la lettura e apro il form Elabora.

 Private Sub ElaboraStipendiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As

 System.EventArgs) Handles ElaboraStipendiToolStripMenuItem.Click

        FileOpen(1, "c:\users\amalia\desktop\2013\dipendent.dat", OpenMode.Input)

        elabora.Show()

 End Sub

Nel form Elabora creo un nuovo tipo di struttura record per il file stip dove rigistrare gli stipendi netti e quindi dichiaro un record di quel tipo.

  Public Structure netti

        Public n As String

        Public c As String

        Public sn As Double

  End Structure

  Dim stipendiNetti As netti

Nel pulsante  Elabora del form Elabora dichiaro le variabili che mi servono per i calcoli e, dopo aver aperto il secondo file in Output,  inserisco un ciclo che per ogni stipendio lordo letto nel primo file effettua il calcolo dello stipendio netto, lo scrive nel file stip con nome e cognome e lo inserisce contemporaneamente in una listbox. Dopo il ciclo chiudo il secondo file.

  Private Sub btnElabora_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

  Handles btnElabora.Click

  Dim ritenute, detrazioni, netto As Double

  FileOpen(2, "c:\users\amalia\desktop\2013\stip.dat", OpenMode.Output)

        Do While Not EOF(1)

            With dipendente

                Input(1, .matricola)

                Input(1, .nome)

                Input(1, .cognome)

                Input(1, .lordo)

                Input(1, .figli)

            End With

            ritenute = dipendente.lordo * 9.49 / 100

            detrazioni = (dipendente.figli * 50)

            netto = (dipendente.lordo - ritenute) + detrazioni

            lstNetto.Items.Add(dipendente.nome & " " & dipendente.cognome & " " & netto)

            With stipendiNetti

                .n = dipendente.nome

                .c = dipendente.cognome

                .sn = netto

            End With

            WriteLine(2, stipendiNetti.n, stipendiNetti.c, stipendiNetti.sn)

        Loop

        FileClose(2)

  End Sub

 

 

Nel pulsante Esci chiudo il primo file e il form.

 

 

  Private Sub btnEsci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

  btnEsci.Click

        FileClose(1)

        Me.Hide()

  End Sub

 

 

Nel menù Cerca del form1 apro il file dipendenti in Input per la lettura e faccio un ciclo per una lettura sequenziale del file.

 

 

    Private Sub CeracaUnDipendenteToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e

    As System.EventArgs) Handles CeracaUnDipendenteToolStripMenuItem.Click

        Dim cerca As String

        Dim trovato As Integer

        FileOpen(1, "c:\users\amalia\desktop\2013\dipendent.dat", OpenMode.Input)

        cerca = InputBox("inserisci il nome del dipendente")

        trovato = 0

        Do While Not EOF(1)

            With dipendente

                Input(1, .matricola)

                Input(1, .nome)

                Input(1, .cognome)

                Input(1, .lordo)

                Input(1, .figli)

            End With

            If cerca = dipendente.cognome Then

                MsgBox(dipendente.lordo)

                trovato = 1

            End If

        Loop

        If trovato = 0 Then

            MsgBox("nome inesistente")

        End If

        FileClose(1)

    End Sub