Struttura del programma

Documenti analoghi
Le basi del linguaggio Java

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Lezione 6 Introduzione al C++ Mauro Piccolo

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Programmazione in Java (I modulo)

Concetto di Funzione e Procedura METODI in Java

Metodi statici. Dichiarazione e chiamata di metodi statici

Costrutti iterativi. Utilizzo dei costrutti iterativi

Modulo 2: Strutture fondamentali della programmazione Java

Definizione di metodi in Java

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Esercizi di preparazione Prima Parte

Introduzione a Java. Giovanni Pardini Dipartimento di Informatica Università di Pisa.

Introduzione Programmazione Java

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Introduzione a Java. Riferimenti

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

<istruzione> ::= <istruzione-semplice> <istruzione> ::= <istruzione-di-controllo> <istruzione-semplice> ::= <espressione> ;

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Linguaggio C Informatica Grafica

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

3) Descrivere l architettura di un elaboratore tramite astrazione a livelli

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

Le basi del linguaggio Java

Funzioni, Stack e Visibilità delle Variabili in C

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Programmazione, 5 a lezione

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Istruzioni Condizionali

Indice. Prefazione. 3 Oggetti e Java 53

5 - Istruzioni condizionali

Programmazione con il linguaggio LibreOffice Basic

Esonero di Informatica I. Ingegneria Medica

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Corso sul linguaggio Java

COMANDI ITERATIVI. Ivan Lanese

Uso di metodi statici. Walter Didimo

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

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

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Diagrammi di flusso. Un metodo per rappresentare graficamente gli algoritmi. sotto programma. Input/ Output. Start. predicato Elaborazione Stop

Istruzioni di ripetizione in Java 1

PROGRAMMAZIONE STRUTTURATA

Le strutture di controllo

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Riassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1.

STRUTTURE DI CONTROLLO DEL C++

INTRODUZIONE ALLA PROGRAMMAZIONE

Operatori in Java. Il Costrutto Condizionale if

Indice. Introduzione a tool per lo sviluppo e l'esecuzione di programmi in linguaggio Java. Compilazione ed esecuzione di un programma

Programmazione ad Oggetti. Java Parte II

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

define define int int int double

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Istruzioni iterative. Istruzioni iterative

Strutture di Controllo

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Elementi di informatica

Dall analisi alla codifica (1)

PROGRAMMAZIONE: Le strutture di controllo

Introduzione agli Algoritmi

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

Programmazione Procedurale in Linguaggio C++

ISTRUZIONI ISTRUZIONI

Cosa si intende con stato

Dall algoritmo al programma

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Programmazione Procedurale in Linguaggio C++

La principale modalità di calcolo è l applicazione di funzioni

Introduzione alla programmazione

Laboratorio di Matematica e Informatica 1

Istruzioni iterative (o cicliche)

Rappresentazione degli algoritmi

Linguaggio C - sezione dichiarativa: costanti e variabili

LINGUAGGI DI PROGRAMMAZIONE!

Programmazione con Java

Introduzione alla programmazione

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript

Esercizi Programmazione I

Programmazione a oggetti

Prima lezione di laboratorio. I mattoni di base di un programma Java. Comandi Unix. Riassunto. Oggi. Un programma complicato.

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

Introduzione alla programmazione in C++

Programmazione web lato client con JavaScript. Marco Camurri 1

Tipi di dato semplici

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Esercitazione 3. Espressioni booleane I comandi if-else e while

Fondamenti di Programmazione. Strutture di controllo

Università di Roma Tor Vergata L6-1. iterazione: struttura di controllo per ripetere più volte uno stesso comando

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Decomposizione per scelta

Transcript:

Intestazione Struttura del programma Lista di istruzioni Esempio: public class Hello { public static void main (String [] args){ System.out.println( Ciao come stai?");

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}

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

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 ε

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. una sequenza di caratteri racchiusi tra 2. stringhe concatenate s1+s2 (+ operatore di concatenazione) 3. qualunque valore che puo` essere convertito in stringa ad es. i numeri (attenzione al + vedi es.)

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

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; Un altro esempio double totale = bottvol * bottnum + lattvol * lattnum; System.out.println( volume totale + totale + litri ); }}

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

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

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

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.

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

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

La sintassi di Java (non completa) Exp::= Exp + Exp (Exp) Ide Literal new ConsoleReader (System.in); c.readline(); c.readdouble(); c.readint(); c.readchar();

Astrazione sui valori Introduzione di nomi con associati dei valori Esempio: public class Hello { public static void main (String [] args){ System.out.println( Come ti chiami "); ConsoleReader c=new ConsoleReader (System.in); String nome=c.readline(); System.out.println( Ciao "+nome);}}

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

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 ε

Composizione di istruzioni Condizionale: le istruzioni eseguite dipendono dal verificarsi o meno di una condizione. Due forme: Sintassi 1. if (Cond) C 1 else C 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

public class CalcolaMassimo2 { Esempio di condizionale: massimo di due numeri 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);"

Modifica di variabile: Sintassi 1. Ide = Exp Assegnamento 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

public class CalcolaMassimo3 { Esempio di condizionale: massimo di tre numeri 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);}}"

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. while 2. do - while 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.

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.

Esempio while: massimo di k numeri public class CalcolaMassimoKWhile { public static void main (String [] args){ final int k=10 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+" +i+" " numero> ");" n=c.readint(); if(n>max) max=n; i++; } System.out.println("Il valore massimo e` "+max);}}"

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.

Un altro iteratore il for Il for in Java è equivalente al while (vedi semantica) cambia solo la sintassi. Com::=... for ([T] Ide =Exp1; BE ; Ide=Exp2) C... contatore 1) Inizializzazione del contatore. Dichiarazione o assegnamento 4 corpo 3 aggiornamento del contatore 2) condizione

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

Esempio Figure geometriche 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 Cerchio 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:rettangolo 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}

faitriangolo: Esempio Figure geometriche:triangolo {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}

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.

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

Definizione e invocazione di sottoprogrammi public static Type Ide (Type Ide1, Type Ide2) {StmtList } tipo del risultato corpo del metodo... Ide(Val1,Val2)... parametri attuali parametri formali corrispondenza formali attuali nome metodo

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 )

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

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 )