Algoritmi e basi del C Struttura di un programma

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Algoritmi e basi del C Struttura di un programma"

Transcript

1 Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio [email protected] Ver. aggiornata al 17 Marzo 2015

2 Compitini Compitini di INFO: 24 Aprile 2015 C.G.1 (Ed. 9) 21 Maggio 2015 S.0.2 (Ed. 3) 17 Giugno 2015 I.0.1 (Ed. 4) 2

3 Compitini Compitini di INFO: 24 Aprile 2015 C.G.1 (Ed. 9) 21 Maggio 2015 S.0.2 (Ed. 3) 17 Giugno 2015 I.0.1 (Ed. 4) 3

4 Primo Lab: Installation Party Dove: EG.7: per studenti senza PC L26.14: per PC muniti Quando: pm 4

5 Per i lab Indirizzo base: base = home.deib.polimi.it/santambr/dida/ieim/2015 Info in generale sui lab base/labs.htm Strumenti usanti in lab base/tools.htm 5

6 Benvenuti nel fantastico mondo del C 6

7 Il primo programma: ciao mondo 7

8 Ciao Mondo: stdio.h Come prima cosa, dobbiamo includere le librerie necessarie al funzionamento del nostro programma. La libreria stdio.h Standard Input Output Permette di utilizzare I comandi necessari per richiedere dati o visualizzare dei messaggi. 8

9 Ciao Mondo: main Tutti i programmi in C contengono un elemento principale: Il main main contiene le istruzioni che verranno eseguite all avvio del nostro programma 9

10 Ciao Mondo: main La sequenza di istruzioni che caratterizzano il main sono racchiuse tra parentesi graffe Tale blocco di istruzioni e anche noto come corpo Ogni istruzione deve essere seguita da un punto e virgola 10

11 Ciao Mondo: printf 11

12 Ciao Mondo: printf Stampa a video il mesaggio Ciao Mondo! printf e contenuta in stdio.h Il messaggio da stampare e contenuto tra 12

13 Ciao Mondo: printf return e' un comando che ci permette di comunicare con il sistema ospite In questo caso viene utilizzato per comunicare lo stato di terminazione del programma 0 indica una terminazione corretta del nostro programma 13

14 Struttura di un programma C 14

15 Struttura di un programma C Parte dichiarativa: contiene le dichiarazioni degli elementi del programma Dati, ed eventualmente funzioni (ma solo nella parte globale) 15

16 Struttura di un programma C parte dichiarativa globale inclusione librerie /* per poter invocare funzioni utili (i/o,...) */ dichiarazione di variabili globali e funzioni 16

17 Struttura di un programma C inclusione librerie /* per poter invocare funzioni utili (i/o,...) */ dichiarazione di variabili globali e funzioni int main ( ) { } parte dichiarativa globale Ogni programma C deve contenere un modulo int main() {...} 17

18 Struttura di un programma C parte dichiarativa globale inclusione librerie /* per poter invocare funzioni utili (i/o,...) */ dichiarazione di variabili globali e funzioni int main ( ) { parte dichiarativa locale dichiarazione di variabili locali } Ogni programma C deve contenere un modulo int main() {...} 18

19 Struttura di un programma C Parte dichiarativa: contiene le dichiarazioni degli elementi del programma Dati, ed eventualmente funzioni (ma solo nella parte globale) Parte esecutiva: contiene le istruzioni da eseguire, che ricadono nelle categorie: Istruzioni di assegnamento (=) Strutture di controllo: Condizionali (if-then-else e switch) Iterative, o cicli (while, do e for) Istruzioni di Input/Output (printf, scanf,...) 19

20 Struttura di un programma C parte dichiarativa globale inclusione librerie /* per poter invocare funzioni utili (i/o,...) */ dichiarazione di variabili globali e funzioni int main ( ) { parte dichiarativa locale dichiarazione di variabili locali } istruzione 1; istruzione 2; istruzione 3; istruzione 4;... istruzione N; /* tutti i tipi di operazioni, e cioè: */ /* istr. di assegnamento */ /* istr. di input / output */ /* istr. di controllo (condizionali, cicli) */ parte esecutiva Ogni programma C deve contenere un modulo int main() {...} 20

