CODIFICA Da flow-chart a C++.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

LINGUAGGIO DI PROGRAMMAZIONE C
INFORMATICA Strutture condizionali
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Selezione - approfondimento
I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE
Algoritmi e Programmazione
Introduzione al linguaggio C
Anno accademico Gli operatori e le espressioni in C.
Il linguaggio C Gli operatori e le espressioni C Language
INFORMATICA Strutture iterative
Programmazione Procedurale in Linguaggio C++
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.
Semantiche dei linguaggi di programmazione
Funzioni definite dall’utente
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 3 Ottobre 2013.
File.
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 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.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Introduzione alla programmazione lll
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.
8) Classi numeriche e operatori Lab. Calc. I AA2002/03 - cap.82 Classi numeriche Esempi di classi numeriche: int, numeri interi che occupano una parola.
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
Il Linguaggio C.
Espressioni condizionali
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Java base I: Sintassi e tipi di dati
Programmazione in Java Claudia Raibulet
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Parte 4 Elementi di Informatica di base
Tipi di dati elementari
Unità Didattica 3 Linguaggio C
Laboratorio di Informatica1 Parte 4 Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori.
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Complessità di un algoritmo
Anno accademico Le istruzioni di controllo in C.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Introduzione a Javascript
Vettori (a una dimensione)
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
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Algoritmi e basi del C Struttura di un programma
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
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 
Copyright © Istituto Italiano Edizioni Atlas
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

CODIFICA Da flow-chart a C++

Il modello dei dati Il modello dei dati specifica le variabili che si vogliono utilizzare ed il tipo delle variabili. Elenchiamo senza pretesa di completezza i tipi di dato primitivi del linguaggio C++, così da poter scegliere il più appropriato in fase di codifica. Approfondimenti sulle conversioni tra tipi (cast) saranno affrontati successivamente.

Tipi del C/C++ Il C contempla cinque tipi dati di base: void, int, float, double, and char. Oltre a questi il C++ ne definisce altri due: bool e wchar_t.

Tipi del C/C++ (modificatori) Alcuni di questi tipi di dati possono essere modificati usando le parole riservate: signed, unsigned,  short e long. Ecco una lista di possibili data-type (tipi equivalenti vengono mostrati sulla stessa riga)

Tipo dati, dimensioni e range di valori La dimensione e il range di valori di qualsiasi tipo di dati è dipendente dall'architettura della macchina e dal compilatore. Potete usare l'operatore sizeof per determinare la dimensione di qualsiasi tipo di dati (spesso espresso come numero di byte). Molte architetture tuttavia implementano dati con un dimensione standard. Spesso variabili dichiarate come int o float sono a 32 bit, i char sono a 8 bit e double sono a 64 bit. L'header “cfloat” (o “float.h”) definisce i range per i numeri in virgola mobile, mentre “climits” (o “limits.h”) defisce il range per gli interi. I limite dei valori numerici sono nell'header <limits>.

ISTRUZIONI Le istruzioni sono frasi proprie del linguaggio di programmazione delimitate dal simbolo “;” senza il simbolo terminatore, il compilatore non capirebbe dove termina l’istruzione Molte volte è necessario che sequenze di istruzioni vengano eseguite sequenzialmente: Corpo del programma, corpo di una funzione, corpo di un ciclo Una lista di istruzioni è delimitata dai simboli “{“ e “}”: - “{“ inizia una lista di istruzioni - “}” termina la lista E’ possibile innestare più liste di comandi

ISTRUZIONI

STRUTTURA DI UN SEMPLICE PROGRAMMA Un programma è organizzato in maniera sequenziale La prima parte è l’intestazione, ovvero una etichetta seguita da una coppia di parentesi tonde () A seguire inizia una lista di istruzioni, delimitate quindi da { e } Ma che tipo di istruzioni prevede un linguaggio?

Blocco di istruzioni

ISTRUZIONE DI ASSEGNAMENTO Questa istruzione fondamentale viene utilizzata per assegnare a una variabile il valore di una espressione: Consiste nel simbolo = preceduto dal nome della variabile a cui deve essere assegnato il valore Alla destra del simbolo = viene specificate l’espressione che genera il risultato da assegnare alla variabile

ISTRUZIONE DI ASSEGNAMENTO L’espressione può essere costituita da un valore costante (numero) , identificatori di altre variabili, espressioni aritmetico/logiche di combinazioni di valori e variabili e funzioni: x =23 w=‘a’ y =z alfa = x + y r3=(alfa * 43 – xgg)*(delta-32*i*j) x = x + 1

