Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma...

34
Fondamenti di Informatica Lezione 1 Danilo Amendola - www2.units.it/damendola/ October 7, 2018 University of Trieste

Transcript of Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma...

Page 1: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Fondamenti di Informatica

Lezione 1

Danilo Amendola - www2.units.it/damendola/

October 7, 2018

University of Trieste

Page 2: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Computers

La scheda madre di un Personal Computer ed il computer ENIAC

(ritenuto il IV computer della storia).

Fonte: Horstmann, Core Java I

1

Page 3: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Schematic Computer

Un diagramma schematico di un computer

Fonte: Horstmann, Core Java I

2

Page 4: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Java e la rete

3

Page 5: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Cos’e Java i

• Linguaggio di programmazione, definito dalla Sun, oggi acquisito da

Oracle;

• Obbiettivo di Java era la possibilita di sviluppare applicazioni: sicure,

e�cienti, robuste, multipiattaforma, per reti eterogenee e distribuite;

• Linguaggio di alto livello, semplice ed orientato agli oggetti;

• E’ un linguaggio interpretato: produce ”byte-code”, codice

intermedio per la Java Virtual Machine.

CODICE SORGENTE ! Compilatore ! BYTECODE ! Interprete

• Portabilita su diverse piattaform;

• Indipendetete dalle architetture:

• Byte-code indipendente dalle architetture hardware;

• Il byte-code puo essere eseguito su ogni sistema fornito di Java

Runtime Environment;

4

Page 6: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Cos’e Java ii

• Robustezza: controlli estesi durante le fasi di compilazione ed

esecuzione;

• Distribuito:

• Pensato per essere eseguito in rete;

• Funzioni di rete di basso e alto livello;

• Rete accessibile come i file locali;

• Sicurezza:

• Verifiche sulle caratteristiche del byte-code prima di interpretare;

• piu e�ciente: si fanno meno controlli a run-time;

• indizzamenti controllati dall’interprete, evita condotte pericolose;

• Possibilita di caricamento dinamico delle classi tramite la rete;

• Concorrenza:

• Applicazioni concorrenti piu facili da scrivere (rispetto ai linguaggi

precedenti);

• Migliore interazione tra i thead.

5

Page 7: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Cosa serve per iniziare

Cosa serve per iniziare a programmare con Java:

• Installate un Editor di testo (notepad, SublimeText, Atom,

notepad++, TextPad, BluJ, Eclipse, etc);

• Installate la Java SDK (Software Developement Kit)

www.oracle.com/technetwork/java/javase/downloads

Attenzione: non basta la JRE (Java Runtime Environment);

• la command line di windows (cmd.exe) o la shell di Linux/OSX;

• Potete seguire una guida per l’installazione di Java: guida

all’installazione;

6

Page 8: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Editor, IDE e programmazione

Un Editor e un programma che ci permette di editare un file e salvarlo sul

disco (Emacs, Vi, Vim, Nano, BloccoNote, Notepad++, etc. ect. etc.)

Un IDE e un ambiente di sviluppo integrato che permette di

automatizzare e semplificare la scrittura di codice, la compilazione,

l’esecuzione ed il debugging. Alcuni IDE per Java:

• Eclipse: eclipse.org, il piu consigliato [download]

• Netbeans: netbeans.org

• IntelliJ IDEA: jetbrains.com

• BluJ: bluj.org

• DrJava drjava.org

• etc.

Suggerimento: iniziate a programmare con un editor di testo semplice.

7

Page 9: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Concetti chiave: Compilazione, Esecuzione e Debugging

Concetti chiave per iniziare a programmare:

• Compilazione: e l’operazione che a partire dal codice sorgente

genera il programma eseguibile da una macchina (o da VM);

• Esecuzione: e l’operazione di avvio del programma compilato;

• Debugging: e una modalita di esecuzione del programma che ci

permette di analizzarne il comportamento delle variabili per

identificare eventuali bug.

Attenzione: Un buon programmatore non si fa mai mancare un editor

semplice e veloce sul proprio computer!

8

Page 10: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Dal codice sorgente all’esecuzione del programma

Fonte: Core Java I

9

Page 11: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Il Byte-Code Java

Codice sorgente Java:

{int i ;

int a ;

a=0;

for ( i =0; i <5; i++){ a += i ; }}

Corrispondente Byte-code Java:

Method void main ( j a v a . l ang . S t r i n g [ ] )

0 i c o n s t 0 // push c o s t a n t e 0

1 i s t o r e 2 // memorizza i n va r . l o c a l e 2 ( a )

2 i c o n s t 0 // push c o s t a n t e 0

3 i s t o r e 1 // memorizza i n va r . l o c a l e 1 ( i )

4 goto 14 // v a i a l l a r i g a 14

