La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Introduzione al C Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Presentazioni simili


Presentazione sul tema: "Introduzione al C Corso di Programmazione Grafica e Laboratorio Daniele Marini."— Transcript della presentazione:

1 Introduzione al C Corso di Programmazione Grafica e Laboratorio Daniele Marini

2 Il linguaggio C Strutture di alto livello Controllo a basso livello Programmi efficienti Può essere compilato su un'ampia gamma di computer e SO

3 Il linguaggio C - Intro Programma minimo –main() { } Ogni programma C deve contenere una e una sola funzione main().

4 Struttura di un programma C Comandi per il preprocessore –# define, #include, #if, #endif, etc. Definizione di tipi –typedef, struct, etc... Prototipi di funzioni (dichiarazione) –int myFunc(int a, char b, float c); Variabili (globali) Funzioni (implementazione) –int myFunc(int a, char b, float c) { // implementazione } Main

5 Esempio (parte 1) #define MY_CONST 50// Pre-processor #include // Pre-processor typedef int vecInt[3];// type definition // function declarations void printVec(vecInt vec); int nPrint(vecInt vec, int times);

6 Esempio (parte 2) // function implementation void printVec(vecInt vec) { printf(“%d,%d,%d”,vec[0],vec[1],vec[2]); }

7 Esempio (parte 3) int nPrint(vecInt vec, int times) { int i;// local var for(i=0;i

8 Esempio (parte 4) int main(int argc, char *argv[]) { vecInt myVect; int res; myVec[0] = 1; myVec[1] = 8; myVec[2] = 4; res = nPrint (myVec, 4); return 0; }

9 Struct Viene allocata una stringa, un intero, un float –MiaStrutt s //s variabile di tipo MiaStrutt Accesso ai campi –s.c = ‘D’; s.num1 = 26; s.num2 = 77.7 typedef struct MiaStruttura { char c; int num1; float num2; } MiaStrutt;

10 Union Viene allocata un float (il più “grande” dei tre) –MiaUn u //u variabile di tipo union Accesso ai campi come in struct In vari momenti posso utilizzare una delle tre “possibilità” (devo applicare il casting) typedef union MiaUnion { char c; int num1; float num2; } MiaUn;

11 Casting “Forzatura” del tipo di una variabile int numint; float numfl=6.34; char let='A'; numint=(int)numflt; //assegna il valore 6 (parte intera) numint=(int)let;//assegna il valore 65 (codice ASCII)

12 Puntatori - 1 Un puntatore è una variabile che contiene l'indirizzo di memoria di un'altra variabile puntata int z; int *p; int val=7; //mettiamo che l’indirizzo di memoria sia 6F0 p = &val; //p ha valore 6F0 z = *p; //z ha valore 7 Utilizzati per –Gestione dinamica della memoria –Passaggio di parametri per indirizzo

13 Puntatori - 2 6F07 6F16F0 6F27 Indirizzo memoria Valore val z p int z; int *p; int val=7; p = &val; z = *p;

14 Puntatori - 3 Gestione dinamica della memoria float *misure; void allocaMisure(int numero) { misure = (float*)malloc(numero * sizeof(float)); } … allocaMisure(15); misure[10] = 3.14;

15 Puntatori - 4 Passaggio di parametri per indirizzo void cambia(int numero) { numero = 15; } void cambiaPtr(int *numero) { *numero = 5; } int i=10; cambia(i); // i vale sempre 10; ho passato il VALORE della var cambiaPtr(&i); // i vale 5; ho passato l’INDIRIZZO di mem

16 Dichiarazioni e Header Files Separare implementazione e dichiarazioni in diversi files // functions.h void printVec(vecInt vec); int nPrint(vecInt vec, int times); #include // implementation #include // call Link Header File

17 Compilazione e Link Compilazione –File.c compilati in file oggetto (.obj) –In generale un file.obj per ogni file.c Link –“Unisce” i file.obj più eventuale codice delle librerie

18 Bibliografia A. Kelley, I. Pohl, C Didattica e Programmazione, Addison-Wesley Italia, R. Sedgewick, Algoritmi in C, Addison-Wesley Italia,


Scaricare ppt "Introduzione al C Corso di Programmazione Grafica e Laboratorio Daniele Marini."

Presentazioni simili


Annunci Google