Estratto del documento

Basi di programmazione Java

Martedì 4 ottobre 2022

Trasferimento dati in LOAD o STORAGE.

Operazioni logiche.

Salti (alterazione del flusso).

Assembler

Codici mnemonici = parole che rimandano ad una istruzione.

Tradurre le parole della programmazione a numeri che eseguono le operazioni.

Una volta si programmava a numeri.

Codice Assembly.

Assemblatore codice eseguibile in formato macchina.

Problema: ogni CPU ha il suo Assembler e bisogna programmare in codice assembly che cambia per ogni CPU.

Linguaggi di programmazione

  • Fortran.
  • Basic.
  • Cobol.
  • Pascal.
  • C++.
  • Java.

Molto facile fare errori di sintassi per avere un linguaggio unico superiore alla CPU.

Compilatore: legge il programma e lo traduce in linguaggio macchina.

Si accorge di errori di sintassi.

Errori

  • Errori di sintassi.
  • Errori di struttura.

Cosa significa programmare

Risolvere un problema —> PROGRAMMA.

“Descrizione testuale dell'algoritmo risolutivo”.

Esecuzione del programma

Traduzione in programma gradito ad un linguaggio.

Rappresentazione con flow chart o con pseudo codici.

import java.util.Scanner

public class MassimoFraTreNumeri {

public static void main(String []) {

Scanner tastiera = new Scanner (System.in);

int pr_num, sec_num, ter_num, massimo;

System.out.print("inserisci il primo numero:");

pr_num = tastiera.nextInt();

}

...

print ln = new line.

Basi di programmazione Java

Trasferimento dati - in LOAD o STORE.

Operazioni logiche: registri.

Salti (alterazione del flusso).

Assembler: assemblatore.

Codici mnemonici: parole che rimandano ad una istruzione.

Traduzione del problema della programmazione ai numeri che eseguono operazioni.

Una volta si programmava a numeri.

Codice Assembly.

Problema: ogni CPU ha il suo Assembler e bisogna programmare ogni codice assembly che cambia per ogni CPU.

Linguaggi di programmazione

  • Fortran.
  • Basic.
  • Cobol.
  • Pascal.
  • C++.
  • Java.

Errori

  • Errori di sintassi.
  • Errori di struttura.

Cosa significa programmare

Risolvere un problema -> PROGRAMMA.

Esecuzione del programma

Import java.util.Scanner

public class MassimoFraTreNumeri {

Public static void main(String []) {

Scanner tastiera = new Scanner (System.in);

int pr.num, sec.num, ter.num, massimo;

System.out.print("inserisci il primo numero");

pr.num = tastiera.nextInt();

}

Ripeto per sec_num e ter_num.

massimo = fir_num

if (sec_num > massimo) massimo = sec_num

if (ter_num > massimo) massimo = ter_num

System.out.println("massimo=" + massimo)

} // chiusura main

} // chiusura classe

Paradigma imperativo e ad oggetti

Il paradigma imperativo vede un programma costituito da programmi da eseguire in sequenza dall’inizio alla fine, fatte salve le istruzioni condizionali ed i cicli.

Questo modo di procedere somiglia alla modalità di lavoro di un microprocessore.

Paradigma = regola / insieme di regole per rendere il programma + simile alla realtà si programma ad oggetti.

Nel paradigma ad oggetti esistono le classi, grazie alle quali si possono creare gli oggetti.

Tutti gli oggetti creati con la stessa classe hanno: gli stessi attributi (ma con valori diversi) e gli stessi metodi.

Attributi: variabili che con il loro valore definiscono lo stato di un oggetto.

Metodi: funzioni che definiscono le possibili operatività di oggetti.

Programmazione ad oggetti

Classe:

  • Ha un nome.
  • Indica attributi degli oggetti che contiene.
  • Contiene dei metodi.

Costruttore vuoto: setta gli attributi ai valori di default.

Costruttore non vuoto: definisce delle variabili con dei parametri.

Metodi SET (parametri): varia valori dei parametri e quindi degli attributi.

Metodi GET(): legge e restituisce il valore degli attributi.

// importazione librerie

// intestazione classe

// dichiarazione attributi

// costruttore vuoto

b = 0.0

h = 0.0

