DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 8 Marzo 2013.

Slides:



Advertisements
Presentazioni simili
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Marzo 2013 Marco D. Santambrogio – Gianluca Durelli -
Advertisements

Process synchronization
/ fax
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Informatica Generale Susanna Pelagatti
Informatica Generale Alessandra Di Pierro
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
Algebra di Boole ed elementi di logica
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Recap sul C Marco D. Santambrogio – Ver. aggiornata al 11 Aprile 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Algebra di Boole ed elementi di logica
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2: 04 Aprile 2013 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata al.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2: 25 Marzo 2013 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Corso di informatica e elementi di informatica medica Informazioni di Servizio 6 Marzo, 2013 Politecnico di.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Corso di informatica e elementi di informatica medica Informazioni di Servizio 9 Marzo, 2012 Politecnico di.
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Exe 19 Aprile 2013 Marco D. Santambrogio – Ver. aggiornata al 18 Aprile 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ulitma lezione… fine corso IEIM 2013 Marco D. Santambrogio – Ver. aggiornata al.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Algoritmi e diagrammi di flusso
Da Problema a Programmazione
Dall’algoritmo al programma.
Come fare i gruppi per un cooperative learning informale
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
PROGRAMMAZIONE: linguaggi
Algoritmi e linguaggi di programmazione
Lezione 6 Strutture di controllo Il condizionale
Massimo Comun Divisore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Prof. Cerulli – Dott.ssa Gentili
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.
Lycée dAltitude Briançon Projet « Horloges dAltitude » Cortile di Palazzo Ducale F.
Ripasso : Algoritmi.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esercitazione 1 Marco D. Santambrogio – Ver. aggiornata al 9 Aprile 2014.
Corso di informatica e elementi di informatica medica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1: Marzo 2014 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 13 Marzo 2014.
IO E LA MATEMATICA PROCEDURALE
Massimo comun divisore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 21 Agosto.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Ottobre 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 31 Marzo 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 3 Aprile 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 27 Marzo 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2: 27 Marzo 2014 Marco D. Santambrogio – Gianluca Durelli –
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Problemi, algoritmi e programmazione
Programmazione dei Calcolatori Elettronici
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 22 Marzo 2016.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 15 Giugno.
Process synchronization
Transcript della presentazione:

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 8 Marzo 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come non ricordare… … che giornata sia oggi 8 marzo 1459: nasce Bernardino Corio Storico italiano 8 marzo 1728: muore Giovanni Mario Crescimbeni Poeta e critico letterario italiano 8 marzo 1882: Arturo Graf scrive una lettera a Mario Rapisardi Entrambi scrittori e poeti italiani Ma è anche: La festa del maccarone al pomodoro pomodoro/ 2

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEBazinga!!! 3

Info di servizio Laboratori: divisione in gruppi Non stiamo andando benissimo 9 gruppi il lunedi 3 gruppo il giovedi Feedback sulle lezioni Se date una valutazione 3 sul quanto la spiegazione sia risultata chiara, vi chiederei cortesemente di spiegare nelle note a cosa e dovuto questo dato La Survey e sempre aperta, se volete potete continuare a inserire i vostri dati No, il gufo non diventa milanista… e milanista!! 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEWAT? Spiegazioni: 7 su 61 chiedono di andare più piano Spiegazioni: 7 su 61 chiedono di andare più piano Una persona ha trovato utili gli esempi in C e 25 entrambi Una persona ha trovato utili gli esempi in C e 25 entrambi In 19 su 61 avreste voluto vedere più esempi in C!! In 19 su 61 avreste voluto vedere più esempi in C!! 5 WAT WAT

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ripasso di ieri Concetto ambiguo di informazione Informazione = dati + istruzioni Informazione = dati con significato Esempio: il numero 3 è un semplice dato, diventa entità di informazione quando lo si contestualizza Programmabilità del calcolatore Macchina di von Neumann Comunicazione non ambigua Calcolo come calcolo di funzioni 6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Algoritmi Pseudocodice Diagramma di flusso Una prima introduzione al C Un primo programma Tipi di dato Strutture di controllo 7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi 8

