FUNZIONI E PROCEDURE IN C. Docente: Giorgio Giacinto AA 2009/2010. dall utente, sia predefiniti, il C consente di creare funzioni e procedure

Documenti analoghi
Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

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

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

Linguaggio C - Funzioni

Gestione di files Motivazioni

Funzioni in C. Violetta Lonati

Programmazione Orientata agli Oggetti in Linguaggio Java

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

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

TUTORATO di LINGUAGGI I

Input/output in C e in C++

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Esercizi di programmazione in C

3. Terza esercitazione autoguidata: progetto gestione voli

FUNZIONI. La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni:

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

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp KP Cap. 6 pp

Introduzione al linguaggio C Gli array

Introduzione alla programmazione in C

CARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe

Allocazione dinamica della memoria - riepilogo

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

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Tipi di dato-prima parte

I puntatori e l allocazione dinamica di memoria

Files in C++ Fondamenti di Informatica. R. Basili. a.a

puntatori Lab. Calc. AA 2007/08 1

Alcune regole di base per scrivere un programma in linguaggio C

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.

Linguaggio C - Stringhe

Il comando provoca il salvataggio dello stato e la terminazione dell esecuzione.

La ricorsione. Politecnico di Milano Sede di Cremona

AA LA RICORSIONE

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

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

Concetto di Funzione e Procedura METODI in Java

Java Native Interface Appunti

Alfabeto ed elementi lessicali del linguaggio C

PIANO DI LAVORO. a.s / 2016

VARIABILI LOCALI E GLOBALI (ESTERNE)

Funzioni e procedure

Gestione dei File in C

CAPITOLO V. DATABASE: Il modello relazionale

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

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

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

LINGUAGGI DI PROGRAMMAZIONE

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

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di

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

Librerie. Laboratorio di Informatica Antonio Monteleone 28

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

3. La sintassi di Java

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

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. Il linguaggio C II

Gestione delle eccezioni in Java

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture

Fondamenti di Informatica 2

Appello di Informatica B

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.

Linguaggio C. Fondamenti. Struttura di un programma.

Breve riepilogo della puntata precedente:

Codifica: dal diagramma a blocchi al linguaggio C++

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

Linguaggi di Programmazione

Il calcolatore. Architettura di un calcolatore (Hardware)

Sistemi Web per il turismo - lezione 3 -

Laboratorio di Algoritmi e Strutture Dati. La gestione della memoria dinamica Heap

Grammatica di base: Pointers

Ingegneria del Software

Ricorsione. Corso di Fondamenti di Informatica

Esercitazione 7. Procedure e Funzioni

Esame del 3 febbraio 2010

Funzioni. Corso di Fondamenti di Informatica

dall argomento argomento della malloc()

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Introduzione al Linguaggio C

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Sottoprogrammi: astrazione procedurale

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Connessione ad internet

La selezione binaria

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

Informatica Teorica. Macchine a registri

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

INTRODUZIONE ALLE BASI DATI RELAZIONALI

Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo

SOLUZIONE ESERCIZIO 1

Esercizio 1. Esercizio 2

La gestione della memoria

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

int f(char *s, short n, float x) {... } /* definizione di f */ int f(char *, short, float); /* prototipo di f */

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Programmazione I - Laboratorio

Esercizio: gestione di un conto corrente

Transcript:

Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2 http://www.diee.unica.it/giacinto/fi2 FUNZIONI E PROCEDURE IN C Docente: Giorgio Giacinto AA 2009/2010 Introduzione! La definizione di tipi da parte dell utente mediante typedef non consente di definire nuove operazioni sui tipi! Per definire nuove operazioni sui tipi, sia definiti dall utente, sia predefiniti, il C consente di creare funzioni e procedure! Ad es. per calcolare la n-esima potenza della variabile x, x n, sarebbe comodo poter usare una istruzione del tipo y=pow(x,n); invece di usare esplicitamente un ciclo che moltiplica n volte x per se stesso Giorgio Giacinto 2009 Fondamenti di Informatica 2 2

