CORSO DI PROGRAMMAZIONE MOD. A prof. E. Burattini Gruppo 3 (ML-ZZ)

Slides:



Advertisements
Presentazioni simili
C C++ &.
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F1 Primi programmi.
Introduzione al linguaggio C++
INFORMATICA Altre Istruzioni di I/O
LINGUAGGIO DI PROGRAMMAZIONE C
Informatica Generale Susanna Pelagatti
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Introduzione ai calcolatori Parte II Software di base.
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Code::Blocks Ambiente di sviluppo.
Code::Blocks Ambiente di sviluppo.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
I linguaggi di programmazione
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Introduzione allo studio dell’informatica
Frontespizio Economia Monetaria Anno Accademico
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++
Implementazione dell algortimo di Viterbi attraverso la soluzione del problema di cammino mi- nimo tramite software specifico. Università degli studi di.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Caratteri e stringhe di caratteri
File.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Rappresentazione dellinformazione su calcolatore Anno Accademico 2009/2010.
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Introduzione agli stream e alle classi
Corso di Informatica per Giurisprudenza
Organizzazione del corso
2) Trattamento dell'informazione. Lab.Calc. I AA 2002/03 - cap.22 Esempio Supponiamo di volere calcolare X, per uno o più possibili valori di Y, in base.
Strutture di controllo in C -- Flow Chart --
Dichiarazioni e tipi predefiniti nel linguaggio C
I File.
Espressioni condizionali
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
Introduzione alle basi di dati
Corso di PHP.
Informatica per medici
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
1 Informatica Senza Computer? Chiariamoci un po le idee!!! Carlo Gaibisso Informatica senza Computer?
Laboratorio di informatica 1
STRUTTURA GENERALE DI UN ELABORATORE
Il computer: struttura fisica e struttura logica
La struttura fisica del computer
CODIFICA Da flow-chart a C++.
QUIZ – PATENTE EUROPEA – ESAME WORD
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Programma di Informatica Classi Prime
1 Il Sistema Operativo: Esempio n Le operazioni effettuate sembrano abbastanza semplici ma … n Provocano una serie di eventi in cui vengono coinvolte sia.
USO DEL COMPUTER E GESTIONE DEI FILE
Programmazione imperativa
Programmazione in linguaggio C
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Ingresso e uscita in Java F. Bombi 10 ottobre 2002.
Dal problema all’ algoritmo
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Microsoft Access Chiavi, struttura delle tabelle.
Lezione I Alessandro Dal Palu’ Laboratorio di Programmazione.
Problemi, algoritmi e programmazione
Programmazione dei Calcolatori Elettronici
Transcript della presentazione:

CORSO DI PROGRAMMAZIONE MOD. A prof. E. Burattini Gruppo 3 (ML-ZZ) a.a. 2006-2007 Program. Mod A - Cap. 1 prof. Burattini

RICEVIMENTO STUDENTI GIOVEDI’ ORE 8.30-10.30 ALCUNE INFORMAZIONI PRELIMINARI Docente: Ernesto Burattini e-mail: ernb@na.infn.it RICEVIMENTO STUDENTI GIOVEDI’ ORE 8.30-10.30 (Dip. Fisica 2M16) Durata del corso: dal 26/09/2006 al 22/12/2006 Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Libro di testo consigliato: G. Criscuolo, F. Tramontano – Introduzione alla programmazione. Algoritmi iterativi in C++. Ed. Manna Altri libri di testo : Deitel H.M., Deitel P.J. – C++ Fondamenti di programmazione, ed. Apogeo Tucker A.B., Bernat A.P., Bradley W.J., Cupper R.D., Scragg G.W. – Fundamentals of computing I, McGraw-Hill Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini SVOLGIMENTO DEL CORSO LEZIONI ESAME SCRITTO ESAME ORALE PRENOTAZIONE ESAMI OBBLIGATORIA LABORATORIO DI PROGRAMMAZIONE Program. Mod A - Cap. 1 prof. Burattini

EVENTUALI CAMBI DI GRUPPO VANNO FATTI SECONDO LA NORMATIVA ILLUSTRATA SUL SITO DELLA FACOLTA’ www.scienzeinfo.unina.it Program. Mod A - Cap. 1 prof. Burattini

E’ obbligatorio scrivere in ITALIANO Ultima osservazione E’ obbligatorio scrivere in ITALIANO Program. Mod A - Cap. 1 prof. Burattini

Programmazione MOD.A gruppo G3 Questi appunti sono solo di supporto ai libri di testo e non li sostituiscono in alcun modo. La maggior parte degli esempi sono tratti dal libro di testo Gli appunti e informazioni varie sono reperibili sul sito http://people.na.infn.it/~ernb/programmazione mod.a-C++ Inviare esercizi svolti, osservazioni, note o problemi all’indirizzo ernb@na.infn.it NON RISPONDO A MESSAGGI ANONIMI!!! Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini PROGRAMMA DEL CORSO Introduzione al C++ Introduzione alla programmazione Procedure e funzioni Le strutture di controllo Introduzione agli stream Gli array a una o più dimensioni Testi: ……………………………………………………... Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini CAPITOLO 1 Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini IL CALCOLATORE Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini BREVE STORIA ABACO 500 a.C. x10000 ... x100 x10 x1 x 5 x1 Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Istruzioni per l’uso A partire da destra Per ogni colonna - stabilisci il fattore di colonna (1 per la prima, 10 per la seconda, etc.) - moltiplica la somma degli anelli del lato superiore accanto alla sbarra per 5 - somma al numero ottenuto al passo precedente il numero di anelli della parte inferiore accanto alla sbarra - moltiplica la somma precedente per il fattore di colonna - fai la somma dei risultati ottenuti precedentemente (1*5+4)*1 = 9 (1*5+3)*10 = 80 (0*5+1)*100 = 100 (0*5+0)*1000 = 0 (0*5+3)*10000 = 30000 (0*5+2)*100000 = 200000 (1*5+2)*1000000 = 7000000 Program. Mod A - Cap. 1 prof. Burattini TOTALE = 7230189

