La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

2000 Prentice Hall, Inc. All rights reserved. Capitolo 2 (Deitel) Introduzione alla programmazione in C Indice degli argomenti 2.1 - Introduzione 2.2 -

Presentazioni simili


Presentazione sul tema: "2000 Prentice Hall, Inc. All rights reserved. Capitolo 2 (Deitel) Introduzione alla programmazione in C Indice degli argomenti 2.1 - Introduzione 2.2 -"— Transcript della presentazione:

1 2000 Prentice Hall, Inc. All rights reserved. Capitolo 2 (Deitel) Introduzione alla programmazione in C Indice degli argomenti 2.1 - Introduzione 2.2 - Un semplice programma in C: visualizzare una linea di testo 2.3 - Un altro semplice programma in C: sommare due numeri interi 2.4 - Concetti di base sulla memoria 2.5 - Laritmetica del C 2.6 - Prendere decisioni: operatori di uguaglianza e relazionali 2.7 - Parole chiave del C

2 2000 Prentice Hall, Inc. All rights reserved. 2.1 - Introduzione Il linguaggio di programmazione C –Offre allo sviluppatore un approccio disciplinato e strutturato alla progettazione di un programma (programmazione strutturata) –Consente di creare programmi chiari, leggibili, semplici da testare e debuggare, facili da modificare Concetto di Programmazione strutturata –Verrà approfondito nei prossimi capitoli (3 e 4) –Sarà utilizzato in tutta la parte rimanente del corso

3 2000 Prentice Hall, Inc. All rights reserved. 2.2 - Un semplice programma in C: visualizzare una linea di testo (1/5) Commenti –Sono il testo racchiuso tra /* e */, che è ignorato dal compilatore –Servono a descrivere il codice che implementa il programma –Un altro modo per scrivere i commenti è // : In questo caso tutto il testo che segue // e sta nella stessa riga è un commento Benvenuto nel mondo del C! OUTPUT CODICE DEL PROGRAMMA 1/* Fig. 2.1: fig02_01.c 2 Un primo programma in C */ 3#include 4 5int main(){ 6 printf( Benvenuto nel mondo del C!\n" ); 7 return 0; 8}8}

4 2000 Prentice Hall, Inc. All rights reserved. 2.2 - Un semplice programma in C: visualizzare una linea di testo (2/5) #include –Tutte le righe che iniziano con # sono direttive per il preprocessore Dicono al calcolatore di caricare il contenuto di un determinato file (i file.h contengono la definizioni di funzioni di libreria del C) – è la libreria che abilita le operazioni standard di input/output int main() –I programmi C contengono una o più funzioni, una sola delle quali deve chiamarsi main: è quella principale che richiama poi tutte le altre –Per indicare una funzione si scrive il nome della funzione seguito da ( ): Se la funzione riceve dei parametri di input, essi stanno tra le ( ) Se non ne ha, le parentesi sono vuote e lo si può indicare anche con (void) –int significa che la funzione main restituisce (output) un valore intero –Le parentesi graffe identificano un blocco di istruzioni (o statement): Il corpo (blocco di istruzioni) di ogni funzione deve essere racchiuso { } Le istruzioni vengono eseguite in ordine, dallalto verso il basso