21 Istruzioni semplici e composte Sequenze di istruzioni semplici Ogni istruzione semplice termina con ; ; è detto il terminatore dell istruzione Si possono raggruppare più istruzioni in sequenza tra { e } a costituire un blocco Il blocco costituisce una super-istruzione Non è necessario il ; dopo }, in quanto il blocco è già una istruzione e non necessita del terminatore per diventarla 21

22 Mostra caratteri Problema Si scriva un programma che richieda l inserimento di un carattere e lo mostri a video 22

23 Mostra caratteri Problema Si scriva un programma che richieda l inserimento di un carattere e lo mostri a video Sotto-problema E dove lo salvo il carattere??? 23

24 Variabili e assegnamenti Le variabili non sono altro che dei contenitori (aree di memoria) identificati da un nome univoco. Le variabili vengono definite da un tipo e da un nome. 24

25 Mostra caratteri Problema Si scriva un programma che richieda l inserimento di un carattere e lo mostri a video 25

26 Mostra caratteri Problema Si scriva un programma che richieda l inserimento di un carattere e lo mostri a video 26

27 Tipo carattere e codifica ASCII 27

28 Ricordate il 32 28

29 Un esempio di calcolo 29

30 Variabili e loro valore Problema Come assegno un valore ad un variabile??? 30

31 Esecuzione degli assegnamenti valutazione dell espressione che compare a destra del simbolo = il valore delle variabili che vi compaiono si trova memorizzato nelle celle corrispondenti, e da lì è letto memorizzazione del risultato dell'espressione nella variabile a sinistra del simbolo = 31

32 Esempi di assegnamento x = 23; w = 'a'; y = z; alfa = x + y; r3 = ( alfa * 43 xgg ) * ( delta 32 * j ); x = x + 1; Abbreviazioni (operatori di assegnamento): a = a + 7; a = a * 5; a = a + 1; a = a - 1; a += 7; a *= 5; ++a; --a; Istruzioni della forma variabile = variabile operatore espressione; si possono scrivere come: variabile operatore = espressione; 32

33 Aritmetica (1/2) Operatori aritmetici in C: * per la moltiplicazione e / per la divisione La divisione tra interi elimina il resto (quoziente): 13 / 5 è uguale a 2 L operatore modulo calcola il resto della divisione: 13 % 5 è uguale a 3 Precedenza degli operatori: Come in aritmetica, moltiplicazione e divisione hanno priorità su addizione e sottrazione si usano le parentesi quando c è ambiguità Per esempio: la media aritmetica di a, b, c: a + b + c / 3 NO!!!! (a + b + c ) / 3 SI 33

34 Aritmetica (2/2) Operazione Operatore C Espressione aritmetica Espressione C Addizione + f+7 f + 7 Sottrazione - p-c p c Moltiplicazione * bm b * m Divisione / x/y x / y Modulo % r mod s r % s Operatori C Operazioni Precedenza ( ) Parentesi Valutate per prime. Se ci sono degli annidamenti, si valuta prima la coppia più interna. Se ci sono più coppie allo stesso livello, si valuta da sinistra a destra. *, /, % Moltiplicazione, Divisione, Modulo Valutate per seconde. Se ce ne sono diverse, si valutano da sinistra a destra. +, Addizione, Sottrazione Valutate per ultime. Se ce ne sono diverse, si valutano da sinistra a destra. 34

35 Come interagiamo con l esterno? Input printf viene utiizzata per fornire un output del programma a video 35

36 Come interagiamo con l esterno? Input printf viene utiizzata per fornire un output del programma a video Output scanf viene utilizzato per fornire degli input, e.g. da tastiera, al nostro programma 36

37 Inserimento dati Problema Richiedi all utente la sua altezza in centrimentri e mostrala a video in metri Pseudocodice 1. Scrivi quanto sei alto? 2. Leggi altezzacm 3. Altezzam = alteccacm/ Scrivi sei alto: altezzam 37