Program. Mod A - Cap. 1 prof. Burattini Alcune buone letture Ettore Picutti - Sul numero e la sua storia - Feltrinelli Universale Economica Simon Singh - L’ultimo teorema di Fermat Denis Guedj - Il teorema del pappagallo Hans M. Enzensberger - Il mago dei numeri Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Pascal (1623-1662) Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Pascalina (1642) Realizzata da Blaise Pascal a 19 anni per aiutare il padre contabile. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini LEIBNIZ (1676-1716) Macchina Aritmetica VAUCANSON (1709-1782) Anatra meccanica VON KEMPLEN (1734-1804) Giocatore di scacchi GEORGE BOOLE (1815-1864) Algebra Booleana Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini CHARLES BABBAGE (1792-1871) Program. Mod A - Cap. 1 prof. Burattini

SISTEMI LOGICI E FORMALIZZAZIONE DEL RAGIONAMENTO FREGE - 1879 WHITEAD & RUSSEL - 1925-27 CHURCH - 1936 TURING - 1950 Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini CALCOLATORE dal latino classico calculus = sassolino dal latino medievale calculare = spostare sassi COMPUTER dal latino medievale computare = tagliare ALGORITMO Da Abu Ja’far Mohammed ibn Mûsâ al-Khowârizmî Padre di Ja’far, Mohammed, figlio di Moses, nato a Khowârizmî Autore del libro: Kitab al jabr w’al-mukabala Regole di sostituzione e riduzione Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini HARDWARE E SOFTWARE Program. Mod A - Cap. 1 prof. Burattini

tutto quello che quando non funziona puoi solo imprecare HARDWARE tutto quello che quando non funziona puoi prendere a calci SOFTWARE tutto quello che quando non funziona puoi solo imprecare Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini CPU Unità logico aritmetica Unità di controllo dati istruzioni INPUT Memoria principale OUTPUT Memoria secondaria Program. Mod A - Cap. 1 prof. Burattini

SCHEDA VIDEO PER CATTURARE IMMAGINI TELECAMERA PORTA MIDI MONITOR SCHEDA VIDEO PER CATTURARE IMMAGINI MOUSE HD MICROFONO SCHEDA AUDIO RAM SCHEDA VIDEO FD CD-ROM CPU STAMPANTE HD ESTERNO TASTIERA ALTOPARLANTI SCANNER Program. Mod A - Cap. 1 prof. Burattini TASTIERA MIDI

Program. Mod A - Cap. 1 prof. Burattini PER MEMORIZZARE LA PAROLA PASCAL NELLA MEMORIA PRINCIPALE E’ NECESSARIO TRASFORMARE OGNI CARATTERE IN SEQUENZE DI 0 E 1 E METTERE OGNUNO DI ESSO IN UN INDIRIZZO DI MEMORIA. INDIRIZZO CARATTERE BINARIO CODICE 14322 0011011111110010 P 01010000 14323 0011011111110011 A 01100001 14324 0011011111110100 S 01110011 01100011 14325 C 0011011111110101 01100001 14326 A 0011011111110110 14327 L 01101100 0011011111110111 Codice ASCII Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini 1 BIT 1 1 1 BYTE Program. Mod A - Cap. 1 prof. Burattini

(American Standard Code for Information Interchange) CODICE ASCII (American Standard Code for Information Interchange) Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini LA RAPPRESENTAZIONE DEI NUMERI Un generico numero N in base p è rappresentato da una sequenza di cifre an , an -1,……………, a1 , a0 dove ciascun ai rappresenta un numero compreso fra 0 e p-1, an è la cifra più significativa e a0 la meno significativa. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini SISTEMA DECIMALE Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini SISTEMA BINARIO Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini CONVERSIONE DECIMALE BINARIO 43 : 2 = 21 con resto di 1 21 : 2 = 10 con resto di 1 10 : 2 = 5 con resto di 0 5 : 2 = 2 con resto di 1 2 : 2 = 1 con resto di 0 1 : 2 = 0 con resto di 1 43 = 101011 Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini SOFTWARE Programmi applicativi Utilities - file system, editor, ……. Compilatore Linguaggi di programmazione Sistema Operativo HARDWARE Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini HARD DISK C:DATI.TXT La directory I file Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini PROGRAMMA Una sequenza di istruzioni che il calcolatore esegue per produrre i risultati richiesti per la soluzione di un dato problema. Program. Mod A - Cap. 1 prof. Burattini