5 2000 Prentice Hall, Inc. All rights reserved. 2.2 - Un semplice programma in C: visualizzare una linea di testo (3/5) printf( Benvenuto nel mondo del C!\n" ); –Lintera riga rappresenta una tipica istruzione in C: Unistruzione ordina al calcolatore di eseguire una determinata azione Tutte le istruzioni devono terminare con un punto e virgola Qui lazione è stampare a video la sequenza di caratteri tra le –Listruzione è costituita da una funzione di stampa a video formattata: printf è una funzione inclusa nella libreria stdio.h per lI/O Visualizza tutto quello che gli viene passato come parametro, dentro le ( ) –\ è il carattere di escape: \ toglie al carattere che lo segue il suo usuale significato In generale \ serve ad indicare che la funzione printf dovrà fare qualcosa diversa dallordinario, come dare una formattazione al testo visualizzato Qui \n indica il carattere speciale newline (nuova riga, vai a capo) Ci sono anche altri caratteri di formattazione: –\t crea i rientri del testo e \r posiziona il cursore a inizio riga corrente –\a fa suonare i beeper del Pc,, \, \. \\ consentono la stampa di, e \

6 2000 Prentice Hall, Inc. All rights reserved. 2.2 - Un semplice programma in C: visualizzare una linea di testo (4/5) return 0; –E uno dei possibili modi per uscire da una funzione –In questo caso, indica al S.O. che il programma è terminato regolarmente –Per la sintassi C, va messo a fine main perché la funzione ritorna un int Parentesi graffa chiusa } –Indica che la fine del main è stata raggiunta, ovvero che la funzione non contiene ulteriori istruzioni dopo la }, cosa che vale per tutte le funzioni Linker –Quando una funzione viene chiamata, il linker la localizza nella libreria –Una volta trovata, la inserisce nel programma oggetto (traduzione del programma sorgente effettuata dal compilatore) –Se invece il nome della funzione è scritto male, il linker segnalerà un errore perché non riesce a trovare la funzione nella libreria

7 2000 Prentice Hall, Inc. All rights reserved. 2.2 - Un semplice programma in C: visualizzare una linea di testo (5/5) Scrittura del codice –#include int main(void) {printf(Benvenuti nel mondo del C!\n");return 0;} –Anche scritto come sopra, il programma funziona correttamente ma è assolutamente illeggibile –Se il codice di un programma è scritto in modo disordinato, diventa difficile scovare eventuali errori o modificarlo in un secondo momento Alcuni suggerimenti –Inserire i commenti –Far rientrare (indent) il corpo della funzione di un livello (2/3 spazi) –Scrivere una sola istruzione per ogni riga

8 2000 Prentice Hall, Inc. All rights reserved. 2.3 - Un altro semplice programma in C: sommare due numeri interi (1/7) Inserisci il primo intero 45 Inserisci il secondo intero 72 La somma è 117 1/* Fig. 2.5: fig02_05.c Programma di addizione */ 2#include 3 4int main(){ 5 int integer1, integer2, sum; /* dichiarazioni */ 6 7 printf( Inserisci il primo intero\n" ); /* prompt */ 8 scanf( "%d", &integer1 ); /* legge un intero */ 9 printf( Inserisci il secondo intero\n" ); /* prompt */ 10 scanf( "%d", &integer2 ); /* legge un intero */ 11 sum = integer1 + integer2; /* assegnamento della somma*/ 12 printf( La somma è %d\n", sum ); /* visualizza la somma */ 13 return 0; /* indica che il programma è terminato con successo */ 14} 1. Inizializzazione delle variabili 2. Input 3. Somma 4. Output Visualizzazione del programma

9 2000 Prentice Hall, Inc. All rights reserved. 2.3 - Un altro semplice programma in C: sommare due numeri interi (2/7) Come prima –Commenti, #include, e main int integer1, integer2, sum; –Dichiarazione delle variabili Le variabili non sono altro che contenitori, cioè locazioni di memoria in cui un valore può essere immagazzinato Prima di essere usata, ogni variabile deve essere dichiarata (una ed una sola volta) con un nome univoco ed un tipo di dato e poi inizializzata Le dichiarazioni vanno messe sempre prima di ogni istruzione eseguibile, altrimenti si genera un errore di sintassi (di compilazione) Così il compilatore può stabilire subito lo spazio di memoria da allocare alle variabili e controllare che le operazioni tra variabili siano adatte al loro tipo –Durante lesecuzione del programma, ogni variabile ha un nome, un tipo ed un valore corrente assegnato

