Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il...

12
1 Introduzione Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino [email protected] http://www.di.unito.it/~baldoni/didattica 2 Chi sono? Come contattarmi? Matteo Baldoni Dipartimento di Informatica Università degli Studi di Torino Corso Svizzera, 185 I-10149 Torino (ITALY) e-mail: baldoni @di.unito. it URL: http://www.di.unito.it/~baldoni Tel.: +39 011 670 67 56 Fax.: +39 011 75 16 03 Pagina del corso: http://www.di.unito.it/~baldoni/didattica/ Sono nato a Torino nel 1968, nel febbraio 1993 mi sono laureato con lode in Scienze dell’Informazione e nel febbraio 1998 sono diventato Dottore in Ricerca in Informatica. Dal luglio 1999 sono ricercatore in Informatica presso il Dipartimento di Informatica dell’Università degli Studi di Torino.3 Contenuti del corso Paradigmi di programmazione: il ruolo dell’astrazione Java: dove e come Python: dove e come Ogni oggetto ha un’interfaccia Ogni oggetto ha un tipo Riuso del software: composizione Riuso del software: ereditarieta` Polimorfismo e binding dinamico Gli oggetti prima di tutto: GUI, Event-driven programming e l’architettura Model-View-Controller Package, Eccezioni, Thread, I/O Static typing vs Dinamic typing: Java vs Python Classi e oggetti in Python 4 Bibliografia Horstmann C. S. - Cornell G. Java 2 I fondamenti - seconda edizione, Mc Graw Hill, ISBN 88-386-4181-1, Giugno 2001, pp. 826 con CD-ROM (Euro 54,00) Java 2 tecniche avanzate, Mc Graw Hill, ISBN 88-386-4071-8, Aprile 2000 , pp. 842 con CD- ROM (Euro 55,50) 5 Bibliografia Eckel, B.Thinking in Java. Second Edition. Prentice-Hall Computer Books, 2000. ISBN: 0130273635 (anche on- line: http://www.bruceeckel.co m) Schimdt, D. Programming Principles in Java: Architectures and Interfaces. (On-line: http://www.cis.ksu.edu/~s chmidt/CIS200/) 6 Bibliografia Cay S. Horstman. Concetti di Informatica e fondamenti di Java 2. Apogeo, 2001. ISBN: 88-7303-668-6 Si veda anche: http://www.apogeonline.com/libri /00668/scheda

Transcript of Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il...

Page 1: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

1

IntroduzioneLinguaggi di Programmazione:Paradigmi di Programmazione(Sperimentazioni)

Matteo BaldoniDipartimento di InformaticaUniversita` degli Studi di TorinoC.so Svizzera, 185 I-10149 Torino

[email protected]://www.di.unito.it/~baldoni/didattica

2

Chi sono? Come contattarmi?Matteo Baldoni

Dipartimento di InformaticaUniversità degli Studi di TorinoCorso Svizzera, 185I-10149 Torino (ITALY)

e-mail: [email protected]: http://www.di.unito.it/~baldoniTel.: +39 011 670 67 56Fax.: +39 011 75 16 03

Pagina del corso:http://www.di.unito.it/~baldoni/didattica/

“Sono nato a Torino nel 1968, nel febbraio1993 mi sono laureato con lode in Scienzedell’Informazione e nel febbraio 1998 sonodiventato Dottore in Ricerca in Informatica.Dal luglio 1999 sono ricercatore inInformatica presso il Dipartimento diInformatica dell’Università degli Studi diTorino.”

3

Contenuti del corso� Paradigmi di programmazione: il ruolo dell’astrazione� Java: dove e come� Python: dove e come� Ogni oggetto ha un’interfaccia� Ogni oggetto ha un tipo� Riuso del software: composizione� Riuso del software: ereditarieta`� Polimorfismo e binding dinamico� Gli oggetti prima di tutto: GUI, Event-driven programming e l’architettura

Model-View-Controller� Package, Eccezioni, Thread, I/O� Static typing vs Dinamic typing: Java vs Python� Classi e oggetti in Python

4

Bibliografia

� Horstmann C. S. - Cornell G.

� Java 2 I fondamenti - secondaedizione, Mc Graw Hill, ISBN88-386-4181-1, Giugno 2001,pp. 826 con CD-ROM (Euro54,00)

� Java 2 tecniche avanzate, McGraw Hill, ISBN 88-386-4071-8,Aprile 2000 , pp. 842 con CD-ROM (Euro 55,50)