Operatori aritmetici Gli operatori aritmetici già noti: +, -, *, /, % aggiungiamo per il C++ i seguenti: ++Incremento unitario giri ++;      giri = giri+1; --Decremento unitario giri --; giri =  giri-1; +=Incremento del valore specificato alla destra dell'espressione Km += 37;      Km=Km+37; a += (b/2);      =      a=a+(b/2); -=Decremento del valore specificato alla destra dell'espressione attesa -= 6;        attesa=attesa-6; …e così per gli altri… *= lanci *= 2;           lanci=lanci*2; /= torta /= 3;           torta=torta/3; %= carte %= 5;         carte=carte%5;

Operatori relazionali e logici >, <, <=, >= sono identici in C++ Flow chart C++ <> != (diverso da) = (nel rombo) == (confronto) fai attenzione a non confondere con l’assegnamento (= del rettangolo) !!! AND && OR || NOT !

ISTRUZIONE DI ASSEGNAMENTO

ISTRUZIONE DI ASSEGNAMENTO L’esecuzione di una istruzione di assegnamento comporta la valutazione della espressione a destra del simbolo = e la sostituzione del valore nella cella di memoria individuata dal nome della variabile a sinistra del simbolo =. Si noti che un valore costante può essere un numero ma anche un carattere: - Nell’esempio w=‘a’, assegna il carattere ‘a’ alla variabile w

CONTROLLO DEL FLUSSO Il flusso delle istruzioni può cambiare a seconda della valutazione di una espressione: - Può essere necessario per esempio effettuare una lista di operazioni L1 se una condizione è vera, una lista L2 altrimenti - Oppure può essere necessario ripetere una lista di istruzioni fino a che non è verificata una condizione Le istruzioni che permettono queste scelte sono dette di controllo del flusso e come si evince dai due esempi qui sopra sono divise in due gruppi: Istruzioni condizionali Istruzioni iterative

CONTROLLO DEL FLUSSO Istruzioni condizionali: se a una via (if) se a due vie(if-else) se annidati (if-else-if,if-if-else,etc) se a più vie (switch) Istruzioni iterative iterazione con controllo in testa (while) iterazione con controllo in coda (do-while) iterazione definita (for)

If (cond) { blocco-istr; } SE A UNA VIA If (cond) { blocco-istr; }

SE A UNA VIA (esempio) con singola istruzione if (x >0) x = -x; cout <<“valore assoluto: “<< x;

SE A UNA VIA (esempio) con blocco di istruzioni if (x >0) { app = x; x = y; y = app; } cout << x <<“ ,“<<y;

if (cond) { blocco-istr; } else SE A DUE VIE if (cond) { blocco-istr; } else

SE A DUE VIE (esempio) if ( x > y) mass = x; else mass = y; cout<<“Massimo: “<<mass;

SE A DUE VIE (esempio2) if ( x > y) { mass = x; cout<<“Massimo: “<<mass; } else { mass = y;

if (cond) {blocco-istr;} else SE ANNIDATO if (cond) {blocco-istr;} else

SE ANNIDATO (esempio) if ( x > y) cout<<“x magg di y”; else “y magg di x”; cout<<“x e y uguali”;

SE ANNIDATO Il SE annidato può trovarsi sul ramo vero o falso e sono possibili tutte le combinazioni. Esempi: if ( ( voto>=18 ) && (voto<=30 ) ) if ( voto>=24 )                  cout<<"Il risultato e' buono";           else                   cout<<"Il risultato e' sufficiente"); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if ( voto>=24 )                if ( voto<=30 )     cout<<"Il risultato e' buono";           else               if ( voto>=18 )    cout<<"Il risultato e' sufficiente";                 }

STRUTTURA CONDIZIONALE DERIVATA (SELEZIONE MULTIPLA) Per evitare enormi castelli di SE annidati, si può utilizzare una struttura derivata che è la SELEZIONE MULTIPLA (SE A PIU’ VIE). I costrutti derivati non sono fondamentali ma comodi in alcuni particolare situazioni, come rendere più compatto in questo caso un SE annidato con molte condizioni.

SE A PIU’ VIE (SELEZIONE MULTIPLA) switch (Espressione) { case val1: blocco-istr1; break; case val2 : blocco-istr2; … Default: istruzioneDiDefault; }