10 2000 Prentice Hall, Inc. All rights reserved. 2.3 - Un altro semplice programma in C: sommare due numeri interi (3/7) Tipi di dato –Il tipo di una variabile indica quale tipo di valori può assumere il contenuto della variabile stessa char indica che la variabile può contenere caratteri (es. a, b, C, $, -, ? ) int,short,long indicano che la variabile può contenere valori interi (es. -1, 0, 21 ); la differenza tra i 3 tipi sta nel range di interi rappresentabili float indica che la variabile può contenere numeri reali rappresentati in virgola mobile a singola precisione (es. 3.14, 2.187, -5.39 ) double indica che la variabile può contenere valori reali rappresentati in virgola mobile a doppia precisione (es. 1.23456789101112 ) int integer1, integer2, sum –Sono i nomi delle variabili (identificatori) Gli identificatori sono composti da lettere, cifre (ma non possono iniziare con una cifra) e underscore ( _ ) Ogni identificatore può essere composto al massimo da 31 caratteri Il C è case sensitive (fa distinzione tra maiuscole e minuscole)

11 2000 Prentice Hall, Inc. All rights reserved. 2.3 - Un altro semplice programma in C: sommare due numeri interi (4/7) TipoDimensione in byteRange di valori rappresentabili char 1 (8 bit)Tutti i caratteri della tabella ASCII int 2 (16 bit)Da -32.768 a +32.767 short (int) 2 (16 bit)Da -32.768 a +32.767 long (int) 4 (32 bit)Da -2.147.483.648 a +2.147.483.647 float 4 (32 bit)Da -3,4 x 10 a +3,4 x 10 double 8 (64 bit)Da -1,8 x 10 a +1,8 x 10 38 308

12 2000 Prentice Hall, Inc. All rights reserved. 2.3 - Un altro semplice programma in C: sommare due numeri interi (5/7) scanf( "%d", &integer1 ); –Funzione C che riceve un valore in input dallutente scanf prende i dati dallo standard input (di solito la tastiera) E unaltra delle funzioni contenute nella libreria stdio.h per lI/O Leffettivo inserimento di un valore è confermato dallutente col tasto INVIO –La scanf prevede due parametri/argomenti: %d è una specifica di conversione che indica il tipo del dato da inserire; in questo caso deve essere un intero (%c per i caratteri, %f per i float, ecc..) &integer1 indica la locazione di memoria in cui salvare la variabile integer1 è il nome della variabile che assume il valore in input & si chiama operatore indirizzo e crea confusione inizialmente, per ora occorre solo ricordare di anteporlo al nome della variabile nelle scanf –In questo esempio lutente risponderà alla scanf digitando un numero e premendo il tasto INVIO (return)

13 2000 Prentice Hall, Inc. All rights reserved. 2.3 - Un altro semplice programma in C: sommare due numeri interi (6/7) = (operatore di assegnamento) –E un operatore binario che assegna un valore ad una variabile –Operatore binario significa che necessita di due operandi, come anche loperatore +: il primo sta sempre alla sua sinistra, il secondo a destra sum = variable1 + variable2; –La variabile che riceve il valore è sulla sinistra mentre il valore assegnato è dato dallespressione sulla destra (scrivere 3=a; dà errore !!!) printf( La somma è %d\n", sum ); –Funzione duale della scanf (rispetto a prima, qui ha 2 parametri): %d indica il tipo del dato da visualizzare, che qui è un intero sum specifica la variabile da cui prendere il valore da visualizzare Il valore della variabile verrà scritto nella stringa al posto di %d –Volendo, i calcoli possono essere eseguiti anche direttamente allinterno dellistruzione printf, ottenendo un output equivalente printf( La sommma è %d\n", integer1 + integer2 );