Un insieme di simboli, parole, regole usate per istruire LINGUAGGIO DI PROGRAMMAZIONE Un insieme di simboli, parole, regole usate per istruire il calcolatore. Linguaggio macchina: il reale linguaggio attraverso il quale il calcolatore esegue le istruzioni di un programma. Linguaggio Assembler: un linguaggio che usa specifiche istruzioni per indicare al calcolatore le operazioni da eseguire le azioni da intraprendere, è dipendente dal calcolatore usato. Linguaggio di alto livello: un linguaggio che possiede istruzioni e regole vicine ai linguaggi naturali ed è indipendente dal calcolatore usato. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini PROGRAMMA SORGENTE Programma scritto in un linguaggio di alto livello PROGRAMMA OGGETTO Risultato della compilazione di un programma sorgente Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini CICLO DI VITA DI UN PROGRAMMA Problema Algoritmo di risoluzione Programma Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Problema: disegnare poligoni in un piano. X e Y sono numeri interi relativi. Supponiamo la penna sia alzata Istruzioni: INPUT X,Y abbassa la penna ruota verso destra di y gradi vai avanti di x quadretti vai indietro di x quadretti L’insieme delle istruzioni necessarie per disegnare il quadrato di lato 10 in figura è detto algoritmo. Se pensiamo che il braccio che porta la penna sia localizzato in modo che la penna sia in A e che sia alzata, possiamo assegnare il seguente algoritmo: INPUT lato abbassa la penna vai avanti di lato quadretti ruota verso destra di 90 gradi Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini ruota verso destra di 90 gradi vai avanti di 10 quadretti vai avanti di 10 quadretti   A  A ruota verso destra di 90 gradi vai avanti di 10 quadretti INPUT lato abbassa la penna vai avanti di 10 quadretti ruota verso destra di 90 gradi vai avanti di 10 quadretti ruota verso destra di 90 gradi vai avanti di 10 quadretti abbassa la penna Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini UN PO’ DI STORIA Il C++ è l'evoluzione naturale del C, il quale a sua volta discende da due linguaggi, il BCPL e il B. Il BCPL fu sviluppato nel 1967 da Martin Richards per scrivere sistemi operativi e compilatori. II linguaggio C si sviluppò dal B grazie a Dennis Ritchie, presso i Bell Laboratories. Il C fu noto inizialmente come linguaggio di sviluppo per sistemi operativi. Oggi la maggior parte dei sistemi operativi sono scritti in C e/o in C++. Il C è oggi disponibile sulla maggior parte dei computer ed è indipendente dall'hardware. Nel 1990 si è giunti ad una definizione di standard per il C nota come ANSI/ISO 9899:1990. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Esegue alcune direttive prima della compilazione ad esempio l’inclusione nel programma di file esterni Program. Mod A - Cap. 1 prof. Burattini

Il compilatore GNU C++ e Dev-Cpp GNU C++ è un dialetto del linguaggio ad alto livello C++ funzionante sotto i sistemi operativi Windows e Linux. Un suo ambiente di sviluppo è il Dev-Cpp, disponibile gratuitamente, e funzionante sotto il sistema operativo Windows. Il linguaggio GNU C++ ha una parte di istruzioni in comune agli altri dialetti del C++ in commercio, perché sviluppato secondo le direttive ANSI (American National Standards Institute) . Per ottenere gratuitamente il Dev-Cpp è sufficiente andare sul sito www.bloodshed.net scaricare l’ultima versione in formato exe, lanciarlo scegliendo la lingua e lasciando il resto inalterato. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini

Struttura di un programma Regole semantiche: insieme di regole che permettono di dare un significato alle istruzioni di un linguaggio di programmazione. Processo: una o più istruzioni codificate in un dato linguaggio che permettono al calcolatore di fornire il risultato richiesto. Oggetto: una o più locazioni di memoria dove vengono memorizzati i valori a cui si farà riferimento nel corso del programma. Program. Mod A - Cap. 1 prof. Burattini

ELEMENTI DI UN PROGRAMMA C++ // usato per introdurre commenti su un solo rigo Es. // calcola la circonferenza del cerchio Per i commenti su più linee, è necessario utilizzare il simbolo /* all’inizio del commento e */ alla fine Es. /* questo è un commento su più linee*/ Direttive al preprocessore e al compilatore Intestazione del programma main() { Blocco di istruzioni } Program. Mod A - Cap. 1 prof. Burattini

Direttive al preprocessore e al compilatore #include <nome file header> avverte il preprocessore di includere un file header #include <iostream> associa la libreria che gestisce l’input e l’output dei tipi standard verso file o verso opportuni dispositivi di ingresso e uscita come stampante, schermo, tastiera. #include <cstdlib> associa un file che permette l’uso di alcuni comandi del sistema operativo (in questo caso MSDOS) di cui è un esempio l’istruzione finale : system(“pause”) che lascia il sistema in attesa che si prema un tasto per continuare Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini using namespace std utilizza gli identificatori della libreria standard (es. cin e cout) senza ulteriori specifiche. Il namespace è una direttiva d’uso ed è un meccanismo fornito dal C++ per raggruppare dati e funzioni nello spazio dei nomi. Senza using namespace std il compilatore non riconosce i nomi cin e cout; per farli riconoscere si può anche utilizzare il nome completo che utilizza il namespace std ed il risolutore del campo d’azione :: (due punti doppi) std::cin std::cout. (dichiarazioni di uso) In sostanza la direttiva d’uso sta per “quando s’intende usare la libreria standard, si deve poter riferirsi ad un qualsiasi processo o oggetto di tale libreria digitandone il nome (cout) e non il nome completo (std::cout)”. Program. Mod A - Cap. 1 prof. Burattini

