Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


programmazione terza superiore, Dispense di Informatica

programmazione terza superiore

Tipologia: Dispense

2020/2021

Caricato il 19/04/2021

marcovvfvevevverer
marcovvfvevevverer 🇮🇹

4.2

(11)

55 documenti

1 / 83

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
INTRODUZIONE ALLA PROGRAMMAZIONE AD EVENTI
Fine
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53

Anteprima parziale del testo

Scarica programmazione terza superiore e più Dispense in PDF di Informatica solo su Docsity!

INTRODUZIONE A

Fine

INTRODUZIONE La programmazione è quell’attività finalizzata alla risoluzione di problemi tramite un elaboratore. Per far ciò il programmatore(*) descrive ad un computer i compiti che deve eseguire per risolvere un determinato problema. I compiti sono descritti tramite un programma, che viene “trasmesso” alla macchina. Il problema principale è riuscire a rappresentare il problema mediante delle strutture dati, rappresentare analogamente la risoluzione del problema e poi trovare “quell’insieme di passi che trasformano i dati del problema nei dati della soluzione del problema”. Tutto il processo può essere schematizzato come segue:

(*) L’analisi del problema e la ricerca della soluzione viene realizzata dall’analista; il programmatore si occupa di tradurre la Fine

soluzione trovata in un linguaggio di programmazione. In molti casi le due figure coincidono. Proble ma Soluzio ne Processo risolutivo Strutture dati che rappresentano il problema Strutture dati che rappresentano la soluzione Algoritmo

E S E M P I O

OUTPUT Anche la soluzione di un problema viene schematizzata con delle strutture dati che, alla fine dell’elaborazione, cioè dopo che è stato eseguito l’algoritmo, contengono dei valori che, correttamente interpretati, rappresentano la soluzione del particolare problema (tra la classe dei problemi schematizzati dall’input) rappresentato dei dati di input. A questo punto dovrebbe essere chiara la differenza tra struttura dati e dato. La prima è un “contenitore”, cioè una variabile atta a contenere un particolare dato (istanza) tra tutti quelli che la struttura riesce a gestire; mentre il dato è il valore che in ogni istante è contenuto nella variabile. N.B. Nei programmi visuali è bene gestire l’output, cioè renderlo disponibile (visibile) solo quando la variabile contiene un dato “valido”. Tale concetto verrà ripreso nel secondo incontro completando il primo esempio di programma.

Fine

OUTPUT: Insieme di strutture dati che rappresentano la soluzione del problema. OUTPUT: Insieme di strutture dati che rappresentano la soluzione del problema.

ALGORITMO L’algoritmo può essere definito come “ l’insieme di passi mediante i quali si risolvono tutti i problemi di una classe ”. L’algoritmo deve essere generale (deve risolvere tutti i problemi della classe), finito (deve terminare in un tempo finito), non ambiguo (ogni passo deve avere una sola interpretazione) e realizzabile (deve esser traducibile in un linguaggio di programmazione). Se indichiamo “i problemi di una determinata classe” con INPUT e “le loro soluzioni” con OUTPUT, l’algoritmo può essere definito come una funzione dall’INPUT all’OUTPUT f(INPUT)  OUTPUT Un PROGRAMMA è l’insieme di operazioni di un linguaggio di programmazione che traducono l’algoritmo. La realizzabilità dell’algoritmo è necessaria per produrre un programma. Esistono diverse tecniche per rappresentare un algoritmo, tra cui FLOW-CHART e PSEUDOCODIFICA.

Fine

PSEUDOCODIFICA È un metodo descrittivo a punti basato sul linguaggio naturale.

  • (^) Start/Inizio/Nome programma o sottoprogramma;
  • (^) Operazione 1 (es. leggi “input”);
  • (^) Operazione 2 (es. calcola “output”);
  • (^) Operazione 3 (es. visualizza “output”);
  • (^) End/Fine. Questo metodo risulta molto comodo per la descrizione degli algoritmi, ad esempio, tramite word-processor. Può risultare facilmente ambiguo, se non sviluppato con attenzione. Visivamente è meno chiaro di un Flow-Chart; pertanto, nella rappresentazione degli algoritmi su carta, è preferibile l’uso dei diagrammi di flusso.

Fine

ESEMPIO SEQUENZA Lo sviluppo di un programma richiede tecniche di produzione del software che standardizzano le procedure e migliorano il prodotto finito per limitare i costi di manutenzione, che possono rappresentare anche il 50% del costo complessivo se il programma è mal organizzato e realizzato. In generale si possono individuare le seguenti fasi:  (^) Progettazione e codifica , cioè analisi della struttura dati, sviluppo dell’algoritmo e traduzione (codifica) nel linguaggio di programmazione scelto;  (^) Convalida (o testing) , cioè esecuzione del programma con dati opportuni per verificarne i risultati;  (^) Debugging , cioè localizzazione, correzione degli errori e nuovo test;  (^) Rilascio , cioè distribuzione dell’applicazione su uno o più computer;  (^) Mantenimento , cioè adeguamento del programma a nuove esigenze. Tutte le fasi sono ugualmente importanti (l’ultima è sicuramente quelle che richiede più tempo e risorse). Noi ci focalizzeremo sulle prime tre, analizzando in questa presentazione la prima, mentre le altre due saranno affrontate in fase di sviluppo.