14 2000 Prentice Hall, Inc. All rights reserved. 2.3 - Un altro semplice programma in C: sommare due numeri interi (7/7) Specifiche di conversione –Possono essere usate sia con printf che con scanf Stringa di controlloCosa viene stampato %d, %iUn intero decimale %cUn carattere %sUna stringa di caratteri %oUn numero ottale %x, %XUn numero esadecimale %uUn intero senza segno %fUn numero reale (con virgola) %e, %EUn numero in formato esponenziale %Il carattere %

15 2000 Prentice Hall, Inc. All rights reserved. 2.4 - Concetti di base sulla memoria (1/2) Variabili –La memoria del calcolatore è un insieme di locazioni (celle) contigue –Ogni variabile ha un nome, un tipo, una dimensione ed un valore La dimensione è determinata dal tipo I nomi delle variabili corrispondono a locazioni nella memoria del calcolatore –Quando si assegna un nuovo valore ad una variabile, ad esempio con una scanf, esso rimpiazza quello vecchio, che è quindi perso per sempre –Leggere il contenuto di una variabile in memoria non ne altera mai il valore Una rappresentazione visiva: integer1 45

16 2000 Prentice Hall, Inc. All rights reserved. 2.4 - Concetti di base sulla memoria (2/2) 1/* Programma di stampa dellinput inserito*/ 2#include 3 4int main(void){ 5 int i; 6 7 printf( Inserisci un numero intero\n" ); 8 scanf( "%d", &i ); 9 printf( Il valore inserito è %d\n, i ); 10 return 0; 11} Inserisci un intero -33 Il valore inserito è -33 -33 102 103 104 105 106 107 108 109 i Azione di printf/scanf in memoria –Quando si esegue il programma, la variabile i viene associata allindirizzo di memoria con indice 104; quindi nel corso dellesecuzione, i rappresenterà lindirizzo di memoria 104 ed è li che il valore di input -33 verrà salvato

17 2000 Prentice Hall, Inc. All rights reserved. 2.5 - Laritmetica del C (1/2) In quasi tutti i programmi sono presenti calcoli aritmetici –Si usa il carattere * per la moltiplicazione e / per la divisione –La divisione tra interi tronca sempre la parte decimale 7 / 5 darà come risultato 1 –Loperatore modulo (%) restituisce il resto di una divisione 7 % 5 darà come risultato 2 (se gli operandi non sono interi, ho errore sintattico) Precedenze tra gli operatori –Alcuni operatori aritmetici hanno la precedenza rispetto ad altri (per esempio, la moltiplicazione viene eseguita prima delladdizione) Se si vuole evadere il comportamento standard, le priorità tra operatori possono essere modificate usando le parentesi dove serve –Esempio: si vuole calcolare la media di tre variabili a, b e c Non si deve scrivere: a + b + c / 3 (errore logico) Si scrive: (a + b + c ) / 3

18 2000 Prentice Hall, Inc. All rights reserved. 2.5 - Laritmetica del C (2/2) Operatori aritmetici Regole di precedenza Operazione in COperatore aritmeticoEspressione in C Addizione+f + 7 Sottrazione-p – c Moltiplicazione*b * m Divisione/x / y Modulo%r % s OperatoreOperazioneOrdine di valutazione (precedenza) ( )ParentesiSono valutate per prime. Se sono nidificate, sono valutate per prime le espressioni nella coppia di ( ) più interna. Nel caso che ci siano più coppie di parentesi allo stesso livello (non nidificate), queste saranno valutate da sinistra a destra. *, /, %Moltiplicazione, Divisione, Modulo Sono valutate per seconde. Nel caso in cui ce ne siano molte, sono valutate in ordine da sinistra a destra. +. -Addizione, Sottrazione Sono valutate per ultime. Nel caso in cui ce ne siano molte, sono valutate in ordine da sinistra a destra.

