Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoSaveria Gambino Modificato 9 anni fa
1
Struttura del programma Intestazione Lista di istruzioni Esempio: Hello { public class Hello { main (String [] args){ public static void main (String [] args){ System.out.println System.out.println(”Ciao come stai?");
2
La grammatica di Java (non completa) Program::= [Imports] public class Ide MainDef Imports::= Import ; Imports | Import Import::= import java.ide.(ide | * ) MethodList::=MainDef MainDef::= {public static main ([String [ ] args]) {StatementList}
3
La grammatica di Java (non completa) StatementList::=Statement StatementList | Statement::= Command | Declaration Command::= System.out.print[ln](Exp) Exp::= Exp + Exp | (Exp) | Ide | Literal |.... Literal::= StringLiteral | IntegerLiteral | FloatingLiteral | CharacterLiteral | BooleanLiteral | NullLiteral
4
La grammatica di Java (non completa) Ide::= Char CharSeq StringLiteral::= “CharSeq” CharSeq::= Char CharSeq | Char::= a | b |... z | A |... | Z | 0 |... | 9 |... IntegerLiteral ::= (+ | -) Integer | 0 Integer ::= Digit DigitSeq Digit ::= 0 | 1 | 2 |... | 9 DigitSeq ::= Digit DigitSeq |
5
Stampa di dati in Java Stampa di dati in Java (Output) Si stampano sequenze di caratteri (String). Sia s una stringa System.out.print(s); stampa la stringa s System.out.println(s); stampa s e va a capo La stringa s può essere: 1. 1.una sequenza di caratteri racchiusi tra “ ” 2. 2.stringhe concatenate s1+s2 (+ operatore di concatenazione) 3. 3.qualunque valore che puo` essere convertito in stringa ad es. i numeri (attenzione al + vedi es.)
6
Tipi di dati primitivi in Java numeri: – –interi 1,+22,-133, int, long, short – –razionali 0.345, 56.54, 9, float, double booleani: ( true,false ) boolean caratteri: ‘a’,... ‘A’ char
7
public class volume { public static void main (String[] args) //calcolo della quantita` totale di bibite { final double bottVol =2.0; final double lattVol = 0.355; int bottNum = 4; int lattNum = 10; double totale = bottVol * bottNum + lattVol * lattNum; System.out.println(“volume totale ” + totale + “ litri” ); }} Un altro esempio
8
La sintassi di Java La sintassi di Java (le dichiarazioni) Declaration ::=[DescSeq] Type Ide [= Exp]; DescSeq ::= Desc DescSeq | Desc ::= public | private | static | final Command::= System.out.print[ln](Exp) Type ::= int | boolean | double | float | char | Ide
9
Costanti final Type Ide=Exp; Ide è una costante cioè un nome a cui è associato un valore (analogamente alle variabili) di tipo T, a cui però può essere assegnato un valore una sola volta. Vantaggi: Aumentano la leggibilità Se cambia il valore della costante devo modificarlo solo nell’inizializzazione
10
Commenti Aumentano la leggibilita` se usati con criterio. In Java ci sono due modi di inserire commenti: commenti su una sola riga //: //calcolo della quantita` totale di bibite commenti su piu` righe /* */: /* Commenti racchiusi tra parentesi */
11
Comandi Linux per Java Per eseguire abbiamo visto: java nomeClasse Per compilare : javac nomeClasse.java dove nomeClasse.java è il nome del file contenente il (sorgente del) programma Java, editato usando emacs o un altro editor di testi.
12
Per eseguire un programma: Occorre: – –scrivere il programma in un file (usando ad esempio emacs) dandogli come nome il nome della classe che ha come metodo statico main con aggiunto il suffisso “.java” – –compilare il programma con il comando javac – –eseguire il programma con il comando java
13
Lettura di dati in Java Lettura di dati in Java (Input) Non useremo la lettura standard perchè un po’ troppo complessa, esempio: – –c e` una variabile che: va dichiarata come segue: ConsoleReader c=new ConsoleReader (System.in) – –i comandi a disposizione sono readInt: c.readInt readLine: c.readLine() readDouble: c.readDouble() readChar: c.readChar()
14
La sintassi di Java () La sintassi di Java (non completa) Exp::= Exp + Exp | (Exp) | Ide | Literal | new ConsoleReader (System.in); | c.readLine(); | c.readDouble(); | c.readInt(); | c.readChar();
15
Astrazione sui valori Introduzione di nomi con associati dei valori Esempio: Hello { public class Hello { main (String [] args){ public static void main (String [] args){ System.out.println System.out.println(”Come ti chiami "); ConsoleReader c=new ConsoleReader (System.in); String nome=c.readLine(); System.out.println System.out.println(”Ciao "+nome);}}
16
Altri tipi predefiniti :double, e float per i razionali Costanti 0.0, 1.2, 5.89 ecc. Tutte le operazioni sugli interi:+.-.*,/ È possibile anche fare operazioni miste (operandi int e double) il risultato è un double 3*1.2=3.6 Assegnamento: int float double – –int x=7; double y; y=x; y ora vale 7.0 (esempio) – –x=y/2 errore x=(int)y cast
17
Composizione di istruzioni Sequenzializzazione: le istruzioni vengono eseguite in sequenza: S 1 S 2... S k Lo stato in cui viene eseguita S 2 è lo stato risultante dopo l’esecuzioni di S 1 nello stato di partenza, ecc. lo stato in cui viene eseguita S i è lo stato risultante dopo l’esecuzioni di S i-1. Sintassi della sequenzializzazione: StatementList::=Statement StatementList |
18
Composizione di istruzioni Condizionale: le istruzioni eseguite dipendono dal verificarsi o meno di una condizione. Due forme: Sintassi 1. 1. if (Cond) C 1 else C 2 2. 2. if (Cond) C 1 Semantica informale Nello stato di partenza viene verificata la condizione (Cond) che è un’espressione boolena. Se la condizione è verificata viene eseguito S 1 altrimenti nella forma 1 si esegue S 2, nella forma 2 si prosegue con l’istruzione successiva. S 1 ed S 2 sono comandi
19
Esempio di condizionale: massimo di due numeri public class CalcolaMassimo2 { public static void main (String [] args) {... int n1=console.readInt(); int n2=console.readInt(); if (n1>n2) System.out.println(”Massimo "+n1); else System.out.println(”Massimo "+n2); else System.out.println(”Massimo "+n2);}}
20
Assegnamento Modifica di variabile: Sintassi 1. 1. Ide = Exp 2. 2.Semantica informale Nello stato di partenza viene valutata l’espressione Exp, ottenendo il valore v espressione che deve essere dello stesso tipo (o compatibile) con il tipo di Ide. Ide deve essere dichiarata nello stato di partenza. Lo stato risultante è lo stato di partenza in cui Ide ha come valore v
21
Esempio di condizionale: massimo di tre numeri public class CalcolaMassimo3 { public static void main (String [] args){ int max=console.readInt(); int n1=console.readInt(); int n2=console.readInt(); if (n1>max) max=n1; if (n2>max) max=n2; System.out.println("Numero massimo e` "+max);}}
22
Composizione di istruzioni Iteratori: le istruzioni del corpo dell’iteratore vengono eseguite ripetutamente. La ripetizione è avviene se è verificata una condizione. Esistono tre forme di iterazione in Java: 1. 1. while 2. 2. do - while 3. 3. for Gli iteratori in Java sono tutti equivalenti (si può sempre sostituire un iteratore con un altro di diversa forma. Forme diverse si adattano diversamente alle varie situazioni. Il risultato è che se si sceglie la giusta forma il programma è più leggibile.
23
while Il corpo S dell’iteratore viene eseguito finchè la condizione (cond) è vera. Sintassi: while (cond) S Semantica informale: Si valuta la condizione (cond) nello stato di partenza, se è vera si esegue il corpo S, nello stato risultante dall’esecuzione di S si rivaluta l’intero while.
24
Esempio while: massimo di k numeri public class CalcolaMassimoKWhile { public static void main (String [] args){ final int k=10; System.out.print("Scrivi il primo numero > "); int max=c.readInt();int n;int i=2; while(i<=k) { System.out.print("Scrivi il "+i+" numero> "); n=c.readInt(); if(n>max) max=n; i++; } System.out.println("Il valore massimo e` "+max);}}
25
While con variabili booleane La definizione di variabili booleane inizializzate true utilizzate nella condizione di un while permettono di terminare quando la condizione diventa falsa (dimostrazione per assurdo). Vedi esempio LeggiFinoAlPunto.
26
Un altro iteratore il for for ([T] Ide =Exp1; BE ; Ide=Exp2) C |... Com::=... | for ([T] Ide =Exp1; BE ; Ide=Exp2) C |... contatore 4 corpo 1) Inizializzazione del contatore. Dichiarazione o assegnamento 3 aggiornamento del contatore 2) condizione Il for in Java è equivalente al while (vedi semantica) cambia solo la sintassi.
27
La sintassi di Java: comandi Command::= Ide= Exp; | {StatementList} | if (Exp) C1 else C2; | if (Exp) C; | while (Exp) C; | do C while (Exp); | for([Type] Ide = Exp; Exp; Ide=Exp) C; | System.out.print[ln](Exp);
28
public class FigureGeometriche{ public static void main (String[] args) {System.out.println(“Scrivi C per Cerchio”); System.out.println(“Scrivi R per Rettangolo”); System.out.println(“Scrivi T per Triangolo”); char c =Leggi(); if(c==‘C’) faiCerchio; //Blocco per Cerchio else if(c==‘R’) faiRettangolo; /*Blocco per Rettangolo*/ else if(c==‘T’) faiTriangolo; //Blocco per Triangolo else System.out.println(“Errore figura sconosciuta”);}} Esempio Figure geometriche
29
faiCerchio: {System.out.println(“Dammi il raggio del cerchio”); final double pigreco=3.14; double raggio=leggi(); double area=raggio*raggio*pigreco; System.out.println(“Area del cerchio di raggio “+raggio+”e` ”+ area) } Esempio - Figure geometriche Cerchio
30
faiRettangolo: {System.out.println(“Dammi la base del rettangolo”); double base=leggi(); System.out.println(“Dammi l’altezza del rettangolo”); double altezza=leggi(); System.out.println(“Area del rettangolo di base “ +base+” e altezza “+altezza+ “ e` ”+ base*altezza} Esempio Figure geometriche:Rettangolo
31
faiTriangolo: {System.out.println(“Dammi la base del triangolo”); double base=leggi(); System.out.println(“Dammi l’altezza del triangolo”); double altezza=leggi(); System.out.println(“Area del triangolo di base “ +base+” e altezza “+altezza+ “ e` ”+ base*altezza/2} Esempio Figure geometriche:Triangolo
32
Programmazione strutturata Problemi complessi si risolvono suddividendo il problema in problemi più semplici ciascuno risolto da un programma – –es: faiCerchio, faiRettangolo e faiTriangolo sono pezzi di programma che assolvono un compito, in questo caso quello di leggere e calcolare per una data fig. geometrica. I programmi definiti dentro un programma più generale si chiamano procedure o funzioni nei linguaggi o-o (Java): metodi.
33
“Sottoprogrammi” Trasferimento del controllo (cambia il flusso delle istruzioni) Concetti di programma chiamante e programma invocato Scambio di dati tra programma invocato e programma chiamante – –parametri formali e – –parametri attuali – –risultato del programma invocato – –ambiente del programma invocato
34
public static Type Ide (Type Ide1, Type Ide2) {StmtList }... Ide(Val1,Val2).... Definizione e invocazione di “sottoprogrammi” nome metodo parametri formali parametri attuali corpo del metodo tipo del risultato corrispondenza formali attuali
35
Le classi in Java Le classi rappresentano insiemi di entità con le stesse caratteristiche. Nei linguaggi object-oriented il modello privilegia la rappresentazione delle entità. Ogni programma Java prevede la definizione di almeno una classe. In questa fase la classe è vista come un contenitore di metodi (“sottoprogrammi”)
36
Astrazione procedurale in Java: Metodi statici (static) Permettono di definire funzioni di uso comune non legate a specifiche entità che sono rappresentate nel programma Sono sempre definiti in una classe Anche il main (programma principale) è un metodo statico della classe che viene passata come argomento al comando Linux: java nomeClasse che provoca l’esecuzione del programma
37
Strutturazione del programma definendo più classi Invece di aggiungere i metodi alla classe in cui è definito il main è possibile definire i metodi in una classe diversa. In questo modi possono raggruppare metodi che svolgono funzioni analoghe (es. Geometria e Num) L’invocazione diventa: IdeClass.Ide(Val 1,..Val k )
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.