Fine

PROGETTAZIONE TOP-DOWN Nel modello top-down è formulata una visione generale del sistema senza scendere nel dettaglio di alcuna delle sue parti. Ogni parte del sistema è successivamente rifinita (decomposta) aggiungendo maggiori dettagli della progettazione. Ogni nuova parte così ottenuta può quindi essere nuovamente rifinita, specificando ulteriori dettagli finché la specifica completa è sufficientemente dettagliata. Ad ogni passo vengono specificate le funzioni fondamentali che devono essere realizzate e le interazioni tra esse, in modo da applicare ricorsivamente la stessa tecnica a ciascuna di esse. In pratica si parte immaginando che esista una macchina avente tra le sue istruzioni di base quella che svolge l’intero programma. Nel passo successivo ci si focalizza sulle singole funzioni con la stessa tecnica finché tutte le istruzioni sono realmente traducibili nel linguaggio di programmazione scelto. La complessità della funzione da trattare dipende dal livello di astrazione. Le sue sottofunzioni si immaginano completamente sviluppate e si tiene conto solo delle interfacce. Le interfacce devono essere il più possibile indipendenti dalla struttura interna per garantire la massima flessibilità. Ogni funzioni deve avere dimensioni limitate (20-50 istruzioni), utilizzare solo variabili locali e gestire gli scambi con l’esterno attraverso i parametri, che permettono la generalizzazione del singolo modulo.

Fine

Risoluzione triangolo isoscele con tecnica top-Risoluzione triangolo isoscele con tecnica top-

ESEMPIO TOP-DOWN Sviluppiamo un progetto per la risoluzione (perimetro e area) di un triangolo isoscele.

Fine

