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

Slides:



Advertisements
Presentazioni simili
IL LINGUAGGIO ”C” Per l’eleganza della sintassi e la compattezza dei costrutti, il C è una sfida permanente alle capacità intellettuali del programmatore.
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F1 Primi programmi.
Introduzione al linguaggio C++
INFORMATICA Altre Istruzioni di I/O
LINGUAGGIO DI PROGRAMMAZIONE C
INFORMATICA Strutture condizionali
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Linguaggi algoritmici
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
LE FUNZIONI IN C Sommario 1 Introduzione 2 Moduli di programma in C
PUNTATORI Introduzione
Algoritmi e Programmazione
Introduzione al linguaggio C
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Caratteri e stringhe di caratteri
Ingresso interattivo (scanf(); %lf)
Funzioni definite dall’utente
Prof.ssa Chiara Petrioli -- Fondamenti di Programmazione, a.a. 2009/2010 Corso di Fondamenti di Programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli Corso.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 3 Ottobre 2013.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico, variabili, tipi primitivi, assegnamento a variabile.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Dichiarazioni e tipi predefiniti nel linguaggio C
I File.
Il Linguaggio C.
Le funzioni.
Espressioni condizionali
Java base I: Sintassi e tipi di dati
Programmazione in Java
2000 Prentice Hall, Inc. All rights reserved. Capitolo 6 (Deitel) I vettori Sommario Introduzione Vettori Dichiarazione di vettori 6.4.
CODIFICA Da flow-chart a C++.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Unità Didattica 3 Linguaggio C
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 5 (Deitel) Le funzioni Indice degli argomenti Introduzione Moduli nei programmi C 5.3.
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Complessità di un algoritmo
Introduzione a Javascript
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Algoritmi e basi del C Struttura di un programma
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Algoritmi e basi del C Struttura di un programma
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Transcript della presentazione:

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

2000 Prentice Hall, Inc. All rights reserved 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

2000 Prentice Hall, Inc. All rights reserved 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}

2000 Prentice Hall, Inc. All rights reserved 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

2000 Prentice Hall, Inc. All rights reserved 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 \

2000 Prentice Hall, Inc. All rights reserved 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

2000 Prentice Hall, Inc. All rights reserved 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

2000 Prentice Hall, Inc. All rights reserved 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

2000 Prentice Hall, Inc. All rights reserved 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

2000 Prentice Hall, Inc. All rights reserved 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, ) double indica che la variabile può contenere valori reali rappresentati in virgola mobile a doppia precisione (es ) 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)

2000 Prentice Hall, Inc. All rights reserved 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 a short (int) 2 (16 bit)Da a long (int) 4 (32 bit)Da a 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

2000 Prentice Hall, Inc. All rights reserved 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)

2000 Prentice Hall, Inc. All rights reserved 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 );

2000 Prentice Hall, Inc. All rights reserved 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 %

2000 Prentice Hall, Inc. All rights reserved 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

2000 Prentice Hall, Inc. All rights reserved 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 è 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

2000 Prentice Hall, Inc. All rights reserved 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

2000 Prentice Hall, Inc. All rights reserved 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.

2000 Prentice Hall, Inc. All rights reserved 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

2000 Prentice Hall, Inc. All rights reserved 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

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 */ if ( num1 == num2 ) 13 printf( "%d è uguale a %d\n", num1, num2 ); if ( num1 != num2 ) 16 printf( "%d è diverso da %d\n", num1, num2 ); if ( num1 < num2 ) 19 printf( "%d è minore di %d\n", num1, num2 ); Prendere delle decisioni: operatori di uguaglianza e relazionali (3/4) 1. Dichiarazione variabili 2. Input 3 Struttura If 4. Visualizzazione 5. Uscita dal main

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

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