La selezione binaria



Documenti analoghi
Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Introduzione ai Metodi Formali

4 3 4 = 4 x x x 10 0 aaa

Codifica: dal diagramma a blocchi al linguaggio C++

Arduino: Programmazione

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Corso di Laurea in Matematica

Esempi di algoritmi. Lezione III

Convertitori numerici in Excel

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Corso di Informatica

Funzioni in C. Violetta Lonati

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

GESTIONE INFORMATICA DEI DATI AZIENDALI

CALCOLO DEL MASSIMO COMUN DIVISORE

Introduzione. Informatica B. Daniele Loiacono

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Esercizi su. Funzioni

La ricorsione. Politecnico di Milano Sede di Cremona

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Esercizi di programmazione in C

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Algoritmi di Ricerca. Esempi di programmi Java

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Lab 04 Istruzioni, cicli e array"

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

RISOLUTORE AUTOMATICO PER SUDOKU

Variabili e tipi di dato

LINGUAGGI DI PROGRAMMAZIONE

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

DAL DIAGRAMMA AL CODICE

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

10 - Programmare con gli Array

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

Laboratorio di Informatica

Le variabili. Olga Scotti

Parte 1. Vettori di bit - AA. 2012/13 1.1

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Descrizione di un algoritmo

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

+ / operatori di confronto (espressioni logiche/predicati) / = > < Pseudo codice. Pseudo codice

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

EXCEL FUNZIONI PRINCIPALI

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Esercitazione Informatica I AA Nicola Paoletti

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 9 Settembre 2015

ALGORITMI 1. GLI ALGORITMI 2. IL LINGUAGGIO DI PROGETTO

Programmazione ad Oggetti: JAVA. Esercitazione

Gli algoritmi: definizioni e proprietà

Semantica Assiomatica

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Programmazione I - Laboratorio

LAVORO ESTIVO DI INFORMATICA CLASSE 2O

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Struttura di un programma Java

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag <script> inserito nella sezione <head> con la seguente sintassi:

Aritmetica: operazioni ed espressioni

SOMMARIO I radicali pag I radicali aritmetici pag Moltiplicazione e divisione fra radicali aritmetici pag.

Gestione della memoria centrale

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

LE FUNZIONI A DUE VARIABILI

Fasi di creazione di un programma

Metodologie di programmazione in Fortran 90

Programmazione dinamica

Algoritmi e diagrammi di flusso

Richiesta pagina PHP (es: index.php)

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

Esercitazione 3. Corso di Fondamenti di Informatica

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Linguaggi di programmazione

Alcune nozioni di base di Logica Matematica

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Matlab: Strutture di Controllo. Informatica B

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Transcript:

Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012

Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per risolvere anche problemi molto semplici Supponiamo di voler scrivere un programma che acquisisca da standard input due numeri interi (dividendo e divisore) e scriva su standard output il loro quoziente e resto

Divisione (sol. errata) #i n c l u d e <s t d i o. h> i n t d i v i s o r e, d i v i d e n d o, q u o z i e n t e, r e s t o ; i n t main ( ) { s c a n f ( % d, &d i v i d e n d o ) ; s c a n f ( % d, &d i v i s o r e ) ; q u o z i e n t e = d i v i d e n d o / d i v i s o r e ; r e s t o = d i v i d e n d o % d i v i s o r e ; p r i n t f ( I l q u o z i e n t e e %d mentre i l r e s t o e %d\n, q u o z i e n t e, r e s t o ) ; return 0 ;

Supponiamo che nell input stream troviamo i numeri 17 e 6 dividendo avrà valore 17 e divisore 6 quoziente assume valore 3 dopo l assegnamento resto assume calore 1 dopo l assegnamento Ma il programma funziona sempre? Quando la variabile divisore assume valore 0 si ha un errore run-time di divisione per zero Per evitare questo dobbiamo svolgere le divisioni solo se il divisore ha valore diverso da 0