19 2000 Prentice Hall, Inc. All rights reserved. 2.6 - Prendere decisioni: operatori di uguaglianza e relazionali (1/4) Le possibili istruzioni eseguibili in C servono a: –Compiere azioni (calcoli, input/output di dati) –Prendere decisioni Si può ad esempio voler stampare a video "promosso" o bocciato" in base al voto di un esame che viene immesso come input Struttura di controllo if –In questo capitolo la vediamo nella sua versione più semplice, verrà poi meglio approfondita nei capitoli successivi –Se una condizione è soddisfatta, allora il blocco di istruzioni allinterno del corpo della struttura if viene eseguito 0 corrisponde a falso, diverso da zero a vero (non esiste il tipo booleano) –Al termine della struttura if, riprende lesecuzione del programma lineare Per creare condizioni si usano: –Operatori relazionali (di confronto) –Operatori logici, che vedremo nel prossimo capitolo

20 2000 Prentice Hall, Inc. All rights reserved. 2.6 - Prendere delle decisioni: operatori di uguaglianza e relazionali (2/4) Operatori di uguaglianza e relazionali Operatori di uguaglianza e relazionali in una condizione C Significato della condizione in C Operatori di uguaglianza =if (x == y)Se x è uguale a y … if (x != y)Se x è diverso da y … Operatori relazionali >if (x > y)Se x è maggiore di y … <if (x < y)Se x è minore di y … if (x >= y)Se x è maggiore o uguale a y … if (x <= y)Se x è minore o uguale a y … Operatori di uguaglianza e relazionali

21 2000 Prentice Hall, Inc. All rights reserved. 1/* Fig. 2.13: fig02_13.c 2 Usare le strutture if, operatori relazionali e di uguaglianza */ 3#include 4 5int main(){ 6 int num1, num2; 7 8 printf( Inserisci due numeri interi e ti dirò\n" ); 9 printf( quali relazioni soddisfano: " ); 10 scanf( "%d%d", &num1, &num2 ); /* legge due interi */ 11 12 if ( num1 == num2 ) 13 printf( "%d è uguale a %d\n", num1, num2 ); 14 15 if ( num1 != num2 ) 16 printf( "%d è diverso da %d\n", num1, num2 ); 17 18 if ( num1 < num2 ) 19 printf( "%d è minore di %d\n", num1, num2 ); 20 2.6 - Prendere delle decisioni: operatori di uguaglianza e relazionali (3/4) 1. Dichiarazione variabili 2. Input 3 Struttura If 4. Visualizzazione 5. Uscita dal main

22 2000 Prentice Hall, Inc. All rights reserved. 21 if ( num1 > num2 ) 22 printf( "%d è maggiore di %d\n", num1, num2 ); 23 24 if ( num1 <= num2 ) 25 printf( "%d è minore o uguale di %d\n", num1, num2 ); 26 27 if ( num1 >= num2 ) 28 printf( "%d è maggiore o uguale di %d\n", num1, num2 ); 29 30 return 0; /* indica che il programma è terminato con successo*/ 31} 2.6 - Prendere delle decisioni: operatori di uguaglianza e relazionali (4/4) Inserisci due numeri interi e ti dirò quali relazioni soddisfano: 3 7 3 è diverso da 7 3 è minore di 7 3 è minore o uguale di 7 Inserisci due numeri interi e ti dirò quali relazioni soddisfano : 22 12 22 è diverso da 12 22 è maggiore di 12 22 è maggiore o uguale di 12 Visualizzazione del programma in due esecuzioni successive

23 2000 Prentice Hall, Inc. All rights reserved. 2.7 - Parole chiave del C Parole chiave –Sono parole speciali riservate del C –Non possono mai essere utilizzate come identificatori/nomi di variabili


Scaricare ppt "2000 Prentice Hall, Inc. All rights reserved. Capitolo 2 (Deitel) Introduzione alla programmazione in C Indice degli argomenti 2.1 - Introduzione 2.2 -"

Presentazioni simili


Annunci Google