38 Pseudocodice vs Codice C Pseudocodice 1. Scrivi quanto sei alto? 2. Leggi altezzacm 3. Altezzam = alteccacm/ Scrivi sei alto: altezzam 38

39 Un primo errore 39

40 Un secondo errore 40

41 Un terzo errore 41

42 Soluzione corretta L importanza dei tipi di dato 42

43 Tipi di dato in C In C esistono diversi tipi di dato built-in, tra cui int: numeri interi float: numeri con virgola (singola precisione) double: numeri con virgola (doppia precisione) char: caratteri (sono interi che possono variare tra 0-255) Inoltre il C fornisce anche la possibilità di definire dei nuovi tipi di dato 43

44 Problemi di fine giornata Scrivere un programma che, letti due numeri, individua quello maggiore Rappresentare in pseudocodice l agoritmo che, letti 3 numeri, ne calcola il minimo comune multiplo 44

45 Fonti per lo studio + Credits Fonti per lo studio how to solve it, Poyla G PolyaHowToSolveIt.pdf Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill Capitolo 3 Introduzione ai sistemi informatici, D. Sciuto, G. Buonanno, L. Mari, 4a Ed, McGrawHill Capitolo 3, 4 The Art & Craft of Computing, S. Ceri, D. Mandrioli, L. Sbattella, Addison-Wesley Capitolo 3 45

Algoritmi e basi del C

Algoritmi e basi del C Algoritmi e basi del C Marco D. Santambrogio [email protected] Ver. aggiornata al 4 O/obre 2013 What it s all about! 2 What it s all about! 3 What it s all about! 4 Obiettivi Algoritmi Pseudocodice

Dettagli

2 Operatori matematici e costrutto if

2 Operatori matematici e costrutto if Questa dispensa propone esercizi sulla scrittura di algoritmi, in linguaggio C, utili alla comprensione delle operazioni tra numeri e del costrutto condizionale if. Si introducono anche le due funzioni

Dettagli

Codifica binaria dell informazione

Codifica binaria dell informazione Codifica binaria dell informazione Marco D. Santambrogio [email protected] Ver. aggiornata al 20 Marzo 2016 Un obiettivo per domarli tutti 2 Un obiettivo per domarli tutti 3 Obiettivi Rappresentazione

Dettagli

Stringhe e tipi di dati strutturati

Stringhe e tipi di dati strutturati Stringhe e tipi di dati strutturati Marco D. Santambrogio [email protected] Ver. aggiornata al 21 Marzo 2013 Info sui Labs http://tinyurl.com/ieimlabextra Ricordate di portare un adattatore!

Dettagli

Algoritmi e basi del C

Algoritmi e basi del C Algoritmi e basi del C Marco D. Santambrogio [email protected] Ver. aggiornata al 9 Marzo 2016 Info logistiche Sito del corso Le lezioni sono TUTTE già online http://home.deib.polimi.it/santambr/dida/ieim/2016/docs.htm

Dettagli

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

Dettagli

Linguaggio C Informatica Grafica

Linguaggio C Informatica Grafica Linguaggio C Informatica Grafica Corsi di Informatica Grafica Prof. Manuel Roveri Dipartimento di Elettronica e Informazione [email protected] Linguaggio C Breve storia Struttura di un programma Variabili

Dettagli

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

Dettagli

Linguaggio C: introduzione

Linguaggio 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

Dettagli

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,

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio 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

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE 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

Dettagli

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

Dettagli

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

Dettagli

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

Dettagli

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

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE 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

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma 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

Dettagli

Variabili e Istruzioni

Variabili e Istruzioni Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome

Dettagli

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

Dettagli

IL PRIMO PROGRAMMA IN C

IL 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

Dettagli

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

Dettagli

Corso sul linguaggio C

Corso sul linguaggio C Corso sul linguaggio C Modulo 1 1.1 Istruzioni semplici 1 Prerequisiti Saper progettare algoritmi Saper descrivere algoritmi (NLS, ddf) Conoscere il concetto di espressione 2 1 Introduzione In questa lezione

Dettagli