Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare



Documenti analoghi
Come ragiona il computer. Problemi e algoritmi

INFORMATICA. Corso di Laurea in Scienze dell'educazione

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE ALL INFORMATICA

INTRODUZIONE ALL INFORMATICA

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Corso di Informatica

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

L informatica INTRODUZIONE. L informatica. Tassonomia: criteri. È la disciplina scientifica che studia

Corso di Informatica

Dispense del corso di Introduzione all Informatica della Facoltà Di Scienze Matematiche, Fisiche e Naturali dell Università della Calabria

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

23/02/2014. Dalla scorsa lezione. La Macchina di Von Neumann. Uomo come esecutore di algoritmi

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Linguaggi e Paradigmi di Programmazione

Fondamenti di Informatica. Allievi Automatici A.A Nozioni di Base

Fasi di creazione di un programma

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Introduzione alla programmazione in C

Linguaggi di programmazione

Linguaggi di programmazione

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

INFORMATICA GENERALE. Prof Alberto Postiglione Dipartim. Scienze della Comunicazione Univ. Salerno. Università degli Studi di Salerno

Dispensa di Informatica I.1

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Sistema operativo: Gestione della memoria

Architetture Applicative

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Approccio stratificato

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

NOZIONI ELEMENTARI DI HARDWARE E SOFTWARE

Problemi, Algoritmi e Programmi

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI

Scuola Secondaria di Primo Grado Anna Frank Nome Cognome classe anno sc. 2008/09 INFORMATICA

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

Object Oriented Programming

Architettura di un calcolatore

Concetto di Funzione e Procedura METODI in Java

Origini e caratteristiche dei calcolatori elettronici

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Gestione della memoria centrale

Elementi di Informatica e Programmazione

Nozione di algoritmo. Gabriella Trucco

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Programmi e Oggetti Software

Informazione analogica e digitale

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Alfabetizzazione Informatica. Prof. Giuseppe Patti

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI!

Software di base. Corso di Fondamenti di Informatica

Laboratorio di Informatica

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Il Sistema Operativo (1)

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Architettura hardware

ALGEBRA DELLE PROPOSIZIONI

Introduzione. Informatica B. Daniele Loiacono

Corso di Informatica

Programmare in Java. Olga Scotti

LINGUAGGI DI PROGRAMMAZIONE

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

PROGRAMMAZIONE DISCIPLINARE INDIVIDUALE

Esame di INFORMATICA

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni

Informatica pratica. File e cartelle

Corso di Informatica

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

TECNOLOGIE INFORMATICHE DELLA COMUNICAZIONE ORE SETTIMANALI 2 TIPO DI PROVA PER GIUDIZIO SOSPESO PROVA DI LABORATORIO

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Object Oriented Software Design

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Programmazione. Programmare ad oggetti. Programmi e calcolatori. Focalizzazione del corso. Alcuni linguaggi famosi. Programmi e linguaggi

Dispense di Informatica per l ITG Valadier

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Programmi. Algoritmi scritti in un linguaggio di programmazione

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

Cosa è un foglio elettronico

Il Software. Il software del PC. Il BIOS

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

ISTITUTO ISTRUZIONE SUPERIORE "L. EINAUDI" - ALBA (CN) ANNO SCOLASTICO 2014/2015

PROGETTO EM.MA PRESIDIO

Cos è un Calcolatore?

Transcript:

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.

Cosa possiamo fare con un calcolatore?

Cosa possiamo fare con un calcolatore?

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 Problema Strategia 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?

Risolvere un problema Verifica dei risultati Problema Interpretazione Esecuzione Modello Procedimento risolutivo

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 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

Esecuzione

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. 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) Pascal, C e C++, Basic, Cobol Java

Esempio: potenza Problema: Calcolare a n Algoritmo: Fino a che N>0 Calcola Ris*a e memorizzalo in Ris Decrementa N Nota che: Al termine Ris=a n

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 Scrivo il programma In JAVA Il compilatore lo traduce 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 Diamo libro il nome in Java class Libro { } // Caratteristiche private Titolo nomelibro; private Numero numerodipagine; private Lista<Pagine> pagine; // Metodi public Titolo dammititolo(); public Numero damminumerodipagine(); Indichiamo la classe ed il nome della proprietà 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 l riferisca 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 Stampiamo ciao sullo schermo. Il sistema si aspetta un metodo così fatto: Main = Principale 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