le basi della programmazione. la programmazione problemi algoritmi programma
TRANSCRIPT
Le basi della Le basi della programmazioneprogrammazione
La programmazioneLa programmazione
Problemi algoritmi programma
I problemiI problemi Il problema è un quesito che deve avere Il problema è un quesito che deve avere una una
rispostarisposta (prepara il caffè, scrivere un tema, (prepara il caffè, scrivere un tema, calcolare l’equazione, ec..)calcolare l’equazione, ec..)
È un insieme di passi da svolgere per giungere alla soluzione delproblema
Processo risolutivoProcesso risolutivo
Figure del processo Figure del processo risolutivorisolutivo
RisolutoreRisolutore : chi : chi definisce definisce
il il processo processo
risolutivorisolutivo
EsecutoreEsecutore : colui che : colui che esegue il esegue il
processo processo risolutivorisolutivo descritto dal descritto dal risolutorerisolutore
Il computer Il computer Esegue i passi definiti e Esegue i passi definiti e
studiati dall’uomostudiati dall’uomo
L’uomo rimane l’elemento Centrale di tutte le attività
L’uomo rimane l’elemento Centrale di tutte le attività
Formalizzazione del problemaFormalizzazione del problema
È un processo essenziale per raggiungere in ultimo stadio alla soluzione Del problema
È un processo essenziale per raggiungere in ultimo stadio alla soluzione Del problema
Fasi della formalizzazione del problema :
1. rigorosa lettura del testo e rielaborazione in caso di ambiguità
2. Analisi
3. Obiettivo da raggiungere o soluzione
4. Evidenziare dati :
1. espliciti informazioni da assumere per giungere alla soluzione
2. Impliciti dati disponibili all’inizio del procedimento
Fasi della formalizzazione del problema :
1. rigorosa lettura del testo e rielaborazione in caso di ambiguità
2. Analisi
3. Obiettivo da raggiungere o soluzione
4. Evidenziare dati :
1. espliciti informazioni da assumere per giungere alla soluzione
2. Impliciti dati disponibili all’inizio del procedimento
Per risolvere un problema Per risolvere un problema
Individuare le informazioni di partenzaIndividuare le informazioni di partenza Individuare l’obiettivo da raggiungereIndividuare l’obiettivo da raggiungere Individuare il processo risolutivo :Individuare il processo risolutivo :
Trasformare i dati a disposizione Trasformare i dati a disposizione Sottoporli a un processo di elaborazione Sottoporli a un processo di elaborazione
(logico matematico, ect.)(logico matematico, ect.) Ottenere i dati finaliOttenere i dati finali
Verificare la soluzione trovataVerificare la soluzione trovata
Ricerca della soluzioneRicerca della soluzione
Conoscere la realtà di interesse, la Conoscere la realtà di interesse, la realtà che il problema prende in realtà che il problema prende in esameesame
Utilizzare metodi risolutivi già Utilizzare metodi risolutivi già sperimentatisperimentati
Scomporre il problema in Scomporre il problema in sottoproblemi di complessità più sottoproblemi di complessità più limitatalimitata
Dal problema al programmaDal problema al programma Il computer diviene lo strumento per Il computer diviene lo strumento per
l’elaborazione dei datil’elaborazione dei dati Fasi di un processo :Fasi di un processo :
1. Immissione dati (input)2. Trattamento (elaborazione)3. Emissione (output)
La risoluzione del La risoluzione del problema :problema :
Si scompone in passi o azioniSi scompone in passi o azioni
L’azione per essere tale deve avere :L’azione per essere tale deve avere :
EsecutoreEsecutore Oggetti sui cui opera l’esecutoreOggetti sui cui opera l’esecutore La trasformazione sugli oggetti La trasformazione sugli oggetti
In un ben definito tempoIn un ben definito tempo
processoprocesso
Le azioni sono :Le azioni sono :
sequenzialisequenziali Elementari cioè non scomponibili Elementari cioè non scomponibili
L’insieme delle azioni elementari che si svolgono in modo
Sequenziale prende il nome di PROCESSO
L’insieme delle azioni elementari che si svolgono in modo
Sequenziale prende il nome di PROCESSO
Storia algoritmoStoria algoritmo
Proviene dalla matematicaProviene dalla matematica Indica regole o operazioni da Indica regole o operazioni da
compiere per fare calcoli o risolvere compiere per fare calcoli o risolvere problemiproblemi
Deriva dal nome di un algebrista Deriva dal nome di un algebrista arabo del IX secolo Al-khuwarizmi arabo del IX secolo Al-khuwarizmi
ALGORITMOALGORITMO
Si intende una sequenza finita e ordinata di azioni, univocamenteInterpretabili, ciascuna delle quali deve essere precisamente Definita.
L’ esecuzione fornisce dei risultati di classi di problemi per ogni Valore di dati forniti in ingresso
Si intende una sequenza finita e ordinata di azioni, univocamenteInterpretabili, ciascuna delle quali deve essere precisamente Definita.
L’ esecuzione fornisce dei risultati di classi di problemi per ogni Valore di dati forniti in ingresso
Per algoritmo si intende la descrizione di un insieme finito di istruzioni , che devono essere eseguite per portare a termine un dato compito e
per raggiungere un risultato definito in precedenza
Altra definizione
Caratteristiche fondamentali Caratteristiche fondamentali dell’algoritimodell’algoritimo
Preciso e non ambiguoPreciso e non ambiguo Finito Finito GeneraleGenerale Dettagliato (Dettagliato (ogni passo corrisponde azioni elementari)ogni passo corrisponde azioni elementari)
DeterministicoDeterministico Completo ed esaustivoCompleto ed esaustivo Osservabile nei risultatiOsservabile nei risultati
Un algoritmo scritto in linguaggio Comprensibile al computer
Prende il nome di programma sorgenteprogramma sorgente
L’attività di traduzione Dell’algoritmo prende il
nome di codicecodice
L’uomo per comunicare
usa il linguaggio naturale
Lavoro di programmazioneLavoro di programmazione
I programmi comprensibili alla I programmi comprensibili alla macchinamacchina Devono essere scritti in un Devono essere scritti in un linguaggio di
programmazione (pascal, vb, c++, java) la persona in grado di scrivere
programmi comprensibili per la macchina è il programmatoreprogrammatore
Linguaggio di Linguaggio di programmazioneprogrammazione
È quel linguaggio che viene usato per È quel linguaggio che viene usato per tradurre l’algoritmo in una forma tradurre l’algoritmo in una forma comprensibile all’elaboratorecomprensibile all’elaboratore
Il risultato di questa traduzione si Il risultato di questa traduzione si chiama programmachiama programma
inizio
Problemaanalisi
algoritmo
Traduzione linguaggio (Programma sorgente)
Correzione errori (debugging)Collaudo (testing)
fine
Fase iniziale di programmazioneFase iniziale di programmazione
Fase di analisi
Fase di progetto
Fase di verifica
Fase di realizzazione o implementazione
Il programmaIl programma Composto da istruzioni Composto da istruzioni e dati e dati
DATI PROGRAMMA ISTRUZIONI
Le istruzioni rappresentano le Le istruzioni rappresentano le azioni
da svolgere sui dati da svolgere sui dati
I linguaggi simboliciI linguaggi simbolicio di programmazioneo di programmazione
Nel linguaggio dovremo rispettare :Nel linguaggio dovremo rispettare :
Regole sintattiche = modalità per scrivere le frasi o Regole sintattiche = modalità per scrivere le frasi o istruzioni in modo corretto istruzioni in modo corretto
Il lessico = Il lessico = le parole riconosciute dal linguaggio le parole riconosciute dal linguaggio
Gli identificatori = Gli identificatori = il nome che il programmatore il nome che il programmatore assegna ai dati (variabili, assegna ai dati (variabili, costanti, numeriche costanti, numeriche
alfanumeriche e alfanumeriche e logiche) logiche)
Rappresentazione degli Rappresentazione degli algoritmi algoritmi
GraficiGrafici
informaliinformali
Metodi graficiMetodi grafici I passi dell’algoritmo sono I passi dell’algoritmo sono
rappresentati mediante simboli, rappresentati mediante simboli, associati a regole di interpretazione, associati a regole di interpretazione, rappresentano :rappresentano :
Le istruzioniLe istruzioni Il flusso dell’elaborazione seguito durante lo Il flusso dell’elaborazione seguito durante lo
svolgimentosvolgimento
Il metodo grafico più diffuso, è denominato diagramma a blocchi o di flusso dall’inglese FLOWCHART
Metodi informaliMetodi informali Consiste nel rappresentare i passi Consiste nel rappresentare i passi
risolutivi del processo di un problema risolutivi del processo di un problema per mezzo di un linguaggio per mezzo di un linguaggio informale, simile a quello naturale, informale, simile a quello naturale, detto pseudolinguaggio o linguaggio detto pseudolinguaggio o linguaggio per la progettazioneper la progettazione di programmi di programmi
Si dice psedocodice l’insieme di frasi scritte nel linguaggio di Progetto che rappresentano (codificano) le operazioni da compiere
Per la risoluzione del problema
Tipi di datiTipi di dati
Variabili e costantiVariabili e costanti
variabilivariabili Le variabili sono dei contenitori di dati, che Le variabili sono dei contenitori di dati, che
possono cambiare durante l’ esecuzione possono cambiare durante l’ esecuzione dell’algoritmodell’algoritmo
Il valore di una variabile deve :Il valore di una variabile deve : essere memorizzato in una cella (contenitore) di essere memorizzato in una cella (contenitore) di
memoriamemoria Individuarla attraverso un nome che la identifichiIndividuarla attraverso un nome che la identifichi Definire il suo tipo, ciò permette di stabilire Definire il suo tipo, ciò permette di stabilire
l’insieme di valori che può assumere e le l’insieme di valori che può assumere e le operazioni che possono essere effettuate.operazioni che possono essere effettuate.
Schema di variabile
8
Nome variabile
INDIRIZZO
Contenuto della variabile
Cella di memoria
Nome variabile
Contenuto della variabile Nome
variabile
Contenuto della variabile
INDIRIZZO
Nome variabile
Contenuto della variabile
8INDIRIZZO
Nome variabile
Contenuto della variabile
costantecostante Rappresenta un dato fisso che non Rappresenta un dato fisso che non
può cambiare durante lo sviluppo può cambiare durante lo sviluppo dell’algoritmo. Il valore è :dell’algoritmo. Il valore è : Memorizzato in una cella di memoriaMemorizzato in una cella di memoria Identificata da un nome simbolicoIdentificata da un nome simbolico
Cella di memoria
20INDIRIZZO
Nome costante Contenuto
della costante
Aliquota_iva 20
Nome variabile
Contenuto variabile
Cella di memoria
datidati
Possono essere di tipo diverso :Possono essere di tipo diverso : NumericiNumerici Alfanumerici Alfanumerici LogiciLogici
Per lavorare correttamente è Per lavorare correttamente è necessario dichiarare il loronecessario dichiarare il lorotipotipo
Tipi di dati in Visual basicTipi di dati in Visual basicTipo datoTipo dato DimeDime
nsionnsionee
DescrizionDescrizionee
Intervallo Intervallo valorivalori
Operazioni Operazioni ammesseammesse
BooleanBoolean 2 byte2 byte True /falseTrue /false 0 / 1 0 / 1 Not/ or /and/xorNot/ or /and/xor
ByteByte 1 byte1 byte Numeri Numeri positivi da 0 positivi da 0 a 255a 255
0 – 2550 – 255 + - * / MOD+ - * / MOD
CurrencyCurrency 88 Intero con 4 Intero con 4 cifre decimali cifre decimali utile nei utile nei calcoli calcoli finanziarifinanziari
--922337203685477,580922337203685477,58088
++922337203685477,5922337203685477,5807807
+ - * / MOD ^+ - * / MOD ^
DateDate 8 byte8 byte Data Data espressa con espressa con 8 caratteri e 8 caratteri e valori oravalori ora
1 gen 100 al 1 gen 100 al
31 dic 999931 dic 9999
DoubleDouble 8 byte8 byte Numeri in Numeri in virgola virgola mobile mobile
+ - * / MOD+ - * / MOD
integerinteger 2 byte2 byte Numeri interi Numeri interi - 32.768 + - 32.768 + 3276732767
+ - * / MOD+ - * / MOD
longlong 4 byte4 byte Numeri interi Numeri interi -2.147.483.648-2.147.483.648
+2.147.483.647+2.147.483.647
+ - * / MOD+ - * / MOD
singlesingle 4 byte4 byte Numeri in Numeri in virgola virgola mobile mobile
- + 3,402823E38- + 3,402823E38 + - * / MOD+ - * / MOD
stringstring 10+2 10+2 byte byte
Valori Valori alfanumericialfanumerici
-2.147.483.648-2.147.483.648
+2.147.483.647+2.147.483.647
& & concatenamentoconcatenamento
variantvariant 16 16 bytebyte
Converte un tipo Converte un tipo in un altro in in un altro in base alle base alle necessitànecessità
tuttetutte
objectobject 4 byte4 byte oggettooggetto Riferimento ad Riferimento ad un oggettoun oggetto
variabilivariabili
Ciclo di vita e visibilitàCiclo di vita e visibilità
Ciclo di vita delle variabili o Ciclo di vita delle variabili o lifetimelifetime
Ciclo di vita delle variabili è il periodo Ciclo di vita delle variabili è il periodo per il quale tale variabile resta attiva per il quale tale variabile resta attiva e utilizza memoria centralee utilizza memoria centrale Alcune hanno una durata pari all’intera Alcune hanno una durata pari all’intera
applicazioneapplicazione Altre vengono create e distrutte diverse Altre vengono create e distrutte diverse
volte nel ciclo dell’applicazionevolte nel ciclo dell’applicazione
Visibilità delle variabiliVisibilità delle variabili
L’area di visibilità o scope rules è:L’area di visibilità o scope rules è: È la porzione di codice da cui si può È la porzione di codice da cui si può
accedere a tale variabileaccedere a tale variabile Alcune sono Alcune sono private e di solo a una porzione di e di solo a una porzione di
codice in cui sono state dichiaratecodice in cui sono state dichiarate Altre sono Altre sono public ossia visibili a tutto il codice ossia visibili a tutto il codice
Programmazione Programmazione strutturatastrutturata
Strutture di controlloStrutture di controllo
algoritmoalgoritmo La stesura dell’algoritmo risolutivo di un La stesura dell’algoritmo risolutivo di un
problema è una fase molto delicata della problema è una fase molto delicata della programmazioneprogrammazione
Pertanto :Pertanto : È necessario stabilire un’insieme di regole necessarie È necessario stabilire un’insieme di regole necessarie
alla corretta organizzazione del lavoroalla corretta organizzazione del lavoro Le regole trasformano la programmazione da attività Le regole trasformano la programmazione da attività
disordinata e laboriosa in attività sistematica e orientata disordinata e laboriosa in attività sistematica e orientata al raggiungimento di un buon livello di qualitàal raggiungimento di un buon livello di qualità
Costituisce il metodo di lavoro che va sotto il nomeCostituisce il metodo di lavoro che va sotto il nome : :
Programmazione strutturataProgrammazione strutturata
Programmazione strutturaProgrammazione struttura
Metodo di strutturazione degli Metodo di strutturazione degli algoritmi, conforme ad un insieme di algoritmi, conforme ad un insieme di regole, che rendono più facile :regole, che rendono più facile : la costruzionela costruzione la letturala lettura La manutenzioneLa manutenzione
Strutture di controlloStrutture di controllo
SonoSono
SequenzialeSequenziale Condizionale o di selezioneCondizionale o di selezione Iterativa o ciclicaIterativa o ciclica
La teoria della programmazione La teoria della programmazione strutturata enuncia il seguente strutturata enuncia il seguente dettato :dettato :
Qualsiasi algoritmo può essere scritto utilizzando Qualsiasi algoritmo può essere scritto utilizzando Soltanto le tre Strutture di base o fondamentali :Soltanto le tre Strutture di base o fondamentali :
1.1. SequenzialeSequenziale2.2. CondizionaleCondizionale
3.3. iterativaiterativa
Teorema di Bohm-Jacopini (1966)
Questi 3 modelli organizzativi Questi 3 modelli organizzativi sono detti : strutture di sono detti : strutture di
controllo controllo
Questi 3 modelli organizzativi Questi 3 modelli organizzativi sono detti : strutture di sono detti : strutture di
controllo controllo
SequenzaSequenza
Istruzione 1Istruzione 1Istruzione 2Istruzione 2Istruzione 3Istruzione 3……....……....Istruzione NIstruzione N
Condizionale o Condizionale o alternativaalternativa
Se condizione Se condizione AlloraAllora
Istruzione 1Istruzione 1
AltrimentiAltrimentiIstruzione 2Istruzione 2
Fine seFine se
Ciclica o Ciclica o ripetizioneripetizione
Ripeti Ripeti
istruzione / iistruzione / i
Finchè Finchè condizionecondizione
Rappresentazione graficaRappresentazione grafica
Strutture di controlloStrutture di controllo
Istruzione 1
Istruzione N
Istruzione 3
Istruzione 2
Struttura sequenzialeStruttura sequenzialeStruttura sequenzialeStruttura sequenziale
Le istruzioni vengono eseguite Una di seguito all’altra,
Secondo l’ordine del flow chart
Le istruzioni vengono eseguite Una di seguito all’altra,
Secondo l’ordine del flow chart
Istruzione 1Istruzione 2
Struttura condizionale/Struttura condizionale/alternativaalternativa
Struttura condizionale/Struttura condizionale/alternativaalternativa
Se la condizione è vera vieneEseguita istruzione 1
Se la condizione è falsa Viene eseguita istruzione 2
Se la condizione è vera vieneEseguita istruzione 1
Se la condizione è falsa Viene eseguita istruzione 2
condizione
Istruzione/i
Struttura ciclica / iterativaStruttura ciclica / iterativaStruttura ciclica / iterativaStruttura ciclica / iterativa
Esegue istruzione/i finchè la Condizione rimane falsa, per Condizione vera esce dal ciclo
Esegue istruzione/i finchè la Condizione rimane falsa, per Condizione vera esce dal ciclo
condizioneF V
I linguaggi di I linguaggi di programmazioneprogrammazione
È il linguaggio che viene utilizzato È il linguaggio che viene utilizzato per tradurre l’algoritmo in una forma per tradurre l’algoritmo in una forma comprensibile all’elaboratorecomprensibile all’elaboratore
Il risultato della traduzione è detta Il risultato della traduzione è detta programmaprogramma
I moderni linguaggi di I moderni linguaggi di programmazione sono :programmazione sono : Tipo evoluto o ad alto livelloTipo evoluto o ad alto livello
• Utilizzano termini del linguaggio naturale• Sono più vicini al problema
• Facilitano il lavoro del programmatore
Traduzione dei programmiTraduzione dei programmi
Il testo di un programma scritto Il testo di un programma scritto usando il linguaggio di usando il linguaggio di programmazione e dettoprogrammazione e detto
Sorgente (deve essere tradotto nel Sorgente (deve essere tradotto nel linguaggio macchina)linguaggio macchina)
La fase di traduzione viene fatta dal La fase di traduzione viene fatta dal programma traduttoreprogramma traduttore che genera una che genera una sequenza di istruzioni eseguibilisequenza di istruzioni eseguibili
Tipi di traduzioneTipi di traduzione
InterpretazioneInterpretazione
compilazionecompilazione
intepreteinteprete Si dice che un programma sorgente Si dice che un programma sorgente
viene interpretato, quando :viene interpretato, quando :
Il programma che prende il nome di Il programma che prende il nome di INTERPRETE considera il testo sorgente INTERPRETE considera il testo sorgente istruzione per istruzione, le traduce istruzione per istruzione, le traduce mentre le eseguementre le esegue
È consigliato usarlo solo in fase di È consigliato usarlo solo in fase di progettazioneprogettazione
compilazionecompilazione Il programma traduttore è detto Il programma traduttore è detto
compilatore e trasforma l’intero compilatore e trasforma l’intero programma programma sorgentesorgente in linguaggio macchina, in linguaggio macchina, memorizzando in un file i risultati.memorizzando in un file i risultati.
un programma compilato una sola volta un programma compilato una sola volta può essere eseguito, senza bisogno di altri può essere eseguito, senza bisogno di altri interventiinterventi
Il risultato della compilazione si chiama Il risultato della compilazione si chiama programma oggettoprogramma oggetto
Fase di linkFase di link
Alla compilazione deve far seguito la Alla compilazione deve far seguito la fase di link = collegamentofase di link = collegamento
Viene svolta da un programma Viene svolta da un programma apposito detto LINKERapposito detto LINKER
Aggiunge al programma compilato i Aggiunge al programma compilato i moduli del compilatore, che moduli del compilatore, che realizzano la le funzioni richieste dai realizzano la le funzioni richieste dai vari comandi, e collega i dati presenti vari comandi, e collega i dati presenti in M.C.in M.C.
Testo del programma
Analisi lessicale
Analisi sintattica
Programma Tradotto inLinguaggio
MachinaProgramma
oggetto
Programma sorgente
Controllo della correttezza Dei
termini
Controllo della corretta Dei
costrutti dei termini
Programma oggetto
LINKINGcollegatore
ProgrammaEseguibile
Linking
Programma eseguibile