Intestazione del programma main() { Blocco di istruzioni necessarie alla soluzione del problema anche detta istruzione composta } Rappresenta il processo principale del programma identazione Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini //Calcola la circonferenza #include <iostream> #include <cstdlib> using namespace std; int main () { const float pi=3.1415; float circonf,raggio; cout << "Inserisci Raggio="; cin >> raggio; circonf=2*pi*raggio; cout << "circonferenza =" <<circonf<<endl; system("pause"); } // consentono di scrivere i commenti include i file iostream gestisce le istruzioni di I/O cstdlib gestisce funzioni del sistema: la pausa. namespace indica lo spazio dei nomi utilizzabili, std=standard Il programma inizia con int main () { parentesi aperta Dichiarazioni di variabili: le variabili del pro-gramma, raggio e circonf sono numeri reali; pi è una costante Scrive su video ciò che appare tra “ ..” e NON va a capo. Attende che si inserisca un dato (il raggio). Istruzione di assegnazione: tutto ciò che appare a destra del simbolo = viene calcolato ed inserito nella variabile a sinistra Scrive su video ciò che appare tra virgolette ed il valore contenuto nella variabile circonf; con endl va a capo Attende che si prema un tasto qualsiasi. FINE del programma : } parentesi graffa chiusa Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini int Program. Mod A - Cap. 1 prof. Burattini

COMPONENTI DI UN PROGRAMMA C++ PAROLE RISERVATE IDENTIFICATORI COSTANTI ESPRESSIONI OPERATORI SIMBOLI SPECIALI Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini PAROLE RISERVATE Termini che non possono essere adoperati dal programmatore solo come previsto dal linguaggio. Esempi: main : indica che il testo che segue rappresenta il codice sorgente del programma. const : sono associate ad oggetti del programma. float: sono associate ad oggetti del programma. PAROLE RISERVATE IDENTIFICATORI COSTANTI ESPRESSIONI OPERATORI SIMBOLI SPECIALI Program. Mod A - Cap. 1 prof. Burattini N.B. LE PAROLE RISERVATE sono messe in GRASSETTO IN Dec-Cpp.

IDENTIFICATORI Rappresentano il nome di un oggetto o di un processo. Standard o riservati esempio cin per rappresentare il file standard di input (tastiera,..) cout per rappresentare il file standard di output (monitor,..) Non standard esempio pi è definito nel nostro esempio come costante raggio è definito nel nostro esempio come variabile PAROLE RISERVATE IDENTIFICATORI COSTANTI ESPRESSIONI SIMBOLI SPECIALI Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini OGGETTI STANDARD COSTANTI (const) Costanti con nome : un valore costante a cui si può far riferimento attraverso il suo identificatore e non può variare nel corso del programma. Esempio const float pi=3.1415; PAROLE RISERVATE IDENTIFICATORI COSTANTI ESPRESSIONI SIMBOLI SPECIALI Program. Mod A - Cap. 1 prof. Burattini

VARIABILE Esempio circonf, raggio TIPO un oggetto che può assumere diversi valori nel corso dell’elaborazione. Esempio circonf, raggio TIPO insieme dei valori che una variabile può assumere e contemporanea-mente l’insieme delle operazioni che si possono effettuare su variabili di quel tipo. PAROLE RISERVATE IDENTIFICATORI COSTANTI ESPRESSIONI SIMBOLI SPECIALI Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini TIPI STANDARD int ------- numeri interi ----------------- 435 float --- numeri reali semplice precisione----- 3.1416 double --- numeri reali doppia precisione------- 7.1416934523 char ------- caratteri ----------------- a boolean ----- valori vero o falso ------------ vero PAROLE RISERVATE IDENTIFICATORI COSTANTI ESPRESSIONI SIMBOLI SPECIALI Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini I tipi interi con segno supportati dal C++ standard sono 1) char 2) short int (o short) 3) int 4) long int (o long) Si ha la possibilità di rappresentare solo i numeri positivi (unsigned) o sia i positivi che i negativi (signed). Può apparire strano vedere il tipo char nella lista degli interi, ma i caratteri sono rappresentati come interi compresi tra -128 e 127 o tra 0 e 255; la scelta del tipo segnato o non segnato dipende dal compilatore. L’istruzione cin>>ch dove ch è una variabile di tipo char, accetta un carattere ASCII in ingresso, ma il carattere è memorizzato come un intero nel computer. il tipo char occupa un solo byte; il tipo short occupa almeno due byte; il tipo int occupa almeno tanti byte quanti ne occorrono per memo-rizzare il tipo short; il tipo long occupa almeno quattro byte e non meno di quanti ne occorrono per memorizzare il tipo int. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini I tipi reali supportati dal C++ standard sono 1) float 2) double 3) long double il tipo float occupa quattro byte; il tipo double occupa almeno otto byte e non meno del tipo float; il tipo long double occupa almeno otto byte e non meno di quanti ne occorrono per memorizzare il tipo double. La funzione sizeof applicata ad un tipo restituisce la sua lunghezza in byte. Il file da includere <limits.h> (o <climits>) contiene tutti i valori minimi e massimi degli interi: per esempio il minimo valore intero è contenuto in INT_MIN, il massimo in INT_MAX. Il file header <cfloat> contiene i limiti dei tipi float, double e long double. Costante Descrizione FLT_MIN Minimo valore float FLT_MAX Massimo valore float DBL_MIN Minimo valore double DBL_MAX Massimo valore double LDBL_MIN Minimo valore Long double LDBL_MAX Massimo valore Long double Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini COSTANTI Sono le occorrenze di valori costanti in un programma. Possono essere nominate ad Esempio const float pi=3.1415 oppure anonime, per le quali cioè non è stato dichiarato un nome. PAROLE RISERVATE IDENTIFICATORI COSTANTI ESPRESSIONI SIMBOLI SPECIALI Esempio cout << “Inserisci raggio” Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini ESPRESSIONI Rappresentano il valore che si ottiene applicando opportune operazioni ben definite ad uno o più operandi che possono essere costanti o variabili. In una espressione le operazioni vengono indicate con particolari simboli detti operatori. Sono unari gli operatori che agiscono su un solo operando, binari quelli che agiscono su due operandi. aritmetici (+ , - , * , /) logici (or , and , not) PAROLE RISERVATE IDENTIFICATORI LETTERALI ESPRESSIONI SIMBOLI SPECIALI Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Operazione Simbolo algebrico Simbolo in C++ Espressione algebrica Espressione in C++ Addizione + a+b Sottrazione - a-b Moltiplicazione x * ab a*b Divisione : / a:b a/b Modulo mod % a mod b a%b Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini SIMBOLI SPECIALI Uno o anche due caratteri consecutivi che sono usati per scopi particolari come ad esempio il punto e virgola (;) che serve ad indicare la fine di una istruzione, le parentesi graffe ({ })che indicano inizio e fine di una istruzione composta, la virgola (,) che è usata come separatore. PAROLE RISERVATE IDENTIFICATORI LETTERALI ESPRESSIONI SIMBOLI SPECIALI Program. Mod A - Cap. 1 prof. Burattini

