Anteprima
Vedrai una selezione di 10 pagine su 45
Appunti Informatica B Pag. 1 Appunti Informatica B Pag. 2
Anteprima di 10 pagg. su 45.
Scarica il documento per vederlo tutto.
Appunti Informatica B Pag. 6
Anteprima di 10 pagg. su 45.
Scarica il documento per vederlo tutto.
Appunti Informatica B Pag. 11
Anteprima di 10 pagg. su 45.
Scarica il documento per vederlo tutto.
Appunti Informatica B Pag. 16
Anteprima di 10 pagg. su 45.
Scarica il documento per vederlo tutto.
Appunti Informatica B Pag. 21
Anteprima di 10 pagg. su 45.
Scarica il documento per vederlo tutto.
Appunti Informatica B Pag. 26
Anteprima di 10 pagg. su 45.
Scarica il documento per vederlo tutto.
Appunti Informatica B Pag. 31
Anteprima di 10 pagg. su 45.
Scarica il documento per vederlo tutto.
Appunti Informatica B Pag. 36
Anteprima di 10 pagg. su 45.
Scarica il documento per vederlo tutto.
Appunti Informatica B Pag. 41
1 su 45
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Tipi di dati strutturati

I tipi di dati strutturati possono essere omogenei o eterogenei, cioè possono contenere variabili dello stesso tipo o di tipo diverso.

Un tipo di dato strutturato omogeneo è l'array, che rappresenta una sequenza di variabili omogenee. Gli array hanno un ordinamento con indici, che indicano la posizione delle celle dell'array.

La dichiarazione di un array avviene nel seguente modo: tipo nomeArray[dimensione];. Ad esempio, int vet[8]; dichiara un array di interi di dimensione 8.

Un array occupa una memoria dedicata, con un numero di celle contigue dichiarate. Questo permette al programma di impiegare meno tempo a trovare le celle del vettore, in quanto sono vicine tra loro. Per questo motivo, la dimensione dell'array viene dichiarata prima della compilazione.

L'indirizzo della prima cella dell'array può essere rappresentato come vet == &vet[0];. Senza niente, vet indica l'indirizzo di vet[0].

Spesso si ricorre alla definizione di costanti utilizzando #define, dichiarando un nome e un valore numerico. Questo permette di rendere il programma più flessibile e leggibile. A differenza di const, #define può essere utilizzato solo per interi.

eDIMENSIONI REALI: spazio dedicato nella RAM.quelle inizializzate all'inizio, DIMENSIONI EFFETTIVE: celle effettivamente utilizzate nel vettore. ARRAY DI CARATTERI #include Libreria: Possibilità: scanf ("%s", luogo); non si mette la &1. [ATTENZIONE: prima di luogo con le stringhe] gets (luogo); 2. quando finisce la stringa: tappo: '\0' Dobbiamo dire carattere (codifica ASCII = 0). Una parola di 7 lettere occupa in realtà 8 spazi. Dopo la stringa c'è sempre il carattere tappo, quindi contare i caratteri. Il tappo è utile ad esempio per la stampa della stringa. Differenza: scanf termina all'inserimento del primo spazio/invo. gets termina all'inserimento del primo invio. Per stampare a schermo: printf ("%s", luogo); FUNZIONI string.h Calcolare lunghezza stringa: strlen(stringa); len = strlen(stringa); Verificare coincidenza stringhe: 1. Confronto carattere per carattere fino alla lunghezza effettiva della stringa, fino al

tappo.strcmp (s1, s2)
2. Funzione: restituisce:
0 - uguali
- se sono<0 s1 precede s2
- se (in ordine alfabetico)>0 s2 precede s1
- se (in ordine alfabetico)

Copiare stringa in altra stringa
1. Carattere per carattere
strcpy (s1, s2); s2 in s1 incluso tappo.
2. —> copia il contenuto di carattere

Accodare due stringhe (creare una stringa con entrambe le stringhe)
1. Carattere per carattere
strcut (s1, s2); s2 alla stringa s1 incluso tappo alla fine.
2. (aggiunge il carattere solo di tutto).

