Fondamenti di informatica

Ingegeneria Gestionale, Canale D-L

In questo corso:


Caratteristiche dei dispositivi elettronici

Calcolatrici, termometri digitali, telefonini, ecc, hanno in comune:

Da notare:

In alcuni dispositivi, delle parti possono mancare.


Tipi di dispositivi

Esempio banale: quello che succede quando si preme il tasto +

Nei dispositivi non programmabili succede sempre la stessa cosa. In quelli programmabili dipende dal programma che si sta eseguendo.


Esempio: il tasto +

su una calcolatrice semplice:
viene fatta la somma
su un computer:
se sta eseguendo un programma di calcolo, viene fatta una somma:

se si sta eseguendo un programma di videoscrittura, viene stampato il simbolo +, ecc

Il computer è sempre lo stesso.

Cosa succede se si preme + dipende dal programma che si sta eseguendo.

La calcolatrice fa sempre le stesse cose, il computer può fare cose diverse se opportunamente programmato.


Programmazione

I computer sono in grado di eseguire solo operazioni semplici.

Programma: specifica di cosa deve fare il calcolatore.

Il programma dice al calcolatore che cosa deve fare.

Sono istruzioni che il calcolatore deve eseguire.


Esempio di programma

Dati i coefficienti di una equazione di secondo grado a, b e c, calcola la radice:

calcola bb - 4ac
se viene positivo:
  calcola la radice quadrata
  calcola ( -b + radice(bb-4ac) ) / 2ac
  ...

Sono tutte istruzioni semplici.

Sono combinate a formare un programma che può essere anche complesso.


Eseguire più volte lo stesso programma

Vantaggio dei computer: una volta dato il programma, lo si può usare più volte.

Esempio: risolvere 20 equazioni di secondo grado.


Uso di un calcolatore

  1. specificare il programma
  2. eseguire il programma

Nella prima fase: viene detto al calcolatore cosa deve fare.

Nella seconda fase il calcolatore esegue, ossia fa quello che è stato detto.

La prima fase non è necessaria solo se il programma è stato già scritto da altri.

World, Excel, ecc. sono tutti programmi, scritti da altri.

In questo corso: come si scrivono i programmi.


Parti di un calcolatore

Come tutti i dispositivi elettronici:

  1. parte che riceve l'input
  2. parte che fornisce l'output
  3. parte dove vengono memorizzati i dati
  4. parte che elabora

CPU=parte che elabora.

Attenzione! Non è il contenuto del cabinet (uso improprio fatto dai commercianti).

La elaborazione avviene seguendo le istruzioni che stanno scritte nel programma.


Esempio di programma

Questo programma calcola le soluzioni di una equazione di secondo grado dati i suoi coefficienti a, b e c.

/*
  Soluzione equazione di secondo grado.
*/

class SecondoGrado {
  public static void main (String args[]) {
    double a=2, b=5, c=3;
    double d;
    double s1, s2;

    d=b*b-4*a*c;

    if( d==0 ) {
      s1=(-b - Math.sqrt( b*b -4*a*c ))/(2*a);
      s2=s1;
      System.out.println("Soluzioni coincidenti: " + s1);
    }

    if( d>0 ) {
      s1=(-b - Math.sqrt( b*b -4*a*c ))/(2*a);
      s2=(-b + Math.sqrt( b*b -4*a*c ))/(2*a);
      System.out.println("Soluzioni reali: " + s1 + " " +
s2);
    }

    if( d<0 ) {
      System.out.println("Soluzioni complesse");
    }
  }
}

Sembra complicato, ma non lo è!

Da notare:


Istruzioni di un programma

Tipi di istruzioni:

Ogni istruzione dice al calcolatore una cosa da fare.

Ogni istruzione usa una o più parti del calcolatore.


Come eseguire un programma

  1. scrivere il programma usando un editor di testi
  2. tradurre il programma (compilazione)
  3. eseguire il programma

La compilazione è necessaria perchè il programma, per essere eseguito, deve essere scritto in un linguaggio che il calcolatore è in grado di capire. Esempi si vedranno nel corso di calcolatori elettronici.


In pratica: inizio della sessione

Lo vedremo in pratica in laboratorio.

Si apre una finestra che usiamo per scrivere programmi ed eseguirli.


In pratica: per iniziare a scrivere un programma

Occorre scrivere il testo del programma.

Per iniziare a scrivere, usare notepad (scrivere notepad nome.java nella finestra nera).

Si apre una finestra in cui possiamo scrivere il programma. Per prima cosa viene chiesto se il file va creato. Rispondere si.


In pratica: scrivere un programma

Nella finestra bianca (blocco note), scrivere un programma.

Un esempio di programma:

class Primo {
  public static void main (String args[]) {

    System.out.println("Una sequenza di caratteri qualsiasi");
  }
}

Va scritto nel blocco note.

Paragone:

penna:
strumento per scrivere su carta ("memorizza" su carta)
notepad:
strumento per scrivere su computer (memorizza sul computer)