7 i l o a d 2 // p r e nd i a ( push )

8 i l o a d 1 // p r e nd i i ( push )

9 i add // a+i

10 i s t o r e 2 // a = a+i

11 i i n c 1 1 // i=i+1

14 i l o a d 1 // p r e nd i i ( push )

15 i c o n s t 5 // push c o s t a n t e 5

16 i f i c m p l t 7 // s a l t a a 7 se i<5

19 return // e s c i10

Page 12: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Dal codice sorgente al programma

Una volta che avete installato la Virtual Machine di Java, la JDK (Java

Development Kit), ed un editor il vostro computer e pronto.

Consiglio: spulciate le cartelle di installazione della VM (../Java/⇤). Inparticolare la cartella: ../bin/

Dal codice all’esecuzione:

Compilare col comando: javac;

Eseguire col comando: java;

Curiosita: per esercitarvi senza avere la

VM sul computer esistono degli ambienti

online come: repl.it

//

11

Page 13: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Commenti ed Indentazione

I commenti ci pemettono di inserire del testo che verra ignorato dal

compilatore. Serve ad aumentare la leggibilita del codice.

Alcune modalita di commento:

• Commentare un intera riga ! //

• Commentare una porzione di codice ! / ⇤ ... ⇤ /

L’indentazione e una buona pratica per avere del codice leggibile.

class HelloWorld public static

void main(String

a[])System.out.println(”Hi!”);

class Hel loWor ld {public static void main ( S t r i n g a [ ] )

{System . out . p r i n t l n ( ”Hi ! ” ) ;

}}

12

Page 14: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Commenti ed Indentazione qualche esempio

I commenti ci pemettono di inserire del testo che verra ignorato dal

compilatore. Serve ad aumentare la leggibilita del codice.

Alcune modalita di commento:

• Commentare un intera riga ! //

• Commentare una porzione di codice ! / ⇤ ... ⇤ /

I commenti al codice in Java:

/∗Un commento a l n o s t r o pr imo programma i n Java

∗/class Hel loWor ld {

// Un commento a l main d e l programma

public static void main ( S t r i n g a ){System . out . p r i n t l n ( ”Hi ! ” ) ; // Questa r i g a stampa un s a l u t o

}}

13

Page 15: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Compilazione ed Esecuzione

Un programma viene prima scritto, poi compilato ed infine eseguito

(ammesso che tutto vada bene...):

Per scrivere un programma:

• si scrive il programma con un editor

• si compila col comando: javac

• si esegue col comando: java

14

Page 16: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Variabili ed assegnazione i

Una variabile rappresenta una locazione di memoria in cui e memorizzato

un valore, essa e caratterizzata da:

• Nome: sequanza di caratteri che permette di identificare la variabile;

• Tipo: specidicazione del tipo di dato che la variabile puo

immagazzinare (numero intero, numero relae, carattere, etc.)

• Indirizzo di memoria: locazione di memoria nella quale la variabile e

momorizzata (la dimensione dipende dal tipo);

• Valore: e il valore immagazzinato nella varibile ad un certo istante.

15

Page 17: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Variabili ed assegnazione ii

Una variabile e un riferimento ad una locazione di memoria in cui e

memorizzato un valore. Possiamo pensare ad una variabile come ad una

scatola in un magazino pieno di scatole, ogni scatola ha la sua etichetta

ed e conservata in uno sca↵ale.

Fonte: Cima-Salza, Sapienza

16

Page 18: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Variabili ed assegnazione iii

Dichiarare una variabile

Java e un linguaggio fortemente tipizzato, una varibile va sempre

dichiarata:

t i p o nomeVa r i ab i l e ;

Assegnare un valore

L’operatore di Assegnazione ( = ) fa si che il valore di una variabile

assuma il valore indicato:

nomeVa r i ab i l e = va l o r eA s egna t o ;

17

Page 19: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Variabili ed assegnazione: esempi

Una variabile rappresenta una locazione di memoria in cui e memorizzato

un valore, essa e caratterizzata da: Dichiarazioni di varibili:

int numero1 ;

double numero2 ;

char c a r a t t e r e ;

Assengazione di valori a variabili:

numero1 = 10 ;

numero2 = 0 . 5 ;

c a r a t t e r e = ' c ' ;

E’ possibile fare una dichiarazione ed una assegnazione (cioe

inizializzazione) di varibili sulla stessa riga:

int numero3 = 100 ;

char c a r a t t e r e 1 = 'b ' ;

18

Page 20: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

I tipi primitivi in Java i

Il tipo di un dato rappresenta l’insieme delle caratteristiche che che ilvalore assunto da una variabile dovra soddisfare.

I tipi primitivi in Java:

• boolean b = true;

• char c = ’k’;

• byte x = -10;

