Le basi della programmazione
Problemi algoritmi programma La programmazione Problemi algoritmi programma
È un insieme di passi da svolgere per giungere alla soluzione del I problemi Il problema è un quesito che deve avere una risposta (prepara il caffè, scrivere un tema, calcolare l’equazione, ec..) Processo risolutivo È un insieme di passi da svolgere per giungere alla soluzione del problema
Figure del processo risolutivo Risolutore : chi definisce il processo risolutivo Esecutore : colui che esegue il processo risolutivo descritto dal risolutore
Il computer Esegue i passi definiti e studiati dall’uomo L’uomo rimane l’elemento Centrale di tutte le attività
Formalizzazione del problema È un processo essenziale per raggiungere in ultimo stadio alla soluzione Del problema Fasi della formalizzazione del problema : rigorosa lettura del testo e rielaborazione in caso di ambiguità Analisi Obiettivo da raggiungere o soluzione Evidenziare dati : espliciti informazioni da assumere per giungere alla soluzione Impliciti dati disponibili all’inizio del procedimento
Per risolvere un problema Individuare le informazioni di partenza Individuare l’obiettivo da raggiungere Individuare il processo risolutivo : Trasformare i dati a disposizione Sottoporli a un processo di elaborazione (logico matematico, ect.) Ottenere i dati finali Verificare la soluzione trovata
Ricerca della soluzione Conoscere la realtà di interesse, la realtà che il problema prende in esame Utilizzare metodi risolutivi già sperimentati Scomporre il problema in sottoproblemi di complessità più limitata
Dal problema al programma Il computer diviene lo strumento per l’elaborazione dei dati Fasi di un processo : Immissione dati (input) Trattamento (elaborazione) Emissione (output)
La risoluzione del problema : Si scompone in passi o azioni L’azione per essere tale deve avere : Esecutore Oggetti sui cui opera l’esecutore La trasformazione sugli oggetti In un ben definito tempo
processo Le azioni sono : sequenziali Elementari cioè non scomponibili L’insieme delle azioni elementari che si svolgono in modo Sequenziale prende il nome di PROCESSO
Storia algoritmo Proviene dalla matematica Indica regole o operazioni da compiere per fare calcoli o risolvere problemi Deriva dal nome di un algebrista arabo del IX secolo Al-khuwarizmi
ALGORITMO Si intende una sequenza finita e ordinata di azioni, univocamente Interpretabili, ciascuna delle quali deve essere precisamente Definita. L’ esecuzione fornisce dei risultati di classi di problemi per ogni Valore di dati forniti in ingresso Altra definizione 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
Caratteristiche fondamentali dell’algoritimo Preciso e non ambiguo Finito Generale Dettagliato (ogni passo corrisponde azioni elementari) Deterministico Completo ed esaustivo Osservabile nei risultati
Un algoritmo scritto in linguaggio Comprensibile al computer L’uomo per comunicare usa il linguaggio naturale Un algoritmo scritto in linguaggio Comprensibile al computer Prende il nome di programma sorgente L’attività di traduzione Dell’algoritmo prende il nome di codice
Lavoro di programmazione I programmi comprensibili alla macchina Devono essere scritti in un linguaggio di programmazione (pascal, vb, c++, java) la persona in grado di scrivere programmi comprensibili per la macchina è il programmatore
Linguaggio di programmazione È quel linguaggio che viene usato per tradurre l’algoritmo in una forma comprensibile all’elaboratore Il risultato di questa traduzione si chiama programma
Fase iniziale di programmazione inizio Fase di analisi Problema analisi Fase di progetto algoritmo Fase di realizzazione o implementazione Traduzione linguaggio (Programma sorgente) Fase di verifica Correzione errori (debugging) Collaudo (testing) fine
Le istruzioni rappresentano le azioni Il programma Composto da istruzioni e dati Le istruzioni rappresentano le azioni da svolgere sui dati DATI ISTRUZIONI PROGRAMMA
I linguaggi simbolici o di programmazione Nel linguaggio dovremo rispettare : Regole sintattiche = modalità per scrivere le frasi o istruzioni in modo corretto Il lessico = le parole riconosciute dal linguaggio Gli identificatori = il nome che il programmatore assegna ai dati (variabili, costanti, numeriche alfanumeriche e logiche)
Rappresentazione degli algoritmi Grafici informali
Metodi grafici I passi dell’algoritmo sono rappresentati mediante simboli, associati a regole di interpretazione, rappresentano : Le istruzioni Il flusso dell’elaborazione seguito durante lo svolgimento Il metodo grafico più diffuso, è denominato diagramma a blocchi o di flusso dall’inglese FLOWCHART
Metodi informali Consiste nel rappresentare i passi risolutivi del processo di un problema per mezzo di un linguaggio informale, simile a quello naturale, detto pseudolinguaggio o linguaggio per la progettazione 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 dati Variabili e costanti
variabili Le variabili sono dei contenitori di dati, che possono cambiare durante l’ esecuzione dell’algoritmo Il valore di una variabile deve : essere memorizzato in una cella (contenitore) di memoria Individuarla attraverso un nome che la identifichi Definire il suo tipo, ciò permette di stabilire l’insieme di valori che può assumere e le operazioni che possono essere effettuate.
Schema di variabile Contenuto della variabile Nome variabile Nome variabile Nome variabile Nome variabile Nome variabile 8 8 INDIRIZZO INDIRIZZO INDIRIZZO Cella di memoria
Contenuto della costante Rappresenta un dato fisso che non può cambiare durante lo sviluppo dell’algoritmo. Il valore è : Memorizzato in una cella di memoria Identificata da un nome simbolico Nome costante Contenuto della costante 20 INDIRIZZO Cella di memoria
Nome variabile Contenuto variabile Aliquota_iva 20 Cella di memoria
dati Possono essere di tipo diverso : Numerici Alfanumerici Logici Per lavorare correttamente è necessario dichiarare il loro tipo
Tipi di dati in Visual basic Tipo dato Dimensione Descrizione Intervallo valori Operazioni ammesse Boolean 2 byte True /false 0 / 1 Not/ or /and/xor Byte 1 byte Numeri positivi da 0 a 255 0 – 255 + - * / MOD Currency 8 Intero con 4 cifre decimali utile nei calcoli finanziari -922337203685477,5808 +922337203685477,5807 + - * / MOD ^ Date 8 byte Data espressa con 8 caratteri e valori ora 1 gen 100 al 31 dic 9999
Numeri in virgola mobile + - * / MOD integer 2 byte Numeri interi Double 8 byte Numeri in virgola mobile + - * / MOD integer 2 byte Numeri interi - 32.768 + 32767 + - * / MOD long 4 byte Numeri interi -2.147.483.648 +2.147.483.647 + - * / MOD single 4 byte Numeri in virgola mobile - + 3,402823E38 + - * / MOD string 10+2 byte Valori alfanumerici -2.147.483.648 +2.147.483.647 & concatenamento variant 16 byte Converte un tipo in un altro in base alle necessità tutte object 4 byte oggetto Riferimento ad un oggetto
Ciclo di vita e visibilità variabili Ciclo di vita e visibilità
Ciclo di vita delle variabili o lifetime Ciclo di vita delle variabili è il periodo per il quale tale variabile resta attiva e utilizza memoria centrale Alcune hanno una durata pari all’intera applicazione Altre vengono create e distrutte diverse volte nel ciclo dell’applicazione
Visibilità delle variabili L’area di visibilità o scope rules è: È la porzione di codice da cui si può accedere a tale variabile Alcune sono private e di solo a una porzione di codice in cui sono state dichiarate Altre sono public ossia visibili a tutto il codice
Programmazione strutturata Strutture di controllo
Programmazione strutturata algoritmo La stesura dell’algoritmo risolutivo di un problema è una fase molto delicata della programmazione Pertanto : È necessario stabilire un’insieme di regole necessarie alla corretta organizzazione del lavoro Le regole trasformano la programmazione da attività disordinata e laboriosa in attività sistematica e orientata al raggiungimento di un buon livello di qualità Costituisce il metodo di lavoro che va sotto il nome : Programmazione strutturata
Programmazione struttura Metodo di strutturazione degli algoritmi, conforme ad un insieme di regole, che rendono più facile : la costruzione la lettura La manutenzione
Strutture di controllo Sono Sequenziale Condizionale o di selezione Iterativa o ciclica
La teoria della programmazione strutturata enuncia il seguente dettato : Qualsiasi algoritmo può essere scritto utilizzando Soltanto le tre Strutture di base o fondamentali : Sequenziale Condizionale iterativa Teorema di Bohm-Jacopini (1966)
Questi 3 modelli organizzativi sono detti : strutture di controllo Sequenza Istruzione 1 Istruzione 2 Istruzione 3 ….. Istruzione N Condizionale o alternativa Se condizione Allora Istruzione 1 Altrimenti Istruzione 2 Fine se Ciclica o ripetizione Ripeti istruzione / i Finchè condizione
Rappresentazione grafica Strutture di controllo
Struttura sequenziale Istruzione 1 Istruzione 2 Le istruzioni vengono eseguite Una di seguito all’altra, Secondo l’ordine del flow chart Istruzione 3 Istruzione N
Struttura condizionale/ alternativa condizione Istruzione 1 Istruzione 2 Se la condizione è vera viene Eseguita istruzione 1 Se la condizione è falsa Viene eseguita istruzione 2
Struttura ciclica / iterativa Esegue istruzione/i finchè la Condizione rimane falsa, per Condizione vera esce dal ciclo Istruzione/i F condizione V
I linguaggi di programmazione È il linguaggio che viene utilizzato per tradurre l’algoritmo in una forma comprensibile all’elaboratore Il risultato della traduzione è detta programma
I moderni linguaggi di programmazione sono : Tipo evoluto o ad alto livello Utilizzano termini del linguaggio naturale Sono più vicini al problema Facilitano il lavoro del programmatore
Traduzione dei programmi Il testo di un programma scritto usando il linguaggio di programmazione e detto Sorgente (deve essere tradotto nel linguaggio macchina) La fase di traduzione viene fatta dal programma traduttore che genera una sequenza di istruzioni eseguibili
Tipi di traduzione Interpretazione compilazione
inteprete Si dice che un programma sorgente viene interpretato, quando : Il programma che prende il nome di INTERPRETE considera il testo sorgente istruzione per istruzione, le traduce mentre le esegue È consigliato usarlo solo in fase di progettazione
compilazione Il programma traduttore è detto compilatore e trasforma l’intero programma sorgente in linguaggio macchina, memorizzando in un file i risultati. un programma compilato una sola volta può essere eseguito, senza bisogno di altri interventi Il risultato della compilazione si chiama programma oggetto
Fase di link Alla compilazione deve far seguito la fase di link = collegamento Viene svolta da un programma apposito detto LINKER Aggiunge al programma compilato i moduli del compilatore, che realizzano la le funzioni richieste dai vari comandi, e collega i dati presenti in M.C.
Controllo della correttezza Dei termini Programma sorgente Testo del programma Controllo della correttezza Dei termini Analisi lessicale Controllo della corretta Dei costrutti dei termini Analisi sintattica Programma oggetto Programma Tradotto in Linguaggio Machina oggetto Linking LINKING collegatore Programma Eseguibile Programma eseguibile