// costruttore non vuoto — se base > 0 definisce

// — Metodo definito

// poi lo richiamiamo quando serve

// Definisco metodo Area()

// Definisco metodo perimetro()

"Main" è la mano che usa la "classe" (stampo) per eseguire la sua funzione (recupera oggetti su quella forma).

Rettangolo r = new Rettangolo (base, altezza)

Costruttore prende attributi e li mette o definisce Rettangolo.

Attributi = entrambi variabili.

JVM non segnala l'overflow => devo usare i valori max e min delle classi (predentivi) per controllare che il valore non vada in overflow.

Se lavoro in virgola mobile e vado troppo alto mi viene fuori +∞.

Fondamenti di informatica pagina 14

Java

Progettato per Internet - Buona portabilità.

Creato da Sun - Poi venduto a Oracle.

1991.

Pro:

  • Semplice della concorrenza.
  • Consente di compilare un eseguibile per la Java virtual machine e non l'eseguibile per la CPU.
  • Ha tante librerie standard.

Java semplice ma per l'inizio è complicato scrivere cose anche facili.

JDK - Java Development Kit.

Fasi programmazione Java

  1. Scrittura codice sorgente - si usa un editor di testo.
  2. Compilazione del codice sorgente - codice eseguibile in linguaggio macchina.
  3. Esecuzione del programma.

Oggi si usano IDE (Integrated Development Environment).

Interfaccia che aiuta lo sviluppo di programmi.

Colori concessi.

Pulsante play non consentito.

Il codice eseguibile (byte code) è eseguibile per la Java Virtual Machine (JVM).

Conversione.

cmd > javac nome.java genera nome.class

Esecuzione programma.

cmd > java nome

Da bilanciare.

Portabilità - Efficienza.

Java è intermedio in ambiente e caratteristiche.

Se il programma non compila - prova ad esamene nulla.

Le classi

La fabbrica di oggetti.

Perché Java è un linguaggio OOP = object-oriented programming.

Parole chiavi

Identificano una classe come privata o pubblica.

Parole chiavi.

Identificano una classe come privata o pubblica.

Definiscono sinteticamente le funzioni in Java.

Per ogni programma max 1 classe public.

Metodo

Le sequenze di istruzioni o enunciati che descrivono come eseguire un certo compito.

Devono essere per forza dentro una classe.

Ogni programma ha almeno un metodo Main.

Il programma inizia da qui:

Seguito da parentesi che introducono un parametro (se richiesto dal metodo).

Senza virgola tra un parametro e l'altro.

Commenti

Per annotarsi cose nel programma:

Linguaggio tradizionale.

Il programma li salta.

"//" essenziale per gli enunciati (non nei commenti).

Metterlo il più possibile anche se si usa tempo per ricordarsi cosa si è fatto.

Output

Per avviare sul terminale o su altre interfacce e dipende dai comandi che si utilizzano.

Molte cose che programmiamo esistono già in librerie Java, ma noi dobbiamo imparare a programmare.

Errori

Facili da individuare = errori di sintassi/compilazione, l'editor di testo li individua.

Difficili da individuare = errori logici di esecuzione, l'editor di testo non li individua.

Trovarli è una delle skill importanti del programmatore.

A volte usiamo programmi specifici per trovarli (debugger) per risolvere bug.

Noi non li possiamo usare in questo corso.

Indentazione

Per rendere meglio e controllare gli errori del programma.

Variabili

Spazi di memoria identificati da un nome:

Si definisce con tipo nome.

Es: int id;

Definire una variabile.

Assegnare un valore ad una variabile: es: String outMessage.

Variabili / metodi iniziamo con lettera minuscola in appendice C.

Classi: iniziano con lettera maiuscola.

  1. Regole non compatibili che descrivono le funzioni ess: euro X euro.
  2. Il nome deve iniziare con una lettera e non deve avere parole riservate (tutti i caratteri riservati v. fine testo C).
  3. Ammettono underscore, numeri e iniziano con lettera minuscola.

...

L'identificatore → inizia con lettera minuscola.

snake_case → total_euro.

camelCase → totaleEuro.

Es. totale euro totaleEuro.

Calcola il valore a DX dell'uguale e lo assegna alla variabile a SX.