Introduzione (cont.)! Un linguaggio di programmazione non definisce tutte le operazioni di cui si può avere bisogno! E necessario disporre di meccanismi per la creazione di nuove operazioni su qualsiasi tipo di dato! Tali meccanismi sono generalmente chiamati sottoprogrammi perché hanno la stessa struttura dei programmi principali! In C esistono due tipi di sottoprogrammi: le funzioni e le procedure Giorgio Giacinto 2009 Fondamenti di Informatica 2 3 Struttura di un programma C! La struttura di un programma C include! Una parte di direttive al preprocessore C! Una parte dichiarativa globale! dichiarazioni di tutti gli elementi condivisi dal programma principale e dai sottoprogrammi (costanti, tipi, variabili, ): alle variabili dichiarate in questa sezione possono avere accesso il programma principale e tutti i sottoprogrammi! Un programma principale (il main) composto da! Una parte dichiarativa! Una parte esecutiva! Una successione di definizioni di sottoprogrammi (funzioni o procedure) Giorgio Giacinto 2009 Fondamenti di Informatica 2 4

Funzioni! E un tipo di sottoprogramma che realizza operazioni astratte che corrispondono (anche se non esclusivamente) al significato matematico di funzione (Somma, Prodotto, )! Il C mette a disposizione gli strumenti per costruire (definire) e usare (chiamare) sottoprogrammi che realizzano le operazioni non disponibili nel linguaggio. Giorgio Giacinto 2009 Fondamenti di Informatica 2 5 Definizione delle funzioni! La struttura di una funzione e molto simile a quella di un programma! Sintassi della definizione di una funzione TipoRisultato Funzione(<lista_parametri_formali>) <parte_dichiarativa_locale> <istruzioni> intestazione (header) Giorgio Giacinto 2009 Fondamenti di Informatica 2 6

Intestazione di una funzione L intestazione contiene Tipo del risultato (codominio della funzione)! può essere di tipo built-in o di tipo user-defined Identificatore del sottoprogramma seguito da una coppia di parentesi tonde che possono contenere una lista di parametri formali Lista dei parametri formali, separati da virgole, cui la funzione viene applicata (dominio della funzione) Esempio: int FatturatoTotale(ElencoFatture par) Una funzione non può restituire array o funzioni ma può restituire un puntatore a qualsiasi tipo Giorgio Giacinto 2009 Fondamenti di Informatica 2 7 Parte dichiarativa e corpo delle funzioni! Parte dichiarativa locale! si definiscono tutti gli oggetti necessari alla realizzazione dell operazione astratta! obbediscono alle stesse leggi per la costruzione della parte dichiarativa di un programma! Corpo della funzione! medesime regole sintattiche del programma principale! al suo interno vi può essere un istruzione di return return <espressione>! return termina l esecuzione della funzione e restituisce il risultato! <espressione>, è il risultato della valutazione della funzione Giorgio Giacinto 2009 Fondamenti di Informatica 2 8

Istruzione return! Se nessuna istruzione di return è presente nel corpo della funzione, il sottoprogramma termina in corrispondenza del simbolo chiave che conclude il corpo della funzione Esempio int RadiceIntera (int param) int cont = 0; while (cont*cont <= param) cont++; return (cont-1); Giorgio Giacinto 2009 Fondamenti di Informatica 2 9 Chiamata delle funzioni! La chiamata di una funzione (in altri linguaggi si usa la parola chiave call) avviene all interno di un espressione! Sintassi <identificatore_funzione>(<lista_parametri_attuali>) Esempio: y=radiceintera(7);! I parametri attuali indicano i valori degli argomenti rispetto ai quali la funzione deve essere calcolata! In generale: una espressione o una chiamata di funzione! Corrispondenza tra parametri formali e attuali! si segue l ordine della dichiarazione: a ciascun parametro formale deve corrispondere un parametro attuale dello stesso tipo Giorgio Giacinto 2009 Fondamenti di Informatica 2 10

Esempi di chiamate di funzioni x = sin(y) cos(pigreco alfa); Totale = Somma(Lista1) + Somma(Lista2); ElencoOrdinato = Ordinamento(Elenco); OrdineAlfabetico = Precede(nome1, nome2); x, Totale, ElencoOrdinato e OrdineAlfabetico sono variabili dello stesso tipo ritornato dalle funzioni sin, cos, Somma, Ordinamento e Precede sono funzioni definite nel programma Giorgio Giacinto 2009 Fondamenti di Informatica 2 11 Prototipo delle funzioni! All interno di un programma C una funzione può essere chiamata purché risulti definita oppure dichiarata! Definizione: definisce le operazioni da eseguire! Dichiarazione (o prototipo): si limita a richiamarne la testata prima che venga chiamata e prima della definizione! Scopo della dichiarazione! Quando il compilatore incontra una chiamata di funzione prima della sua definizione, può controllare immediatamente il numero e il tipo dei parametri utilizzati e il tipo del risultato restituito dalla funzione attraverso il confronto con il prototipo. Giorgio Giacinto 2009 Fondamenti di Informatica 2 12

