vuoi
o PayPal
tutte le volte che vuoi
NOT (A AND NOT B) AND (NOT B OR C)
Trasformare i caratteri minuscoli in caratteri maiuscoli. Nel codice ASCII i valori maiuscoli vengono prima dei valori minuscoli, per questo per trasformarli basta fare "a - A", visto che questa è una differenza fissa.
Float: variabile di tipo numerica che individua un numero con la virgola.
Questi tre programmi danno lo stesso risultato?
No, perché il primo e il terzo fanno un semplice prodotto, invece il secondo calcola il fattoriale del numero a.
Quando un dato viene assegnato si è subito in grado di conoscere quanta memoria occuperà, per esempio un carattere occupa sempre 8 bit.
Classificazione dei tipi in C:
- Predefiniti (possono essere solo semplici) Variabile intera
- Definiti dall'utente, possono essere:
- Semplici Variabile di tipo carattere
- Strutturati (complessi) Variabile di un numero con la virgola
Ne esistono di tre tipi:
- [signed/unsigned] int - Signed vuol dire che il numero ha il segno
- Unsigned vuol dire che il numero non ha il segno
dire che il numero è privo del segno- [signed/unsigned] short [int]- [signed/unsigned] long [int]La differenza tra int, short e long sta nello spazio allocato: ovviamente short occupa meno memoria, mentre long ne occupa di più.- Short di solito occupa 16 bit- Int ne occupa 16 o 32- Long tra 32 e 64 sp short sp int sp long 16- Se abbiamo 16 bit di spazio, e siamo nella modalità unsigned si possono rappresentare valori tra 0 e 2^16-1. Se invece siamo nella modalità signed si possono rappresentare valori tra -2^15 e 2^15-1.Le costanti INT_MIN e INT_MAX definiscono i valori minimo e massimo rappresentabili da un int.Per utilizzarle bisogna aggiungere la libreria <limits.h> z = a%bNelle operazioni il % è il simbolo che ci dà il resto di una divisione
void main(){ unsigned int a; int b; short c; long d;a = -10; numeri signedprintf("a = %d uso lo specificatore d\n", a);printf("a = %u uso lo specificatore u\n", a);b = 32766;
numeri unsigned printf("b = %d\n", b); c = b + b; valori short printf("c = % hd\n", c); d = b + b; printf("d = %ld\n", d); valori long b = b + b; printf("Nuovo valore di b: %d\n", b); d = 2147483650; Overflow printf("Nuovo valore di d: %ld\n", d);
Sono rappresentabili in 8 bit
È possibile fare le stesse operazioni che con i numeri
Andare a capo
Spostare il cursore verso destra sulla stessa riga (un po' come il tab)
Stampa solo il carattere
Stampa il codice ascii del carattere -3838
Occupa 4 byte. Ha una precisione di 6 cifre decimali e può rappresentare valori compresi tra 10 e 10 -308
308Occupa 8 byte. Ha una precisione di 15 cifre decimali e può rappresentare valori compresi tra 10 e 10 -4932
4932Occupa 16 byte. Ha una precisione di 34 cifre decimali e può rappresentare valori compresi tra 10 e 10
sp float sp double sp long double
Le divisioni coi reali sono diverse da quelle con gli interi:
Non esiste il perché
non ha senso fare il resto di una divisione non di numeri interi.
C'è un'altra libreria che comprende altre operazioni che si possono effettuare con i numeri reali:
- Stampa con virgola fissa
- Stampa con virgola mobile (cioè in notazione scientifica)
- Indica il numero di cifre dopo la virgola
Per esempio se devo fare operazioni tra variabili eterogenee, cioè di tipo diverso, l'operando di tipo inferiore viene temporaneamente convertito al tipo superiore.
int long unsigned unsigned long float double long double
lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica giorni Settimana S; nome tipo
Ad ogni valore viene associato un valore numerico: nome di variabile
lunedì, martedì, mercoledì, giovedì, venerdì, sabato, domenica
False, True
Può avere due valori: Vero o Falso.
Ci sono due modi per assegnare una costante:
const double PiGreco = 3.14
const <nome tipo> <nome>
costante> = <valore> #define PiGreco 3.14 #define <nome costante> <valore> - Array Sono ottenuti dall'aggregazione di altri dati - Struct Possono contenere più informazioni, ma devono essere tutte dello stesso tipo Acquisizione degli elementi nell'array Quando usciamo dal ciclo, i vale MAX_NUM. Quindi dopo nella stampa dobbiamo Stampa in decrementare i di 1, poiché l'ultimo spazio nella ordine inverso sequenza corrisponde a MAX_ NUM - 1. Va a cercare il terzo elemento della sequenza, e Modo per accedere agli elementi della sequenza gli attribuisce il valore 14 Ci sono due modi per dichiarare un'array - dichiarare prima il tipo di variabile e poi le variabili di quel tipo - dichiarare direttamente le variabili In questo caso devo scrivere ogni volta di che tipo di variabile si tratta È inoltre possibile creare un'array dentro un'altra array È un ciclo, ma differente dal while. Istruzione che deve essere eseguita prima diutilizzano i tag html per formattare il testo:usa in abbinamento con le array. entrare nel ciclo la prima volta
Condizione
Istruzione che deve essere eseguita alla fine di ogni ciclo
L'operatore di assegnamento (=) non è definito per gli array, cioè non si può imporre ad una array di essere uguale ad un'altra array, ma va fatto elemento per elemento.
Sequenze di caratteri rappresentate mediante array di caratteri
Con un singolo comando si è in grado di acquisire tutta la serie di caratteri
Terminatore di stringa: Non si mette il & perché str non contiene i valori precisi, Lo mette automaticamente la scanf ma contiene l'indirizzo per la prima cella dell'array. Permette di conoscere i caratteri
Per esempio voglio trovare le sottosequenze "ab", "ae" presenti all'interno di una stringa e "ai" all'interno della stringa
Sono come degli array, ma a due dimensioni
Di fatto sono array di array
Indici di colonna
Grazie agli indici di riga e di colonna si
Riesce ad individuare il valore corretto
Indici diriga Numero d righe Numero di colonne
Accedere agli elementi della matrice:
- Assegnamento di un valore a tutti gli elementi della matrice
- Assegnamento di un valore agli elementi di una colonna
- Ciclo innestato: ciclo dentro un altro ciclo
Solo se le matrici sono dello stesso tipo
La somma equivale alla somma dei singoli elementi in quella posizione
Solo se il numero di colonne della prima matrice è uguale al numero di righe della seconda matrice.
Numero di colonne della prima e delle righe della seconda.
La matrice risultante ha lo stesso numero di righe della prima matrice, e lo stesso numero di colonne della seconda matrice:
float a[N][M]
float b[M][L]
float c[N][L]
c[1][2] = 0
for (k=0; k<M; k++)
c[1][2] = c[1][2] + (a[1][k]*b[k][2])
Possono contenere più informazioni, anche di diverso tipo a differenza delle array.
Definizione di struct:
Dichiarazione di variabili:
Per accedere ad ogni campo della struct si usa la notazione punto
Per le
stringhe non è necessario il "&" nella scanf.
Programma che acquisisce due numeri complessi e ne fa la somma e il prodotto.
In C non esiste una variabile apposta per i numeri complessi, quindi posso usare sia gli array che le struct
0 = parte reale
1 = parte immaginaria
StructArray
A differenza degli array, con le struct posso utilizzare l'operatore di assegnamento
typedef int array[10]
typedef struct {
double Re;
double Im;
} complesso;
x2 = x1
complesso s1, s2;
s2 = s1
Non è invece possibile usare gli operatori di confronto ==, !=, > e < per le struct, ma bisogna farlo per ogni campo della struct.
Si possono fare varie combinazioni, per esempio array di struct, struct di array, struct di array di struct, ecc.
Programma che acquisisce rilievi altimetrici costituiti da latitudine, longitudine e altitudine, e poi stampa solo
quellicon longitudine pari È un'arrayPermette di accedere all'elemento [...] contenuto nell'archivio(arch) a(Tema d'esame luglio 2018) ( MATrix LABoratory )
In MatLab anche i numeri interi in realtà sono delle matrici 1x1
Tutto è un'array in MatLab:
- i numeri interi in realtà sono matrici 1x1
- un'array con una sola riga, o una sola colonna è detto vettore
- ci sono le vere e proprie matrici
- gli array con più di due dimensioni si chiamano: matrici multidimensionali
In MatLab quindi si possono anche fare prodotti tra matrici in modo molto semplice:
MatLab è un linguaggio interpretato, a differenza del C che invece è compilato, cioè bisogna prima completarlo tutto, perché vienetradotto solo dopo da un compilatore; in MatLab invece il programma è tradotto simultaneamente da un interprete.
In MatLab non bisogna dichiarare le variabili
Il tipo delle variabili è dinamico, cioè
può cambiare, ad una variabile si possono assegnare successivamente diversi tipi di valori. MatLab accetta comandi che seguono il "prompt": >>
Se si scrive "whos (variabile)", il programma mostra tutte le informazioni di quella variabile.
Se si scrive invece solo "who (variabile)", il programma mostra chi è quella variabile.
Nelle divisioni il risultato è con la virgola, questo perché MatLab non fa una divisione intera di default.
"eps" (che sta per ξ) indica la più piccola grandezza rappresentabile.
"real" restituisce la parte reale di un numero complesso, "imag" quella immaginaria.
"==" è l'uguale, "~=" è il diverso.
Per definire una matrice si scrive: a=[1 2; 3 4], dove ";" separa le righe.
Un vettore contiene più valori, per esempio: x=[-1.3 sqrt(3) (1+2)/5] (basta che siano separati almeno da uno spazio, non serve la ,).
Però se
si scrivex(5) = abs(x(1))
vuol dire che si vuole ingrandire il valore del vettore da 3 a 5, quindi al quarto elemento si da valore 0, al quinto il valore assoluto del primo valore.
Se si scrive b = a'
si ottiene una matrice girata rispetto alla matrice a, cioè si scambiano le righe e le colonne.
Per la somma basta fare: c = a + b
.
Il ";" blocca l'output, cioè blocca la visualizzazione del valore delle variabili nell'istruzione.
Per creare un array vuoto si scrive: a = []
.
I ":" creano un vettore di numeri, per esempio se si scrive x = 1:5
vengono scritti tutti i numeri compresi tra 1 e 5, estremi inclusi.
Se invece si scrive x = 1:0.5:5
il vettore di numeri non è più solo di naturali, ma parte da 1 e arriva a 5 con un passo di incremento di 0,5.