DICHIARAZIONI Dichiarazione di costante Ha la seguente sintassi: const type identificatore = valore dove const è una parola riservata, segue type che è il nome del tipo assegnato alla costante, il nome della costante, il simbolo = e il valore assegnatole. Le prime due parole possono anche essere invertite tra loro. const float pi=3.1415 Dichiarazione di variabile Occorre far precedere al nome della variabile il nome del suo tipo. Si possono dichiarare contemporaneamente più variabili dello stesso tipo separandole con una virgola. Ad esempio: float r1,r2,media; E’ possibile assegnare un valore iniziale ad una variabile usando l’operatore di assegnazione . Ad esempio: int i,j=1,somma; Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini REGOLA E’ sempre consigliabile dichiarare tutte le costanti e le variabili nella parte iniziale del programma (o della function che le utilizza). In questo modo chi legge il programma sa dove reperire le informazioni sul tipo delle variabili e delle costanti. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Le variabili hanno un nome (l’identificatore), un tipo (tipi base: interi, reali, caratteri, booleani) una dimensione (che dipende dal tipo), un valore che varia nel corso del programma un indirizzo nella memoria del computer in cui si trova il suo valore . Il tipo int occupa 2 byte Il tipo float prevede 4 byte, Il tipo double ha invece una dimensione di 8 byte. Il tipo boolean 1 byte Il tipo char occupa un 1 byte I caratteri sono rappresentati attribuendo loro un codice numerico (codice ASCII), ad esempio il codice attribuito alla lettera A è 65. All’interno di un programma una costante di tipo carattere deve essere sempre racchiusa tra due apici, ad esempio: ‘r’, ‘^’, ‘@’. L’indirizzo può essere conosciuto inserendo l’operatore & (detto operatore di indirizzo) davanti alla variabile; esempio: &raggio. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Se le costanti e le variabili sono tutte dello stesso tipo allora anche il valore dell’espressione sarà dello stesso tipo. Se tutte le grandezze presenti nell’espressione sono di tipo numerico, anche se diversi, sarà il compilatore ad effettuare tutte le opportune conversioni di tipo. Ad esempio se le variabili n, f, d sono rispettivamente di tipo int, float e double allora nell’espressione (n+f)*d, n è convertito a float, successivamente la somma n+f è convertita a double per poter effettuare la moltiplicazione con d (conversione implicita). Nel C++ sono permesse anche espressioni del tipo n+car +b dove n è un intero, car un carattere e b una variabile booleana. Se ad esempio n vale 4, car è la lettera A e b vale true, il valore dell’espressione sarà 4+65+1=70. L’uso di espressioni contenenti variabili numeriche e non numeriche non è in genere consigliabile e può dare luogo in un programma ad errori che sono difficili da individuare. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini REGOLA Non adoperare espressioni in cui sono presenti variabili di tipo diverso. Program. Mod A - Cap. 1 prof. Burattini

espressione1 op espressione2 dove op è un operatore relazionale. Espressione booleana semplice: è rappresentata da un confronto tra i valori di due espressioni. La forma sintattica di una espressione booleana semplice è la seguente: espressione1 op espressione2 dove op è un operatore relazionale. L’espressione booleana assume il valore true (vero) se il valore di espressione1 è nella relazione op con il valore di espressione2 . Nell’esempio si suppone che le variabili assumono i seguenti valori: a=3 ; b=5 ; c1=’E’ ; c2=’G’ ; < Minore di a<b 3<5 Vero <= Minore o uguale di a+3<=b 6<=5 Falso == Uguale a c1==c2 ‘E’==’G’ != Diverso da c1!=c2 ‘E’!=’G’ >= Maggiore o uguale di ‘a’>=c1 ‘a’>=’E’ > Maggiore di a>b+2 3>7 Operatore relazionale Program. Mod A - Cap. 1 prof. Burattini

Valutare le seguenti espressioni in C++ 38/12 + 38%12 (15*11)/(3*11) Esercizi Valutare le seguenti espressioni in C++ 38/12 + 38%12 (15*11)/(3*11) 15*11/11*3 (23-5)/3/6 36/6%6 Program. Mod A - Cap. 1 prof. Burattini

