Algoritmi e basi del C Struttura di un programma

Documenti analoghi
Algoritmi e basi del C

2 Operatori matematici e costrutto if

Codifica binaria dell informazione

Stringhe e tipi di dati strutturati

Algoritmi e basi del C

Struttura dei programmi C

Linguaggio C Informatica Grafica

Qualsiasi programma in C++ segue lo schema:

Linguaggio C: introduzione

Lezione 6 Introduzione al C++ Mauro Piccolo

Linguaggio C - sezione dichiarativa: costanti e variabili

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

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

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

Introduzione alla programmazione in linguaggio C

Istruzioni iterative (o cicliche)

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 - Programma

Variabili e Istruzioni

Esercitazione di Reti degli elaboratori

IL PRIMO PROGRAMMA IN C

L AMBIENTE CODE BLOCKS E L IO

Corso sul linguaggio C

Transcript:

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 Maggio 2015 10.30am @ S.0.2 (Ed. 3) 17 Giugno 2015 1.30pm @ I.0.1 (Ed. 4) 2

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

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

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

Benvenuti nel fantastico mondo del C 6

Il primo programma: ciao mondo 7

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

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

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

Ciao Mondo: printf 11

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

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

Struttura di un programma C 14

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

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

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

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

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

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

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

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

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

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

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

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

Tipo carattere e codifica ASCII 27

Ricordate il 32 28

Un esempio di calcolo 29

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

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

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

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

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

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

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

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/100 4. Scrivi sei alto: altezzam 37

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

Un primo errore 39

Un secondo errore 40

Un terzo errore 41

Soluzione corretta L importanza dei tipi di dato 42

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

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

Fonti per lo studio + Credits Fonti per lo studio how to solve it, Poyla G http://math.hawaii.edu/home/pdf/putnam/ 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