Cosa è l Informatica? Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Scienza della rappresentazione, memorizzazione, elaborazione e trasmissione dell informazione
Elaboratore elettronico (o computer o calcolatore ) E uno strumento per la rappresentazione, la memorizzazione e l elaborazione delle informazioni. E programmabile: può essere predisposto per eseguire un particolare insieme di azioni, allo scopo di risolvere un problema.
Utilizzo di un elaboratore Come utente: Uso software applicativo esistente per creare documenti e interfacce grafiche, effettuare calcoli, navigare in rete Come sviluppatore: Creo nuovi programmi sullo strato del software esistente Nuovi programmi applicativi Nuovi programmi di sistema (cioè che fanno funzionare il calcolatore)
Come ragiona il computer Problemi e algoritmi
Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Problema Strategia Obiettivo
I problemi tipici dell informatica
Ricerca di informazione Trovare il numero di telefono di una persona Individuare il numero più piccolo di una sequenza Stabilire se una parola precede alfabeticamente un altra
Problemi di elaborazione di informazioni Calcolare il costo totale di un certo numero di prodotti Trovare perimetro e area di una figura geometria
Problemi di ottimizzazione Trovare tra tutte le soluzioni possibili del problema quella che rende minimo un certo fattore, per esempio scegliere il mezzo di trasporto più economico per andare a Parigi oppure quello con il quale si impiega meno tempo
Risolvere un problema Come si costruisce la soluzione a un problema? Qual è il giusto punto di partenza per pensare la soluzione a un problema? Quali metodologie e tecniche usare?
Risolvere un problema Interpretare l enunciato Individuare i dati noti e quelli da trovare Costruire un modello Descrivere il procedimento risolutivo Eseguire le operazioni stabilite nel processo risolutivo Verificare se i risultati ottenuti corrispondono alla soluzione del problema reale Problema Verifica dei risultati Interpretazione Esecuzione Modello Procedimento risolutivo
Descrizione procedimento risolutivo Individuazione di una sequenza di passi che, partendo dai dati noti, arrivi a dare la soluzione. Definizione Algoritmo
Algoritmo Un algoritmo è una sequenza finita di operazioni elementari che porta alla risoluzione in un tempo finito una classe di problemi. In generale un algoritmo può essere visto come una funzione da un dominio d ingresso ad uno d uscita Dati(INPUT) X Algoritmo Risultati(OUTPUT) f(x)
Algoritmi: proprietà fondamentali Eseguibilità: ogni azione deve essere eseguibile da parte dell esecutore dell algoritmo in un tempo finito Non-ambiguità: ogni azione deve essere univocamente interpretabile dall'esecutore Finitezza: il numero totale di azioni da eseguire, per ogni insieme di dati di ingresso, deve essere finito.
Algoritmi equivalenti Due algoritmi si dicono equivalenti quando: hanno lo stesso dominio di ingresso; hanno lo stesso dominio di uscita; in corrispondenza degli stessi valori nel dominio di ingresso producono gli stessi valori nel dominio di uscita.
Algoritmi equivalenti Due algoritmi equivalenti: forniscono lo stesso risultato ma possono avere diversa efficienza e possono essere profondamente diversi! Esempio: moltiplicare tra loro due numeri Algoritmo 1 Algoritmo 2 Somme successive: somma e shift : 12x12 = 12+12+ +12=144 12x 12= 24 12= 144
Esecuzione
Algoritmi e programmi Algoritmo Sequenza finita di passi che risolve in tempo finito un problema. Codifica Fase di scrittura di un algoritmo attraverso un insieme ordinato di frasi ( istruzioni ), scritte in un qualche linguaggio di programmazione, che specificano le azioni da compiere. Programma Testo scritto in accordo con la sintassi e la semantica di un linguaggio di programmazione. PROBLEMA ALGORITMO PROGRAMMA
Linguaggi di Programmazione Linguaggi per esprimere in maniera rigorosa un algoritmo Linguaggio macchina (seq. Istruzioni) Linguaggi ad alto livello (vicini al ling. naturale) Esempi: Pascal C e C++ Java Basic
Riassumendo Ogni elaboratore è una macchina in grado di eseguire azioni elementari su dati L'esecuzione delle azioni elementari è richiesta all'elaboratore tramite comandi chiamati istruzioni Le istruzioni sono espresse attraverso frasi di un opportuno linguaggio di programmazione Un programma è la formulazione testuale di un algoritmo in un linguaggio di programmazione Un algoritmo è il processo risolutivo di un problema
Esistono problemi che un elaboratore non può risolvere? Sì. Ci sono problemi non calcolabili da nessun modello di calcolo reale o astratto Esempio: data una funzione f : N N, stabilire se f(x) è costante per ogni valore di x
Esistono problemi che un elaboratore non può risolvere? Esempio. Dato un insieme di immagini di paesaggi, determinare quello più rilassante. Più in generale, quando il problema presenta infinite soluzioni, o non è stato trovato per esso un metodo risolutivo o è dimostrato che non esiste un metodo risolutivo