5. Codifica degli Algoritmi in C

Размер: px
Начинать показ со страницы:

Download "5. Codifica degli Algoritmi in C"

Транскрипт

1 40 5. Codifica degli Algoritmi in C La traduzione di algoritmi in linguaggi di programmazione rende posbile l esecuzione di programmi da parte del calcolatore. In questo corso codificheremo gli algoritmi nel linguaggio di programmazione C. Questo linguaggio n è direttamente eseguibile dalla macchina ma viene trasformato dal compilatore in un file eseguibile linkando eventualmente porzioni di codice ester. Introdurrremo ora brevemente gli elementi di un linguaggio di programmazione facendo riferimento al linguaggio C. (La seguente sezione n è intesa essere una presentazione esaustiva del linguaggio C, per la quale rimanda al Corso di Laboratorio di Programmazione). Un linguaggio è caratterizzato da una ntas ed una semantica. La ntas è l ineme delle regole che caratterizza le fra del linguaggio che so ben formate e quindi accettabili per il compilatore. La semantica permette di specificare che cosa fa un programma quando viene eseguito. Gli elementi fondamentali di un linguaggio quale il C so le variabili. Ogni variabile ha un me che la identifica (ed in particolare deta la porzione di memoria ad essa associata), ed un tipo, che esprime quali oggetti posso essere assegnati ad essa (e quindi la dimenone dell area di memoria associata) e in quali operazioni può essere utilizzata. Il me di una variabile può essere una quala sequenza di lettere e cifre e può contenere il mbolo "_" (underscore). Ogni me legale inizia con una lettera o con "_". Come abbiamo già visto nel linguaggio dei diagrammi di flusso, una variabile può essere utilizzata in due modi: leggendone il contenuto o assegnandole un valore. A differenza dei diagrammi di flusso, in C, prima di usare una variabile, è neccesario dichiararla. Per esempio, la dichiarazione int var; dice che la variabile di me var è di tipo intero. I tipi di base disponiblili nel linguaggio C so i seguenti: TIPO DIMENSIONE VALORI int da 16 a 32 bit da a float 32 bit reali in precione ngola double 64 bit reali in precione doppia char 8 bit da 128 a 127 E posbile cambiare la dimenone del tipo usando i modificatori: long (per lavorare con valori molto grandi) e short (per limitare la capacità della variabile). In C n este un tipo boolea: gli interi diver da zero vengo ricosciuti come valore True, mentre a zero viene associato il valore False.

2 Espresoni Semplici Le espresoni del C posso contenere variabili, numeri e i seguenti operatori: OPERATORE SIGNIFICATO * prodotto / diviso + somma - sottrazione % Modulo (resto delle divione intera) Sebbene ci a un unico mbolo per ognu degli operatori *, /, + e, in realtà ce ne so molte veroni, a seconda del tipo di variabili cui so applicati. Per esempio, c è un operatore * che, due interi, restituisce un intero; un altro che, applicato a due numeri float, restituisce un float, e così via. La scelta dell operatore sarà fatta dal compilatore in base al tipo dei suoi operandi. Nella maggioranza dei ca questa tuazione n provoca problemi. Comunque, per la divione, il comportamento può risultare n ovvio. Ad esempio, 1 / 2 restituirà 0, perché gli operandi so entrambi di tipo intero e quindi viene selezionato l operatore / fra interi, che restituisce l intero che approsma il risultato; al contrario, 1.0 / 2.0 restituirà 0.5, perché gli operandi so entrambi float e quindi viene selezionata la divione fra float Assegnamento L istruzione che assegna il valore ad una variabile è, come nel caso dei diagrammi di flusso, l assegnamento, che in C è detato dall'operatore "=". Ad esempio, se la variabile a è stata dichiarata di tipo intero, l'assegnazione a = 100; attribuisce ad a il valore 100. A nistra dell'operatore di assegnamento comparirà una variabile e a destra una espresone che deve avere tipo compatibile con quello della variabile Schema di un Programma C Un programma in C è costituito da dichiarazioni di variabili e di funzioni e di una particolare funzione di me main, che costituisce il codice eseguito quando fa partire l eseguibile generato dalla compilazione del programma. Ad esempio: #include <stdio.h> Dichiarazione di variabili e di funzioni int main(void) {... istruzioni... } La funzione main viene richiamata per prima in fase di esecuzione; anch essa restituisce un valore al stema operativo.

