Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
INFORMATICA:
scienza della rappresentazione e dell'elaborazione dell'informazione
- SCIENZA: conoscenza rigorosa e sistematica
- INFORMAZIONE: oggetto di investigazione scientifica (tutto ciò che un programma gestisce)
L'informatica è lo studio degli algoritmi che descrivono e trasformano informazione
ALGORITMO:
sequenza di istruzioni, definite con precisione, che portano alla realizzazione di un compito
caratteristiche:
- COMPRENSIBILITÀ senza ambiguità
- ESEGUIBILITÀ da parte di uno strumento (esecutore)
- TEMPO FINITO ovvero devono contenere un numero finito di passaggi, ciascuno eseguibile in un tempo finito
Il calcolatore non può prendere decisioni in situazioni vagamente ambigue
Per descrivere un algoritmo si può usare
- SEQUENZIALITÀ ISTRUZIONI (così le legge l'esecutore)
- COSTRUTTO CONDIZIONALE
- COSTRUTTO ITERATIVO
OBBLIGATORIO
METTERE RAMO "THEN" diretta espressione (i.f.) impone una scelta secondo logica booleana (vero o falso)
NON OBBLIGATORIA PRESENZA RAMO "ELSE" (va direttamente a inst_after)
• COSTRUTTO ITERATIVO
se expression è vera, si entra nel corpo del ciclo (si eseguano inst. del ciclo). Altrimenti si valuta se expr. è ancora vera o falsa (per esser un algoritmo deve fermarsi ad un certo punto)
PROPRIETÀ FONDAMENTALI ALGORITMI
CORRETTEZZA (O EFFICACIA): algoritmo risolve il compito senzaerrori o difetti.
EFFICIENZA: algoritmo usa le risorse in modo ottimale(-) (limite ragionevole)
Vedere esempi su ppt. Lez 1, slide 63-88
CALCOLATORE: patente esecutore di algoritmi
PROGRAMMA: algoritmo codificato in linguaggio comprensibiledal calcolatore
il programmatore deve → IDEARE ALGORITMO (risolvere un problemae schematizzazione, passaggi)
CODIFICARE ALGORITMOIN UN PROGRAMMA (conoscere ling. scelto)
I calcolatori sono in grado di operare con info binarie (0,1)
bit (binary digit): assume valore 0, 1 secondo stato fisico della cell. di memoria (alta o bassa tensione)
BIT È INDIVISIBILE
I/O (input/output): interfaccia che permette di interagire con il mondo esterno
MM: tavolo da lavoro della CPU, che legge solo MM, mai I/O.
Bus dati e bus indirizzi sono paralleli.
Bus indirizzi: stesse dimensioni registro indirizzi
Bus dati: stesse dimensioni registro dati
contiene un dato che voglio scrivere nella MM o che proviene dalla MM (quindi dimensioni una word)
CICLO DI LETTURA DELLA MEMORIA
- Voglio leggere ciò che c’è scritto in un indirizzo (es: #123). Il numero dell’indirizzo che si vuole leggere è scritto sul REGISTRO INDIRIZZI, collegato a BUS INDIRIZZI.
- Su BUS CONTROLLO MEMORIA viene incaricato di fare "read".
- Sull’indirizzo #123 c’è il dato 4): il REGISTRO DATI lo preleva dalla MM tramite il BUS DATI.
- BUS CONTROLLO MEMORIA prende un segnale da MM e invia il feedback alla CPU.
BUS INDIR
BUS DATI
BUS CONTROL
In un assegnamento, il valore a dx può essere:
- un numero o carattere
- il contenuto di una variabile
- un'operazione matematica (+, -, *, /, % modulo)
Istruzioni (o statement) sono frasi eseguibili, devono essere terminate da ;
Errori di sintassi - es.: anziché scrivere un ; scrivo direttamente in A
- Il compilatore se ne accorge e dà segnali d'errore
Errori semantici (di significato) il compilatore non se ne accorge perché è solo un traduttore → difficile da debuggare il codice
Tre tipi di istruzioni:
- assegnamento
- ingresso/uscita
- composte
es.:
a = a + 1Incremento di 1 (valore di a anche att.; tra)
a = a - 1Diminuisco di 1 il valore di a (anche a...a)
I caratteri alfanumerici char sono racchiusi tra apici singoli ' '
char y = 49;cambia sequenza binariachar y = '1';non è il numero 1, ma il carattere ASCII 1, che corrisponde a numero 49
Una variabile allocata di un tipo rimane PER SEMPRE di quel tipo e rimane allocata in quello stesso spazio
c = a/b; se c è un int, il risultato è un int (vengono troncati i numeri decimali)
d = a%b; in d c'è il resto della divisione intera tra a e b (tra float non avrebbe senso)
es: A∧C∧B∣∣C - operazione logica si svolge in sequenza
A∧B∣∣B A∧C∧B A∧C∧B∣∣C
TABELLA DI VERITÀ
0 0 1 1 0
COLONNA DI INGRESSI
USCITA
valori in ingresso sono 2n (in questo caso 3)
- valori booleani (V, F)
in ingresso ciò che cambia
Leggi di De Morgan
1. (a∧∧b) == !a ∣∣ !b 2. (a∣∣b) == !a ∧∧!b
es: A∧∧C∧∧B !! preciso — cerco sapere se !!( B∣∣ !(C∧∧A)
1° metodo: calco tabella veritá delle 2 espressioni
- se coincidano ingressi e uscite, allora sono equivalenti
2° metodo: applica De Morgan (utile se variabili sono tanti)
servono per definire condizioni in costr. iterativo e condiz.
COSTRUTTO if
es: int esempio;
if(expression) {
instr A;
instr b;
}
else {
instr c;
}
instr After;
if(expression) ti
{ corpo_if; }
else {
corpo_else;
} - then|case cosa fare se espr. è V
Keyword else si puo anche omettere se non si vuole fare niente quando if é falsa
expr è booleano (vale 0 o 1)
break fa uscire dal ciclo prima di verificare condizione(fa uscire da un blocco {} qualsiasi)
continue (SOLO NEI CICLI) fa saltare a iterazione seguente
while (...) { A if (...) continue B}se falsa esegue sia A che B
se vera ritorna a riga while
continue fa 'cortocircuito' ALL'INTERNO del ciclobreak fa uscire prematuramente dal ciclo
in for (...; ...; ...) se vera ritorna a rivalutare while il continue fa tornare qui (loop instruction)
variable flag → variabile a cui assegno valore 0 o 1per determinare veridicità
- bandiera bassa flag=0 → rimango nel ciclo
- bandiera alta flag=1 → segnala qualcosa
vedere esempio a slide
variabile flag dà intrinsecamente una soluzione che mi fa uscire dal ciclo → SO PERCHE' SONO USCITO DAL CICLO
posso dare messaggio diversose sono uscito in un modo o in un altro
LE COSTANTI IN C
per ogni variabile si può associare const in dichiarazione
VARIABILI DICHIARATE CONST NON POSSONO ESSERE VARIATE (no assegnamenti, no scambi, inizializzazione obbligatoria in dichiarazione)
così tutti quelli che ci mettono mano al programma sanno che è una costante
no V
sì V
V1 = V2 hanno stessa L = MAX
non v1[i] = v2[i-1]
(coppiette in ordine analogico)
se il primo è > 5 -> NO -> i2 rimane 0
se è accaduto i > 5 -> SI -> v2[i2] = v1[i-1] e i2 diventa i
EFFETTI
- ho compatto elementi significativi in cima a v2
- so lunghezza effettiva di v2 appena < dimensione di v2
STUDIARSELI CHE C'è AL ESAME
9/10/19
Strutture ARRAY DI CARATTERI
unica differenza è che
stringa termina per \0 (NUL)
caratteri a fine stringa
so per certo
QUANTO È LUNGA LA STRINGA, PERCHÉ
lo dice che dopo di lui c'è monnezza
come per ogni array si possono usare carattere per
carattere, ricordandosi di porre: s[n-i] = \0;