5

Bibliografia� Eckel, B.Thinking in

Java. Second Edition.Prentice-Hall ComputerBooks, 2000. ISBN:0130273635 (anche on-line:http://www.bruceeckel.com)

� Schimdt, D.Programming Principlesin Java: Architecturesand Interfaces. (On-line:http://www.cis.ksu.edu/~schmidt/CIS200/)

6

Bibliografia� Cay S. Horstman.

Concetti di Informatica efondamenti di Java 2.Apogeo, 2001.ISBN: 88-7303-668-6Si veda anche:http://www.apogeonline.com/libri/00668/scheda

Page 2: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

2

7

Bibliografia� Fowler M.

� UML Distilled prima edizioneitaliana, Guida rapida allostandard Object ModelingLanguage, Addison Wesley, pp157, ISBN 88-7192-087-2,Settembre 2000 (Euro 24,79)

� UML Distilled (2nd ed.), AddisonWesley Longman, Inc., 2000.

8

Bibliografia� Wesley J. Chun.

Core Python Programming.Prentice Hall PTR, 2001.ISBN 88-386-4181-1.

9

Bibliografia� Eckel, B.

Thinking in Python.Versioni preliminari disponibilisul sitohttp://www.bruceeckel.com

� M. PilgrimDive into Python.GNU Free Doc. Licencehttp://diveintopython.org 10

Esame: l’esercitazione di laboratorio

� L’esame consiste nella discussione di dell’esercitazione dilaboratorio assegnata ma non solo …

� … il voto dipenderà anche fortemente da quanto si è capitoe non solo se il programma realizzato funziona o meno

� È incentivato sostenere l’esame nella prima sessione (unoqualsiasi dei due appelli), ad ogni sessione successiva illaboratorio crescerà nelle parti da portare per l’esame

� La validità del laboratorio è sino all’inizio del corso nell’annoaccademico successivo

11

Paradigmi diProgrammazione:il ruolodell’astrazione

12

Perché paradigmi diversi?

� Esistono numerose metodologie per lo sviluppo di software,che dipendono dalle applicazioni (studiate in Ingegneria delSoftware)

� La scelta opportuna di un linguaggio di programmazionepuò favorire l'adozione di una metodologia e facilitare lasoluzione di un problema

Page 3: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

3

13

Astrazione

� Astrazione: identificare le proprietà importanti di unfenomeno, trascurando quelle irrilevanti

� Un programma realizza delle astrazioni. E' essenzialeconcentrarsi solo sulle proprietà rilevanti del fenomeno chesi vuole modellare

� La mente umana può ricordare solo pochi concetticontemporaneamente

� Lo sviluppo di un programma può procedere per livelli diraffinamento successivo delle astrazioni

14

Il ruolo dell'astrazione

� Un linguaggio di programmazione deve esser il piùpossibile svincolato dalla macchina su cui viene eseguito,ed essere vicino al problema da risolvere

� Un linguaggio di programmazione deve fornire strumentiche facilitino lo sviluppo di astrazioni. In particolare:� astrazioni sulle operazioni (procedure)

� astrazioni sui dati (moduli, tipi di dati astratti, classi)

15

Paradigmi

� Linguaggi imperativi: basati sulle nozioni di variabili eassegnamento - realizzano un astrazione sull'architetturadelle macchine

� Linguaggi funzionali e logici: basati su modelli astratti dicomputazione derivati da teorie formali (funzioni ricorsive,logica)

16

Alcuni linguaggi Prolog

Lisp Scheme ML Miranda

Simula67 Smalltalk Python Java C#

C++

Cobol C Ada

Algol Pascal Modula2

Fortran

1960 1970 1980 1990 2000

17

Linguaggi ad oggetti

� I linguaggi di programmazione ad oggetti consentono diapplicare metodologie di sviluppo di programmi "objectoriented", ossia basate sugli oggetti (dati) che il sistemasoftware manipola.

� Questa metodologia si contrappone a quella piùtradizionale di sviluppare un programma secondo unapproccio funzionale (programmazione strutturata).

18

Programmazione ad oggetti

� In molti casi l'organizzazione ad oggetti risulta la piùnaturale perché rispecchia in modo diretto il mondo che sivuole rappresentare:� simulazione (automobili, semafori, aerei, …)

� software grafico (finestre, bottoni, menu, …)

� Progetto object oriented di software: costruzione di sistemisoftware come collezioni strutturate di implementazioni ditipi di dati astratti (B. Meyer)

Page 4: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

4

19

I principali linguaggi ad oggetti

� Simula: progettato nel 1967 - capostipite dei linguaggi adoggetti

� Smalltalk: linguaggio ad oggetti "puro" - linguaggio"dinamico” non c'è controllo statico dei tipi

� C++: linguaggio "ibrido" - garantisce la compatibilità con il C

� Python: CWI, Guido Van Rossem

� Java: il più recente, creato dalla Sun

� C#: simile a Java, alla base della tecnologia .net diMicrosoft

20

Caratteristiche dei linguaggi ad oggettiSette passi verso la felicità (secondo B. Meyer)

1. Struttura modulare basata sugli oggetti.

2. Gli oggetti sono implementazioni di tipi di dati astratti.

3. Gestione automatica della memoria.(garbage collection)

4. Classi.Ogni tipo non semplice è un modulo, e ogni moduload alto livello è un tipo.

21

Caratteristiche dei linguaggi ad oggetti

5. Ereditarietà.Una classe può essere definita come estensione orestrizione di un'altra.

6. Polimorfismo e binding dinamico.Possibilità di fare riferimento ad oggetti di più diuna classe.Le operazioni possono avere realizzazioni diversein classi diverse.

7. Ereditarietà multipla.Possibilità di ereditare da più di una classe.

22

JAVA:dove e come

23

Cenni storici

� Il paradigma Object-Oriented (OO) non e` nuovo: Simula,Smalltalk, C++

� “Green”, 1991 della Sun Microsystem, linguaggio perdispositivi di consumo non legato ad un particolaremicroprocessore

� HotJava, 1994, un browser per internet� Netscape 2.0, 1995, abilitato all’uso di Java� Java 1.02, 1996� Java 1.1, 1997� Java 2, 1998

24

Java

� Le caratteristiche principali di Java

� Object oriented:� progettato per essere un linguaggio ad oggetti, anche se meno puro

di Smalltalk

� Robusto� non ci sono puntatori

� garbage collection

� Distribuito� costrutti per la concorrenza

Page 5: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

5

25

Java

� Indipendente dall'architettura� il compilatore genera codice intermedio (bytecode) che viene

interpretato

� Applicazioni su internet� applet� sicurezza

� Ambiente ricco di tipi di dati predefiniti� grafica� programmazione su internet� accesso a database

26

Dove trovare Java?� Java e` disponibile

http://java.sun.com/j2se(Java 2 Standard Edition)

� Esistono versioni per:� Sun Solaris� Windows 95/98 e NT� Linux (anche in RPM)

� Java 2 RuntimeEnvironment

� Java 2 S.E. Documentation

27

Dove trovare Java?

� … spesso anche dal vostro giornalaio (soluzioneconsigliata se non si ha un collegamento a internet veloce)

� Java e` distribuito gratuitamente dalla Sun Microsystems

� Attualmente e` disponibile la versione 1.4 (ma vi consigliodi utilizzare ancora la 1.3.x)

28

Cosa ci serve?

j2sdk1_3_0-win.exe(29,4 Mb)

j2sdk1_3_0-doc.zip(21,2 Mb)

tutorial.zip(9,15 Mb)

istruzioni di installazione

29

Installazione di Java

� Per Windows… bastano due “click”� Ricordarsi pero`:

� set PATH=%PATH%;C:\JDK1.3\BIN� di controllare che la variabile CLASSPATH non sia

inizializzata� E` utile installarsi anche la documentazione e il tutorial (in

formato HTML)� Nota: la Sun distribuisce un ambiente di sviluppo Forte ma

non è incluso nella distribuzione,� Alcuni semplici editor sono (oltre il Notepad, gvim):

� TextPad (http://www.textpad.com/)� WinEdt (http://www.winedt.com/)

30

Il Tutorial� Una semplice guida alla

programmazione in Java

� È un ipertesto in HTML quindiconsultabile mediante unqualsiasi browser

Page 6: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

6

31

La Documentazione� Contiene TUTTE le

informazioni sulla versione inuso di Java

� In particolare contiene ilJava 2 Platform APISpecification

� E` in formato HTML

� Nota: il tutorial e ladocumentazione NON sonoinclusi nell’installazione diJava 2

32

JDK1.3: il direttorio

Gli eseguibili:• javac• java• javadoc• …

IMPORTANTE!!set PATH=%PATH%;C:\JDK1.3\BIN

La documentazione sulleLibrerie (in HTML)

Il tutorial diJava (in HTML)

Esempi diprogrammi Java(e applet)

I sorgenti dellelibrerie

Il nome del direttorio di installazione

33

Il primo programma in Java� Un semplice programma che da` il benvenuto nel mondo

della programmazione Java� Il linguaggio e` “case sensitive”� In un file di nome BenvenutoInJava.java (per convenzione

dello stesso nome dell’unica classe pubblica contenuta dalfile stesso)

public class BenvenutoInJava { public static void main(String[] args) { System.out.println("Benvenuto in Java!"); }}

BenvenutoInJava.java

nome della classe pubblica

metodooggetto di sistema

conclude unaistruzione

34

Come usare javac e java

� Per compilare:� javac BenvenutoInJava.java

� … che produrra` un file BenvenutoInJava.class� per eseguire il programma:

� java BenvenutoInJava

javajavac

e` un compilatore e` un interprete

BenvenutoInJava.java BenvenutoInJava.class

Output

Bytecode !

35

Interpretazione

� Interprete (JavaScript, Scheme, Prolog):Interazione. Più facile modificare un programmadurante l'esecuzione

Sparc/Solaris

Apple

Codice Sorgente

InterpreteSparc/Solaris

InterpreteMacOS

InterpreteIntel/GNU-Linux

Intel/GNU-LinuxIntel/Windows

36

Interpretazione� Affinché le due persone di lingua

diversa possano dialogare tra diloro (nel caso nessuna delle dueconosca la lingua dell’altro) ènecessario che qualcunointerpreti (traduca sul momento)quanto dice una persona nellapropria lingua nella lingua di chiascolta

� Si interpreta quando ènecessario una strettainterazione, quando si desideradialogare e non solo trasmettereun messaggio

Page 7: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

7

37

Traduzione (o Compilazione)

� Compilazione (Pascal, C, Ada, C++):Efficienza di esecuzione. Il codice generatodal compilatore può essere ottimizzato,perché la compilazione è fatta una solavolta

Sparc/Solaris

Intel/GNU-LinuxIntel/Windows

Apple

Codice Sorgente

CompilatoreSparc/Solaris

CompilatoreMacOS

CompilatoreIntel/GNU-Linux

binario

binario

binario

38

Traduzione (o Compilazione)� La traduzione è adatta per

comunicare messaggio, comead esempio una lettera

� Anche per effettuare unatraduzione è necessariol’intervento di qualcuno che siain grado di comprendere le frasidi un linguaggio e riportarle in unaltro ma questo può operare intempi separati rispetto lascrittura del messaggio e la sualettura

� La lettura è più rapida esemplice, il traduttore hasenz’altro avuto tempo permeglio adattare il testo

� ma si penalizza l’interattività

39

Soluzione Mista: Java

� Soluzione mista (Java): Portabilità. Pereseguire un programma su macchinediverse è sufficiente implementarel'interprete del linguaggio intermedio, enon tutto il compilatore

Sparc/Solaris

Intel/GNU-Linux

Apple

Palm

Codice Java

Compilatore Java

bytecode

InterpreteJava/Solaris

InterpreteJava/MacOS

InterpreteJava/GNU-Linux

InterpreteJava/PalmOS

40

Python:dove ecome

41

Cenni storici

� 1989 avvio del progetto da parte di Guido van Rossum alCWI (Olanda)

� 1999, Python 1.5.2, 1.6 hanno contribuito alla diffusione dellinguaggio

� Python 2.0� 2001, Python 2.1 e 2.2 in rapida successione negli ultimi

tempi

� Zope (Application Server) implementato con Python (1.5.2)� Jython: interprete di Python scritto in Java

42

Caratteristiche

� High-level� Object-oriented� Portabile (interpreti disponibili per la maggior parte delle

piattaforme, anche PalmOS, Amiga, …)� Facile da imparare, da leggere e da mantenere� Robusto� Adatto alla “prototipizzazione rapida”� Gestione automatica della memoria (garbage collector)� Interpretato e Byte-compilato (come Java)

Page 8: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

8

43

Dove trovare Python?� Python e` disponibile

http://www.python.orgEsistono versioni per:

� Unix (Solaris, Linux,FreeBSD, ...

� Windows (tutte leversioni)

� PalmOS, Psion, WinCE,...

� … la si trova inclusa in tuttele distribuzioni di Linux

� E` distribuito gratuitamenteed è “open source”

� Attualmente e` disponibile laversione 2.2

44

Cosa ci serve?

Python-2.x.x.exe(circa 6 Mb)

win32all-140.exe(3,5 Mb)

diveintopython-word(pdf)-3.7.1.zip(400 Kb)

45

Installazione di Python

� Per Windows… bastano due “click”� Per Linux ancora piu` facile se si una un pacchetto di tipo

RPM

� Ricordarsi pero`:� set PATH=%PATH%;C:\Python2.1� controllare che non sia gia` inizializzata la variabile

PYTHONPATH (analoga della CLASSPATH per Java)� La documentazione ed il tutorial (in versione HTML) vengono

installati insieme

46

Il Tutorial� Il tutorial è scritto

da Guido vanRossum e lo sipuo` trovareall’indirizzo:http://www.python.org/doc/current/tut/tut.html

� Lo si trova in variformati

� È inclusonell’installazione diPython

47

La Documentazione� È in formato HTML e

contiene le specifichedelle sue librerie:http://www.python.org/doc/current/

� È inclusanell’installazione diPython

48

Il primo programma in Python� Un semplice programma che da` il benvenuto nel mondo

della programmazione Python� Il linguaggio e` “case sensitive” (print e Print sono due

cose diverse!)� In un file di nome BenvenutoInPython.py

print "Benvenuto in Python!";

BenvenutoInPython.py

Si puo` anche utilizzare l’apice singolo ‘

È necessaria se si desiderano separare piu` istruzioni sulla stessariga

Stampa e va a capo

Page 9: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

9

49

Come usare python

� Per compilare ed eseguire:� python BenvenutoInPython.py

� Alcuni moduli si possono presentare nella forma byte-compilata con estensione .pyc� python BenvenutoInPython.pyc

50

Sintassi e istruzioni di base in Java

� La sintassi dei costrutti di base (dichiarazioni di variabili,istruzioni di base, ecc.) e` molto simile al linguaggio C

� Variabili e loro dichiarazione� Controllo del flusso

51

Commenti

� Commenti su piu` linee possono essere fatti racchiudendolitra i simboli /* e */

� Commenti su di una sola linea possono essere fattifacendoli precedere dal simbolo //

� I commenti non compaiono nel codice eseguibile� Esiste anche il commento racchiuso tra /** e */

/* Commento su piu` linee */public class BenvenutoInJava { public static void main(String[] args) { System.out.println("Benvenuto in Java!"); // Commento su una sola linea }}

52

Tipi primitivi

� Java è un linguaggio strong typed, strongly typed, ognivariabile deve avere un tipo dichiarato

� Esistono otto tipi primitivi, sei per i tipi di numeri, uno per icaratteri (codifica Unicode) e uno per boolean

� int (4 byte) - float (4 byte)� short (2 byte) - double (8 bytte)� long (8 byte) - char� byte (1 byte) - boolean

� I tipi primitivi non sono oggetti (puntatori)� Non dipendono dalla macchina di destinazione

53

Dichiarazione di variabile

� identificatore = lettera (lettera | cifra)*� lettera e cifra nel senso “Unicode”� Lunghezza illimitata� Per convenzione si usano nomi che iniziano con una lettera

minuscola� L’inizializzazione e` come in C

int variabileIntera;long variabileInteraDi8byte;

double piGrecoApprossimato = 3.1415;boolean flag = false; // o false o true !

Assegnamento

54

Operatori

� Operatori aritmetici: + - * / %� Assegnamento e operatori aritmetici: += -= *= /= %= (es. a

+= i;)� Operatori di incremento (in posizione di prefisso o di

suffisso di una variabile numerica): ++ e -- (es. i++; a=--i;)� Operatori relazionali e booleani: == != < > <= >= && || !� Operatori sui bit: & | ^ ~ >> <<� Parentesi: ( )

Page 10: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

10

55

Controllo del flusso

� Le stesse del C/C++� if then� if then else� while (loop indeterminato)� do while (loop indeterminato)� for (loop determinato)� switch� break

56

If Then e If Then Else

� if (condizione) istruzione;� if (condizione) istruzione; else istruzione;� Al posto di un “istruzione;” puo` comparire un blocco di

istruzioni: { sequenza istruzioni }

[…]if (etaPersona > 18) { System.out.println(“Maggiorenne”); System.out.println(“Eta`: “ + etaPersona);}else System.out.println(“Minorenne”);[…]

57

While

� while (condizione) { blocco di istruzioni }� Si puo` avere anche un’istruzione anziche` un blocco

(quindi conclusa come sempre da ;)

[…] int temp; while (z != w) { if (z < w) { temp = z; z = w; w = temp; } z -= w; } System.out.println(“Massimo Comune Divisore: “ + z);[…]

Calcola il MCDtra I numeri interi z e w

58

For

� for (iniz.; condizione; step) { istruzioni }� Tipicamente utilizzato per la scansione di vettori (array)

[…]for (int i=0; i<n; i++) System.out.println(“Elemento” + i + “ : “ + elemento[i]);[…]

59

Break

� Permette di uscire da un loop� break;� break etichetta;

[…]int i=0;for (i=0; i<n; i++) if (elemento[i] == elementoCercato) break;if (i != n) System.out.println(“Elemento trovato in pos.: “ + i);else System.out.println(“Elemento non trovato”);[…]

60

Break

� Il codice precedente senza uso del break� il codice e` piu` complicato, ma …� … NON ABUSARNE

int i=0;boolean trovato = false;while (i<n && !trovato) { if (elemento[i] == elementoCercato) // oppure i++ trovato = true; i++;}if (trovato) System.out.println(“Elemento trovato in posizione: “ + i);else System.out.println(“Elemento non trovato”);

Page 11: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

11

61

Sintassi e istruzioni di base in Python

� La sintassi dei costrutti di base non è simile al C!

� Controllo del flusso

62

Commenti ed indentazione� Le linee di commento sono precedute dal simbolo #

� Non esistono i simboli per raggruppare istruzioni (blocchi)ma queste sono precedute dal simbolo : e sono determinatidall’indentazione� aumenta la leggibilita`� impone uno stile standard di scrittura del codice

etaPersona = 19if etaPersona > 18: print "Maggiorenne!" print "Eta della Persona %s" % (etaPersona)else: print "Minorenne!"

63

Basic built-in data object primitive types

� Esistono otto tipi di dati primitivi� Numeri (immutabile)

✦ Integer (32-bit)✦ Long Integer (veramente long!!)✦ Floating Point Real Number (64-bit, IEEE 754)✦ Complex Number (real + imag j)

� String (immutabile)� List (mutabile)� Tuple (immutabile)� Dictionary (mutabile)

� I tipi primitivi sono oggetti (puntatori)� Funzione type()� Non sono supportati: boolean, char/byte, pointer

64

Dichiarazione di variabili

� Non vi sono dichiarazioni di variabili, vengono createquando vengono utilizzate (inizializzate per la prima volta)Python è un linguaggio strong typed, dinamically typed

� Non vi è dichiarazione di tipo (dinamically typed)� identificatore = (lettera | _) (lettera | cifra | _)*� Lunghezza illimitata

piGrecoApprossimato = 3.1415flag = 0; # o false o true !

Assegnamento

65

Operatori

� Operatori aritmetici: + - * / %� Assegnamento e operatori aritmetici: += -= *= /= %= (es. a

+= i;)� Operatori relazionali e booleani: == != < > <= >= and or not� Confronto tra oggetti: is, is not� Operatori sui bit: & | ^ ~ >> <<� Operatori sulle stringhe, liste e tuple: in, not in, +, *, [ ], [ : ]� Parentesi: ( )

66

Controllo del flusso

� Le stesse di altri linguaggi� if then� if then else� switch (cascata di if)� while (loop indeterminato)� for (loop determinato)� break

Page 12: Chi sono? Come contattarmi? Introduzionebaldoni/didattica/SpLPPP0102/Introduzione.pdf · Il tutorial di Java (in HTML) Esempi di programmi Java (e applet) I sorgenti delle librerie

12

67

If Then e If Then Else

� if condizione:istruzione

� if condizione:istruzione

else:istruzione

� Istruzione elif condizione: per else if (sostituisce switch)

if etaPersona > 18: print "Maggiorenne!" print "Eta della Persona %s" % (etaPersona)else: print "Minorenne!"

68

While

� while condizione:istruzioni

while not z == w: if z < w: temp = z z = w w = temp z -= wprint "M.C.D.: %s" % (z)

Calcola il MCDtra I numeri interi z e w

69

For

� for variabile in sequnce-type:istruzione

� Dove sequence-type è: lista, tupla o string

elementi = (1, 2, 3, 4, 5, 6)for i in elementi: print i,