3 5.4. Funzioni di I/O In C n esto funzioni predefinite per l input e l output; per questo è necessario includere nel file sorgente delle librerie esterne; questo è fatto dalla direttiva #include <stdio.h> che permette di utilizzare le funzioni contenute nella libreria stdio, che mette a dispozione, fra le altre, la funzione: printf(stringa_formato,... espresoni ); La funzione printf ha un numero di parametri variabile. Il primo specifica il formato del testo che dovrà essere stampato, mentre le espresoni che seguo so i valori che dederiamo stampare e la cui stampa è determinata dalla stringa_formato. Esempio 27 Sia a una variabile dichiarata di tipo intero, con valore 100 e a f una variabile float con valore L'istruzione stampa: printf( La variabile a = %d e la variabile f = %f, a, f); La variabile a=100 e la variabile f=3.14. I due mboli % indica che in quel punto dovrà comparire il valore delle variabili elencate in coda, mentre la lettera indica il tipo di dato che ci aspetta di trovare. Per una tabella dei codici di formato rimanda ad un quala testo sul C. Si faccia attenzione perchè n c è alcun controllo da parte del compilatore che ci a constenza fra il numero dei % (e il loro tipo) nella stringa di formato ed i parametri che seguo. Per cui posso ottenere risultati inaspettati Operatori Brevi Il linguaggio C permette di utilizzare delle scorciatoie nella scrittura delle istruzioni. Quando a nistra e a destra di un assegnamento compare la stessa variabile, come ad esmpio in: i = i+1, può scrivere i += 1. In generale ogni assegnamento del tipo: v = v op espresone, dove op è u degli operatori della tabella data in precedenza ed espresone è una quala espresone, può essere abbreviato in v op = espresone L incremento e il decremento di 1 della variabile v posso essere ulteriormente abbreviati in: v++, ++v, v--, e v Istruzioni Strutturate Le istruzioni di assegnamento posso essere combinate attraverso la sequenzializzazione espressa da ; nel modo seguente: a=3; b=a+1 Dapprima segue l assegnamento a=3 e poi b=a+1. Iltre, più istruzioni posso essere raggruppate in un blocco usando parente graffe {}. Ci so infine costrutti di selezione e di iterazione che presenteremo brevemente. 42

4 43 if (else) : permette di eseguire condizionalmente delle istruzioni. Le ntas del costrutto so le seguenti: if (condizione) else istruzione2; if (condizione) La condizione è un espresone; se il suo valore è diverso da 0, viene eseguita l istruzione1 altrimenti nel primo caso è eseguita l istruzione2, e, nel secondo, l'istruzione che segue. Nella condizione posso essere usati i seguenti operatori relazionali: OPERATORE SIGNIFICATO <= Mire o uguale < Mire > Maggiore >= Maggiore o uguale == Uguale!= Diverso I precedenti operatori, quando applicati, ritorneran un valore intero che è diverso da zero se la condizione è vera o uguale a zero altrimenti. Visti come diagrammi di flusso i costrutti precedenti corrispondo ai seguenti: istruzione1 istruzione2 istruzione1 Nel caso voglia eseguire più di un istruzione, basterà usare un blocco al posto di istruzione1 e/o istruzione2. La keyword else viene sempre riferita al costrutto if più vici; nel caso di costrutti del tipo: if (condizione1) if (condizione2) else istruzione2; istruzione3; l else è riferito al test sulla condizione2. Nel caso volesse far riferire l else alla condizione1 dovrebbero usare le parente per raggruppare il secondo costrutto if nel modo seguente:

5 44 if (condizione1) {if (condizione2) } else istruzione2; istruzione3; Notare che, come un blocco è conderato un unica istruzione, anche un costrutto if o if-else viene conderato come un unica istruzione. I cicli (loop) permetto di eseguire un blocco di codice un numero di volte indefinito, finché risulta vera una condizione. Il linguaggio C mette a dispozione tre cicli fondamentali: while, for e do-while (qui descriveremo solo i primi due). while: La ntas del costrutto è la seguente while (condizione) istruzione; La condizione è come nel caso del costrutto if una espresone. Se il suo valore è diverso da zero esegue l istruzione e poi ritorna alla valutazione del costrutto while. istruzione Anche in questo caso, se voglio eseguire più istruzioni può usare un blocco. for : questa è l'istruzione iterativa più complessa. La sua ntas è la seguente: for ( condizione; istruzione2) istruzion3; L istruzione1 viene eseguita prima di entrare nel ciclo, che corriponde ad un ciclo while in cui viene eseguita prima l istruzione3 (che è il body del for) e poi la istruzione2 (che è l istruzione di iterazione). Una o più delle precedenti istruzioni può mancare. Il for corrisponde al seguente diagramma di flusso: istruzione1 istruzione2 istruzione3

