Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoCosimo Nigro Modificato 10 anni fa
1
Corso di Programmazione Grafica e Laboratorio Daniele Marini
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 <stdio.h> // 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<times;i++) printVec(vec); printf(“\n”); } return i+1;
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
typedef struct MiaStruttura { char c; int num1; float num2; } MiaStrutt; 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
10
Union Viene allocata un float (il più “grande” dei tre)
typedef union MiaUnion { char c; int num1; float num2; } MiaUn; 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)
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 int z; int *p; int val=7; p = &val; z = *p;
Indirizzo memoria Valore int z; int *p; int val=7; p = &val; z = *p; 6F0 7 val 6F1 6F0 p 6F2 7 z
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 #include <functions.h> // implementation Header File // functions.h void printVec(vecInt vec); int nPrint(vecInt vec, int times); Link #include <functions.h> // call
17
Compilazione e Link Compilazione Link
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, 1996. R. Sedgewick, Algoritmi in C, Addison-Wesley Italia, 1993.
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.