Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Documenti analoghi
Funzioni in C. Violetta Lonati

Lezione 10: Librerie e compilazione separata

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Header. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Introduzione alla programmazione in C

Le stringhe. Le stringhe

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Introduzione al Linguaggio C

Codifica: dal diagramma a blocchi al linguaggio C++

NOZIONI BASE PER ESERCITAZIONI

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

Concetto di Funzione e Procedura METODI in Java

Linguaggio C - Stringhe

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Makefile. Un target in generale e' un file. Usando.PHONY: target specifichiamo a make che il target non e' un file

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Prova di Laboratorio di Programmazione

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli


Breve riepilogo della puntata precedente:

Corso di Informatica

Le variabili. Olga Scotti

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Linguaggio C. Fondamenti. Struttura di un programma.

Esercizio 1. Esercizio 1

puntatori Lab. Calc. AA 2007/08 1

Introduzione a Dev-C++

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Informatica B. Breve introduzione all ambiente di programmazione. Politecnico di Milano IV Facoltà di Ingegneria 2003

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

ZZZ01 Esercizi Vari. Esercizi per preparazione alla prova pratica di laboratorio

RISOLUTORE AUTOMATICO PER SUDOKU

Trattamento delle STRINGHE in C(++)

Allocazione dinamica della memoria - riepilogo

STAMPA UNIONE DI WORD

Inizializzazione, Assegnamento e Distruzione di Classi

ToolChain: Come Generare Applicazioni in Linguaggio Macchina

Gestione dei File in C

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Leggere un messaggio. Copyright 2009 Apogeo

La selezione binaria

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Generalizzazione di funzioni e di classi. Macro come funzioni generiche

Plate Locator Riconoscimento Automatico di Targhe

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO XI.2015

Struttura di un programma Java

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

MANUALE EDICOLA 04.05

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Guida rapida per i docenti all'uso della piattaforma di e-learning dell'istituto Giua

Matlab: Gestione avanzata dei file

Analizzatore lessicale o scanner

Esercitazione 7. Procedure e Funzioni

Esercizio 2. Client e server comunicano attraverso socket TCP

I file di dati. Unità didattica D1 1

Arduino: Programmazione

Connessione ad internet

RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3

IMPORT EXPORT CONTABILITA GENERALE

Librerie. Laboratorio di Informatica Antonio Monteleone 28

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Il comando Make: : uno strumento per la compilazione ed esecuzione di software applicativo. A. Murli - Cacolo Scientifico a.a.

GESTIONE INFORMATICA DEI DATI AZIENDALI

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

10 - Programmare con gli Array

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Esercizio: gestione di un conto corrente

IPC System V. Code di messaggi

Testi di Esercizi e Quesiti 1

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

CREARE UNA LIBRERIA IN C

Algoritmi e strutture dati. Codici di Huffman

Laboratorio di Algoritmi e Strutture Dati

Corso di Informatica

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Corso di Fondamenti di Informatica

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi terza

LABORATORIO DI INFORMATICA parte 6 -

Introduzione al Foglio Elettronico

Compilatore risorse display grafico LCD serie IEC-line

UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO)

Programmare in Java. Olga Scotti

Dispensa YACC: generalità

ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma

File di testo e file binari Directory

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

MANUALE ESSE3 Gestione Registro delle lezioni

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Il Sistema Operativo: il File System

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Transcript:

Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono gli argomenti ed il tipo di ritorno di una funzione. La dichiarazione di una funzione è detta segnature. Il compilatore richiede solo che una funzione sia dichiarata prima di utilizzarla, non è interessato alla sua definizione. Per utilizzare un insieme di funzioni in un programma senza curarsi dell ordine con cui sono definite è possibile spostare le loro dichiarazioni all inizio del file. 2

Funzioni: Header File Una soluzione migliore consiste nello spostare tutte le dichiarazioni in un file separato chiamato header file. #include <stdio.h> Include le dichiarazioni contenute nel file stdio.h. Tale istruzione ha lo stesso effetto di specificare le dichiarazioni all inizio del file. L utilizzo di un header file per le dichiarazioni richiede di: Creare un file con estensione.h Se si sta scrivendo un programma chiamato program.c, l header file sarà chiamato program.h. All interno di questo file vanno incluse le dichiarazioni di tutte le funzioni contenute nel programma, ad eccezione della funzione main(). Includere l header file nel programma principale. #include program.h 3

Funzioni: Header File Ricordarsi di usare le virgolette per includere gli header file contenuti nella stessa directory (o in una sottodirectory) del vostro programma! Le parentesi angolari < > sono usate per le librerie che si trovano all esterno della directory contenente il vostro programma (es. Librerie standard). All interno delle virgolette si può specificare un path relativo (sottodirectory), anche se solitamente gli header file sono messi nella stessa directory del programma. #include header/program.h POCO USATO! 4