Algortimo e Programma Algoritmo Descrizionesoluzione di problema esecutore Descrizione della soluzione di problema scritta in modo da poter essere eseguita da un esecutore (eventualmente diverso dallautore dellalgoritmo) istruzionidati Sequenza di istruzioni che operano su dati. Programma Algoritmo calcolatore Algoritmo scritto in modo da poter essere eseguito da un calcolatore (esecutore automatico) 9 9

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Acquisto DVD 10 Dove lo cerco? In quale settore? Novita Azione … Indicatori di settore Novita Trovato il settore, come trovo il mio DVD? Ordine alfabetico

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Alogoritmo per lacquisto DVD 1.Acquisisci il nome del settore (s) del DVD (d) 2.Vai al settore (s) 3.Cerca (t) 4.Prendi il DVD (d) Acquisisci e Cerca sono anche loro algoritmi 11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE CERCA: contesto e problema Contesto Sei nel settore (s) corretto Nel settore sono presenti diversi DVD Il settore puo essere visto come un insieme di DVD: s={d 0, d 1, …, d n } Problema Devo trovare il DVD (d t ) tra tutti i DVD presenti nel settore (s) Aiuto: il settore e ordinato I DVD sono ordinati alfabeticamente 12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmo CERCA Noti s={d 0, d 1, …, d n }, ord. alfabeticamente DVD cercato = d t 1.Ci sono DVD? Allora 1.Leggo il titolo del primo DVD in s 2.Se il titolo e il titolo cercato Allora concludo la ricerca con successo Altrimenti passo al DVD successivo Altrimenti concludo la ricerca con esito negativo 13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE CERCA: osservazioni Cosa succede se il settore e vuoto? Come funziona la mia ricerca? Se in s vi sono DVD e io cerco Zorro? Scenario ancora peggiore Voglio cercare il numero del mio professore di IEIM (Santambrogio) nella rubrica telefonica di Milano.. Esistono diversi modi per risolvere un problema 14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE CERCA… migliorata Noti s={d 0, d 1, …, d n }, ord. alfabeticamente DVD cercato = d t 1.Ci sono DVD? Allora 1.Leggo il titolo del DVD (d x ) nel mezzo di s 2.Se il titolo di d x e il titolo cercato –Allora concludo la ricerca con successo –Altrimenti se d x < d t »allora ricomincio da 1 considerando la meta superiore di s »Altrimenti ricomincio da 1 considerando la meta inferiore di s Altrimenti concludo la ricerca con esito negativo 15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Graficamente: Noti 16 d0d0 d0d0 d1d1 d1d1 d2d2 d2d2 d3d3 d3d3 d4d4 d4d4 d5d5 d5d5 d6d6 d6d6 d7d7 d7d7 d8d8 d8d8 d9d9 d9d9 d 10 d 11 s={d 0, d 1, …, d 11 } dtdt dtdt

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Leggo d x e lo confronto con d t 17 d x =d 6 d6d6 d6d6 dtdt dtdt < d6d6 d6d6 dtdt dtdt = ? NO

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ricomincio sulla meta superiore 18 dtdt dtdt d6d6 d6d6 d7d7 d7d7 d8d8 d8d8 d9d9 d9d9 d 10 d 11 d x =d 9

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Leggo d x e lo confronto con d t 19 d x =d 9 d9d9 d9d9 dtdt dtdt = ? SI Termino con successo la mia ricerca comprando d 9 d9d9 d9d9

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come si specifica un algoritmo? Utilizzando dello pseudocodice Utilizzando dei diagrammi di flusso (aka schemi a blocchi) 20 Se A > B allora B = A altrimenti A = B Test Leggi Scrivi InizioFine Assegnamento

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Massimo Comune Divisore Definizione Dicesi Massimo Comune Divisore (M.C.D.) il piu grande tra i divisori comuni a due o piu numeri Esempi Dati A=12, B=15 Divisori comuni: 1, 3 - MCD=3 Dati A=10, B=30 e C=20 Divisori comuni: 1, 2, 5, 10 - MCD=10 21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MCD: pseudocodice 1.Leggi A e B 2.min= il minimo tra A e B 3.tmp = 1 4.MCD = 1 5.Finche tmp < min 1.tmp = tmp Se tmp divide A e B 1.Allora MCD = tmp 6.Stampa MCD 22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MCD: diagramma di flusso 23 Inizio Leggi A e B min=minimo{A,B} tmp=1 MCD=1 tmp<min? tmp = tmp + 1 tmp divide A e B MCD = tmp Stampa MCD Fine no si

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Benvenuti nel fantastico mondo del C 24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il primo programma: ciao mondo 25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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. 26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciao Mondo: main Tutti i programmi in C contengono un elemento principale: Il main main contiene le istruzioni che verranno eseguite allavvio del nostro programma 27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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 28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciao Mondo: printf 29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciao Mondo: printf Stampa a video il mesaggio Ciao Mondo! printf e contenuta in stdio.h Il messaggio da stampare e contenuto tra 30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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 31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 32 Struttura di un programma C 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 esecutiva parte dichiarativa localeparte dichiarativa globale Ogni programma C deve contenere un modulo int main() {...}

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 33 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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 34 Istruzioni semplici e composte Sequenze di istruzioni semplici Ogni istruzione semplice termina con ; ; è detto il terminatore dellistruzione 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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Variabili e indirizzi Supponiamo che la dichiarazione riservi la zona di memoria allindirizzo 1 var indica il contenuto della cella di memoria &var indica lindirizzo della cella di memoria 35 int var; var &var

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 36 Esecuzione degli assegnamenti valutazione dellespressione 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 =

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come interagiamo con lesterno? Input - Output printf viene utiizzata per fornire un output del programma a video scanf viene utilizzato per fornire degli input, e.g. da tastiera, al nostro programma 37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Inserimento dati Problema Richiedi allutente 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 38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Pausa… 15 39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Inserimento dati Problema Richiedi allutente 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 40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Pseudocodice vs Codice C Pseudocodice 1.Scrivi quanto sei alto? 2.Leggi altezzacm 3.Altezzam = alteccacm/100 4.Scrivi sei alto: altezzam 41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un primo errore 42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un secondo errore 43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un terzo errore 44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione corretta 45 Limportanza dei tipi di dato

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dato in C In C esistono diversi tipi di dato built-in, tra cui int: numeri interi oat: 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 denire dei nuovi tipi di dato 46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Mostra caratteri Problema Si scriva un programma che richieda linserimento di un carattere e lo mostri a video 47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipo carattere e codifica ASCII 48

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ricordate il

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un esempio di calcolo 50

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problemi di fine giornata… Scrivere un programma che, letti due numeri, individua quello maggiore Rappresentare in pseudocodice lagoritmo che, letti 3 numeri, ne calcola il minimo comune multiplo 51

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Fonti per lo studio + Credits Fonti per lo studio 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 Credits