Definizione int lit; // valore precedentemente definito.

Assegnazione int lit = 2000.

Tipi numerici

Int numeri → non posso mettere virgola ma occupano meno spazio e il calcolatore più velocemente.

Float/Double numeri in virgola mobile.

Oggetti → iniziano con maiuscole.

Es. String greeting = "Hello, World!"

Classi → contenitore di metodi.

Fabbricano oggetti.

Metodi → usano metodi dei parametri che ho definito.

Esempi parametri () espliciti → parametri () → Definizione di un metodo → FIRMA.

public void println(String output)

Insieme di metodi → interfaccia pubblica.

public void replace(String target, String replacement)

Parametri.

Espliciti → scritti tra parentesi.

Impliciti → parametri vuoti ().

Variabili oggetto

Oggetti complessi → valore.

Crea un oggetto e lo salvo in una variabile, salvo un riferimento sulla sua posizione nella memoria.

Definire variabili oggetto.

Name_Classe Name_Oggetto;

Classe di allocazione Name Oggetto che abbiamo deciso.

Creazione oggetto.

New Name (classe o parametro)

//ho creato un oggetto     -> sui riferimenti

//Devo assegnare un suo riferimento ad una variabile oggetto

Name_Classe nomevar = .......;

Con int:

Def a = 10

Def b = a

b = 5

// ho modificato b ma non a

Con oggetti:

Def rettangolo a

Def rettangolo b = rettangolo a

valore rettangolo b

rect. ho modificato rettangolo a e [=] b

Lavoro sull'elemento.

Lavoro sui riferimenti dello stesso oggetto.

Devo prima creare 2 oggetti distinti e dare al secondo i dati dal primo.

Costruttore

Mi permette di creare un oggetto (non si può usare per altro).

Collaudare il proprio codice

Non bisogna mai scrivere tutto il codice e compilarlo solo alla fine perché facciamo sempre tanti errori.

Testare subito il codice.

Abbiamo una infinità di classi che possiamo usare per fare cose diverse (classi che si trovano nelle librerie standard).

Per usare una classe devo importarne il pacchetto.

import Name_Pacchetto. Name_Classe;

Input numeri/caratteri

int      numero intero      4 byte

byte  -128 < x < 127 1 byte

short   numero corto      2 byte

long   numero lungo      8 byte

double   Doppia precisione (x64 bit)  8 byte

float   singola precisione (x32 bit)   4 byte

char   x caratteri secondo Unicode   2 byte

boolean   2 valori logici (true/false)  1 byte

char x caratteri secondo Unicode 2 byte

boolean x valori logici (true/false) 1 byte

Operazioni aritmetiche

+ somma

- sottrazione

* prodotto

divisione

New operatore % resto.

2+b/2 ≠ (a+b)/2

Scartati resto se i numeri non sono definiti: int double.

7/2 = 1

7.0/4.0 = 1.75

7/2.0 = 3.5

7.0/4 = 1.75

7%4 = 3

Operazioni aritmetiche ad oggetti

*/+- non valgono se devo sommare/moltiplicare oggetti.

Devo usare operatori matematici implementati da una libreria.

a.moltipli(b) = 6

oggetto1 (vale 2)

oggetto2 (vale 3)

Costanti

Do un nome ad una costante → + leggibilità.

Se cambio basta cambiare 1 sola volta.

Final variabile non modificabile.

Serve per quando si lavora in team e non si vuole che altri modificano una variabile.

Come scrivere le costanti: NOME_COSTANTE.

Tutto maiuscolo.

Libreria Math

java.math.*

import java.math.*

Permette di fare operazioni + difficili (es potenza/radice).

Simboli matematici

t ++ t + 1

t -- t - 1

t+==somma e assegna il g valore che sta considerato

b=7

Metodo statico

println agisce su un oggetto.

Agisce su un variabile.

Math.round agisce sulla classe Math.

Dati, stringa

string = classe ...

Anteprima
Vedrai una selezione di 3 pagine su 9
Java - introduzione Pag. 1 Java - introduzione Pag. 2
Anteprima di 3 pagg. su 9.
Scarica il documento per vederlo tutto.
Java - introduzione Pag. 6
1 su 9
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Hexapod_258 di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Pretto Nicolò.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community