lgoritmi e programmazione 1. Software e problemi PROBLEM / SNZ RUORE LGORMO RUVO UZONE ELBORORE / CLCOLORE ESECUORE PROB RS LG ELB ESEC S CLC Problema Situazione di difficoltà ben identificabile alla quale si desidera trovare una soluzione. (esempio: la determinazione del percorso più breve tra due località generiche). stanza di un problema E una situazione particolare di un problema (esempio: devo andare da Reggio Emilia a Baiso e mi interessa determinare il percorso più breve tra queste due specifiche località). Risolutore Colui che definisce il procedimento in grado di individuare una soluzione per un problema o per una classe di problemi aventi caratteristiche comuni. Ciò che ottiene è un algoritmo risolutivo. lgoritmo risolutivo Procedimento che consente di ottenere un risultato atteso eseguendo, in un determinato ordine, un insieme finito di passi semplici (azioni, o meglio istruzioni); in informatica si intende un metodo per la soluzione di un problema adatto a essere implementato sotto forma di programma. Soluzione E l oggetto che ricerchiamo quando vogliamo risolvere un istanza di un problema (esempio: il percorso + breve tra Reggio Emilia e Baiso) Esecutore Colui che esegue l algoritmo risolutivo per giungere alla soluzione dello specifico problema (istanza).
1 LVELLO Miopico: non mi preoccupo del futuro. CLC S ESEC RS 2 LVELLO Risolutore ed esecutore separati l risolutore si occupa del problema generale, mentre l esecutore si occupa dell istanza specifica PROB RS LG S S S ESEC
3 LVELLO lgoritmo implementato in modo automatico su un elaboratore PROB RS LG ELB S S S ESEC
2. dati dati sono caratterizzati da : dentificatore (nome) ipo o Numerici o Caratteri o lfanumerici o booleani classificazione in base all uso che se ne fa: o input o di lavoro o output variabili o costanti 3. Le istruzioni L istruzioni sono i passi elementari di un algoritmo e si suddividono in: istruzioni operative istruzioni di controllo struzioni operative: assegnazione input output struzioni controllo: F SWCH Cicli 4. Le espressioni Le espressioni si dividono in: matematiche o + o o * o / o resto relazionali o > o > o = o!= boolenae Ciascuna di queste operazioni bollane può essere studiata tramite una opportuna tabella di verità o ND o OR o NO o XOR
5. struzioni e diagrammi a blocchi Un diagramma a blocchi (detto anche diagramma di flusso o flow chart) è un linguaggio formale di tipo grafico per rappresentare algoritmi (in senso lato). Esso consente di descrivere le differenti operazioni sotto forma di uno schema in cui le diverse fasi del processo e le differenti condizioni che devono essere rispettate vengono rappresentati da simboli grafici detti blocchi elementari. blocchi sono collegati tra loro tramite frecce che indicano la cronologia. diagrammi trovano la loro applicazione in diversi ambiti: in campo industriale schematizzano i processi, in campo economico vengono usati a supporto delle presentazioni per aiutare i destinatari a visualizzare meglio i contenuti, ma storicamente sono sempre stati molto usati in nformatica dove, in tempi recenti, sono stati soppiantati dall'introduzione dello pseudocodice. blocco iniziale blocco finale blocco di lettura/scrittura blocco azione blocco di controllo Una combinazione di blocchi elementari descrive un algoritmo se: viene usato un numero finito di blocchi lo schema inizia con un blocco iniziale e termina con un blocco finale ogni blocco soddisfa delle condizioni di validità Condizioni di validità condizioni sui blocchi: o blocco azione e blocco lettura/scrittura: ogni blocco di questi due tipi ha una sola freccia entrante e una sola freccia uscente o blocco di controllo: ogni blocco di questo genere ha una sola freccia entrante e due frecce uscenti condizioni sulle frecce: o ogni freccia o entra in un blocco o confluisce in un'altra freccia condizioni sui percorsi: o dal blocco iniziale dev'essere possibile raggiungere ogni altro blocco o da ogni blocco dev'essere possibile raggiungere il blocco finale
Esempio Dato l'algoritmo per il calcolo del fattoriale in maniera ricorsiva un possibile diagramma di flusso per rappresentarlo:
6. Realizzazione del software Hardware Linguaggi Livello Natura Note taliano, nglese, Basic, C, Fortran, urbo Pascal C++, Java ssembly Macchina L O B S S O N U R L F O R M L N U V E F F C E N Portabile Non Portabile Codice Sorgente Codice Sorgente Codice Sorgente COMPLORE Files Oggetto Files Oggetto Files Oggetto LNKER.EXE Codice Sorgente Codice Sorgente Codice Sorgente NERPREE + Lento + Memoria RM occupata (perché occorre caricare tutto il programma interprete) - passaggi richiesti + portabile
7. mbiente di sviluppo mbiente di sviluppo nsieme di strumenti, spesso con una opportuna interfaccia grafica, che sono di aiuto al programmatore nella progettazione, realizzazione, compilazione, test e distribuzione del codice. Metodo di programmazione nalisi del problema nalisi dei dati abella delle variabili Variabile ipo Descrizione /O/L X nt Formulazione dell algoritmo Diagrammi a blocchi Pseudocodice mplementazione del codice NO est Fine est? mbiente di sviluppo: Viasul Basic Ms ccess, Pascal DevPascal C/C++ Visual Studio, Java JavaDevKit, Eclipse S Distribuzione