Programmi Composti da più File Per poter riutilizzare facilmente delle funzioni è utile isolarle in file distinti da quello contenente il programma principale. Suddividere il programma in parti auto-contenute. Il programma finale sarà ottenuto combinando i sorgenti contenuti nei vari file. Per prima cosa i vari file vengono compilati in file oggetto separati, quindi il compilatore gli unisce (linking) in un unico programma eseguibile. Supponiamo di isolare le funzioni di un programma in un unico file functions.c, le cui definizioni sono contenute in un file functions.h, e di porre il main() in un altro sorgente program.c. 5

Programmi Composti da più File int sum( int a, int b); int pow( int a, int b); functions.h #include functions.h int sum( int a, int b ) {... } int pow( int a, int b){... } functions.c #include <stdio.h> #include functions.h int main(){... c = sum( a, b ); d = pow( a, b );... } main.c gcc functions.c main.c o main 6

Programmi Composti da più File: Compilazione È possibile evitare di ricompilare ogni volta tutti i file che compongono un programma, ma limitarsi solo a quelli che hanno subito modifiche. Per fare questo è necessario salvare i file oggetto intermedi, in modo che il compilatore possa utilizzarli durante il linking. C source file C source file C source file Compiler Compiler Compiler Object code file Object code file Object code file Linker Executable 7

Programmi Composti da più File: Compilazione Creare un file oggetto per ogni file sorgente: gcc c *.c -c crea un file oggetto (estensione.o) per ogni sorgente compilato *.c compila tutti i file.c contenuti nella directory. Linkare i file oggetto ottenuti: gcc *.o o program_name Il compilatore riconosce che si tratta di file oggetto, e non di file sorgente, e quindi salta il passo di compilazione ed esegue solo il linking. Ad ogni successiva modifica è sufficiente eseguire il comando gcc c file.c solo sul file modificato e poi eseguire il linking (gcc *.o o program_name). 8

Librerie Standard di C stdio.h: operazioni di input/output stdbool.h: valori booleani math.h: operazioni matematiche time.h: operazioni per la manipolazione del tempo string.h: operazioni per la manipolazione di stringhe 9

Libreria Standard stdio.h Due funzioni già note: int scanf(const char *format,...); Legge un dato (con un certo formato) dallo standard input e lo mette in una variabile passata come secondo parametro. int printf(const char *format,...); Stampa una stringa (con un certo formato) nello standard output. Un altra funzione utile: int getchar(void); Legge un carattere dallo standard input. Ritorna il carattere letto (eseguendo un cast ad intero). Notare che il carattere digitato viene effettivamente letto solo dopo che l utente ha premuto invio (carattere \n ). 10

Lettura di una Riga di Input // s e' un array di caratteri di lunghezza length + 1 void readline(char s[], int length) { int pos = 0; // consumo tutti i caratteri '\n' iniziali while((s[pos] = getchar()) == '\n'); do s[++pos] = getchar(); while(s[pos]!= '\n' && pos < length); s[pos] = '\0'; } 11

Libreria Standard string.h L header file string.h contiene le dichiarazioni di tipi e funzioni della libreria standard del C per la manipolazione delle stringhe. Le funzioni in string.h lavorano solamente con caratteri ASCII. In realtà la libreria contiene anche la definizione di tipi e funzioni per la gestione della memoria. Per una lista completa delle funzioni disponibili: http://it.wikipedia.org/wiki/string.h

Funzioni di string.h char *strcat(char *dest, const char *src); Concatena la stringa src alla stringa dest modificandola. Ritorna la stringa risultante. Il carattere \0 della prima stringa è scartato. char *strncat (char *dest, const char *src, size_t n); Concatena al massimo n caratteri di src alla stringa dest e ritorna la stringa risultato. int strcmp(const char *s1, const char *s2); Confronta la stringa s1 con s2, ritorna 0 se le due stringhe sono uguali, -1 se s1 < s2, oppure 1 altrimenti (il segno del risultato corrisponde al risultato della differenza tra s1 e s2). int strncmp (const char *, const char *, size_t); Confronta al massimo n caratteri delle due stringhe. 13

Funzioni di string.h char *strcpy(char *s1, const char *s2); Copia la stringa s2 nella stringa s1, incluso il carattere di terminazione '\0'. char *strncpy(char *s1, const char *s2, size_t n); Copia al massimo n caratteri della stringa s2 nella stringa s1. size_t strlen(const char *s); restituisce la lunghezza della stringa s.