(1) Programma per il calcolo delle potenze 1/4 #include <stdio.h> /* Parte direttiva */ double quad(float); /* Prototipi funzioni */ double cubo(float); double quar(float); double quin(float); double pote(float,int); Giorgio Giacinto 2009 Fondamenti di Informatica 2 13 (1) Programma per il calcolo delle potenze 2/4 main() /* Parte principale del programma */ int base, esponente; /* Variabili del main */ double ptnz; printf( Inserire base: ); scanf( %d, &base); printf( Inserire esponente (0-5): ); scanf( %d, &esponente); ptnz = pote(base, esponente); /* Chiamata alla funzione */ if(ptnz == -1) printf( Potenza non prevista\n ); else printf( La potenza %d di %d e %f\n, esponente, base, ptnz); /* Fine del main */ Giorgio Giacinto 2009 Fondamenti di Informatica 2 14

(1) Programma per il calcolo delle potenze 3/4 double quad(float c) /* Definzione funzione */ return(c*c); double cubo(float c) /* Definzione funzione */ return(c*c*c); double quar(float c) return(c*c*c*c); double quin(float c) return(c*c*c*c*c); Giorgio Giacinto 2009 Fondamenti di Informatica 2 15 (1) Programma per il calcolo delle potenze 4/4 double pote(float b, int e) /* Definzione funzione */ double ris; switch(e) case 0: ris = 1; case 1: ris = b; case 2: ris = quad(b); case 3: ris = cubo(b); case 4: ris = quar(b); case 5: ris = quin(b); default: ris = -1; return (ris); Giorgio Giacinto 2009 Fondamenti di Informatica 2 16

Esecuzione delle funzioni e passaggio dei parametri! Immaginiamo tre diverse macchine astratte! una principale dedicata all esecuzione del main! una asservita (slave) dedicata all esecuzione della funzione pote! rispetto alla funzione pote abbiamo un altra macchina asservita dedicata all esecuzione di una delle funzioni quad, cubo, quar, quin! La macchina principale ha bisogno di un valore che le può essere fornito dalla macchina asservita! Con la chiamata alla macchina asservita si ha il passaggio del valore e la cessione del controllo a quest ultima! Al termine dell esecuzione della funzione il controllo viene restituito alla macchina principale con il parametro richiesto (tramite return) Giorgio Giacinto 2009 Fondamenti di Informatica 2 17 Esecuzione delle funzioni e passaggio dei parametri (cont.) base esponente b e c ptnz ris <return> Ambiente del main Ambiente di pote Ambiente di quad,cubo, quar,quin Giorgio Giacinto 2009 Fondamenti di Informatica 2 18