cin>>x1>>x2>>…>>xn ; Le istruzioni di I/O standard: cin, cout, printf La forma generale di una istruzione per la lettura da tastiera di n variabili x1 x2 …xn è la seguente: cin>>x1>>x2>>…>>xn ; allorchè il cursore lampeggia per effetto di questa istruzione l’utente dovrà immettere uno dopo l’altro il valore delle corrispondenti variabili, ognuno separato dall’altro da almeno uno spazio vuoto (blank) e premere il tasto Invio. I caratteri immessi sono inviati in un buffer di ingresso che rappresenta l’area di memoria dell’oggetto cin (canale di input). Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini L’ operatore di estrazione >> provvede ad estrarli nel modo seguente: Per ogni variabile x che si deve leggere: Ignora eventuali blank, e/o caratteri di tab iniziali e newline (che indicheremo rispettivamente con ъ, \t,\n) mano a mano che li preleva. Preleva tutti i caratteri successivi che formano una sequenza lecita per il tipo di variabile corrispondente. Si arresta al primo carattere non lecito. La sequenza di caratteri letti è codificata nella corrispondente sequenza di zeri e di uno (che dipende dal tipo della variabile) e quest’ultima è inserita nell’indirizzo di memoria corrispondente alla variabile. Program. Mod A - Cap. 1 prof. Burattini

cin >> base>>altezza; ESEMPIO Supponiamo che base e altezza siano due variabili di tipo float. Eseguendo l’istruzione cin >> base>>altezza; il computer estrae un valore corretto dai caratteri digitati da tastiera finché non incontra il primo carattere spazio: tale valore verrà associato alla variabile base. Ad esempio, se si digita 15.2 ъ12.2[INVIO] il computer provvederà a porre 15.2 nell’indirizzo di memoria relativa alla variabile base e 12.2 in quello relativo alla variabile altezza. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini REGOLA Far precedere ogni istruzione di lettura da un opportuno messaggio che fornisca informazioni sull’input che ci si aspetta. Program. Mod A - Cap. 1 prof. Burattini

cout<<espr1<<espr2<<…<<esprn; La forma generale di una istruzione di lettura tramite cout (canale di output) è la seguente: cout<<espr1<<espr2<<…<<esprn; dove espr1,espr2,…,esprn sono espressioni che all’atto dell’esecuzione dell’istruzione sono valutate e poi inviate al dispositivo standard di uscita, il monitor del personal computer, tramite l’operatore di inserzione <<. Tutti i dati di output si scrivono sulla stessa linea, l’uno di seguito all’altro. Ad esempio l’istruzione: cout<<”Area= ”<<area; ordina di inviare il contenuto dei dati che appaiono a destra (il valore letterale “Area= ” ed il contenuto della variabile area) sul monitor. Per portare il cursore sulla riga successiva si può: 1) includere il carattere speciale di fine riga \n, in una stringa costante, come “Salve mondo! \n” 2) inserire l’identificatore speciale, endl. Program. Mod A - Cap. 1 prof. Burattini

cout << “Base triangolo: “ << base << endl; ESEMPIO Per far comparire sul monitor i valori delle variabili base, altezza su due linee separate si possono utilizzare le seguenti istruzioni: cout << “Base triangolo: “ << base << endl; cout << “Altezza triangolo: “ << altezza << endl; Si noti che le variabili base e altezza rappresentano in queste istruzioni il loro valore (right value) mentre nell’istruzione: cin>>base>>altezza rappresentano il loro indirizzo (left value). Le seguenti istruzioni: cout << “Salve! \n”; cout << “Come va? \n”; genereranno il seguente output: Salve! Come va? Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini REGOLA E’ opportuno che al termine di una istruzione di stampa il cursore sia situato all’inizio della linea successiva Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Sequenza di escape Descrizione \n Carattere di fine linea (è inserito premendo il tasto Invio) \t Posiziona il cursore del video sulla tabulazione successiva (tasto TAB) \a Emette un beep \r Posiziona il cursore all’inizio della linea corrente \b Il cursore ritorna indietro di un carattere (tasto Backspace) \\ Stampa la barra inversa \” Stampa le doppie virgolette Program. Mod A - Cap. 1 prof. Burattini

cout<<”Stampiamo questi due simboli \\ e \”” Sequenza di escape Le sequenze di escape sono utili anche per scrivere sul monitor dei caratteri particolari quali la stessa barra inversa (\) o le doppie virgolette (“). Per esempio, per far scrivere sul monitor la frase seguente, Stampiamo questi due simboli \ e “ contenente la barra inversa e le doppie virgolette dobbiamo assegnare la seguente istruzione cout<<”Stampiamo questi due simboli \\ e \”” Ricordiamo che le costanti stringa devono essere racchiuse tra doppi apici mentre le costanti carattere tra apici semplici. Program. Mod A - Cap. 1 prof. Burattini

cout.precision(cifre); Per l’output formattato abbiamo due metodi fondamentali di cout cout.width(ampiezza); cout.precision(cifre); dove ampiezza e cifre sono due interi che rappresentano, l’ampiezza totale messa a disposizione della variabile il numero massimo di cifre che possono essere visualizzate. Queste istruzioni devono precedere ogni ordine di stampa sul monitor, cioè ogni variabile che deve essere stampata deve essere preceduta dal rispettivo ordine di formattazione. Per esempio, se A=12.342 e B=1234.657 le istruzioni cout.width(10); cout.precision(8); cout<<A<<endl; cout<<B<<endl; stamperanno sul video 12.342 1234.657 per cui solo il valore di A sarà stampato con un’ampiezza totale di 10 caratteri e con una precisione di 8 cifre complessive (a partire da destra); il valore di B sarà stampato con la formattazione standard (le cifre sono scritte a partire da sinistra). eser1.3 Program. Mod A - Cap. 1 prof. Burattini

