Algoritmi e basi del C Struttura di un programma

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

INFORMATICA Altre Istruzioni di I/O
LINGUAGGIO DI PROGRAMMAZIONE C
INFORMATICA Strutture condizionali
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Marzo 2013 Marco D. Santambrogio – Gianluca Durelli -
Process synchronization
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
LE FUNZIONI IN C Sommario 1 Introduzione 2 Moduli di programma in C
Algoritmi e Programmazione
INFORMATICA Strutture iterative
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
Algebra di Boole ed elementi di logica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Algebra di Boole ed elementi di logica
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 3 Ottobre 2013.
Introduzione alla programmazione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata al 4 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 18 Aprile 2012.
Process synchronization
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
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.
Dichiarazioni e tipi predefiniti nel linguaggio C
CODIFICA Da flow-chart a C++.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 2 (Deitel) Introduzione alla programmazione in C Indice degli argomenti Introduzione 2.2 -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Marzo 2014 Marco D. Santambrogio – Gianluca Durelli -
Anno accademico Le istruzioni di controllo in C.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Ottobre 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 3 Aprile 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 27 Marzo 2015.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Marzo 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
Algoritmi e basi del C Struttura di un programma
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Codifica binaria dell’informazione Marco D. Santambrogio – Ver. aggiornata al 11.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
Operatori di incremento e decremento
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 15 Maggio.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
Codifica binaria dell’informazione
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 1 Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Librerie… Marco D. Santambrogio – Ver. aggiornata al 20 Luglio 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Codifica binaria dell’informazione Marco D. Santambrogio – Ver. aggiornata al 24.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array n-dimensionali e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esercitazione pre 1ma prova in itinere Marco D. Santambrogio – Ver. aggiornata.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni e Procedure Marco D. Santambrogio – Ver. aggiornata al 4 Aprile 2016.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 22 Marzo 2016.
Algoritmi e basi del C Struttura di un programma
Transcript della presentazione:

Algoritmi e basi del C Struttura di un programma Process synchronization Operating System Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 17 Marzo 2015 © 2005 William Fornaciari

Compitini Compitini di INFO: 24 Aprile 2015 21 Maggio 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)

Compitini Compitini di INFO: 24 Aprile 2015 21 Maggio 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)

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

base = home.deib.polimi.it/santambr/dida/ieim/2015 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

Benvenuti nel fantastico mondo del C

Il primo programma: ciao mondo

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.

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

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

Ciao Mondo: printf

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

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

Struttura di un programma C

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

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

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 ( ) { } Ogni programma C deve contenere un modulo int main() {...}

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 ( ) { dichiarazione di variabili locali } parte dichiarativa locale Ogni programma C deve contenere un modulo int main() {...}

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, ...)

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 ( ) { dichiarazione di variabili locali istruzione 1; / tutti i tipi di operazioni, e cioè: / istruzione 2; / istr. di assegnamento / istruzione 3; / istr. di input / output / istruzione 4; / istr. di controllo (condizionali, cicli) / ... istruzione N; } parte dichiarativa locale parte esecutiva Ogni programma C deve contenere un modulo int main() {...}

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

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

Mostra caratteri Problema Sotto-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???

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.

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

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

Tipo carattere e codifica ASCII

Ricordate il “32”

Un esempio di calcolo

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

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 =

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;

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

Aritmetica (2/2) + f+7 f + 7 - p-c p – c * bm b * m / x/y x / y % 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.

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

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

Inserimento dati Problema Pseudocodice Richiedi all’utente la sua altezza in centrimentri e mostrala a video in metri Pseudocodice Scrivi “quanto sei alto?” Leggi altezzacm Altezzam = alteccacm/100 Scrivi “sei alto: altezzam”

Pseudocodice vs Codice C Scrivi “quanto sei alto?” Leggi altezzacm Altezzam = alteccacm/100 Scrivi “sei alto: altezzam”

Un primo errore

Un secondo errore

Un terzo errore

Soluzione corretta L’importanza dei tipi di dato

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

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

Fonti per lo studio + Credits 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