fondamenti di informatica -...
TRANSCRIPT
![Page 1: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/1.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 1
FONDAMENTI DI INFORMATICA
Prof. PIER LUCA MONTESSOROIng. DAVIDE PIERATTONI
Facoltà di IngegneriaUniversità degli Studi di Udine
La programmazione in linguaggio C
![Page 2: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/2.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 2
Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (iviinclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà degli autori prof. Pier Luca Montessoro e ing. DavidePierattoni, Università degli Studi di Udine.Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministerodell'Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione.Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni susupporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte degli autori. L'informazione contenuta in queste slide è ritenuta essere accurata alla data dellapubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senzapreavviso. Gli autori non assumono alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell'informazione). In ogni caso non può essere dichiarata conformità all'informazione contenuta in questeslide.In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devonomai essere rimossi e devono essere riportati anche in utilizzi parziali.
Nota di Copyright
![Page 3: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/3.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 3
specifichedel problema analisi algoritmo
programmasorgente
implem
entazione
compilazionee linking
programmaeseguibile
esecuzione
controllodei risultati debugging e correzione
del programma
Strumenti per la programmazione
![Page 4: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/4.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 4
Strumenti per la programmazionespecifiche
del problema analisi algoritmo
programmasorgente
implem
entazione
compilazionee linking
programmaeseguibile
esecuzione
controllodei risultati debugging e correzione
del programma
In questo corso non è previstol’utilizzo di sistemi di analisiautomatica né di strumentidi CASE (Computer AidedSoftware Engineering)
![Page 5: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/5.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 5
Strumenti per la programmazionespecifiche
del problema analisi algoritmo
programmasorgente
implem
entazione
compilazionee linking
programmaeseguibile
esecuzione
controllodei risultati debugging e correzione
del programma
TEXT EDITOR: programmaper scrivere file di testo (ASCII)Esempi: EDIT di MS-DOS,Notepad, Wordpad o Notepad++ diMS-Windows, gedit o emacs di Unix
![Page 6: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/6.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 6
Strumenti per la programmazionespecifiche
del problema analisi algoritmo
programmasorgente
implem
entazione
compilazionee linking
programmaeseguibile
esecuzione
controllodei risultati debugging e correzione
del programma
Compilatore C/C++ della GNU
Linguaggio C:gcc -o foobar.exe foobar.c
Linguaggio C++:g++ -o foobar.exe foobar.cpp
![Page 7: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/7.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 7
Strumenti per la programmazionespecifiche
del problema analisi algoritmo
programmasorgente
implem
entazione
compilazionee linking
programmaeseguibile
esecuzione
controllodei risultati debugging e correzione
del programma
In MS-DOS e in unix per eseguire un programma èsufficiente scriverne il nomesulla linea di comando,seguito da invio:
C:\PROGRAMMI> foobar
![Page 8: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/8.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 8
Strumenti per la programmazionespecifiche
del problema analisi algoritmo
programmasorgente
implem
entazione
compilazionee linking
programmaeseguibile
esecuzione
controllodei risultati debugging e correzione
del programma
Strumenti di base:• attenta analisi ragionata del codice• selezione di casi significativi• printf (per la stampa dei valori delle variabili)
Strumenti avanzati:• debugger
![Page 9: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/9.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 9
Utilizzo del compilatore GCC• Compilazione:
C:\PROGR> gcc -o nome.exe nome.c
• Esecuzione:C:\PROGR> nome
• Compilazione per il debugger:C:\PROGR> gcc -g -o nome.exe nome.c
• Esecuzione con debugger grafico:C:\PROGR> gdb nomeC:\PROGR> insight nomeC:\PROGR> nemiver prova
(versioni gcc precedenti alla 3)
(in ambiente Ubuntu)
![Page 10: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/10.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 10
Principi fondamentali
• “Implementare un algoritmo” significa tradurre una serie di operazioni aritmetico-logiche in procedure eseguibili dal calcolatore
• Tale traduzione è diversa a seconda del linguaggio di programmazione scelto
Un programma C è costituito fondamentalmente da variabili e funzioni
![Page 11: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/11.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 11
Variabili e funzioni
• Le variabili memorizzano i valori (o dati) in input e/o in output e quelli usati durante l’esecuzione
• Le funzioni sono sequenze di istruzioni, ossia operazioni da effettuare sui dati
![Page 12: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/12.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 12
Esempio: hello.c#include <stdio.h>#include <stdlib.h>
/* programma principale */
int main(){
printf ("Hello world!\n");return EXIT_SUCCESS;
}
/* fine del programma */
![Page 13: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/13.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 13
Esempio: hello.c#include <stdio.h>#include <stdlib.h>
/* programma principale */
int main(){
printf ("Hello world!\n");return EXIT_SUCCESS;
}
/* fine del programma */
Direttiva al preprocessor: include il file (del compilatore) stdio.h cheserve per l’utilizzo dellefunzioni di input/output
![Page 14: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/14.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 14
Esempio: hello.c#include <stdio.h>#include <stdlib.h>
/* programma principale */
int main(){
printf ("Hello world!\n");return EXIT_SUCCESS;
}
/* fine del programma */
Commento: viene ignoratodal compilatore
![Page 15: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/15.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 15
Esempio: hello.c#include <stdio.h>#include <stdlib.h>
/* programma principale */
int main(){
printf ("Hello world!\n");return EXIT_SUCCESS;
}
/* fine del programma */
Funzione main: tuttocomincia da qui
Corpo della funzione main
![Page 16: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/16.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 16
Esempio: hello.c#include <stdio.h>#include <stdlib.h>
/* programma principale */
int main(){
printf ("Hello world!\n");return EXIT_SUCCESS;
}
/* fine del programma */Istruzione per stampare la scritta"Hello world!" e poi andare a capo
Istruzione per terminare la funzione main (e quindi ilprogramma) restituendo al sistema operativo il valorenumerico associato, in stdlib.h, a EXIT_SUCCESS
![Page 17: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/17.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 17
Struttura di un programma• Ogni funzione è identificata da un nome• Il programma inizia sempre l’esecuzione a
partire da una funzione “speciale”: la funzione main
• Nei programmi C più semplici, tutte le operazioni da fare risiedono nella funzione main
• I programmi complessi prevedono che maininvochi altre funzioni, suddividendo le molte istruzioni in blocchi logici più semplici
![Page 18: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/18.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 18
Direttive al preprocessor
• La prima linea del programma:#include <stdio.h>
è comune a molti programmi C• Indica al compilatore di includere
automaticamente le funzioni della libreria standard di input/output stdio.h, come ad esempio la funzione di stampa su video printf ()
![Page 19: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/19.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 19
Commenti
• In ogni programma C è utile poter inserire dei commenti, a descrizione di quanto viene eseguito da una o più istruzioni
• La riga di commento:/* programma principale */
non contiene istruzioni C e quindi non viene processata dal compilatore
![Page 20: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/20.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 20
Input e output
• printf () è una funzione di uso generale offerta della libreria standard di input/output
• Nell’esempio, essa stampa sul monitor (lo standard output) semplicemente la sequenza di caratteri: Hello world!
![Page 21: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/21.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 21
Esempio: somma.c#include <stdio.h>#include <stdlib.h>
int main() /* somma due numeri interi */{
int num1, num2, somma;
printf ("inserire num1: ");scanf ("%d", &num1);
printf ("inserire num2: ");scanf ("%d", &num2);
somma = num1 + num2;printf ("num1 + num2 = %d\n", somma);
return EXIT_SUCCESS;}
![Page 22: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/22.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 22
Esempio: somma.c#include <stdio.h>#include <stdlib.h>
int main() /* somma due numeri interi */{
int num1, num2, somma;
printf ("inserire num1: ");scanf ("%d", &num1);
printf ("inserire num2: ");scanf ("%d", &num2);
somma = num1 + num2;printf ("num1 + num2 = %d\n", somma);
return EXIT_SUCCESS;}
dichiarazione di variabili intere
![Page 23: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/23.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 23
Esempio: somma.c#include <stdio.h>#include <stdlib.h>
int main() /* somma due numeri interi */{
int num1, num2, somma;
printf ("inserire num1: ");scanf ("%d", &num1);
printf ("inserire num2: ");scanf ("%d", &num2);
somma = num1 + num2;printf ("num1 + num2 = %d\n", somma);
return EXIT_SUCCESS;}
input di un intero (input formattato)
![Page 24: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/24.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 24
Esempio: somma.c#include <stdio.h>#include <stdlib.h>
int main() /* somma due numeri interi */{
int num1, num2, somma;
printf ("inserire num1: ");scanf ("%d", &num1);
printf ("inserire num2: ");scanf ("%d", &num2);
somma = num1 + num2;printf ("num1 + num2 = %d\n", somma);
return EXIT_SUCCESS;}
somma e assegnazione
![Page 25: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/25.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 25
Esempio: somma.c#include <stdio.h>#include <stdlib.h>
int main() /* somma due numeri interi */{
int num1, num2, somma;
printf ("inserire num1: ");scanf ("%d", &num1);
printf ("inserire num2: ");scanf ("%d", &num2);
somma = num1 + num2;printf ("num1 + num2 = %d\n", somma);
return EXIT_SUCCESS;}
stampa del risultato (output formattato)
![Page 26: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/26.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 26
Variabili e dichiarazioni
• Per poter essere utilizzate da un’istruzione, tutte le variabili di un programma C devono essere dapprima dichiarate
• Una dichiarazione stabilisce il tipo e il nomedi una o più variabili, come ad esempio: int numero;
• Il tipo di dato determina la natura della variabile, ovvero il modo in cui verrà trattata nelle successive operazioni
![Page 27: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/27.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 27
Variabili ed espressioni• L’istruzione
numero = numero * 20;
rappresenta di fatto la traduzione di due operazioni logiche distinte
• Dapprima viene valutata l’espressione a destra del segno =
• Il risultato di tale espressione è poi assegnatoalla stessa variabile numero, che viene dunque sovrascritta:
numero ← numero * 20;
![Page 28: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/28.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 28
Input e output formattato
• scanf () e printf () consentono di leggere e stampare dati formattati
• La funzione scanf () legge un dato dalla tastiera (lo standard input) e ne scrive il valore in una variabile (o locazione in memoria)
• Esse operano in modo diverso a seconda del tipo dei dati da manipolare (numeri interi, numeri floating point, stringhe di caratteri, singoli byte ecc.)
• L’input/output formattato in C è molto potente!
![Page 29: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/29.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 29
Funzioni e argomenti• Un metodo per comunicare dati alle funzioni
è quello di fornire ad esse una lista di valori, detti argomenti
• Le parentesi che seguono il nome della funzione racchiudono tale lista, come per:scanf ("%d", &numero);
• Esistono funzioni che non si aspettano argomenti: nell’esempio, main () ha la lista di argomenti vuota
![Page 30: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/30.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 30
Esempio: potenza.c#include <stdio.h>#include <stdlib.h>/* elevamento a potenza con moltiplicazioni successive */int main(){
int base, esponente, potenza, contatore;printf ("inserire base: ");scanf ("%d", &base);printf ("inserire esponente: ");scanf ("%d", &esponente);potenza = 1;contatore = 0;while (contatore < esponente){
potenza = base * potenza;contatore = contatore + 1;
}printf ("potenza = %d\n", potenza);return EXIT_SUCCESS;
}
struttura di controllo: ciclo while
![Page 31: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/31.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 31
Strutture di controllo• L’esempio precedente rappresenta una
possibile implementazione del calcolo dell’elevamento a potenza (esponente nonnegativo!)
• Il ciclo while è una struttura di controllo, il cui diagramma di flusso è:
Y
N
![Page 32: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/32.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 32
Strutture di controllo• Il costrutto: while (contatore < esponente){
potenza = base * potenza;contatore = contatore + 1;
}è un semplice ciclo iterativo
• Dapprima viene valutata la condizionecontatore < esponente
• Se tale espressione risulta vera, allora il blocco di istruzioni racchiuse tra le parentesi graffe viene eseguito e, alla fine, la condizione viene valutata di nuovo (iterazione)
![Page 33: FONDAMENTI DI INFORMATICA - web.diegm.uniud.itweb.diegm.uniud.it/pierluca/public_html/teaching/fpac/materiale... · Le slide possono essere riprodotte ed utilizzate liberamente dagli](https://reader031.vdocuments.mx/reader031/viewer/2022011807/5c65f63d09d3f2d12a8b8425/html5/thumbnails/33.jpg)
Fondamenti di Informatica - La programmazione in linguaggio C
© 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 33
Strutture di controllo
• Il ciclo while viene così ripetuto fino a che (while) la condizionecontatore < esponente è ancora vera
• Nell’esempio, le istruzioni interne al ciclo vengono eseguite un numero di volti pari al valore dell’esponente