RISOLUZIONE TRIANGOLO ISOSCELE^ RISOLUZIONE TRIANGOLO ISOSCELE INPUT^ INPUT^ ELABORAZIONEELABORAZIONE^ OUTPUTOUTPUT Leggi Base (b) Leggi Base (b) Leggi altezza (h) Leggi altezza (h) CALCOLA PERIMETRO CALCOLA PERIMETRO CALCOLA AREA CALCOLA AREA Visualizza perimetro (p) Visualizza perimetro (p) Visualizza area (a) Visualizza area (a) P = b + 2sqrt(h*^2 + b^2 **/

P = b + 2sqrt(h*^2 + b^2 **/

A = b * h / 2**^ A = b * h / 2 Questa tecnica produce programmi “rigidi”, che devono seguire la sequenza prefissata nel progetto. Ad esempio, in questo caso, il programma chiede nell’ordine la base e l’altezza, svolge i calcoli e visualizza i risultati. Non è possibile inserire gli input in ordine diverso o modificarli prima di avviare il calcolo o …

ESEMPIO BOTTOM-UP Dopo aver analizzato il problema e individuato la struttura dati adatta per rappresentarlo, si realizza l’interfaccia di input.

Fine

Si realizza quella di output, che permette di rappresentare i risultati. (Si sovrappone all’input) Perimetro = … Area = … h b h = b = Calcola perimetro e area Calcola perimetro e area Quindi si attivano gli eventi da gestire e si programmano i metodi collegati, come ad esempio il click sul bottone “Calcola perimetro e area” (in questo metodo viene inserito l’algoritmo) per avviare il calcolo e visualizzare i risultati o gli eventi di cambio degli input, i cui metodi rendono l’output non visibile per non creare situazioni di conflitto tra gli input e gli output. I Form^ I Form

VANTAGGI E SVANTAGGI DELLA PROGRAMMAZIONE MODULARE Un programma modulare:

  • (^) è più facile da correggere perché ciascun modulo può essere testato separatamente;
  • (^) può essere facilmente modificato, purché non venga modificata la struttura delle interfacce;
  • (^) la realizzazione può essere demandata a più persone;
  • (^) si può garantire un alto livello di riservatezza perché si può operare su un modulo senza conoscere le altre funzioni.

Fine

per contro:

  • (^) la programmazione modulare richiede un lavoro più meticoloso in fase di analisi con occupazione di personale qualificato;
  • (^) l’esecuzione dei programmi, visto che non ottimizza l’uso delle variabili e delle risorse, richiede più tempo di elaborazione e più memoria.

Il metodo SHOW (non modale) viene generalmente utilizzato per visualizzare un form di aiuto; in questo modo l’utente può interagire, contemporaneamente, col form chiamante e con quello chiamato. Il metodo SHOWDIALOG (modale) viene generalmente utilizzato per visualizzare un form in cui l’utente deve inserire dei valori o effettuare una scelta necessaria per proseguire nell’elaborazione. A volte può essere necessario aprire un secondo form nascondendo il form chiamante, ma senza chiuderlo, cioè senza usare l’evento CLOSE , per svariati motivi. In questo caso risulta utili il metodo HIDE , che nasconde il form fino alla nuova visualizzazione. Un esempio di codice potrebbe essere il seguente: Dim F2 as new Form … Me.Hide() ‘nasconde form corrente (Me in Visual Basic) F2.Showdialog() ‘visualizza il secondo form, dichiarato come F Me.Show() ‘quando l’utente chiude F2, ripristina il form chiamante … EVENTI FORM

Fine

In C# Form2 F2 = new Form2(); … this.Hide(); //this form corrente in C# F2.ShowDialog(); this.Show();

PRIMI OGGETTI IN UN FORM (1/3) Praticamente tutti i programmi necessitano di dati (rappresentazione del problema, input) sui quali operare per ottenere dei risultati (soluzione, output). Inoltre, per meglio coinvolgere l’utente e facilitarne l’utilizzo, sono necessarie informazioni aggiuntive (figure, descrizione del problema, …) ed entità per avviare le operazioni. Tutti questi elementi sono degli oggetti predefiniti in ogni ambiente grafico, che possono essere inseriti nel form durante la fase di progettazione. Per definire delle entità statiche (descrizione del problema o chiarimenti sull’input o l’output ) vengono utilizzati gli oggetti “ LABEL ”. (N.B. Tutte le proprietà delle Label possono essere modificate da programma, ma su di esse l’utente non può intervenire.) Tali oggetti sono utili anche per presentare gli output che hanno una struttura e una lunghezza predefinita. Gli oggetti TEXTBOX (caselle di testo dinamiche) permettono una interazione con l’utente e sono utilizzate per gli input alfanumerici e per gli output con lunghezza non definita (o comunque molto lunga). Se sono usate per visualizzare risultati impostare la proprietà “ READONLY ” su TRUE per evitare che l’utente possa modificare i valori. Se utilizzate per l’input, la proprietà TEXT deve essere impostata a stringa vuota, mentre per l’I/O col valore iniziale.

SegueSegue Fine

CONTROLLI (PRIMO APPROCCIO) Nella gestione dei controlli a posteriori si svolgono le operazioni senza verificare la validità del valore dei campi interessati e, nel caso in cui viene generato un errore, si procede con la sua gestione (comunicazione all’utente, …). Con questa tecnica le istruzioni che possono generare errori devono essere eseguite sotto il controllo dell’istruzione “ TRY…CATCH…WHEN…FINALLY…END TRY ”. La tecnica si presta bene per gestire errori generali (tipo Overflow), che dipendono dal sistema, ma è poco pratica per la gestione di errori logici e la risposta è lenta. Nei casi più semplici la clausola viene utilizzata senza le parole chiavi WHEN … FINALLY. Le istruzioni che possono generare errore devono essere inserite tra le parole chiavi TRY e CATCH; mentre l’errore, gestito tra le parole chiavi CATCH e END TRY, viene generalmente comunicato all’utente tramite la finestra di dialogo MessageBox. Con la strategia di controllo a priori si controllano i valori dei campi prima del loro utilizzo, eliminando a priori le cause d’errore. È una tecnica molto veloce e funzionale. Per la gestione viene utilizzata la selezione, a cui si rimanda.

Fine

In C# try { … } catch { … } finally

PRIMI OGGETTI IN UN FORM (3/3) Spesso è utile inserire nell’interfaccia grafica un disegno per meglio chiarire il problema. Per presentare un disegno si utilizza l’oggetto PICTUREBOX. Inserire il file col disegno o foto o gif animata nella proprietà Image e impostare la proprietà SizeMode a StretchImage per adattare l’immagine al controllo. Inoltre, in una applicazione ben realizzata, sono spesso presenti menù e toolbar. Menù, menù di scelta rapida, barre di stato (generalmente in basso) e barre degli strumenti (generalmente in alto sotto il menù principale) rappresentano le diverse modalità di esposizione delle funzionalità agli utenti o di notifica di informazioni all'interno dell'applicazione. Il menù rappresenta una scelta tra “n” opzioni presentate in modo lineare e raggruppate in ordine logico. In genere i menù principali contengono i comandi, raggruppati in base a un argomento comune. I menù di scelta rapida (Context menù) vengono visualizzati quando si fa clic con il pulsante destro del mouse e contengono i comandi più utilizzati per una particolare area dell’applicazione (in genere sono legati ad un oggetto). Le barre degli strumenti utilizzano i pulsanti con icone per esporre i comandi più comuni.

Fine

PrecedenPreceden