Introduzione al linguaggio C Corso di Sistemi Operativi Laurea in Informatica
|
|
- Bartolomeo Savino
- 5 anni fa
- Visualizzazioni
Transcript
1 Introduzione al linguaggio C Corso di Sistemi Operativi Laurea in Informatica prof. ing. Corrado Santoro A.A
2 La storia del C Nasce negli anni '70 ai Bell Laboratories Nello stesso periodo, ai Bell Lab nasce anche Unix Il linguaggio è creato da Dennis Ritchie come evoluzione del linguaggio B di Ken Thompson, autore di Unix L'obiettivo era avere un linguaggio potente quanto l'assembly ma di alto livello e indipendente dalla piattaforma Il C si rivelò così potente che anche Unix venne riscritto in questo linguaggio Oggi, il C è standardizzato dall'ansi (ANSI-C) L'ANSI-C è dunque un'evoluzione del progetto originale di Kernighan & Ritchie, il quale è denominato appunto C K&R Corrado Santoro, Informatica, Introduzione al linguaggio C 2
3 C e Java a confronto Molto simili dal punto di vista sintattico Java è infatti derivato dal C++, versione OO del C Le dichiarazioni, i tipi di dato base e i costrutti del linguaggio sono praticamente identici Il C è imperativo (come Java) Il C non è object-oriented Il C permette un elevato controllo della macchina Il programma compilato ha prestazioni notevoli (sicuramente migliori di quelle di Java) Corrado Santoro, Informatica, Introduzione al linguaggio C 3
4 C e Java a confronto In C, il programmatore ha accesso diretto alla macchina Non esiste la virtual machine che disaccoppia il programma dalla macchina reale In C, la gestione della memoria è interamente demandata al programmatore Non c'è un garbage collector che rimuove la roba non più utilizzata, occorre rilasciare la memoria manualmente In C è presente il concetto di puntatore che permette l'accesso diretto alla memoria Derivato dal PASCAL, ma reso molto più flessibile Tutto questo comporta elevata flessibilità ma un rischio più elevato (risp. a Java) di scrivere codice non funzionante Corrado Santoro, Informatica, Introduzione al linguaggio C 4
5 C vs. Java: costrutti base Operatori aritmetici int i = i+1; i++; i--; i *= 2; +, -, *, /, %, Operatori relazionali e logici <, >, <=, >=, ==,!=, &&,,!, &,, ^, ~ Strutture di controllo if ( ) else while ( ) do while ( ); for(i=1; i <= 100; i++) switch ( ) case 1: continue; break; Corrado Santoro, Informatica, Introduzione al linguaggio C 5
6 Struttura di un sorgente C #include <stdio.h> #include <stdlib.h> int data; char string[30]; char * p; void func1 (int z) int func2 (void) Inclusione delle dichiarazioni delle funzioni di libreria Dichiarazione delle variabili globali Dichiarazione e implementazione delle funzioni int main (int argc, char * argv[]) Dichiarazione e implementazione dell main Corrado Santoro, Informatica, Introduzione al linguaggio C 6
7 Struttura di un programma C #include <stdio.h> #include <stdlib.h> my_main.c int main (int argc, char * argv[]) #include <stdio.h> #include <stdlib.h> void func1 (int z) int func2 (void) my_func.c Compiler Compiler Object files my_main.o my_func.o Librerie libc.a Linker myprog Executable Corrado Santoro, Informatica, Introduzione al linguaggio C 7
8 Hello world #include <stdio.h> hello.c int main (int argc, char * argv[]) printf( Hello world\n ); return 0; $ cc hello.c -o hello $./hello Hello world $ Corrado Santoro, Informatica, Introduzione al linguaggio C 8
9 Tipi di Dato: caratteri Carattere (1 byte), default con segno char c; [ ] signed char c; [ ] unsigned char c; [0..255] char x; x = 'a'; x = 193; x = 0x97; // singoli apici: espressione del carattere // intero: espressione tramite codice ASCII // intero in esadecimale: codice ASCII Corrado Santoro, Informatica, Introduzione al linguaggio C 9
10 Tipi di Dato: interi Intero (compiler-dependent, 16-, 32- o 64- bit), default con segno int c; signed int c; unsigned int c; int x; x = 43213; x = 0xfc00; Corrado Santoro, Informatica, Introduzione al linguaggio C 10
11 Tipi di Dato: interi Intero corto (16 bit), default con segno short s; [ ] signed short s; [ ] unsigned short s; [ ] Intero lungo (32 bit), default con segno long l; [ ] signed long l; [ ] unsigned long l; [ ] Intero lunghissimo (64 bit) long long l; Corrado Santoro, Informatica, Introduzione al linguaggio C 11
12 Hello world riveduto #include <stdio.h> hello.c int main (int argc, char * argv[]) int i; char c; for (i = 0; i < 10; i++) c = 'A' + i; printf( Hello world: %d, %c\n, i, c); return 0; Hello world: 0, A Hello world: 1, B Hello world: 2, C Hello world: 9, J Corrado Santoro, Informatica, Introduzione al linguaggio C 12
13 Hello world riveduto #include <stdio.h> hello.c int main (int argc, char * argv[]) int i; Dichiarazione variabile locale for (i = 0; i < 10; i++) del blocco for char c; c = 'A' + i; printf( Hello world: %d, %c\n, i, c); return 0; Hello world: 0, A Hello world: 1, B Hello world: 2, C Hello world: 9, J Corrado Santoro, Informatica, Introduzione al linguaggio C 13
14 Hello world riveduto #include <stdio.h> hello.c int main (int argc, char * argv[]) int i; NON VALIDA! Le for (i = 0; i < 10; i++) dichiarazioni di variabili char c; non posso essere precedute c = 'A' + i; da pezzi di codice! int j; j = i * ; printf( Hello world: %d, %c\n, i, c); return 0; Corrado Santoro, Informatica, Introduzione al linguaggio C 14
15 Hello world riveduto #include <stdio.h> hello.c int main (int argc, char * argv[]) int i; for (i = 0; i < 10; i++) char c; int j; Dichiarazione valida c = 'A' + i; j = i * ; printf( Hello world: %d, %c\n, i, c); return 0; Corrado Santoro, Informatica, Introduzione al linguaggio C 15
16 Funzioni Una funzione C è dichiarata nel seguente modo: TIPO_DI_RITORNO NOME_FUNZ(TIPO1 VAR1, TIPO2 VAR2, ); Es: void my_func (int param1); Tutte le funzioni sono pubbliche e non esistono i concetti di protected o private presenti nella programmazione OO E' importante l'ordine in cui le funzioni appaiono nel programma In genere la dichiarazione di una funzione deve precedere il suo utilizzo Se accade il contrario, la funzione viene considerata con Valore di ritorno di tipo int Tipi dei parametri uguali ai tipi dei valori passati durante l'invocazione Corrado Santoro, Informatica, Introduzione al linguaggio C 16
17 Funzioni: Esempio #include <stdio.h> hello.c void say_hello(int value) char c; c = 'A' + value; printf( Hello world: %d, %c\n, value, c); int main (int argc, char * argv[]) int i; for (i = 0; i < 10; i++) say_hello(i); return 0; La funzione say_hello è dichiarata e implementata prima di essere utilizzata Corrado Santoro, Informatica, Introduzione al linguaggio C 17
18 Funzioni: Altro esempio #include <stdio.h> hello.c int main (int argc, char * argv[]) int i; for (i = 0; i < 10; i++) say_hello(i); return 0; void say_hello(float value) char c; c = 'A' + (int)value; printf( Hello world: %f, %c\n, value, c); Il compilatore incontra la funzione say_hello prima della sua dichiarazione e implementazione: la funzione verrà considerata come int say_hello(int) Corrado Santoro, Informatica, Introduzione al linguaggio C 18
19 Funzioni: prototipi #include <stdio.h> void say_hello(int); int main (int argc, char * argv[]) int i; for (i = 0; i < 10; i++) say_hello(i); return 0; hello.c Quando occorre inserire l'implementazione di una funzione dopo il suo utilizzo è opportuno inserire prima la dichiarazione (prototipo) della funzione stessa. void say_hello(int value) char c; c = 'A' + value; printf( Hello world: %d, %c\n, value, c); Corrado Santoro, Informatica, Introduzione al linguaggio C 19
20 Funzioni e moduli Cosa accade se say_hello è definita e implementata in un file (modulo) esterno rispetto al sorgente che la vuole usare? Allora: Supposto che say_hello sia implementata in un sorgente my_func.c Occorre scrivere un header file my_func.h in cui riportare il prototipo delle funzioni di my_func.c Occorre includere nel sorgente che vuole usare le funzioni di my_func il file my_func.h in modo da acquisire i prototipi delle funzioni Occorre compilare i vari sorgenti e linkarli tutti insieme Corrado Santoro, Informatica, Introduzione al linguaggio C 20
21 Moduli: esempio #include my_func.h hello.c int main (int argc, char * argv[]) int i; for (i = 0; i < 10; i++) say_hello(i); return 0; my_func.h /* * Header file for * my_func.c */ void say_hello(int); #include <stdio.h> #include my_func.h void say_hello(int value) char c; c = 'A' + value; printf( Hello world: %d, %c\n, value, c); my_func.c Corrado Santoro, Informatica, Introduzione al linguaggio C 21
22 #include my_func.h Moduli: esempio hello.c int main (int argc, char * argv[]) int i; for (i = 0; i < 10; i++) say_hello(i); $ return 0; $ cc hello.c my_func.c -o hello $ cc -c hello.c $ cc -c my_func.c $ cc hello.o my_func.o -o hello $ #include <stdio.h> #include my_func.h my_func.h /* * Header file for * my_func.c */ void say_hello(int); void say_hello(int value) char c; c = 'A' + value; printf( Hello world: %d, %c\n, value, c); my_func.c Corrado Santoro, Informatica, Introduzione al linguaggio C 22
23 Altri tipi di dato Numeri in virgola mobile: float f; double d; f = 2.345; f = 2e-3; d = -1.2e37; Enumerazioni enum LUNEDI, MARTEDI, MERCOLEDI, ; enum LUNEDI = 1, MARTEDI, MERCOLEDI, ; Corrado Santoro, Informatica, Introduzione al linguaggio C 23
24 Uno sguardo alle lib di I/O La libreria stdio (standard I/O) contiene tutte le funzioni per l'input/output su console Le funzioni principali sono: int printf(char * fmt, ); Permette di stampare valori sullo schermo, formattandone opportunamente l'output int scanf(char * fmt, ); Permette di accettare valori da tastiera, secondo i tipi definiti nel formato indicato Corrado Santoro, Informatica, Introduzione al linguaggio C 24
25 printf Il primo parametro è una stringa in cui è presente il testo che va stampato a video Se occorre stampare variabili Esse vanno indicate come parametri aggiuntivi della printf Nel primo parametro, delle opportune sequenze contrassegnate con il carattere '%' indicano dove stampare le variabili e in che formato #include <stdio.h> int main (int argc, char * argv[]) int i = 10; printf( Il valore della variabile 'i' è %d\n, i); return 0; Corrado Santoro, Informatica, Introduzione al linguaggio C 25
26 printf Il primo parametro è una stringa in cui è presente il testo che va stampato a video Se occorre stampare variabili Esse vanno indicate come parametri aggiuntivi della printf Nel primo parametro, delle opportune sequenze contrassegnate con il carattere '%' indicano dove stampare le variabili e in che formato #include <stdio.h> #include <math.h> int main (int argc, char * argv[]) int i = 10; printf( La radice quadrata di %d è %f\n, i, sqrt(i)); return 0; Corrado Santoro, Informatica, Introduzione al linguaggio C 26
27 printf: principali formati %d intero con segno (in base 10) %u intero senza segno (in base 10) %x intero con segno (in base 16) %ld intero lungo (in base 10) %lu intero lungo senza segno (in base 10) %lx intero lungo (in base 16) %c carattere %s stringa %f numero in virgola mobile (float) %lf numero in virgola mobile (double) Corrado Santoro, Informatica, Introduzione al linguaggio C 27
28 printf: formati estesi E' possibile indicare, nel formato, il numero di caratteri da utilizzare (padding) e l'allineamento a destra o sinistra int i = 15234; printf ( %10d, i); Stampa il valore di i in uno spazio di 10 caratteri allineato a destra int i = 15234; printf ( %-10d, i); Stampa il valore di i in uno spazio di 10 caratteri allineato a sinistra float v = ; printf ( %7.2f, v); Stampa il valore di v in uno spazio totale di 7 caratteri, con 2 cifre dopo la virgola, allineato a destra Corrado Santoro, Informatica, Introduzione al linguaggio C 28
29 Array Un array (statico) in C si dichiara come in Java: TIPO NOMEVAR [ DIMENSIONI ]; int my_array[10]; char a_char_array[25]; Un array non è un oggetto, ma una sequenza di int, char, etc. La lunghezza non è pertanto nota a runtime Non è possibile usare costrutti del tipo my_array.length Non esiste un controllo di boundary a runtime E' tecnicamente possibile accedere oltre l'array Es: my_array[20] = 1; Questo provoca (in genere) un fault di memoria Corrado Santoro, Informatica, Introduzione al linguaggio C 29
30 Array #include <stdio.h> array.c int main (int argc, char * argv[]) int array[20]; int i; /* riempio l'array */ for (i = 0; i < 20; i++) array[i] = ((i * 20) + 5) % 16; /* stampo il contenuto dell'array */ for (i = 0; i < 20; i++) printf( Element %d is %d\n, i, array[i]); return 0; Corrado Santoro, Informatica, Introduzione al linguaggio C 30
31 Puntatori Un puntatore rappresenta una locazione di memoria che contiene un certo dato Un variabile di tipo puntatore contiene (può contenere) un numero che rappresenta la locazione di memoria dove è possibile reperire il dato Il puntatore è indicato, nella dichiarazione, dalla presenza del carattere '*' int i; // variabile intera int * p; // puntatore ad un dato di tipo intero Corrado Santoro, Informatica, Introduzione al linguaggio C 31
32 Puntatori: esempio int i; i = 10; 108 int * pi; pi = &i; i = & = operatore indirizzo di &i = 104 pi = 104 pi = 104 i = Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Corrado Santoro, Informatica, Introduzione al linguaggio C 32
33 Accesso tramite puntatori int i; i = 10; int * pi; pi = &i; La scrittura: *pi posta all interno di un codice C, significa accesso all informazione contenuta nella locazione di memoria puntata da pi pi = 104 i = pi = 104 punta alla locazione 104 la loc. 104 contiene la variabile i il cui valore è 10 *pi = 10; Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Corrado Santoro, Informatica, Introduzione al linguaggio C 33
34 Accesso tramite puntatori: esempio #include <stdio.h> pi = 104 int main(int argc, char *argv[]) int i = 10; i = 10 int * pi = &i; printf ( Il valore di i è %d\n, i); printf ( tramite pi è %d\n, *pi); *pi = *pi + 20; // incremento di 20 printf ( Il nuovo valore di i è %d\n, i); printf ( tramite pi è %d\n, *pi); Il valore di i è 10 tramite pi è 10 Il nuovo valore di i è 30 tramite pi è 30 Tipo (pi) = int * Tipo (*pi) = int Corrado Santoro, Informatica, Introduzione al linguaggio C 34
35 Puntatori e passaggio per riferimento #include <stdio.h> void f(int * z, int k) *z = *z + k; k *= 2; // shortcut per k = k * 2 z = 104 k = 30 V a ria b ili lo c a li d i f int main(int argc, char *argv[]) int i = 10; int j = 30; printf( i = %d, j = %d\n, i, j); f(&i, j); printf( i = %d, j = %d\n, i, j); i = 10, j = 30 i = 40, j = i = 10 j = V a ria b ili lo c a li d i m a in Corrado Santoro, Informatica, Introduzione al linguaggio C 35
36 Puntatori e passaggio per riferimento #include <stdio.h> void f(int * z, int k) *z = *z + k; k *= 2; // shortcut per k = k * 2 z = 104 k = 60 V a ria b ili lo c a li d i f int main(int argc, char *argv[]) int i = 10; int j = 30; printf( i = %d, j = %d\n, i, j); f(&i, j); printf( i = %d, j = %d\n, i, j); i = 10, j = 30 i = 40, j = i = 40 j = V a ria b ili lo c a li d i m a in Corrado Santoro, Informatica, Introduzione al linguaggio C 36
37 Passaggio per riferimento e scanf La funzione scanf serve per acquisire dati da tastiera Il primo parametro è una stringa in cui è sono indicati i tipi da acquisire da tastiera (tramite il carattere %) I parametri successivi sono i riferimenti alle variabili su cui inserire i valori letti da tastiera #include <stdio.h> int main (int argc, char * argv[]) int i; float v; printf( Inserisci un intero: ); scanf( %d, &i); printf( Inserisci un float: ); scanf( %f, &v); return 0; Corrado Santoro, Informatica, Introduzione al linguaggio C 37
38 Vettori e puntatori #include <stdio.h> int main(int argc, char *argv[]) int v[3]; int *pi; v[0] = 2; v[1] = 4; v[2] = 5; printf ( v[0] = %d\n, v[0]); printf ( *v = %d\n, *v); pi = v; printf ( *pi = %d\n, pi[0]); pi = 104 v [2] = 5 v [1] = 4 v [0] = v[0] = 2 *v = 2 pi[0] = 2 *pi = 2 Tipo (v[x]) = int Tipo (v) = int * Corrado Santoro, Informatica, Introduzione al linguaggio C 38
39 Aritmetica dei puntatori Sia data una variabile v puntatore ad un tipo T (T *), le seguenti scritture sono equivalenti (con x intero): v[x] *(v + x) Esempio: int v[3]; int *pi; pi = v; v[0] = 2; *(v + 1) = 4; *(pi + 2) = 5; Le operazioni sui puntatori sono quindi tipizzate Dal punto di vista numerico si ha v + x * sizeof(t) pi = 104 v [2] = 5 v [1] = 4 v [0] = Corrado Santoro, Informatica, Introduzione al linguaggio C 39
40 #include <stdio.h> #include <string.h> Stringhe Una stringa in C è un array di caratteri terminato dal carattere ASCII 0 (NUL) int main(int argc, char *argv[]) char str[8]; char * p; strcpy (str, Ciao ); printf ( str = %s\n, str); p = str; printf ( p = %s, *p = %c\n, p, *p); p = 104 str [7] = 0 str [6] = 0 str [5] = 0 str [4] = 0 str [3] = o 116 str [2] = a 112 str [1] = i 108 str [0] = C 104 NON VALIDA: str = Ciao 100 Strcpy = string copy int strcpy (char * dest, char * src); Corrado Santoro, Informatica, Introduzione al linguaggio C 40
41 Stringhe #include <stdio.h> int main(int argc, char *argv[]) char * str = Ciao ; printf ( str = %s\n, str); p = o a i C str = Corrado Santoro, Informatica, Introduzione al linguaggio C 41
42 Funzioni sulle stringhe Header file string.h int strcpy (char * dest, char * src); int strncpy (char * dest, char * src, int n); int strcmp (char * dest, char * src); int strncmp (char * dest, char * src, int n); Header file stdlib.h int atoi(char * s); long atol(char * s); float atof(char * s); Corrado Santoro, Informatica, Introduzione al linguaggio C 42
43 Puntatori non inizializzati Inserimento di un intero: int main(int argc, char * argv[]) int * pi; scanf( %d, pi); printf ( %d\n, *pi);?? pi Il programma va in crash perché la scanf tenta di riferire la zona puntata da pi, ma quest ultimo non è inizializzato! Corrado Santoro, Informatica, Introduzione al linguaggio C 43
44 Allocazione statica e dinamica #include <stdio.h> int main(int argc, char *argv[]) int i[3]; i [2] i [1] i [0] La dimensione del vettore è specificata nel sorgente ed è quindi nota a compile time Il vettore è allocato in memoria staticamente A volte non è possibile stabilire a priori le dimensioni di un vettore, le quali saranno note a run time (durante l esecuzione del programma). E quindi necessario disporre di un meccanismo che permetta di creare dinamicamente un vettore delle dimensioni volute. Corrado Santoro Santoro, Laboratorio Informatica, di Introduzione Informatica al Lezione linguaggio 2 CCdS Ing. Informatica Universita di Catania 44
45 Allocazione dinamica void * malloc (int size); Permette di allocare (riservare) una zona di memoria, delle dimensioni specificate, restituendone l indirizzo (puntatore) void free (void * p); Permette di liberare una zona di memoria precedentemente allocata. Ogni zona allocata deve essere liberata esplicitamente. IN C NON ESISTE IL GARBAGE COLLECTOR! Allocazione di un vettore di interi di dimensione n int * i; i = (int *) malloc (n * sizeof (int) ); Conversione di tipo da void * a int * Numero di elementi Dimensione di ogni elemento i [n-1] i [2] i [1] i [0] i = Corrado Santoro, Informatica, Introduzione al linguaggio C 45
46 Bubblesort con allocazione dinamica #include <stdio.h> #include <stdlib.h> int main(int argc, char * argv[]) int * array; int n, i; printf ( Inserisci il numero di elementi ); scanf ( %d, &n); array = (int *) malloc (n * sizeof (int)); if (array == NULL) printf ( Impossibile allocare la memoria richiesta\n ); exit (1); for (i = 0;i < n;i++) printf ( Inserisci l elemento %d, i); scanf ( %d, &array [i]); bsort (array, n); for (i = 0;i < n;i++) printf ( elemento %d = %d\n, i, array [i]); Corrado Santoro, Informatica, Introduzione al linguaggio C 46
47 Bubblesort con allocazione dinamica void bsort (int * x, int n) int i,j; int swap; for (i = 0;i < n;i++) for (j = 0;j < n-1;j++) if (x[j] > x[j+1]) swap = x[j]; x[j] = x[j+1]; x[j+1] = swap; Corrado Santoro, Informatica, Introduzione al linguaggio C 47
48 Strutture In C è possibile creare dati strutturati, cioè variabili composte da un insieme di tipi primitivi e/o altre strutture Esempio, rappresentazione del dato studente composto da nome e numero di matricola: struct studente char nome[30]; int matricola; stud1; struct studente stud2; Accesso al singolo elemento della struttura: notazione puntata stud1.matricola = 12345; strcpy(stud2.nome, Corrado Santoro ); Corrado Santoro, Informatica, Introduzione al linguaggio C 48
49 Strutture e puntatori struct studente char nome[30]; int matricola; stud1; struct studente * p; p = &stud1 Tipo (p) = struct studente * Tipo (*p) = struct studente (*p).nome p->nome (*p).matricola p->matricola p = 104 stud1.matricola stud1.nome [2] stud1.nome [1] stud1.nome [0] Corrado Santoro, Informatica, Introduzione al linguaggio C 49
50 Esempio: bsort con strutture #include <stdio.h> #include <stdlib.h> struct studente char nome [30]; int matricola; ; int main(int argc, char * argv[]) struct studente * array; int n, i; printf ( Inserisci il numero di studenti ); scanf ( %d, &n); array = (struct studente *) malloc (n * sizeof (struct studente)); if (array == NULL) printf ( Impossibile allocare la memoria richiesta\n ); exit (1); Corrado Santoro, Informatica, Introduzione al linguaggio C 50
51 Esempio: bsort con strutture for (i = 0;i < n;i++) printf ( Inserisci l elemento %d\n, i); printf ( Nome ); scanf ( %s, array [i].nome); printf ( Matricola ); scanf ( %d, &array [i].matricola); bsort (array, n); for (i = 0;i < n;i++) printf ( elemento %d = %s, %d\n, i, array [i].nome, array [i].matricola); void bsort (struct studente * x, int n) int i,j; struct studente swap; for (i = 0;i < n;i++) for (j = 0;j < n-1;j++) if (x[j].matricola > x[j+1].matricola) swap = x[j]; x[j] = x[j+1]; x[j+1] = swap; Corrado Santoro, Informatica, Introduzione al linguaggio C 51
52 Definizione di nuovi tipi La keyword typedef permette di definire un nuovo tipo a partire da quelli già presenti typedef VECCHIO_TIPO NUOVO_TIPO; Es: definizione di un intero senza segno typedef unsigned int u_int; u_int my_uint_variable; Es: definizione di un tipo associato alla struttura studente : typedef struct char nome[30]; int matricola; t_studente; t_studente elem1; t_studente * p_elem; Corrado Santoro, Informatica, Introduzione al linguaggio C 52
53 Il mistero di argc e argv int main(int argc, char * argv[]) int main(int argc, char ** argv) I parametri argc e argv della funzione main sono gli argomenti forniti da riga di comando quando si avvia il programma Esempio: myprogram 1234 test hello Gli argomenti sono delle stringhe argv è un array di puntatori a carattere (quindi un array di stringhe) argc è il numero di argomenti passati (dimensione dell'array) Corrado Santoro, Informatica, Introduzione al linguaggio C 53
54 Visualizzazione degli argomenti #include <stdio.h> #include <stdlib.h> int main(int argc, char * argv[]) int i; printf ( Numero di argomenti %d\n, argc); for (i = 0;i < argc;i++) printf( Argomento %d: %s\n, i, argv[i]); $ cc myprogram.c -o myprogram $./myprogram 1234 test hello Numero di argomenti 4 Argomento 0:./myprogram Argomento 1: 1234 Argomento 2: test Argomento 3: hello $ Corrado Santoro, Informatica, Introduzione al linguaggio C 54
55 That's all folks! DOMANDE?? Corrado Santoro, Informatica, Introduzione al linguaggio C 55
Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliJAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {
JAVA C import javautil*; public static class test { private int variable; public void main (String[] args) { variable = 0; Systemoutprintln( Variable is: + variable); #include int variable; int
DettagliPROGRAMMA = ALGORITMO
Corso di Laurea Scienze Prof. San. Tec., Area Tecnico-Assistenziale SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI Anno Accademico 2005-2006 Prof. Fausto Passariello Corso Integrato Metodologia della Ricerca
DettagliDichiarazioni e tipi predefiniti nel linguaggio C
Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo. Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori:
DettagliLezione 8: Stringhe ed array multidimensionali
Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si
Dettagli#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()
Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliIntroduzione alla programmazione. Alice Pavarani
Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello
DettagliStrutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
DettagliC: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento
DettagliL'Allocazione Dinamica della Memoria nel linguaggio C
L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego riochierego@libero.it http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria
DettagliStruct, enum, Puntatori e Array dinamici
Struct, enum, Puntatori e Array dinamici Tratti dal corso del Dr. Francesco Fabozzi Corso di Informatica Tipi di dato in C Abbiamo esaminato diversi tipi di dato che il C mette a disposizione dell utente
DettagliCorso di Informatica A.A
Corso di Informatica A.A. 2009-2010 Lezione 11 Corso di Informatica 2009-2010 Lezione 11 1 Utilizzo dei puntatori Funzioni Perche i Puntatori? I puntatori hanno tre importanti applicazioni: 1. Passaggio
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliLezione 5: Introduzione alla programmazione in C
Lezione 5: Introduzione alla programmazione in C Laboratorio di Elementi di Architettura e Sistemi Operativi 4 Aprile 2012 Introduzione al C C vs. Java Java: linguaggio ad oggetti C: linguaggio procedurale
DettagliTitolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.
Titolo presentazione INFORMATICA A sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliIl linguaggio C. Notate che...
Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017
DettagliVariabili e Funzioni. Informatica 1 / 19
Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
DettagliUnità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
Dettagli1
Manuali di C Linguaggio C B. W. Kernigan, D. M. Ritchie Jackson La guida completa al C H. Schildt McGraw-Hill Fondamenti di Informatica 1 Linguaggio C Creato nei primi anni 70 per sviluppare il S.O. Unix
DettagliC O P Y R I G H T ( C ) W W W. F O N D A M E N T I. I N F O
Il linguaggio C C O P Y R I G H T ( C ) 2 0 0 8 W W W. F O N D A M E N T I. I N F O P E R M I S S I O N I S G R A N T E D T O C O P Y, D I S T R I B U T E A N D / O R M O D I F Y T H I S D O C U M E N
DettagliIntroduzione alla programmazione in linguaggio C
Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008
DettagliCompendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)
Compendio sottoinsieme del C++ a comune col C (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Librerie 1/2 Il solo insieme di istruzioni di un linguaggio di programmazione
DettagliLinguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili
DettagliI/O da tastiera + Alessandra Giordani Lunedì 2 maggio
I/O da tastiera + costrutti while e if Alessandra Giordani agiordani@disi.unitn.it Lunedì 2 maggio 2011 http://disi.unitn.it/~agiordani/ Ripasso funzione printf() Usata per stampare il contenuto di una
DettagliInput/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari
Input/Output Lettura e scrittura Caratteri e Stringhe: Terminale e file Input/output console file caratteri stringhe formattato ascii binari Linguaggio ANSI C Input/Output - 1 La libreria standard del
DettagliCorso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica
Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare
DettagliVariabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free
Variabili dinamiche Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free 1 Tipi di variabili in C In C è possibile classificare le variabili in
DettagliLezione 11: Liste a Puntatori e Input/Output
Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)
DettagliUso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliEsercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliTipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna
Tipi e Valori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Tipi e Valori 2 / 26 Ringraziamenti prof. Mirko Viroli, Università
DettagliIntroduzione al linguaggio C Primi programmi
Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliLaboratorio di linguaggi
lezioni: lunedi 9-11, aula A al corso Laboratorio di linguaggi laboratorio in tre turni: martedi 11-13 () giovedi 9-11 () venerdi 11-13 (Andrea Grosso) laboratorio: iscriversi all esame Corso A LABORATORIO
DettagliLIBRERIE STANDARD in C. LIBRERIE STANDARD in C
LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle
DettagliI Fondamenti del Linguaggio
Linguaggio C I Fondamenti del Linguaggio Linguaggio di Programmazione Linguaggio formale per la descrizione di programmi per calcolatori Sintassi vicina al linguaggio umano Se non ci fossero, bisognerebbe
DettagliTipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
DettagliIngresso ed Uscita in C. Informatica 1 / 15
Ingresso ed Uscita in C Informatica 1 / 15 Input e Output in C Linguaggio C: progettato per essere semplice e con poche istruzioni Non esistono istruzioni di ingresso / uscita (I/O)!!! Ingresso ed uscita
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
DettagliLinguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin
Linguaggio C Vettori, Puntatori e Funzioni Stringhe Università degli Studi di Brescia Prof. Massimiliano Giacomin SCHEMA DELLA LEZIONE RELAZIONE TRA VETTORI E PUNTATORI (e le stringhe letterali come caso
DettagliPer quanto sappiamo finora, in C le variabili sono sempre definite staticamente. per variabili di tipo array, in cui dover
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente la loro esistenza deve essere prevista e dichiarata a priori Questo può rappresentare un problema
DettagliLIBRERIE STANDARD in C Le librerie standard
LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle
DettagliAllocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()
Allocazione Statica Finora abbiamo visto che le variabili sono sempre definite staticamente. Questo è un limite perché la loro esistenza deve essere prevista e dichiarata a priori. In particolare per variabili
DettagliAlfabeto ed elementi lessicali del linguaggio C
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Alfabeto ed elementi lessicali del linguaggio C Pietro Di Lena - pietro.dilena@unibo.it s t a t i c s h o r t l e g s ; i n
DettagliELEMENTI DI INFORMATICA. Linguaggio C
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica ELEMENTI DI INFORMATICA http://agile.diee.unica.it A.A. 2015/2016 Ing. Marco Ortu Diee, secondo piano Tel. 070-6755774 mail:
DettagliIntroduzione al C. Lez. 1 Elementi. Rossano Venturini
Introduzione al C Lez. 1 Elementi Rossano Venturini rossano@di.unipi.it Pagine del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start http://algoritmica.spox.spoj.pl/alglab2013 Lezioni
Dettagli! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente
! Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente!!la loro esistenza deve essere prevista e dichiarata a priori! Questo può rappresentare un problema soprattutto per variabili
DettagliGestione dei file. File di testo e binari
Gestione dei file Un file e definito come un oggetto, presente nel file system, costituito da una sequenza continua di bytes Un file, per poter essere utilizzato, deve essere aperto Successivamente e possibile
DettagliLezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione
DettagliLinguaggio C: Stringhe Valeria Cardellini
Linguaggio C: Stringhe Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Argomenti q
DettagliFondamenti di Informatica T-1 modulo 2
Fondamenti di Informatica T-1 modulo 2 Contenuti Parametri passati a linea di comando 2 Overview Il risultato del processo di compilazione/linking è un file eseguibile (un programma) Abbiamo visto almeno
DettagliIntroduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso
Introduzione al C Lezione 4 Allocazione dinamica della memoria Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso
DettagliUniversità degli Studi di Ferrara
Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2017-2018 Programmazione Lezione 4 il Linguaggio C Docente: Michele Ferrari - michele.ferrari@unife.it Nelle lezioni precedenti Problemi
DettagliLinguaggi di programmazione
Linguaggi di programmazione C LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell
DettagliIl blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio:
Variabili locali Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. void leggivettore(int v[], int dim) int i; /* i E UNA VARIABILE LOCALE */ for (i
DettagliUnità Didattica 5 Linguaggio C. Stringhe. Accesso a file ASCII. Strutture.
Unità Didattica 5 Linguaggio C Stringhe. Accesso a file ASCII. Strutture. 1 Stringhe Una stringa è una sequenza di caratteri (es: ciao, sd!n29dnqa ); In C non esiste una variabile di tipo stringa; Una
DettagliCaratteri e stringhe
Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un
DettagliIl linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1
Il linguaggio C I linguaggi di programmazione ad alto livello sono linguaggi formali ( sintassi e semantica formalmente definite) però sono compatti e comprensibili. Le tipologie di linguaggi sono: procedurali
DettagliIl linguaggio C Il linguaggio C. Caratteristiche del C. Caratteristiche del C. Linguaggi di Programmazione I. Ferdinando Cicalese
03-10-2003 Il linguaggio C Linguaggio general-purpose Il linguaggio C Creato nel 1972 nei Bell Labs da Dennis Ritchie su PDP11 Usato per il Sistema Operativo Unix da Ken Thompson Negli anni 80 nasce ANSI
DettagliFondamenti di Informatica 2
Fondamenti di Informatica 2 della prova scritta del 6 Aprile 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int x = -1; Scrivere la porzione di codice che inserisce
DettagliStruttura dei programmi e Variabili
Linguaggio C Struttura dei programmi e Variabili 1 La struttura generale dei programmi! Struttura del programma: Direttive Funzioni Dichiarazioni Istruzioni Di assegnamento direttive Di ingresso e uscita
Dettaglipuntatori Lab. Calc. AA 2006/07 1
puntatori Lab. Calc. AA 2006/07 1 Attributi di un oggetto nome o identificatore; tipo; valore (o valori); indirizzo; Lab. Calc. AA 2006/07 2 Indirizzo Consideriamo la dichiarazione con inizializzazione:
DettagliLinguaggio C: introduzione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi
DettagliTipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna
Tipi e Valori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - Tipi e Valori 2 Ringraziamenti prof. Mirko Viroli,
DettagliIl linguaggio C Gestione della memoria
Il linguaggio C Gestione della memoria Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - Gestione della memoria
DettagliLezione integrativa: Dal C++ al C
Lezione integrativa: Dal C++ al C Mario Sabbatelli smario@ce.unipr.it Palazzina 3 - int. 5792 www.ce.unipr.it/people/smario Contenuto della lezione Nel corso si utilizza l'ansi C Storia e standard panoramica
DettagliPassaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei paramet
Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment esterno Per riferimento
DettagliAllocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
DettagliConsideriamo un vettore allocato dinamicamente
Libreria per per la la gestione/manipolazione dei dei vettori Consideriamo un vettore allocato dinamicamente int * v; v = (int *) malloc (n * sizeof (int) ); Conversione di tipo da void * a int * Numero
DettagliPassaggio dei parametri
Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment
DettagliEsercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018
Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercizi sull allocazione dinamica della memoria in C Il codice di questi esercizi é contenuto nella cartella parte1 1. Implementare una lista
DettagliStruttura dei programmi C
Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte
DettagliIntroduzione al C. Lez. 1 Elementi. Rossano Venturini
Introduzione al C Lez. 1 Elementi Rossano Venturini rossano.venturini@isti.cnr.it URL del corso http://www.cli.di.unipi.it/doku/doku.php/informatica/all-b/start Lezioni - Lunedì 16-18 Aula M - Martedì
DettagliI puntatori. DD Cap.7 pp KP Cap.6 pp
I puntatori DD Cap.7 pp.245-280 KP Cap.6 pp.219-235 Cos è un puntatore Un puntatore è una variabile che assume come valore un indirizzo di memoria. Il nome di una variabile fa quindi riferimento ad un
DettagliPuntatori e array. Violetta Lonati
Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array
DettagliComplementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -
Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin
DettagliIntroduzione al C. Lez. 1 Elementi
Introduzione al C Lez. 1 Elementi Introduzione al C Strumento che adotteremo in queste esercitazioni per implementare e testare gli algoritmi visti a lezione Configurazione minimale suggerita: Editing
DettagliLinguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin
Linguaggio C Tipi predefiniti Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Il concetto di tipo (reprise) Nome che indica
DettagliLezione IX Gestione dinamica della memoria
Programmazione e Laboratorio di Programmazione Lezione IX Gestione dinamica della memoria Programmazione e Laboratorio di Programmazione: Gestione dinamica della memoria 1 Operatore sizeof() Buffer: una
DettagliProf. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C
Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi
DettagliIl linguaggio C Strutture
Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
Dettagli