SE A PIU’ VIE (SELEZIONE MULTIPLA) switch ( day) {     case 1: cout<< ”lun"; break;     case 2: cout<< ”mart"; break;     case 3: cout<< ”merc"; break;     case 4: …… case 5: ….. case 6: …...     case 7:   default: cout<< “giorno inesistente”; }

SWITCH L’istruzione switch costituisce un’abbreviazione per una sequenza di “if” annidati. Essa valuta un’espressione e ne confronta il risultato con i diversi casi elencati Ogni caso contiene un valore e una lista di istruzioni da eseguire. Il flusso di controllo è trasferito alla lista associata con il primo valore uguale all’espressione

SWITCH (L’istruzione break) L’istruzione break passa il controllo alla fine dell’istruzione switch. Se non si usa l’istruzione break, il flusso di controllo continua ai casi successivi. Qualche volta questo è utile, ma di solito i valori dei diversi casi sono mutuamente esclusivi e al più un caso corrisponde al valore dell’espressione. – In generale, non si deve mai dimenticare il comando break tra un caso e l'altro.

SWITCH (la clausola default) Un’istruzione switch può avere un caso di default. Il caso di default non ha un valore associato ma usa semplicemente la parola riservata default. Se è presente il caso di default, il controllo è trasferito all’istruzione associata se non ci sono altri casi Se non è presente il caso di default e nessun valore corrisponde, il controllo passa all’istruzione successiva all’istruzione switch

SWITCH limiti L’espressione di un’istruzione switch deve produrre un valore intero o carattere. Non può essere un valore in virgola mobile o una stringa. La condizione nell’istruzione switch è sempre un’uguaglianza. Non si possono utilizzare altri operatori relazionali.

RIPETIZIONE PRECONDIZIONALE (CONTROLLO IN TESTA) while ( cond ) { blocco-istr; }

RIPETIZIONE PRECONDIZIONALE (esempio) byte cont = 0; while ( cont < 10 ) { cout<<“Dammi un numero”; cin>>x; cout<<“Il doppio è: “<<x*2; cont++; }

COSTRUTTO DI RIPETIZIONE DERIVATO: controllo in coda I costrutti derivati sono costrutti appunto derivati dai costrutti principali e comodi in alcune situazioni. In alcune situazioni (vedremo più avanti) è più comodo utilizzare un controllo in coda invece che in testa. La ripetizione con controllo in coda è derivata dalla ripetizione con controllo in testa. Ogni costrutto con controllo in coda può essere scritto in modo equivalente utilizzando un costrutto con controllo in testa.

RIPETIZIONE POSTCONDIZIONALE (CONTROLLO IN CODA) do { blocco-istr; } while (cond)

RIPETIZIONE POSTCONDIZIONALE (esempio) unsigned int cont = 0; do { cout<<“Dammi un numero”; cin>>x; cout<<“Il doppio è: “<<x*2; cont++; } while (cont <10)

DIFFERENZA TRA CONTROLLO IN TESTA E IN CODA (while e do-while) La differenza fra while e do-while consiste nel fatto che: il corpo del ciclo nel do-while viene sempre eseguito almeno una volta (cioè la prima volta); nel while invece se la condizione booleana è falsa il corpo del ciclo non viene mai eseguito.

RIPETIZIONE DEFINITA Un costrutto di ripetizione si dice definito quando è noto il numero di iterazioni da eseguire. Esempio: stampa “ciao” 10 volte; stampa i primi N numeri naturali (N noto o letto da input). Un costrutto di ripetizione si dice indefinito quando non è noto il numero di iterazioni da eseguire. Esempio: leggi una sequenza di numeri terminata dallo zero; lancia un dado finché non esce 6.

COSTRUTTO DI ITERAZIONE DERIVATO: FOR Molti linguaggi (e anche in C/C++) mettono a disposizione un costrutto per l’iterazione definita. Tale costrutto è il FOR. L’istruzione for sostituisce un costrutto con controllo intesta e numero definito di iterazioni

COSTRUTTO DI ITERAZIONE DERIVATO: FOR while (i<N) { L1; i=i+1; } dove N è conosciuto for (i == 0; i<N; i++) L1; dove N è conosciuto Come si vede bene il costrutto FOR è più compatto.

Regole per la stesura del codice Utilizzate i commenti per spiegare le parti del codice Utilizzate quando possibile le costanti Nomi significativi per le variabili Nomi delle variabili né troppo lunghi nè troppo corti Allineare e indentare il codice Notazione a Cammello per i nomi delle variabili (InizialiMaiuscolePerNomiComposti) TUTTO MAIUSCOLO PER LE COSTANTI Sui caratteri non consentiti per i nomi vedi appunti precedenti