La programmazione in linguaggio C

Documenti analoghi
Linguaggio C Debugging

Linguaggio C I puntatori

Codifica dei numeri interi positivi e negativi

Input/output in C e in C++

Linguaggio C Struttura dei programmi

Linguaggio C Struct e union

Architettura del processore. Modello di calcolatore. Caratteristiche del processore. Caratteristiche del processore. Fondamenti di Informatica

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Codifica del video

Controllo e correzione degli errori

Codifica dei segnali audio

Tecniche di compressione senza perdita

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Compressione audio

IL CABLAGGIO STRUTTURATO DI CATEGORIA 6

2001 Pier Luca Montessoro, Davide Pierattoni (si veda la nota di copyright alla slide n. 2) Fondamenti di Informatica.

La voce di Elvis Presley, la chitarra di David Gilmour e le funzioni di callback in linguaggio C

Trasmissione bilanciata e amplificatore differenziale

Memoria cache. Memoria cache. Miss e Hit. Problemi. Fondamenti di Informatica

Linguaggio C Variabili e tipi di dato

Linguaggio C: introduzione

RETI DI CALCOLATORI. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine

Libreria in linguaggio C per elaborazione audio in real time

Gestione della memoria per sistemi multiprogrammati. Obiettivi. Partizioni fisse. Partizioni fisse. Fondamenti di Informatica

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

Primi passi col linguaggio C

Shielding. E.M.I. Shield e Grounding: analisi applicata ai sistemi di cablaggio strutturato. Pier Luca Montessoro.

Progettazione delle dorsali in fibra ottica

Mobile IP Mobilità nelle reti IP Mario Baldi Politecnico di Torino

Gestione dei processi

Linguaggio C Espressioni e operatori

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

IL PRIMO PROGRAMMA IN C

Internet and Intranet Access

Memoria cache, interrupt e DMA

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

1999 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

Interconnessione di reti IP

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Reti logiche

Linguaggio C - sezione dichiarativa: costanti e variabili

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Elementi di informatica

C 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

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Il linguaggio C Il linguaggio C. Caratteristiche del C. Caratteristiche del C. Linguaggi di Programmazione I. Ferdinando Cicalese

Programmazione I - Laboratorio

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C

Algoritmi e basi del C Struttura di un programma

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Linguaggio C Compilazione, linking e preprocessor

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Esercizi di Addressing. Fulvio Risso Guido Marchetto

Un semplice programma L ambiente di sviluppo Dev-C++ Codifica del programma Compilazione e correzione errori Esecuzione e verifica

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Istruzioni iterative (o cicliche)

Linea di comando. Compilazione. Aprire una shell di DOS tramite:

Corso di Calcolatori Elettronici Un computer è un dispositivo in grado di eseguire dei calcoli e di prendere delle decisioni logiche.

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Le funzioni, e le istruzioni di input/output

Informatica! Appunti dal laboratorio 1!

Linguaggio C. Appunti per il corso di Laboratorio di Algoritmi e Strutture Dati. Stefano Aguzzoli

2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

RETI DI CALCOLATORI. Nota di Copyright. Passi progettuali necessari. Esercitazione 1. Progetto di un sistema di cablaggio strutturato

Perché il linguaggio C?

Il linguaggio di programmazione Python

Le direttive del Preprocessore

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Variabili e Istruzioni

RETI DI CALCOLATORI E APPLICAZIONI TELEMATICHE

La programmazione nel linguaggio C

Programmi per calcolo parallelo. Calcolo parallelo. Esempi di calcolo parallelo. Misure di efficienza. Fondamenti di Informatica

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

prova.c #include <stdio.h> char funzione(char); codice oggetto del main()

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

CORSO DI ELEMENTI DI INFORMATICA

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Il linguaggio C - Introduzione

Linguaggio C La libreria standard

Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dall'Algoritmo al Programma

Introduzione al linguaggio C

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Fortran in pillole : prima parte

Algoritmi e soluzione di problemi

Il compilatore Dev-C++

Esercitazione 4. Comandi iterativi for, while, do-while

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Informatica Applicata Laboratorio 1. Ing. Antonella Dimasi

Input/Output di numeri

Linguaggio C: Introduzione ad ambienti di sviluppo integrati (IDE) e a Dev-C++ Università degli Studi di Brescia

Programmazione. Andrea Passerini Informatica. Programmazione

Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define

Laboratorio di Calcolo Linguaggi di programmazione

Preprocessore, linker e libreria standard

I/O INTERATTIVO. scanf: quello che è indispensabile sapere printf: quello che è utile sapere

Transcript:

FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine La programmazione in linguaggio C 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 1