Esecuzione delle funzioni e passaggio dei parametri (cont.)! Il passaggio del risultato al main avviene attraverso una variabile (non dichiarata) che coincide con il nome della funzione! Passaggio dei parametri (freccia ")! copia del valore di ciascun parametro attuale nella cella del corrispondente parametro formale! Dopo il passaggio dei parametri, il controllo passa alla macchina asservita! l esecuzione della macchina principale viene sospesa! return restituisce il controllo alla macchina principale che preleva il valore del risultato Giorgio Giacinto 2009 Fondamenti di Informatica 2 19 Le procedure! In varie occasioni il compito di un operazione astratta non è produrre un valore di un certo tipo, ma è modificare il contenuto del programma che ne chiede l esecuzione! In questi casi si utilizza un diverso tipo di sottoprogramma chiamato procedura! Definizione di procedura In C: una funzione avente come tipo del risultato il tipo speciale void (assenza di un risultato) Giorgio Giacinto 2009 Fondamenti di Informatica 2 20

Esempi di procedure Inserimento di una fattura in un archivio Ordinare un array di interi o di stringhe Stampare una rubrica telefonica con un determinato formato! Il risultato atteso non è un valore ma l aggiornamento o la modifica della struttura dati su cui opera la procedura Giorgio Giacinto 2009 Fondamenti di Informatica 2 21 Chiamata di una procedura! Analoga alla chiamata di una funzione.! Manca un valore ritornato: non può trovarsi a destra di una operazione di asssegnazione o come termine di un espressione <identificatore_procedura>(<parametri_attuali>); Esempio OrdinaElenco(ElencoPersonale);! Corrispondenza tra parametri formali e attuali! si segue l ordine della dichiarazione: a ciascun parametro formale deve corrispondere un parametro attuale dello stesso tipo Giorgio Giacinto 2009 Fondamenti di Informatica 2 22

Esecuzione delle procedure! Consideriamo le macchine astratte principale (per il main) e asservita (per la procedura)! Al termine dell esecuzione la macchina asservita cede il controllo alla macchina principale! Non viene prodotto alcun valore come risultato! L effetto che si ottiene è in genere la modifica della variabile passata come parametro (ma, ad es., una procedura può avere il compito di riportare dei valori a video o su stampante)! Possibile solo nel caso di utilizzo di variabili globali? Giorgio Giacinto 2009 Fondamenti di Informatica 2 23 Struttura completa di un programma C! Un programma C consiste in! Una parte direttiva! Una parte dichiarativa che comprende:! Dichiarazioni di costanti! Dichiarazioni di tipi! Dichiarazioni di variabili! Prototipi di procedure e funzioni! Un programma principale main! Definizione di funzioni e procedure! Un programma C può essere descritto come! un insieme di funzioni e di variabili proprie dell ambiente globale del programma.! Una delle funzioni deve essere identificata come main Giorgio Giacinto 2009 Fondamenti di Informatica 2 24

main e funzioni e procedure! L esecuzione del programma globale inizia con la prima istruzione della parte esecutiva del main.! L intestazione del main è l intestazione di una funzione che può coinvolgere come tipo del risultato e dei parametri di ingresso il tipo speciale void void main (void) Il main può contenere parametri di ingresso che consentono la comunicazione tra ambiente di programma e ambiente del sistema operativo Giorgio Giacinto 2009 Fondamenti di Informatica 2 25 Il concetto di blocco! Definizione un blocco consiste di due parti sintattiche racchiuse tra parentesi graffe! Una parte dichiarativa (facoltativa)! Una sequenza di istruzioni! Diversi blocchi possono comparire internamente al main o alle funzioni che compongono un programma Giorgio Giacinto 2009 Fondamenti di Informatica 2 26

Esempi di blocchi #include <stdio.h> int g1,g2; int f1(int par1, int par2);... main() int a,b;... /* blocco1 */ char a,c;...... continua# int f1(int par1, int par2) int d;... /* blocco2 */ int e;... /* blocco3 */ int d;...... Giorgio Giacinto 2009 Fondamenti di Informatica 2 27 Visibilità delle variabili! Vediamo alcune definizioni:! Si dice ambiente globale di un programma l insieme di tutti gli elementi dichiarati nella sua parte dichiarativa globale! Si dice ambiente locale di una funzione l insieme di tutti gli elementi dichiarati nella sua parte dichiarativa e nella sua testata! Si dice ambiente di un blocco l insieme di tutti gli elementi dichiarati nella sua parte dichiarativa! Il concetto di ambiente permette di dichiarare più volte lo stesso identificatore anche con significati diversi, purché in ambienti diversi Giorgio Giacinto 2009 Fondamenti di Informatica 2 28

Visibilità delle variabili modello a contorni g1,g2 Ambiente del main a,b Ambiente del blocco1 a,c d e d Ambiente globale Ambiente di f1 Ambiente del blocco2 Ambiente del blocco3 Elementi nell ambiente globale possono essere visti da tutte le funzioni e i blocchi Elementi nell ambiente locale di una funzione possono essere visti da tutti i blocchi contenuti nella funzione Gli elementi nell ambiente di un blocco possono essere visti da tutte le istruzioni nel blocco e dai blocchi in esso contenuti In caso di più definizioni dello stesso identificatore: è valida la definizione dell ambiente più vicino al punto di utilizzo Giorgio Giacinto 2009 Fondamenti di Informatica 2 29 Tempo di vita delle variabili! Creazione di una variabile allocazione in memoria dello spazio per la sua rappresentazione! Due categorie di variabili! Variabili fisse o statiche allocate una sola volta e vengono distrutte solo quando termina l esecuzione del programma (es. variabili globali del programma)! Variabili automatiche create ogni volta che si entra nel loro ambito di visibilità e che vengono distrutte all uscita da tale ambiente (es. variabili dichiarate a livello di funzione, procedura e blocco) Giorgio Giacinto 2009 Fondamenti di Informatica 2 30

Funzioni e procedure: uso di parametri di tipo array! Un array può essere passato a una funzione come parametro formale solo per indirizzo indirizzo di base dell array passato per valore alla funzione Esempio typedef double TipoArray[MaxNumElem] I seguenti prototipi di funzioni sono equivalenti double sum(double *a) double sum(double a[]) double sum(tipoarray a) Giorgio Giacinto 2009 Fondamenti di Informatica 2 31 Funzioni e procedure: uso di parametri di tipo array bidimensionali! Il passaggio di un array bidimensionale avviene con la seguente sintassi Esempio double Array[Righe][Colonne]; è un array contenente un numero di elementi pari a Righe, dove ciascun elemento è un array contenente un numero di elementi pari a Colonne I seguenti prototipi di funzioni sono equivalenti double sum(double a[righe][colonne]) double sum(double (*a)[colonne]) double sum(double a[][colonne]) Il parametro della funzione è cioè un puntatore ad un vettore i cui elementi sono array di double di dimensione pari a Colonne. Giorgio Giacinto 2009 Fondamenti di Informatica 2 32

Uso di parametri di tipo array in funzioni e procedure: osservazioni! Attenzione! Una funzione che agisce su un parametro array, agisce sempre sull originale, non su una copia!! Un array è sempre passato per indirizzo a una funzione! Nota bene: una funzione C non può mai restituire un array ma solo un puntatore a tale array Giorgio Giacinto 2009 Fondamenti di Informatica 2 33 Funzioni ricorsive in C! Il linguaggio C supporta la definizione di funzioni ricorsive. Esempio definizione fattoriale int fatt(int n) int ris; if(n==0) ris = 1; else ris = n*fatt(n-1); return ris; Giorgio Giacinto 2009 Fondamenti di Informatica 2 34

Funzioni ricorsive in C (cont.)! Nel caso di funzioni ricorsive, la funzione chiama l esecuzione di un altra copia di se stesso su dati diversi! Ad ogni chiamata ricorsiva della funzione, viene creato un nuovo ambiente per l esecuzione della funzione! Nello stesso momento possono essere in corso diverse esecuzioni della stessa funzione, ciascuna con la propria area dati locale, distinta dalle altre! Attenzione all uso di variabili passate per indirizzo. Giorgio Giacinto 2009 Fondamenti di Informatica 2 35 Le standard library e Header file! In C esistono predefiniti molti sottoprogrammi di vasto uso che costituiscono la standard library resa disponibile al programmatore! La definizione delle funzioni che costituiscono la libreria sono disponibili come file di codice compilato, non leggibile direttamente dal programmatore! Gli header file contengono prototipi di funzioni di libreria (standard e non). Il programmatore che intende usare funzioni di libreria deve usare la direttiva #include Ad esempio: #include <stdio.h> Giorgio Giacinto 2009 Fondamenti di Informatica 2 36

Standard library del C stdio.h: funzioni per gestione ingresso uscita math.h: funzioni trigonometriche, esponenziali, logaritmiche, calcolo del valore assoluto stdlib.h: funzioni di utilità e gestione della memoria string.h: gestione di caratteri e di stringhe di caratteri Altri header per ricerca e ordinamento in array, gestione data e ora, generazione numeri casuali, comunicazione con l ambiente del sistema operativo e gestione dei fallimenti dei programmi a tempo di esecuzione Giorgio Giacinto 2009 Fondamenti di Informatica 2 37 Lettura di una stringa di caratteri con scanf! Lettura di una stringa di caratteri da stdin (ad es. parole separate da spazi o caratteri di newline) in un array char Word[MaxDimWord] scanf( %s,word)! Se l input è Calcolatore, l effetto di scanf è: Word[0]= C...Word[10]= e, Word[11]= \0! Il carattere speciale \0 indica la fine della parola nell array! considerato false nelle istruzioni condizionali Giorgio Giacinto 2009 Fondamenti di Informatica 2 38

Libreria string.h Alcune funzioni per manipolare stringhe di caratteri int strcmp(char *s1, char *s2); confronto fra due stringhe. Ritorna un intero maggiore, uguale o minore di zero a seconda che s1 sia alfabeticamente maggiore uguale o minore a s2. char *strcpy(char *s1, char *s2); copia s2 (compreso \0) in s1, sovrascrivendo il contenuto di s1 (non si controlla la dimensione di s1). Si restituisce il puntatore a s1. char *strcat(char *s1, char *s2); restituisce s1 che contiene la concatenazione fra s1 e s2 unsigned strlen(char *s); calcola la lunghezza di una stringa (escluso \0) Giorgio Giacinto 2009 Fondamenti di Informatica 2 39