• short t = -10000;

• int j = 7;

• long l = 10000;

• float f = 0.003;

• double d = -0.000004432;

• //boleani

• //caratteri

• //byte

• //interi

• //interi

• //interi

• //decimali

• //decimali

19

Page 21: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

I tipi primitivi in Java ii

Il tipo di un dato rappresenta l’insieme delle caratteristiche che che il valore

assunto da una variabile dovra soddisfare.

I tipi primitivi in Java:

Tipo Q.ta Mem. Range Descrizione

boolean ! 1 bit [true | false] Vero/falso (true o false)

char ! 16 bit [’\u0000’, ’\u↵↵ ’] Caratteri charset Unicode

o [0, 65535]

byte ! 8 bit [�128,127]

short ! 16 bit [�32.768, 32.767] Numeri interi

int ! 32 bit [�231, 2

31 � 1] Numeri interi

long ! 64 bit [�263, 2

63 � 1] Numeri interi

float ! 32 bit spec. IEEE 754 Num. virg. mobile (sing.prec.)

8 bit exp.: [-126, 127]

double ! 64 bit spec. IEEE 754 “ doppia precisione

20

Page 22: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Assegnazione di valori alle variabili i

Alcuni esempi di assegmamento di valori a variabili con cast di valore:

class Assegnament i{public static void main ( S t r i n g [ ] a rgoment i ){

byte aByte = (byte ) 0b01100001 ;

char bChar = (char ) aByte ;

int b I n t = (int ) aByte ;

System . out . p r i n t l n ( ”aByte�>” + aByte ) ; // R i s u l t a t o : 97

System . out . p r i n t l n ( ”cChar�>” + bChar ) ; // R i s u l t a t o : a

System . out . p r i n t l n ( ” b In t�>” + b I n t ) ; // R i s u l t a t o : 97

}}

21

Page 23: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Assegnazione di valori alle variabili ii

Prendiamo un esempio:

• char c = ’a’;

• byte x = (byte)0b01100001;

• int i = 97

Il char ’a’ in decimale e uguale a 97!

Tabella di conversione ASCII

22

Page 24: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Il primo programma Java: esempi

Un programma Java che stampa a schermo ”Hello World!”:

// He l l o World i n Java

class Hel loWor ld {public static void main ( S t r i n g a r g s [ ] ) {

System . out . p r i n t l n ( ” He l l o World ! ” ) ;

}}

Un programma Java che calcola l’area di un triangolo e la stampa a

schermo:

public class Esempio1 {/∗∗ S c r i v e r e un programma che d a t i base ed a l t e z z a d i un

∗ t r i a n g o l o , ne c a l c o l i l a r e a .

∗/public static void main ( S t r i n g [ ] a r g s ) {

double base = 3 . 5 ;

double a l t e z z a = 4 . 3 ;

double a r ea = base ∗ a l t e z z a / 2 ;

System . out . p r i n t l n ( ”Area : ” + area ) ;

}}

23

Page 25: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Esercizi proposti

Scrivere una soluzione per i seguenti problemi:

• Esercizio 1:

Dati due numeri interi a e b, calcolare il quoziente e il resto della

divisione (intera) di a con b.

• Esercizio 2:

Dati due numeri ”reali” a e b, calcolare il quoziente e il resto della

divisione (intera) di a con b.

• Esercizio 3:

Data base e altezza di un rettangolo, calcolare la lunghezza della

diagonale.

Prova a svolgere i tre esercizi e poi confrontati con la soluzione proposta

di seguito.

24

Page 26: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Fine

Fine

28

Page 27: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Extra: Il primo programma Java in Eclipse i

• Download di Eclipse dal sito: eclipse.org > Download > Java IDE

• Installazione di Eclipse

• Avviare Eclipse e scegliere il workspace

Fonte: Slides 2016

29

Page 28: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Extra: Il primo programma Java in Eclipse ii

Fonte: Slides 2016

30

Page 29: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Extra: Il primo programma Java in Eclipse iii

• Creare il progetto inserendo un nome rappresentativo

31

Page 30: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Extra: Il primo programma Java in Eclipse iv

• Creare il file della classe

32

Page 31: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Extra: Il primo programma Java in Eclipse v

• Creare il file della classe

33

Page 32: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Extra: Il primo programma Java in Eclipse vi

• Creare il file della classe

34

Page 33: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Extra: Il primo programma Java in Eclipse vii

• Creare il file della classe

35

Page 34: Fondamenti di Informatica - units.itFonte: Horstmann, Core Java I 1 Schematic Computer Un diagramma schematico di un computer Fonte: Horstmann, Core Java I 2 Java e la rete 3 Cos’`e

Extra: Il primo programma Java in Eclipse viii

• Creare il file della classe

36