Nota di Copyright 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 (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà degli autori prof. Pier Luca Montessoro e ing. Davide Pierattoni, 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 Ministero dell'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 su supporti 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 della pubblicazione. 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 senza preavviso. 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 queste slide. In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali. 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 2

Strumenti per la programmazione specifiche del problema analisi algoritmo controllo dei risultati esecuzione debugging e correzione del programma implementazione programma eseguibile compilazione e linking programma sorgente 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 3

Strumenti per la programmazione specifiche del problema analisi algoritmo controllo dei risultatiin questo corso non è previsto l utilizzo di sistemi di analisi automatica né di strumenti di CASE (Computer Aided Software Engineering) esecuzione debugging e correzione del programma implementazione programma eseguibile compilazione e linking programma sorgente 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 4

Strumenti per la programmazione specifiche del problema analisi algoritmo TEXT controllo EDITOR: programma per dei scrivere risultati file di testo (ASCII) Esempi: EDIT di MS-DOS, esecuzione debugging e correzione del programma Notepad, Wordpad o Notepad++ di MS-Windows, gedit o emacs di Unix implementazione programma eseguibile compilazione e linking programma sorgente 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 5

Strumenti per la programmazione specifiche analisi del problema Compilatore C/C++ della GNU algoritmo Linguaggio C: controllo gcc -o foobar.exe foobar.c dei risultati esecuzione debugging e correzione del programma Linguaggio C++: g++ -o foobar.exe foobar.cpp implementazione programma eseguibile compilazione e linking programma sorgente 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 6

Strumenti per la programmazione specifiche del problema analisi algoritmo controllo dei risultati esecuzione debugging e correzione del programma implementazione In MS-DOS e in unix per eseguire un programma è sufficiente scriverne il nome sulla linea di comando, seguitodainvio: programma eseguibile C:\PROGRAMMI> compilazione foobar programma e linking sorgente 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 7

Strumenti di base: attenta analisi ragionata del codice selezione di casi significativi printf specifiche (per la stampa dei valori delle variabili) analisi del problema algoritmo Strumenti avanzati: debugger controllo dei risultati Strumenti per la programmazione esecuzione debugging e correzione del programma implementazione programma eseguibile compilazione e linking programma sorgente 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 8

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 nome C:\PROGR> insight nome C:\PROGR> nemiver prova (versioni gcc precedenti alla 3) (in ambiente Ubuntu) 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 9

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 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 10

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 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 11

Esempio: hello.c #include <stdio.h> #include <stdlib.h> /* programma principale */ int main() { printf ("Hello world!\n"); return EXIT_SUCCESS; } /* fine del programma */ 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() { } Direttiva al preprocessor: include il file (del compilatore) stdio.h che printf ("Hello serve per l utilizzo world!\n"); delle return EXIT_SUCCESS; funzioni di input/output /* fine del programma */ 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() Commento: viene ignorato { dal compilatore printf ("Hello world!\n"); return EXIT_SUCCESS; } /* fine del programma */ 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 */ Funzione main: tutto comincia da qui int main() { printf ("Hello world!\n"); return EXIT_SUCCESS; } /* fine del programma */ Corpo della funzione main 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 15

Esempio: hello.c Istruzione per terminare la #include <stdio.h> #include funzione main <stdlib.h> (e quindi il programma) restituendo al sistema operativo il valore numerico associato, in stdlib.h, a EXIT_SUCCESS /* programma principale */ int main() { printf ("Hello world!\n"); return EXIT_SUCCESS; } Istruzione per stampare la scritta /* fine del programma */ "Hello world!" e poi andare a capo 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 16

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 main invochi altre funzioni, suddividendo le molte istruzioni in blocchi logici più semplici 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 17

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 () 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 18

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 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 19

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! 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 20

#include <stdio.h> #include <stdlib.h> Fondamenti di Informatica - La programmazione in linguaggio C Esempio: somma.c 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; 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 21

#include <stdio.h> #include <stdlib.h> Fondamenti di Informatica - La programmazione in linguaggio C Esempio: somma.c 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 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 22

#include <stdio.h> #include <stdlib.h> Fondamenti di Informatica - La programmazione in linguaggio C Esempio: somma.c 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) 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 23

#include <stdio.h> #include <stdlib.h> Fondamenti di Informatica - La programmazione in linguaggio C Esempio: somma.c 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 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 24

#include <stdio.h> #include <stdlib.h> Fondamenti di Informatica - La programmazione in linguaggio C Esempio: somma.c int main() /* somma due numeri interi */ { int num1, num2, somma; printf ("inserire num1: "); scanf ("%d", &num1); printf ("inserire num2: "); scanf ("%d", &num2); stampa del risultato (output formattato) } somma = num1 + num2; printf ("num1 + num2 = %d\n", somma); return EXIT_SUCCESS; 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 25

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 nome di 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 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 26

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 assegnato alla stessa variabile numero, che viene dunque sovrascritta: numero numero * 20; 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 27

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! 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 28

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 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 29

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 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 30

Strutture di controllo L esempio precedente rappresenta una possibile implementazione del calcolo dell elevamento a potenza (esponente non negativo!) Il ciclo while è una struttura di controllo, il cui diagramma di flusso è: Y N 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 31

Strutture di controllo Il costrutto: while (contatore < esponente) { potenza = base * potenza; contatore = contatore + 1; } è un semplice ciclo iterativo Dapprima viene valutata la condizione contatore < 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) 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 32

Strutture di controllo Il ciclo while viene così ripetuto fino a che (while) la condizione contatore < esponente è ancora vera Nell esempio, le istruzioni interne al ciclo vengono eseguite un numero di volti pari al valore dell esponente 2001 Pier Luca Montessoro - Davide Pierattoni (vedere nota di copyright a pag. 2) 33