LABORATORIO di INFORMATICA
|
|
- Orazio Riccardi
- 6 anni fa
- Visualizzazioni
Transcript
1 Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto FUNZIONI E PROCEDURE 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 2010 Laboratorio 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 4
3 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 6
4 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 8
5 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 10
6 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 12
7 (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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 14
8 (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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 16
9 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 18
10 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 20
11 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 22
12 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 24
13 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 26
14 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 28
15 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 30
16 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 2010 Laboratorio di Informatica 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 2010 Laboratorio di Informatica 32
17 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 2010 Laboratorio di Informatica 33 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 2010 Laboratorio di Informatica 34
18 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 2010 Laboratorio di Informatica 35 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 2010 Laboratorio di Informatica 36
19 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 2010 Laboratorio di Informatica 37
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/05/08 Nota Questi lucidi sono tratti
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
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
DettagliESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C
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
DettagliESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010
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
DettagliArray k-dimensionali
Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Array k-dimensionali In C è possibile definire array con più dimensioni (ANSI C massimo k=12), per
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliDove vengono definiti? il concetto di sottoprogramma
ROADMAP Funzioni e struttura di un programma Tipi, operatori, espressioni Strutture di controllo Livello 1 Input/Output Strutture dati FUNZIONI E STRUTTURA DI UN PROGRAMMA Livello 2 funzioni procedure
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
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
DettagliOttenere una modifica del parametro attuale
Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)
DettagliFondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
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
DettagliIntroduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C
Introduzione 2 Introduzione al C Linguaggio di programmazione ad alto livello (HLL) Sviluppato negli anni 70 (C standard ANSI) Molto diffuso e adatto ad un ampio spettro di applicazioni: Scientifiche Gestionali
DettagliUnità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi
Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio
DettagliLibrerie Stringhe. Librerie e stringhe. Lezione 9. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. 2015/2016
e stringhe Lezione 9 Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2015/2016 Calendario delle lezioni Lezione 1 (7 e 9/10/2015) - Introduzione all ambiente Linux Lez. 2 (14 e 16/10/2015)
DettagliGESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009
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
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;
DettagliEsercizio 1: funzione con valore di ritorno di tipo puntatore
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio
DettagliLA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag.
I lucidi sono una rielaborazione e integrazione di quelli messi a disposizione dei docenti nel sito relativo al testo: Informatica: arte e mestiere 2/ed Stefano Ceri, Dino Mandrioli, Licia Sbattella Copyright
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
DettagliInformatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi gianluca.rossi@uniroma2.it Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
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
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
DettagliNon ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
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 PRIMO PROGRAMMA IN C
IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE
DettagliLinguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
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
DettagliArgomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili
Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto
DettagliLinguaggio C: le funzioni. Introduzione e sintassi
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Introduzione e sintassi La presente dispensa
DettagliScope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano
Scope delle variabili e passaggio parametri Danilo Ardagna Politecnico di Milano 1-4-2014 Introduzione! Con le funzioni è stato introdotto un meccanismo per definire dei piccoli programmi all interno di
DettagliLinguaggio C Struttura dei programmi
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Struttura dei programmi 2001 Pier Luca Montessoro - Davide
DettagliTempo di vita e scope delle variabili
Tempo di vita e scope delle variabili Richiami sulla struttura di un programma C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume tutto in un unico file):
DettagliBreve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
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
DettagliL Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento
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
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
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
DettagliStringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
DettagliLinguaggio C: le funzioni. Introduzione e sintassi
ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012 Introduzione Spesso alcuni
DettagliUnità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Unità Didattica 3 Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa
DettagliFunzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
DettagliFunzioni e. Alessandra Giordani Mercoledì 16 maggio 2012
Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni
Dettagli$QDOLVLGHOSURJUDPPDTXDGUDWR
$QDOLVLGHOSURJUDPPDTXDGUDWR /* */ calcolare l area del quadrato #include main(){ int lato, area; printf("lato "); scanf("%d", &lato); if(lato < 0) printf("errore nei dati \n"); else { area =
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
DettagliLa sintassi del C APPENDICE H
APPENDICE H La sintassi del C Nella notazione della sintassi utilizzata, le categorie sintattiche (non terminali) sono state indicate da uno stile tipografico in corsivo, mentre le parole letterali e i
Dettagli1 PANORAMICA SUL LINGUAGGIO C
1 PANORAMICA SUL LINGUAGGIO C 1.1 Le origini del linguaggio C Il C fu inventato e implementato da Dennis Ritchie negli anni 70 su una macchina che impiegava il sistema operativo Unix. Il C è il risultato
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
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;
DettagliIntroduzione. Le funzioni in C. Funzioni. Cosa succede
Introduzione Le funzioni in C DD Cap.5 pp.131-160 KP Cap.5 pp. 175-199 La maggior parte dei programmi scritti per risolvere problemi sono (molto!) più lunghi di quelli visti fin ora. Il modo migliore per
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliLinguaggio C: le funzioni
Linguaggio C: le funzioni prof. Lorenzo Porcelli e mail: genna18@iol.it sito: http://users.iol.it/genna18 Introduzione attraverso un esempio Problema: Conoscendo le misure di n rettangoli, determinare
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
DettagliEsercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
DettagliImplementazione dell albero binario in linguaggio C++
Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve
DettagliLezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe
Lezione 19 e 20 - Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Valentina Ciriani (2005-2008) Laboratorio di programmazione Valentina Ciriani
DettagliInput/Output di numeri
Input/Output di numeri I/O di numeri Per utilizzare le funzioni di I/O occorre include il file di intestazione (o file header) stdio.h utilizzando all inizio del sorgente la direttiva #include
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
DettagliFunzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliLezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
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
DettagliIl sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.
Sistema C e organizzazione del codice Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto. Un programma C è costituito da un insieme
DettagliAlgoritmi e basi del C Struttura di un programma
Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 17 Marzo 2015 Compitini Compitini di INFO: 24 Aprile 2015 4.15pm @ C.G.1 (Ed. 9) 21
DettagliAlgoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
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.
DettagliFunzioni, puntatori, strutture. Lab. Calc. AA 2006/07
Funzioni, puntatori, strutture sommario In questa lezione integriamo le informazioni fornite su puntatori e funzioni approfondendo i seguenti punti Puntatori a puntatori Puntatori e array come parametri
DettagliPreprocessore, linker e libreria standard
Preprocessore, linker e libreria standard Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 IL PREPROCESSORE Programma sorgente
DettagliProgrammazione di base
Fondamenti di Informatica Primo Appello 01-17 8 febbraio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene 10 domande,
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
DettagliCostanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
DettagliOperazioni su file di caratteri
Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si
DettagliLaboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014
Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014 Damiano Macedonio Esercizio 1 Scrivere una funzione che riceve in ingresso un puntatore ad un array di interi e modifica tale array
DettagliCapitolo 5 - Funzioni
Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente
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
DettagliERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
DettagliFUNZIONI COME COMPONENTI SW FUNZIONI COME COMPONENTI SW FUNZIONI MODELLO CLIENTE/SERVITORE
FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvano parti specifiche di un problema Una funzione permette di dare un nome a una espressione rendere tale espressione
DettagliRELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA
RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA Anno scolastico Lab informatica AULA n 35 Data inizio svolgimento Progr. relazione primo trimestre secondo pentamestre Cognome e Nome DATI DELLO STUDENTE
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE
INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
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 ai puntatori in C Definizione
Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il
DettagliProgrammazione (imperativa)
Programmazione (imperativa) Corso di Laurea in Informatica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Lunedì 12.00-13.00 e 14.00-16.00 Mercoledì 14.00-17.00 Laboratorio: Giovedì 12.00-13.00
DettagliIl linguaggio C funzioni e puntatori
Salvatore Cuomo Il linguaggio C funzioni e puntatori Lezione n. 8 Parole chiave: Linguaggio C, procedure, funzioni. Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio Email
DettagliPassare argomenti al programma
Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di
DettagliProgrammazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
DettagliIntroduzione Funzioni in C
ISIS "Guido Tassinari" di Pozzuoli Indirizzo INFORMATICO - Articolazione INFORMATICA http://www. A.S. 2012/2013 Docente: LINGUAGGIO C Funzioni e procedure Sommario Introduzione Funzioni in C Intestazione
DettagliESERCIZIO 1. Si considerino le seguenti definizioni:
ESERCIZIO 1 Si considerino le seguenti definizioni: #define N 4 struct Casella{ unsigned int r, c; ; typedef Casella TappetoElastico[N][N]; Pare che tra le discipline degli ottocenteschi circhi delle pulci
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali
DettagliUnità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.
Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti
DettagliI puntatori sono tipi di variabili il cui valore rappresenta un indirizzo della memoria.
Puntatori I puntatori sono tipi di variabili il cui valore rappresenta un indirizzo della memoria. NOTA: quando un programma viene mandato in esecuzione, ad esso viene assegnata un area di memoria di lavoro
DettagliLe direttive del Preprocessore
Le direttive del Preprocessore Prof. Orazio Mirabella Direttive Un compilatore traduce le istruzioni di un programma sorgente in linguaggio macchina Talvolta è conveniente prendere coscienza dell esistenza
DettagliLe funzioni, e le istruzioni di input/output
Linguaggio C Le funzioni, e le istruzioni di input/output 1 Funzioni! Sono sottoprogrammi per svolgere un particolare compito! Sequenze di istruzioni (raggruppate tramite le parentesi graffe) alle quali
DettagliIstituto Tecnico Industriale M. M. Milano Polistena. Classe III D a.s. 2015/2016 C++ Guida Base
Istituto Tecnico Industriale M. M. Milano Polistena Classe III D a.s. 2015/2016 C++ Guida Base Prof. Rocco Ciurleo - ITIS M. M. Milano Polistena - 3 D a.s. 2015/2016 1 Le Origini Il Linguaggio C++ è il
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Parte 2 (a) Sintassi e Semantica versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina)
Dettagli