printf(“Area =%10.2f\n”,area); L’istruzione printf(), ha una forma diversa che meglio si presta ad un output formattato. L’istruzione corrispondente alla seguente cout << "Area ="<<area<<endl; utilizzando printf è printf(“Area =%10.2f\n”,area); dove il valore letterale “Area =” rimane invariato, la stringa di formattazione, inizia con il simbolo %, è data da %10.2f/n dove % è il simbolo di inizio formattazione 10 indica l’ampiezza di campo, 2 il numero di decimali f indica che si deve scrivere un numero decimale \n è l’ordine di andare a capo. eser1.3b Program. Mod A - Cap. 1 prof. Burattini

Per esempio, con questa formattazione, printf(“Area =%10.2f\n”,area); I valori di area 62.847 e 128.54 verrebbero scritti in questo modo 62.85 arrotondato per eccesso alla seconda cifra decimale 128.54 L’istruzione printf possiede diverse modalità di formattazione; nella tabella successiva ne riportiamo le più significative (il carattere ъ rimpiazza lo spazio vuoto). Program. Mod A - Cap. 1 prof. Burattini

Tipo argomento da convertire Formattazione in printf Carattere Tipo argomento da convertire Esempio Stampa d, i int diventa intero decimale con segno printf(“%8d”, 4532) ъъъъ4532 u int diventa intero decimale senza segno printf(“%8d”, -532) ъъъъъ-532 X, x int diventa intero esadecimale senza segno printf(“%5X”, 255) ъъъFF s char stampa una stringa printf(“%10.5”, “ciao”) 10 è l’ampiezza di campo 5 l’ampiezza massima della stringa ъъъъъъciao f double diventa reale printf(“%8f”, -5.32) ъъъъ-5.32 Program. Mod A - Cap. 1 prof. Burattini

cout.width cout.precision Osserviamo che cout.width cout.precision possono utilizzare anche delle variabili mentre printf può servirsi soltanto di numeri per formattare un dato; se il numero di cifre n richiamate in cout.precision(n) è inferiore al numero di cifre significative, allora il valore viene espresso in notazione esponenziale; per esempio, se n=3 e si deve stampare 123456 il computer mostrerà a video 1.23 e05; cout possiede molte altre istruzioni che consentono una gestione completa della formattazione a scapito della semplicità; printf consente una formattazione semplice ed efficace, anche se non molto ricca; Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini ESEMPIO #include <iostream> #include <cstdlib> #include <math.h> using namespace std; int main() { double a=sqrt(5), b=12345678; int conta=6; cout.width(20); cout.precision(conta); cout<<a<<” “<<b<<endl; printf(“a=%3.8f b=%12f\n”,a,b); } system("pause"); Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini

dispositivi di output; In generale avremo In C++ non esiste il concetto di tastiera, disco, monitor, stampante; questi dispositivi sono raggruppati secondo due tipologie: dispositivi di input; dispositivi di output; In generale avremo dispositivo di input >>x1>>…>>xn; che va inteso come: i valori estratti dal dispositivo di input sono immessi come valore nelle variabili che seguono l’operatore >> mentre dispositivo di output << espr1<<…<<esprn va letto come: i valori delle singole espressioni sono inseriti successivamente nel dispositivo di output. Program. Mod A - Cap. 1 prof. Burattini

ofstream stampante(“prn”); Ad esempio se si intende inviare dei dati sulla stampante occorre scrivere la seguente dichiarazione di tipo : ofstream stampante(“prn”); ed adoperare stampante al posto di cout. Ad esempio: stampante<<”Area= ”<<area; Occorre però includere il file <fstream> in cui il tipo ofstream è definito Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Fine Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Esempi di algoritmi Determinare il passaggio dalla numerazione decimale alla binaria. Prendiamo in considerazione il numero 25 e dividiamolo per 2 più volte: ogni volta il quoziente viene sempre diviso per 2 finché l’ultimo quoziente è minore del divisore e diverso da zero (e quindi 1). Il numero in base 2 cercato è uguale all’ultimo quoziente seguito da tutti i resti presi in ordine inverso (le cifre evidenziate in neretto): 25 : 2 1 12 : 2 0 6 : 2 0 3 : 2 1 1 11001 Program. Mod A - Cap. 1 prof. Burattini

ALGORITMO PER IL MASSIMO COMUN DIVISORE Si trovi il MCD tra i numeri 93217 e 1843 Si cercano i fattori primi del primo numero Si cercano i fattori primi del secondo numero Si cercano i fattori primi comuni a entrambi i numeri Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Ricerca Fattori Primi 93217=31 x 31 x 97 Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Ricerca Fattori Primi 1843=19 x 97 Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Massimo Comune Divisore Fattori Primi di 93217 = 31*31*97 Fattori Primi di 1843 = 19*97 Il MCD tra 93217 e 1843 è 97 Numero di passi totale = 27+26 = 53 Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini ALGORITMO DI EUCLIDE N R R R’ R’ R’ MCD= Program. Mod A - Cap. 1 prof. Burattini

