Please enable JavaScript.
Coggle requires JavaScript to display documents.
ALGORITMO, PROBLEMA, ANALISI, PROGRAMMAZIONE, Programma, SOLUZIONE,…
ALGORITMO
PROPRIETÀ
finitezza
l’algoritmo deve essere svolto in un certo numero di passi finito e, allo stesso tempo, deve richiedere in ingresso soltanto una determinata quantità di dati
-
non ambiguità
i passi dell’algoritmo non possono essere interpretati in altri modi, quindi comprensibile e realizzabile
-
atomicità
i passi dell’algoritmo devono essere elementari, cioè non possono essere ulteriormente divisibili
riproducibilità
ogni volta che viene eseguito l'algoritmo con gli stessi dati di partenza devono condurre agli stessi risultati
-
origine del termine
deriva dalla deformazione del nome del matematico arabo Abu Jafar Muhammad ibn Musa al-Khw ārizm ī (Baghdad 780-850 d. C.). Al- Khw ārizm ī si è latinizzato in algorismus.
PROBLEMA
CATEGORIE
ricerca
Le possibili soluzioni devono soddisfare delle condizioni poste dal problema, che viene detta soluzione ammissibile
ottimizzazione
Alle soluzioni ammissibili è associata una misura e si deve determinare la soluzione ammissibile la cui misura è massima o minima, cioè quella che soddisfa meglio una determinata proprietà
decisione
L'output è fornito dal valore VERO o FALSO a seconda che l'input soddisfi o meno una determinata proprietà; la soluzione di questi problemi è una risposta SI o NO.
origine del termine
Il termine PROBLEMA deriva dal greco πρόβλημα (próblēma) = sporgenza, promontorio, impedimento, ostacolo dal verbo προβάλλω (probállō) = mettere davanti.
-
ANALISI
classificazione
MODELLI
prescrittivi
impongono un particolare comportamento in previsione dell'obiettivo da raggiungere (ricette mediche)
-
-
-
descrittivi
riproducono in modo semplice la realtà eliminando gli elementi superflui (modelli grafici - tabellari - simbolici)
astrazione
sui dati
ha il compito di semplificare le strutture definendo nuovi dati astratti, che pur mantenendo il contenuto informativo dei dati di partenza, sono organizzati mediante strutturazioni proprie a partire dalle tipologie di dati semplici (primitivi) messi a disposizione dai diversi linguaggi di programmazione
funzionale
ha lo scopo di separare la struttura interna (com'è fatto) da come appare all'esterno (che cosa fa) in modo da nascondere l'aspetto fisico in un contenitore e considerare solamente come questa interagisce con il "resto del mondo".
Si effettua un processo di astrazione delle sole funzionalità del sistema ma non si opera sulla modellazione dei dati di ingresso/uscita.
definizione
processo che permette di tenere nascosti alcuni particolari evidenziando solo 8i dati ritenuti essenziali al fine del problema
PROGRAMMAZIONE
CATALOGAZIONE
esecuzione
compilati: sono i linguaggi il cui codice, per essere eseguito viene tradotto nel linguaggio macchina specifico del calcolatore su cui verrà eseguito. Tale operazione è detta di compilazione ed è effettuata da un compilatore (es: gcc e g++). Alcuni esempi di linguaggi compilati sono il C ed il C++;
interpretati: il codice non viene compilato ma viene interpretato a runtime in congiunzione ai dati di contesto. Tra essi si annoverano i linguaggi di Scripting come: PERL, PHP, ecc…;
compilazione intermedia: in tal caso si ha una situazione ibrida tra le due precedenti. Il codice viene prima compilato in un linguaggio intermedio e, successivamente, interpretato da un apposito engine che prende il nome di Virtual Machine o Runtime. Gli esempi più rilevanti sono .Net (.Net Runtime) e Java (Java Virtual Machine, JVM).
paradigma
orientata agli oggetti (OOP - Object Oriented Programming): in questo caso il fulcro dell’intero programma è la classe (e la relativa interfaccia) composta da attributi e metodi funzionali. L’istanza di una classe è definita oggetto, ovvero una entità con uno specifico stato. Tra i linguaggi più celebri troviamo: C++, Java, C#, ecc…;
procedurale: il codice è suddiviso in subroutine (funzioni e/o procedure) che eseguono specifici compiti, per ridurre la complessità del programma nel suo complesso, adottato la strategia del divide-et-impera ed abbracciando un’astrazione di tipo funzionale in cui è sufficiente conoscere solo l’interfaccia della procedura tralasciandone i dettagli implementativi. La definizione “procedurale” deriva dal linguaggio COBOL, che è stato il primo ad utilizzare questo concetto;
strutturata: realizza tutto quello che è possibile con i linguaggi procedurali senza l’uso dei salti condizionali, questo è dimostrato nel teorema dei due matematici italiani Böhm-Jacopini: qualsiasi algoritmo può essere trasformato in un algoritmo equivalente composto soltanto di combinazioni di sequenze, selezioni e iterazioni. Rientrano in questa categoria alcuni dei più celebri linguaggi di programmazione: da Pascal ad ADA al C;
dichiarativa: in questo paradigma la programmazione si sviluppa utilizzando elementi caratteristici della sfera matematica:
programmazione funzionale, si basa sull’utilizzo di funzioni matematiche. Il linguaggio più noto è il LISP, utilizzato fortemente nell’ambito dell’intelligenza artificiale;
programmazione logica, si basa sulla logica del primo ordine sia per rappresentare sia per elaborare l’informazione, e si scompone in Programmazione logica induttiva e Programmazione logica abduttiva. Il linguaggio più affermato in tale ambito è il Prolog.
generazionale
Terza Generazione (3GL): linguaggi che spostano il focus verso il linguaggio naturale (più intuitivi dell’assembly e del linguaggio macchina). Questi linguaggi sono definiti come linguaggi di alto livello e tra essi abbiamo C, C++, Basic, Java, C#, ecc…
Seconda Generazione (2GL): costituiscono una prima astrazione del linguaggio macchina (assembly), permettendo comunque di migliorare l’attività di sviluppo grazie all’utilizzo di un numero minore di istruzioni. Con essi nascono gli assembler, ovvero programmi in grado di tradurre il linguaggio assembly in linguaggio macchina;
Prima Generazione (1GL): vari linguaggi macchina proprietari, decisamente complessi e fortemente legati all’architettura hardware specifica;
Quarta Generazione (4GL): linguaggi dichiarativi, il cui rappresentate più illustre è SQL, utilizzato principalmente nei database relazionali.
Quinta Generazione (5GL): linguaggi basati sulla soluzione dei problemi con vincoli indicati nel programma, invece che sull’esecuzione di uno specifico predefinito. Il loro scopo è quello di evolversi ed attarsi alle situazioni contestuali, cosa che li rende la scelta naturale per la ricerca Robotica, Intelligenza Artificiale e Patterns Neurali.
definizione
L'insieme di quelle attività che, a partire da un problema, conducono alla stesura di un PROGRAMMA la cui esecuzione da parte di un calcolatore ha come risultato la soluzione del problema.
Programma
definizione
Un PROGRAMMA per calcolatore è l'implementazione di un algoritmo in un linguaggio adatto a essere "compreso" ed eseguito da un computer, generalmente viene indicato con il termine SOFTWARE.
SOLUZIONE
consiste nella definizione della procedura ovvero le operazioni che devono essere eseguite per raggiungere lo scopo desiderato.
-