Sei sulla pagina 1di 2

Dichiarazioni/definizioni variabili Typedef enum {li metto in ordine sapendo che il primo corrisponde lo 0,al secondo l'1...

}unnomeacaso; Typedef int ; un tipo particolare di int che mi serve x distinguere questo dato dagli int; Typedef int nomedeltipo[n] ; array di n caselle (da 0 a n-1). (oppure dichiaro direttamente int nomeacaso[n]: senza il typedef perch il vettore c' gi predefinito). Typedef int nomedeltipo[n][m]; matrice di n righe e m colonne; Typedef char stringa[n]: una string di n lettere. Typedef struct { qui metto le cose in ordine tipo a int; b long;....} nome_della_struct; Poi per richiamare la cella metto nome_della_struct.campo_che_mi_serve(nella scanf metto& se il campo non una stringa). Per poi usarne una la devo prima dichiarare (nome_della_struct nome_varibile;) Short(int).../Int.../Long(int)...: interi di diverse grandezze Float.../Double.../Long double...: decimali con diverse cifre dopo la virgola Unsigned.. ...(variabile senza segno) Definizione costanti #define costantequalsiasi 39; metto questo dopo gli include in modo che sia usato in precompilazione. Const costantequalsiasi =; stesso effetto ma lo metto nelle variabili e lo uso in tutto il programma. Comandi printf(...%..,a); scanf(%..,&..); While (se condizione vera il ciclo continua ) if(condizione che deve essere vera x eseguire) else(se falso l'if) for(ci che fa prima del ciclo es inizializz cont , condiz. rimanenza nel ciclo pi altre eventuali vd sotto , ci che fa alla fine di ogni passaggio es. incremento/decremento) (NB se ho if in un ciclo posso eliminarlo mettendo la condizione nelle condizioni del ciclo). Tipi di dato %d intero %f float(virgola fissa) %u unsigned(per int e long) %lf long float(virg fissa) %e float (virg mobile) %.ke float (virg mobile con k cifre dopo la virgola) %c carattere (nella scanf uso gli apici '.....' e metto sempre dei \n per evitare operazioni doppie) %s stringa (non uso & in scanf, '\0' il carattere di fine stringa) \n a capo \t spazi Compatibilit tra tipi

char<short<int<long<unsigned(int)<unsigned long< float<double<long double CONVERTO SEMPRE NEL TIPO MAGGIORE


Include stdio.h(sempre) math.h(ho seno(sin),potenza(pow) e radice (sqrt)) string.h(per le operazioni sulle stringhe cm stlen e ) operazioni aritmetiche e logiche * /(tra interi risultato intero se no da float) %(resto tra interi) < (=) >(=) != == &&(and) ||(or) sin(seno) pow(potenza) sqrt(radice quadrata) strlen nomedellastringa; (dice qnt caratt ha una stringa escluso il caratt di terminaz) strcmp(parola1,parola2,nro di lettere da cfr) (cfr il nro di lettere di 2 parole: ris=o uguali,=1ordine alfabetico 2-1, =-1 ordine alfabetico 1-2). strcpy(parola1,parola2); copio in parola 1 la parola 2.

Notazioni particolari !variabilebooleana(variabilebooleana==falso); variabili boolenaine(vero=1 falso=0). i++(i=i+1); i(i=i-1). In scanf mettere string equivale a &string[0]. str{'a','b','c','\0'} come scrivere str{abc} Algebra booelana a and b =not(not a or not b) a or b=not(not a and not b) Codifiche numeri intero(1 bit segno + bit numero) complemento a 2 se positivo vedi sopra se no (2^n+p) poi in base 2 (oppure p con 1 e 0 invertiti e sommo 1). virgola fissa per parte intera complemento a 2 e per parte decimale moltiplico per 2 e la parte intera del risultato il valore del bit. Virgola mobile (un bit per il segno, n bit per l'esponente, m bit per la mantissa) segno(1 negativo 0 positivo) esponente(2^(n bit esponente-1)+ esponente della notazione esponenziale base 2) mantissa(numero calcolato in virgola fissa e poi sposto la virgola e moltiplico per 2^spostamento di virgola) (in ordine bit segno,bit esponente,bit mantissa) precisione singola(segno1,exp8,mantissa23),doppia(s1,exp11,mantissa52),quadrupla(s1,exp15,mantissa112) Programma MCD Divido il pi grande per il pi piccolo. Se il resto 0 quello se no faccio la stessa cosa con il resto e il pi piccolo finch il resto non diventa 0. Programma mcm dati due numeri a e b ogni volta sommo al pi piccolo il suo valore iniziale finch non trovo un mcm comune(cio quando in nuovi a e b sono uguali). Von Neumann Cpu: ALU, celle collegate alla ALU, IntR, CU, Clock, SR, PC, CIR. Bus: dati, indirizzi, controlli Periferiche: P(peripheral)CR, PDR, SR. Diagrammi Inizio e fine:ovale, Lettura:rettangolo con angolo spuntato, Stampa:rettangolo con lato sotto curvo, Condizioni:rombo. Algoritmo per inserire un valore in un vettore e spostare avanti i successivi for(i=valore massimo,i>valore del posto dove va il nuovo,i--) s[i]=s[i-1]; s[dove va li nuovo]=valore nuovo. Algoritmo per cancellare una valore dal vettore e spostare i successivi per eliminare il buco for(i= numero del posto del numero da eliminare,i>valore massimo,i-++) s[i]=s[i+1]; s[valore massimo]=0; Rotazione di 90 di una matrice for (i=0,i<n,i++) for(j=0,j<n,j+) mruot[i][j]=mvecchia[n-1-j][i]