(300 A.C.) Siano m ed n due numeri naturali e supponiamo sia m>n ALGORITMO DI EUCLIDE PER IL MASSIMO COMUN DIVISORE (300 A.C.) Siano m ed n due numeri naturali e supponiamo sia m>n 1 Si divide m per n 2 Se il resto è zero allora n è il MCD tra m e n. 3 Se il resto è diverso da zero torna al primo passo scambiando m con n e n con r (cioè dividi n per r) Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini ESEMPIO MCD tra 93217 e 1843 97 Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini ALGORITMO Insieme di regole che, eseguite in un ordine prestabilito permettono di risolvere un dato problema (se la soluzione esiste) o di comunicare l’assenza di soluzione (se questa non esiste), in un numero finito di passi. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini PROPRIETA’ DI UN ALGORITMO Finitezza - Un algoritmo deve sempre terminare dopo un numero finito di passi Precisione - Ogni passo dell’algoritmo deve essere definito con precisione e non in maniera ambigua Input - Un algoritmo può avere molti input come non averne nessuno Output - Un algoritmo deve produrre almeno un dato Eseguibilità - Ogni istruzione deve essere sufficientemente semplice da poter essere eseguita da una persona usando penna e carta in un tempo finito. Program. Mod A - Cap. 1 prof. Burattini

RAPPRESENTAZIONE DI UN ALGORITMO pseudo-codice 1 Si divide m per n 2 Se il resto è zero allora n è il MCD tra m e n. 3 Se il resto è diverso da zero torna al primo passo scambiando m con n e n con r (cioè dividi n per r) 1 [Cerca il resto] Dividi m per n e sia r il resto 2 [Il resto è uguale a zero?] Se r=0 allora n è la risposta. Fine 3 [Scambia] Poni m  n, n  r ; torna al passo 1. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini DIAGRAMMA DI FLUSSO Cerca il resto Scambia Il resto è uguale a zero? Si Fine No Input Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Esercizi Scrivere in pseudo codice i due algoritmi per trasformare numeri decimali in numeri binari. Scrivere in pseudo codice l’algoritmo per effettuare l’addizione con l’abaco. Scrivere in pseudo codice un algoritmo che genera tutte le possibili combinazioni di 0 e1 per N variabili. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Soluzione esercizi Cap. 1 Conversione Decimale/Binario metodo successive divisioni. Dichiarazioni Sia N il numero intero decimale da trasformare in binario Sia Q il quoziente intero di N per 2 Sia R il resto della divisione Sia B la stringa che rappresenta il numero binario essa viene riempita da destra verso sinistra (inizialmente è vuota) [Controllo Iniziale] Se N=0 allora aggiungi 0 a sinistra di B e fermati. [Controllo Fine Procedura] Se N=1 allora aggiungi 1 a sinistra di B e fermati. [Costruisci B] [Dividi] Poni in Q N/2 e in R  N - Q*2 [Aggiorna B] Aggiungi a sinistra di B il valore di R : B  R+B [Scambia] N  Q . Ripeti il processo Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Soluzione esercizi Cap. 1 Conversione Decimale/Binario metodo potenze di 2. DICHIARAZIONI Sia N il numero intero decimale da trasformare in binario Sia P la potenza a cui due deve essere elevato affinchè meglio approssimi per difetto N Sia D la differenza tra N e 2P Sia B una stringa di K zeri, con K sufficientemente grande [Controllo Fine Procedure] Se N=0 allora fermati. [Costruisci B] [Calcola P] Poni in P la parte intera del log2(N) [Aggiorna B] Contando da destra sostituisci lo 0 di B con 1 nella posizione P+1 [Calcola D] D  N - 2P [Scambia] N  D. Ripeti il processo Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini 2 8 1 + 6 7 2 4 9 Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Soluzione esercizi Cap. 1 Addizione usando un abaco DICHIARAZIONI Supponiamo che l’abaco abbia k aste. Sia N il primo addendo e M il secondo addendo. Rappresentiamo N=nk….n3n2n1 , M=mh….m3m2m1 Sia Q il quoziente di una cifra di N o M per 5 Sia R il resto della divisione precedente [Rappresentazione di N] [Dividi] Dividi n1 per 5. Sia Q  n1/5 e R  n1 - Q*5 [Sposta la palline] Prendi Q palline della parte superiore e prendi R palline della parte inferiore e spostale al centro. [Ripeti i passi precedenti ] Ripeti i passi precedenti per la seconda e terza, … la k-ma asta. [Somma M] [Dividi] Dividi la cifra corrente di m1 per 5. Sia Q  m1/5 e R  m1 - Q*5 [Aggiungi] Aggiungi Q palline alla parte superiore. Se il numero totale di palline è uguale a due riporta le palline il alto e sposta al centro una pallina della parte inferiore della prima asta a sinistra. [Ripeti i passi precedenti ] Ripeti i passi precedenti per la seconda, terza, …, h-ma asta. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini Generazione di tutte le possibili combinazioni di 1 e 0 per N variabili DICHIARAZIONI Sia N il numero di variabili Sia C un numero intero posto inizialmente a 0. [Controlla Fine Elaborazione] Se C = 2N - 1 allora finisci. [Converti in binario] Chiama la procedura DECBIN(C) per convertire C in binario [Mostra] Scrivi C [Incrementa il contatore] Poni C  C + 1 [Ricomincia] Ritorna al passo iniziale. Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini HD Editor Crea i programma e memorizza su HD  Preprocessor HD Esegui il codice  HD Compiler Crea il codice oggetto e memorizza su HD  HD Linker Collega il codice oggetto con le librerie, crea a.out e memorizza su HD  HD Loader Carica nella memoria primaria il programma  CPU La CPU esegue sequenzialmente le istruzioni memorizzando nella memoria primaria i dati ottenuti  Program. Mod A - Cap. 1 prof. Burattini

Program. Mod A - Cap. 1 prof. Burattini