6 45 I seguenti cicli for corrispondo ad un ciclo while: 5.7. Commenti for ( ; condizione; ) istruzione; for ( ; condizione; istruzione); Il commento è una porzione del testo che n viene conderata dal compilatore. Durante la fase di compilazione, i commenti vengo trascurati, pertanto n compaio all inter del file eseguibile. Servo per esplicitare affermazioni n altrimenti ricoscibili, o per chiarire il gnificato di una porzione di codice. Verran usati per scrivere, tra le altre antazioni, l invariante del ciclo. All inter del commento può comparire quala mbolo; n este una lunghezza masma consentita per i commenti. Il compilatore C ricosce due tipi di commento: /* questo è un commento racchiuso tra le due barre con gli asterischi e può trovar su più righe */ // questo è un commento che termina alla fine della riga. // Per proseguire è necessario riscrivere il doppio slash all'inizio // di ogni riga

Qualsiasi programma in C++ segue lo schema:

Qualsiasi programma in C++ segue lo schema: Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Подробнее

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo [email protected] Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Подробнее

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Подробнее

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi

Подробнее

Struttura dei programmi C

Struttura 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

Подробнее

Informatica (A-K) 5. Algoritmi e pseudocodifica

Informatica (A-K) 5. Algoritmi e pseudocodifica Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Подробнее

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

Elementi 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

Подробнее

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti 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

Подробнее

PROGRAMMA = ALGORITMO

PROGRAMMA = ALGORITMO Corso di Laurea Scienze Prof. San. Tec., Area Tecnico-Assistenziale SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI Anno Accademico 2005-2006 Prof. Fausto Passariello Corso Integrato Metodologia della Ricerca

Подробнее

INFORMATICA. Strutture iterative

INFORMATICA. Strutture iterative INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale

Подробнее

Istruzioni iterative (o cicliche)

Istruzioni iterative (o cicliche) Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Istruzioni iterative (o cicliche) Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria

Подробнее

Primi passi col linguaggio C

Primi 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

Подробнее

Introduzione alla programmazione. Alice Pavarani

Introduzione alla programmazione. Alice Pavarani Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello

Подробнее

Fondamenti di Informatica

Fondamenti di Informatica Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile

Подробнее

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Подробнее

2. Algoritmi e Programmi

2. Algoritmi e Programmi 12 2. Algoritmi e Programmi Dato un problema, per arrivare ad un programma che lo risolva dobbiamo: individuare di cosa dispongo: gli input; definire cosa voglio ottenere: gli output; trovare un metodo

Подробнее

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

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Подробнее

Istruzioni iterative. Istruzioni iterative

Istruzioni iterative. Istruzioni iterative Istruzioni iterative Esempio: Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d",

Подробнее

STRUTTURE DI CONTROLLO DEL C++

STRUTTURE DI CONTROLLO DEL C++ STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto

Подробнее

Java SE 7. Strutture di programmazione (2)

Java SE 7. Strutture di programmazione (2) Java SE 7 Strutture di programmazione (2) [email protected] [email protected] Casting (1) E' l'operazione che realizza la conversione di tipo tra oggetti e tra tipi primitivi. E' un'operazione

Подробнее

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Подробнее

#include <stdio.h> main() { - 1 -

#include <stdio.h> main() { - 1 - Un primo esempio di programma Ogni programma C deve contenere una funzione speciale chiamata main che indica il punto in cui inizia l esecuzione del programma. La funzione main è unica all interno di ogni

Подробнее

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using

Подробнее

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

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative

Подробнее

Qualsiasi programma in C++ segue lo schema:

Qualsiasi programma in C++ segue lo schema: Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Подробнее

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare

Подробнее

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

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Le Strutture di controllo Del Linguaggio C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni STRUTTURE DI CONTROLLO PRIMITIVE SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE NON PRIMITIVE

Подробнее

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout

Подробнее

Le basi del linguaggio Java

Le 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

Подробнее

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

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Подробнее