490 likes | 695 Views
Minicorso tematico: “Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare”. Dott. Francesco Ricca Dipartimento Di Matematica Università della Calabria ricca@mat.unical.it. Presentiamoci. Mi chiamo Francesco Ricca Ricercatore presso il Dip. Di Matematica Mi occupo di:
E N D
Minicorso tematico: “Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare” Dott. Francesco Ricca Dipartimento Di Matematica Università della Calabria ricca@mat.unical.it
Presentiamoci • Mi chiamo Francesco Ricca • Ricercatore presso il Dip. Di Matematica • Mi occupo di: • Intelligenza Artificiale • Programmazione Logica • Insegno: • Introduzione all’Informatica • Ingegneria del Software • Programmazione ad Oggetti
Programma del Corso • Introduzione all’Informatica • Problemi, Algoritmi e Programmi • Fondamenti di Programmazione • … con il linguaggio Java • Siti dinamici con Java • J2ME: Java per i cellulari
Materiale Didattico • Lucidi delle Lezioni • Guide rapide • http://www.html.it • http://java.sun.com • Libri • L. Nigro, “Introduzione alla programmazione orientata agli oggetti in Java”, Edizioni Luim • L.Cabibbo, “Fondamenti di Informatica: Oggetti e Java”, McGraw-Hill • C.S. Horstmann – G. Cornell, “Core Java 2”, Prentice Hall
Orario ed Esame • Esame Finale giorno 9 Maggio: • Facoltativo • Chi lo supera consegue un attestato per riscattare 1CFU • L’attestato di frequenza valido per l’esame di stato non è connesso all’esame
Introduzione All’Informatica Nozioni di base
Cosa è l’Informatica? • Scienza degli elaboratori elettronici • Computer Science • Scienza dell’informazione • rappresentazione • memorizzazione • elaborazione e trasmissione dell’informazione • Parente stretta della Matematica • 2 anime: teorica, tecnico-pratica
Il Computer • Elaboratore elettronico (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)
Cosa possiamo fare con un calcolatore? • Word Processing. Memorizzare, elaborare testi. • Basi di Dati. Memorizzare grossi archivi di dati, recupero veloce, produrre informazioni globali. • Accesso Remoto. Trasmissione e recupero di informazioni. • Calcolo. Risolvere problemi matematici. • Simulazioni. Rappresentare e elaborare informazioni che simulano l’ambiente reale.
Parole chiave: • Hardware • Software
Hardware • Contenitore con • CPU, RAM • Memoria Centrale • Fisso • Unità per Dischi - CD/DVD • Monitor • Tastiera • Ecc.
Hardware • Unità di Elaborazione (Processore o CPU): • Svolge le elaborazioni • Coordina il trasferimento dei dati • Cioè ‘esegue’ i programmi • Memoria Centrale • Memorizza dati e programmi per l’elaborazione • Volatile • Accesso rapido • Capacità limitata
Hardware • Memoria Secondaria (es. Harddisk,floppy) • Grande capacità • Persistente • Accesso piu lento della RAM • Unità Periferiche • Interfaccia verso l’esterno • Terminali (tastiera, video) • Stampanti
Software • Software di base: • Dedicato alla gestione dell’elaboratore • Esempio: Sistema Operativo (Windows, Linux, etc) • Software applicativo: • Dedicato alla realizzazione di specifiche applicative • Esempio: programmi per scrittura, gestione aziendale, navigazione su internet, ecc
Problemi, Algoritmi e Programmi I concetti fondamentali dell’Informatica
Il problema • Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Strategia Problema Obiettivo
Esempi di problemi • Trovare il numero di telefono di una persona • Individuare il numero più piccolo di una sequenza • Stabilire se una parola precede alfabeticamente un’altra • Calcolare il costo totale di un certo numero di prodotti • Trovare perimetro e area di una figura geometria • …
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?
Verifica dei risultati Problema Interpretazione Esecuzione Procedimento risolutivo Modello Risolvere un problema
Algoritmo • Un algoritmo è una sequenza finita di operazioni elementari che porta alla risoluzionein un tempo finitouna classe di problemi. • In generale un algoritmo può essere visto come una funzione da un dominio d’ingresso ad uno d’uscita Algoritmo Dati(INPUT) X 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 • forniscono lo stesso risultato • ma possono avere diversa efficienza • e possono essere profondamente diversi ! • Esempio: moltiplicare tra loro due numeri • Algoritmo 1: Somme successive: • 12x12 = 12+12+…+12=144 Algoritmo 2 12x 12= 24 12= 144
PROBLEMA ALGORITMO PROGRAMMA Algoritmi e programmi • Algoritmo • Sequenza finita di passi che risolve in tempo finito un problema. • Codifica • Fase di scrittura di un algoritmo 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.
Linguaggi di Programmazione • Linguaggi per esprimere in maniera rigorosa un algoritmo • Linguaggio macchina (seq. Istruzioni) • Linguaggi ad alto livello (vicini al ling. naturale) • Pascal, C e C++, Basic, Cobol • Java
Esempio: potenza • Problema: Calcolare an • Algoritmo: Fino a che N>0 Calcola Ris*a e memorizzalo in Ris Decrementa N • Nota che: • Al termine Ris=an
Esempio …in Java int potenza(int a, int n) { int ris = 1; while ( n > 0 ) { ris = ris * a; n = n-1; } return ris; }
Riassumendo… • Un algoritmo è il processo risolutivo di un problema • Ogni elaboratore è una macchina in grado di eseguire azioni elementari su dati dette 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
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
Fondamenti di Programmazione …con Java
Linguaggi di Programmazione • Linguaggi per esprimere in maniera rigorosa un algoritmo • La “lingua del Computer” • Diversi tipi di linguaggi: • Imperativi • Dichiarativi • Ad Oggetti
Linguaggi Imperativi • “Comandano” il computer indicando le azioni da compiere • Si specificano le azioni da fare per ottenere il risultato • Algoritmo = “insieme di operazioni da compiere sui dati” Algoritmo = DATI + Controllo
Linguaggi Dichiarativi • “Chiedono” al computer di trovare una soluzione • Si specifica quello che si vuole e non come deve essere calcolato • Linguaggi Funzionali: Lisp • Linguaggi Logici: Prolog • Questo è stato espresso da Robert Kowalski con la formula: Algoritmo = Logica + Controllo
Linguaggi ad Oggetti • Sono basati sul concetto di oggetto software • Un oggetto software rappresenta un oggetto del mondo reale • un numero, un archivio, un testo, una matrice, una persona... • I dati sono rappresentati come oggetti • Le azioni da compiere come operazioni da effettuare sugli oggetti. • Di solito sono realizzati come estensione dei linguaggi imperativi. • Un programma modella un problema reale come una collezione di oggetti software che interagiscono.
Ma è davvero questa la lingua del computer? • Questi sono linguaggi ad alto livello • Più simili al nostro modo di esprimerci • Il computer “conosce” solo i bit e le operazioni elementari su questi (linguaggio a basso livello) • C’è bisogno di un traduttore!!! • Il Compilatore traduce un programma scritto in un linguaggio di programmazione ad alto livello in bit e operazioni elementari • Si trovano negli ambienti di sviluppo: e.s. JDK e/o Eclipse
Dal programma all’esecuzione… Il compilatore lo traduce Scrivo il programma In JAVA Il Computer lo ESEGUE Se è scritto male, saranno segnalati gli errori (attenti, è molto pignolo!)
Concetti di base della POO POO = Programmazione Orientata agli Oggetti
Il concetto di Classe • Una classe è un insieme di oggetti che hanno le stesse caratteristiche e lo stesso comportamento • Definire una classe = • Elencarne le caratteristiche (~ definire i dati) • Specificarne il comportamento (~ definire le operazioni) • Una classe definisce il “progetto” di un oggetto software • Quando un oggetto software appartiene ad una classe ha tutte le caratteristiche ed il comportamento specificate per questa.
Esempio: la classe dei libri • Ogni libro ha: • un titolo • un numero di pagine • un elenco numerato di pagine • … • Su ogni libro possiamo operare • Leggiamo il titolo • Vediamo quante pagine ha • Cerchiamo una pagina • Stampiamo una pagina o tutto il libro • … Caratteristiche: Dati Un’altra classe!!! Comportamento: Operazioni o Metodi
La visibilità • Un po di “privacy” • Non tutti possono vedere tutte le caratteristiche di un oggetto: Information Hiding • Il mago Silvan non rivela a tutti il trucco con cui ha fatto comparire un coniglio o sparire l’assistente • Mostrereste dove si trova la cassaforte a casa vostra? • Dareste a tutti il PIN del vostro cellulare? • Tre parole chiave per proteggere o meno le caratteristiche e i metodi di una classe: • public, private, protected
La classe libro in Java Diamo il nome Indichiamo la classe ed il nome della proprietà class Libro{ // Caratteristiche private Titolo nomeLibro; private Numero numeroDiPagine; private Lista<Pagine> pagine; // Metodi public Titolo dammiTitolo(); public Numero dammiNumeroDiPagine(); … } class Libro { // Caratteristiche private Titolo nomeLibro; private Numero numeroDiPagine; private Lista<Pagine> pagine; // Metodi public Titolo dammiTitolo(); public Numero dammiNumeroDiPagine(); … } Indichiamo il nome del metodo e il tipo di oggetti che calcola
Il concetto di variabile • Come manipoliamo un oggetto software? • Gli oggetti software “vivono” nella memoria del computer • Abbiamo bisogno di nomi che riferiscono direttamente gli oggetti per “manipolarli” • Es. somma 3 al numero X • X = X + 3 • X è una variabile, che consente di manipolare un certo tipo di oggetti (in questo caso dei numeri) • Le variabili associano nome e tipo ad un oggetto nella memoria
Manipolazione di oggetti • Se vogliamo ottenere il titolo di un libro dobbiamo chiamare il metodo dammiTitolo() Supponiamo che la variabile lriferisca un libro Titolo t = l.dammiLibro(); • Si usa la notazione col punto (dot notation) VARIABILE . PROPRIETÀ VARIABILE . METODO( PARAMETRI ) Pagina p = l.dammiPagina( 33 );
Il mio primo programma Il sistema si aspetta un metodo così fatto: Main = Principale • Stampiamo “ciao” sullo schermo. class StampaCiao { public static void main(String args []) { System.out.println(“Ciao”); } } Oggetto sistema Ha la proprietà out che è lo schermo Chiamiamo il metodo Println = stampa linea
Scriviamo davvero i Programmi L’ambiente di sviluppo Eclipse Tanti, tanti esempi