Se scrivo:
char stringa [] = “ciao”; dimensione automaticamente 4
// la della stringa è
if (flag) se flag è “vero”, DIVERSO DA 0.
//mi chiedo cioè se è
ENUM STRUCT (altri tipi STRUTTURATI)
e ENUM (tipo enumerativo): rendono il codice leggibile.
non hanno troppa utilità, però
un’alternativa alla dichiarazione di variabili intere.
È enum {var1, var2, ... , varN };
valori da 0 a N-1 alle variabili in ordine
Assegnaenum {var1 = 1, var2, ...

Parte da 1

Oppure assegno i valori ad ogni variabile.

Es. enum {falso, vero};

Falso = 0

Vero = 1

STRUCT (dati strutturati): aggregare variabili eterogenee in una sola variabile.

permettono dicampi.

Le variabili aggregate sono dettestruct {tipo1 nomeCampo1;tipo2 nomeCampo2, nomeCampo3;...tipoN nomeCampoN;} nomeStruct1, nomeStruct2;

accederePer a una struct devo usare l’operatore “.” (dot).

nomeStruct1.nomeCampo2 = valoreVariabile;

Es. struct1 = struct2; STRUTTURE IDENTICHE),

Si può fare: (copia tutti i valori di 2 in 1 solo seNO! struct1 == struct2ma —> (confronti, come non era possibile con gli array).

TYPEDEF USER-DEFINED)(tipi di datonome con la Maiuscola distinguere da variabili,

Di solito: del tipo inizia (per con la minuscola).

nome_tOppure si identificano con (dove t sta per tipo).

tipi semplici strutturati.

Si possono creare a partire sia da checombinati a array o struct:

Sono utili se possono dichiarare un tipo di variabile fatta come unacerta struct o un

certo vettore, magari un vettore di struct. Es: <struct> Data oggi, ieri, domani; nuovo tipo all'interno di altri tipi, posso accedere al campo di un Posso anche usare -> cioè campo g = dip1.dataDiNascita.giorno; di una struttura: es: typedef E posso fare il sizeof su una struct che contiene uno o più altri tipi non semplici. MATRICI Tabelle di elementi ordinati, due indicicon (nell'ordine): riga; - di colonna. - di array multidimensionali due dimensioni): Sono (a tipo nomeArray[dim1][dim2]; Acquisizione: due cicli uno dentro l'altro. come array, ma con ARRAY MULTIDIMENSIONALI quante più dimensioni si desidera. Si possono mettere Nella RAM: salvato come "srotolato" riga un array multidimensionale (anche una matrice) viene per riga: le righe vengono poste una dopo l'altra nella memoria RAM, come per le celle del vettore. CONVERSIONI tipi diversi: Operazioni tra se non specifichiamo nulla: conversione implicita - -> automatica eseguita dal compilatore (non sempre

Possibile). Ogni espressione aritmetica è caratterizzata da (come sempre):

  • Valore - del risultato;
  • Tipo - del risultato. compile-time, tipizzazione forte

La fattibilità delle operazioni è valutata in a causa della di C. Ordine di precisione: char < short int < int < long int < float < double < long double

Regole generali:

PROMOZIONE: meno precisi in più precisi.

  1. Valori convertiti implicitamente più preciso.
  2. L'operazione è definita dal tipo risultato più preciso.
  3. Il è un valore del tipo conversione solo risultato,

N.B. La riguarda il il valore di partenza rimane del tipo di partenza.

Evitare conversioni unsigned.

N.B. con gli assegnamenti:

Stesse regole per gli Es.

double d;
int i;
d = i; // NON si perde informazione
i = d; // si PERDE informazione (il double viene troncato convertendolo in int)

Cosa Stampa? (int Ftemp = 50?

Cosa stampano le seguenti istruzioni se

  1. Ctemp = (5.0 / 9.0) * (Ftemp - 32);
  2. Ctemp

= (5 / 9) * (Ftemp - 32);

3. Ctemp = (5.0 / 9) * (Ftemp - 32);

4. Ctemp = 1.0 * (5 / 9) * (Ftemp - 32);

5. int Ctemp %d printf)?Se avessi dichiarato in (con in1) Celsius = 10.0 9.0 float /(5.0 e sono è divisione trafloat Ftemp int 32 int, variabile e e costante risultatointsottrazione ma la moltiplicazione causa conversione implicita(Ftemp 32) float)(promozione) di a2) Celsius = 0 9 int / int)(5 e sono diventa divisione tra3) Celsius = 10.0 float, 9 float(5.0 è è promosso a )4) Celsius = 0 (1.0 0)viene moltiplicato per5) Celsius = 10 (risultato float Ctemp,assegnato alla che èint possibile perdita di informazione)Informatica B, a.a. 20/21, Francesco Trovò