Salvare il programma

File->Salva

Il salvataggio è la memorizzazione permanente del programma.

È necessario per poter poi tradurre e usare il programma.


In pratica: la traduzione di un programma

Il programma sta sul calcolatore.

Il calcolatore non lo può eseguire.

Serve un passo di traduzione.


In pratica: la esecuzione di un programma

Si dice al calcolatore di eseguire il programma.

Il calcolatore fa quello che gli è stato detto.

Il programma diceva al calcolatore di stampare ABCDEF, e lui l'ha fatto.


Cosa è successo?

Abbiamo semplicemente effettuato i vari passi:


Modificare un programma già scritto

Se notepad è stato già chiuso, lanciarlo di nuovo.

Dato che il file già esiste, non viene chiesto di crearlo.


Eseguire due istruzioni in sequenza

Scrivere le istruzioni di seguito.

class Primo {
  public static void main (String args[]) {
    System.out.println("ABCDEF");
    System.out.println("Altra stringa");
  }
}

Le istruzioni vengono eseguite una per volta, in ordine.

Occorre di nuovo salvare il file.

Il programma va nuovamente tradotto ed eseguito.

Viene stampato:

ABCDEF
Altra stringa

Gli spazi bianchi

Per ora, non diamo la regola generale.

Diciamo solo:


Schema di programma

Non diamo la sintassi esatta.

Per ora diciamo che le due parti iniziali e finali di un programma sono fatte cosí:

class nomeprogramma {
  public static void main (String args[]) {

    ...

  }
}

Le istruzioni vanno messe in sequenza al posto dei puntini ...

Il nome del programma è il nome del file senza la parte .java

Non si possono mettere spazi all'interno del nome del programma.


Esercizio

Scrivere un programma che stampa, su tre righe diverse, il proprio nome, data di nascita e luogo di residenza.

tempo: 3 minuti.

In aula: scrivere il programma su carta.

In laboratorio: scrivere sul computer, tradurre ed eseguire.


Soluzione

L'istruzione System.out.println("..."); stampa quello che c'è fra le virgolette.

Nel nostro caso, abbiamo tre righe da stampare.

Servono tre istruzioni, da eseguire in sequenza.

class TreRighe {
  public static void main(String args[]) {
    System.out.println("Aristide Coluzzi");
    System.out.println("4/12/1934");
    System.out.println("Rovereto");
  }
}

Come scrivere, tradurre ed eseguire il programma: come visto prima.
(notepad, javac, java)


Correzione dei programmi

Regola generale: la prima versione di un programma è sbagliata.

class TreRighe {
  public static void main(String args[]) {
    System.out.println("Aristde Coluzzi");
    System.out.println("4/12/1934");
    Systm.out.println("Rovereto");
  }
}

Ci sono due errori. Trovarli e correggerli.


Errori nel programma

I due errori sono:

L'effetto del primo errore è che viene stampato il nome sbagliato.

Il secondo errore causa un errore di compilazione:
javac non riesce a tradurre il programma.

javac infatti dà il messaggio:

TreRighe.java:5: cannot resolve symbol
symbol  : class out  
location: package Systm
    Systm.out.println("Rovereto");
         ^
1 error

Due tipi di errore

sintattici
l'errore Systm è sintattico: il programma non è scritto correttamente nel linguaggio
di logica
il programma rispetta le regole del linguaggio, per cui può venire compilato ed eseguito; però non fa quello che dovrebbe

Paragone con il linguaggio umano: "questo è una tavolo" è un errore sintattico, perchè al posto di una va scritto uno. Però il significato è corretto.

La frase "siamo nell'anno 1998" è sintatticamente corretta (rispetta le regole dell'italiano); è però una affermazione falsa


Correzione degli errori

Attenzione: solo il primo errore è sicuro: gli altri sono solo "possibili" errori.


24 Errors!

Un esempio di programma con un errore:

class MoltiErrori {
  public satic void main(String args[]) {
    System.out.println("Aristde Coluzzi");
    System.out.println("4/12/1934");
    Systm.out.println("Rovereto");
  }
}

Errore: satic invece di static

Messaggio di errore di javac:

===============================================
MoltiErrori.java:2:  expected
  public satic void main(String args[]) {
               ^
MoltiErrori.java:6: ';' expected
  }
   ^
MoltiErrori.java:2: cannot resolve symbol
symbol  : class satic  
location: class MoltiErrori
  public satic void main(String args[]) {
         ^
3 errors
===============================================

I primi programmi di 10 righe generano 24 messaggi di errore.

Gli errori veri di solito sono due o tre.


Errori di logica

Una volta corretti gli errori sintattici, il programma si può eseguire.

Se java nomeprogramma non fa quello che ci si aspetta, il programma va modificato.

Questi errori possono essere molto difficili da individuare.


Creazione di un programma: fasi effettive

È spesso necessario correggere/compilare/eseguire il programma più volte.


Riassunto