vuoi
o PayPal
tutte le volte che vuoi
Informatica
Algoritmi
Una sequenza di azioni che, con dati in ingresso, risolvono un problema.
I compiti da un esecutore:
- Insieme di azioni (istruzioni)
- Di operazioni
- Corrispondenza univoca fra azioni e operazioni
- Semantica al linguaggio
Il linguaggio ha una sintassi formale
Programma = algoritmo
Scritto nel linguaggio del calcolatore: linguaggio di programmazione
Il calcolatore è un esecutore del nuovo linguaggio => linguaggio di programmazione
Un algoritmo scritto per un microprocessore è un programma.
Descrivere algoritmi
Si termina quando ogni azione può essere eseguita dall'esecutore.
Cosa serve:
- CPU - legge ed esegue il programma (esecutore)
- Tastiera/Monitor → I/O (per interazione)
- Memoria principale RAM: contiene il programma e i dati su cui agisce.
Come sono collegati fra loro:
Architettura
Come connettere questi componenti per farli dialogare
- Tutti con tutti
- +: elevata comunicazione
- -: non scala con il numero delle componenti (troppi collegamenti)
2a) VAN NEWMANN (schema di base dei calcolatori)
- Codice e dati sono nella memoria principale RAM
- Unico bus che connette tutti i dispositivi
- + Facilmente estendibile (appongo o tolgo facilmente dispositivi)
- + Facilmente standardizzabile
- - Saturazione del bus quando dispositivi ↑ (limite del bus = quando è impegnato in una comunicazione tra 2 dispositivi, nessun altro può comunicare)
- Soluz. = architettura multibus : posso trasferire dati da un hard disk all’altro senza occupare il bus principale
3a) HARVARD
- La CPU usa un bus di I/O + bus che va alla RAM codice + bus “ “ “ RAM dati
- + : ↑ prestazioni (posso fare 3 trasferimenti contemporaneamente)
- Sistema multicoore (più CPU)
UNITÀ di CONTROLLO
- prendi
- decodifica
- esegui
(l'unità di controllo prende un'istruzione dalla memoria)
per esaminare l'istruz. e vede che operaz. deve eseguire la AU:
ex. operator. somma rappresentat. come 00
operator. sottra. rappres. come 01
Gli input della AU sono i registri,
l'uscita (il risultato prodotto) va nei registri.
ad eseguire l'operazione tra i registri da AU produce risultati nei registri.
Dalla fase di decode: preleva il comando, lo invia alla AU (capisce quali registri sono coinvolti) ed esegue l'operaz.
ad eseguire indica al programmatore che vi sono stati stati
ex. se il processo lo ha richiede lo
Mi restituisce uno stato che va nel PSW.
BIT
da qui sappiamo al processo se l'operaz. ha generato un riporto.
Dimensione dei registri: architettura a tot. bit
ex. somma: l'uscita la varia se la ora bit si piega
nº di bit
Cifra digitale (il piú piccolo contenuto di inform. che può essere trasportato da un filo digitale).
EX. RAPPRESENTAZIONE DEI NUMERI
1) NUMERI NATURALI (X>0)
- L. interv. di rapp.: [0;2m-1]
- ESTENSIONE della RAPP.: Appingo zeri (tanti quanti sono gli spazi da riempire)
2) NUMERI INTERI CON SEGNO (C2) → *
- L. interv. di rapp.: [-2m-1; 2m-1-1]
- ESTENSIONE della RAPP.:
- COME la NOTAZ. POSIZIONALE se X>0
- AGGIUNGO uni in testa se X<0
3) RAPPRES. NUMERI
- (X)10 → (X)10
- NOTAZ. POSIZIONALE
A3 X3 + A2 X2 + A1 X1 + A0 X0
- (α)10 → (X)X
- ALGORITMO delle divisioni successive
α |X R0Y = |X Y1Y1 R2Y2 R3X -0 → STOP
- (X)
- M X>0
(* (X)c2/m =
- (X)mp/lm M X>0
- |X|mp/lm + 1 M X<0
Metodi per Stringhe:
- int: length();
- boolean: equals(String);
- int: indexOf(char c);
- String: substring(int inizio, int fine);
Conversione da int a String:
String s = String.valueOf(int a);
Conversione da String a int:
int a = Integer.parseInt(String s);
double a = Double.valueOf(String s);
boolean a = Boolean.valueOf(String s);
- 1 variabile è visibile quando è viva.
- 2 variabili con lo stesso nome.
- Una variabile "muore" con la riga di dichiarazione.
- La variabile "muore" con { che chiude il metodo in cui è stata definita.
- Un metodo "non vede" le variabili locali di altri metodi.