La struttura grafica La struttura del condizionale consente di eseguire un blocco di istruzioni se una certa condizione è soddisfatta, un altro blocco altrimenti Possibili esecuzione: BLOCCO1 BLOCCO2 BLOCCO4 (se il test è soddisfatto) BLOCCO1 BLOCCO3 BLOCCO4 (se il test non è soddisfatto)

La condizione (o test) Idealmente la condizione dovrebbe essere un espressione di tipo boolean In tal caso, un ramo viene scelto se l espressione ha valore true, l altro se l espressione ha valore false In C l espressione che dà la condizione è di tipo int con la consueta codifica dei valori booleani Valore = 0 condizione non soddisfatta Valore 0 condizione soddisfatta

Ancora sull esempio della divisione

Struttura sintattica del condizionale in C dove: i f ( exp ) BLOCCO1 ; e l s e BLOCCO2 ; exp è un espressione di tipo intero BLOCCO1 è una o più istruzioni (nel qual caso racchiuse tra graffe) eseguite solo se exp ha un valore diverso da 0 (true) BLOCCO2 è una o più istruzioni (ne qual caso racchiuse tra graffe) eseguite solo se exp ha valore 0 (false) Attenzione: la parte else del condizionale può essere assente

Nidificazione dei condizionali Supponiamo di voler scrivere un programma che acquisito un input intero stampi se esso è positivo, negativo o nullo Una sola selezione a due vie non basta! In questi casi si sfrutta il fatto che un blocco che compare nei rami del condizionale può a sua volta contenere altri condizionali

Esempio

Codice #i n c l u d e <s t d i o. h> i n t x ; i n t main ( ) { s c a n f ( % d, &x ) ; i f ( x > 0) { p r i n t f ( P o s i t i v o \n ) ; e l s e { i f ( x == 0) { p r i n t f ( N u l l o \n ) ; e l s e { p r i n t f ( N e g a t i v o \n ) ; r e t u r n 0 ;

If aritmetico C mette a disposizione un costrutto chiamato if-aritmetico A differenza del condizionale appena visto, l if-artimetico è un espressione Sintassi dell espressione: ( exp1 )? exp2 : exp3 ; exp1 ha tipo int, exp2 e exp3 sono espressioni con lo stesso tipo il valore dell espressione è quello di exp2 se il valore di exp1 è diverso da 0, è quello di exp3 se il valore di exp1 è uguale a 0

Calcolo del modulo #i n c l u de <s t d i o. h> f l o a t x ; i n t main ( ) { s c a n f ( % f, &x ) ; x = ( x > 0)? x : x ; p r i n t f ( % f \n, x ) ; return 0 ;

Esercizi 1. Leggere due valori float da standard input e memorizzarli in variabili distinte. Quindi scambiare il valore delle due variabili. 2. Letti due valori int da standard input stamparli sullo standard output in ordine crescente 3. Letti tre valori float da standard input stampare su standard output il maggiore 4. Letti tre valori double da standard input dire se possono essere tre lunghezze dei lati di un triangolo. (Condizione necessaria e sufficiente è che la lunghezza del lato maggiore sia inferiore alla somma delle lunghezze dei due lati più piccoli).

Scambio di variabili #i n c l u d e <s t d i o. h> f l o a t x, y, s u p p o r t o ; i n t main ( ) { s c a n f ( % f,&x ) ; s c a n f ( % f,&y ) ; / eseguo l o scambio / s u p p o r t o = x ; x = y ; y = s u p p o r t o ;...

Stampare il più grande di tre valori (alternative?) #i n c l u d e <s t d i o. h> f l o a t x, y, z ; i n t main ( ) { / l e g g i x, y, z /... i f ( x > y ) { i f ( x > z ) { p r i n t f ( % f, x ) ; e l s e { p r i n t f ( % f, z ) ; e l s e { i f ( y > z ) { p r i n t f ( % f, y ) ; e l s e { p r i n t f ( % f, z ) ; r e t u r n 0 ;