CAMBIO BASE101100010f)→ soBASE { }10 1-10 9CIFRE DISPOSIZIONEA →: 0po = ., ...↳ 1M -1324--7-10>+3.102+2 ÈPOSIZIONALE f-3124 a4tIo ]= -: .pitturare 5--0↳ vale MENOdi "^> ?/CIFRESE MCONSIDERO 0110> POSSIBILI 1NUMERI☐ →{ }DIZIONARIO 1-> 0,1 9OGNI escodifica

→ io =: . . . ...>8254 SIGNIFICATIVAMenola . ↳ PIÙ SIGNIFICATIVA }{ }P < 10 1710→ iDIZIONARIO 'sottoinsieme Di:> pmP topCON CIFRE DiBase° M Numeri→ ;}{}{ 1m> - piP + A)lo BiciD-> → Dizionario NUM BSSEPi ai' .io ..: = -. i. o)(bit 2M17OCALCOLATORI BINARIO° → BINARY DIGIT→ NUMERICON= diversiM Biti :ALTA✗ TENSIONE - 28=256Sbit NUMERIByte1tensioneBassa == [0%55] ][00000000,11111111}{ 6,7OITALE 4,52,3As 0,1: =i ,,,CODIFICA• { }ÈÈÈ ÈÈÈ> ESADECIMALE 8,96,70,112,3 4,5Ape , ,: ,,, ,, , ,CONVERSIONI NOTAZIONEdefBINARIO° DECIMALE di ESPONENZIALEinnum- : . 122+0.21+1.20=4+1--15110)(101b. =2↳ )(1 DISPARIconSE TERMINA → 10•: )(0 PARI→• 102°111111SE 1tutti 631SONO es = =-: . ÷^ ))( '.IEsi'IDEM• DITALE ESADECIMALE DECIMALE- : 530/2=2651-0 ^ """""DECIMALE INIZIOB.o 26512=1321 2DIVIDO PER 1ti- . /13212

866 16to 2E- = -o @ »,•a. +continuo %, " o⇐ oooooo☐ ,.3312 11-16=3 /CONSIDERO to816RESTII 2IL CONTRARIO =. / to8 42 =/4 to22 =212 to1= 1/ +o1 2 = 23=8DITALE Numeriyp.ae)g) 3( CIFRE( =BINARIO 38 cifraCIFREOGNI →-7° esadecimale qua- : > .az, ,.ua,) /( ,( CIFRE4 cifraOGNI →16 → 16a F)1%011,0=0--17RAGGRUPPATE FONDODALCIFRE Hexes: .SOMMA BINARIOIN RIPORTO→(1)0100TIN> COLONNA 1111: = PROBLEMA DI4 bit10011 PREDISPOSTOHAMA COMPUTER(1) →SOLO OVERFLOWSE ILSAREBBE001 1 → ,-↳ ( )bit di Carrey SCRIVERE traDA→?POSITIVI Negativi° }1 Negativo= }%? ;2^1+1 È![ 1)"

Dettagli
Publisher
A.A. 2020-2021
45 pagine
2 download
SSD Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cam.mel di informazioni apprese con la frequenza delle lezioni 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à Politecnico di Milano o del prof Trovò Francesco.