L organizzazione dei programmi

Documenti analoghi
Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica

Università degli Studi di Cassino Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili

RICORSIONE. Informatica B - A.A. 2013/2014

Le strutture di controllo in C++

PROGETTAZIONE TOP-DOWN E BOTTOM-UP

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Istruzioni semplici e strutturate

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Informatica! Appunti dal laboratorio 1!

FUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi:

Programmazione modulare

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Programmazione a moduli in C

Capitolo 19. Ricorsione

Laboratorio di Programmazione M-Z

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde

Implementazione dell albero binario in linguaggio C++

PROGETTAZIONE TOP-DOWN E BOTTOM-UP

Laboratorio di Informatica

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

uguale livello gerarchico non vi sono funzioni più importanti di altre main main

Corso di Fondamenti di Informatica Classi di istruzioni 2

Strutture di controllo in C++

Programmazione Procedurale in Linguaggio C++

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Ingredienti sintattici di Java

La ricorsione. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione

Informatica! Appunti dal laboratorio 1!

LA RICORSIONE IN C. CdL Ingegneria Informatica n.o. Anno Accademico 2006/07 Fondamenti di Informatica I corso A Giacomo Piscitelli pag.

La ricorsione. Ver Claudio Fornaro - Corso di programmazione in C

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

Inserimento in una lista ordinata

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

1 - Visualizzare una scritta sullo schermo.

Corso di Fondamenti di Informatica. La ricorsione

nome (lista_parametri) Funzioni funzioni predefinite: sqrt(x) log(x) usare queste funzioni significa: specificare il valore degli argomenti

COMANDI ITERATIVI. Ivan Lanese

Laboratorio di Informatica

DICHIARAZIONI, FUNZIONI E PASSAGGIO DEI PARAMETRI. Cosimo Laneve

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Procedura. Procedure e funzioni. Esempio di procedura in C. Procedure in C. Esempio con prototipo. Esecuzione del codice

Strutture di iterazione

1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/ III Informatica Serale I.T.I.S.

Sottoprogrammi: astrazione procedurale

Esercitazione 11. Liste semplici

Qualsiasi programma in C++ segue lo schema:

Corso di Programmazione Orientata agli oggetti

Fondamenti di Informatica

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Ricerca binaria (o dicotomica) di un elemento in un vettore

Esercitazione 5. Corso di Fondamenti di Informatica. Laurea in Ingegneria Informatica

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

Programmazione, 5 a lezione

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++

Definizione di metodi in Java

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Analisi di massima: L utente dovrà inserire un numero limite, e tramite vari calcoli verrà stampato a video la sequenza.

Vittoria de Nitto Personè. Esercizi proposti per il corso Fondamenti di informatica

Esame Informatica Generale 13/04/2016 Tema A

Laboratorio di programmazione

Pr1: determinare il maggiore di n numeri interi n. Fondamenti di Informatica Prof. Vittoria de Nitto Personè

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Codifica: dal diagramma a blocchi al linguaggio C++

Introduzione al C++ Corso di C++ INFN LNS 13 Dicembre Corrado Santoro

Appunti, esempi ed esercizi sui linguaggi C/C++

Sommario. Calcolo della radice quadrata. Calcolo della radice quadrata. y0 a rappresenta un approssimazione per eccesso dll della radice. y 1 a.

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012

Laboratorio di Programmazione e Calcolo

Esercizi su programmazione ricorsiva 1. Pericle Perazzo 23 marzo 2012

Introduzione Funzioni in C

Il paradigma OO e le Classi

Funzioni, Stack e Visibilità delle Variabili in C

4. Accesso diretto per gli archivi con record a lunghezza costante

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Introduzione all uso delle funzioni in C++

Introduzione Funzioni in C

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Concetto di Funzione e Procedura METODI in Java

Funzioni. (Dichiarazione, Prototipo, Chiamata) Concetto di funzione

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

La scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco

Funzioni in Linguaggio C

Istituto Tecnico Industriale M. M. Milano Polistena. Classe III D a.s. 2015/2016 C++ Guida Base

Programmazione di base

Ω (grande omega) Esempio 10 COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

La ricorsione. Politecnico di Milano Sede di Cremona

Matematica. Imparare le moltiplicazioni per multipli di 10 e 100. Risposte. Nome:

RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3

Fondamenti di Informatica

Capitolo 5 - Funzioni

La scrittura di un programma Modellizzazione del programma Scrittura del codice Esercizi. Sperimentazioni I. Alberto Garfagnini, Marco Mazzocco

Algoritmo di ordinamento per scambio (a bolle o bubble sort)

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Transcript:

L organizzazione dei programmi Lo sviluppo top-down L.S. Touschek - A.S. 2015/2016 - I fondamenti del Linguaggio C F. Cardarelli

Lo sviluppo top-down I problemi complessi Blocco 1 Istruzione 1 Istruzione 2 Istruzione 3. Blocco 2 Istruzione 1 Istruzione 2 Istruzione 3. Blocco Istruzione 1 Istruzione 2 Istruzione 3.

Lo sviluppo top-down - ogni blocco è un modulo che funziona in maniera indipendente; - più facile costruire programmi sempre più complessi; - più facile la manutenzione del software; - i blocchi possono essere riutilizzati all interno di altri programmi. In linguaggio informatico i blocchi sono chiamati sottoprogrammi. Nel linguaggio C++ i sottoprogrammi vengono detti function

Le function tipo di dato restituito nome della function (elenco dei parametri) istruzione 1; istruzione 2; istruzione ; return valore restituito;

// Prodotto di due numeri interi, con funzione iterativa #include. using namespace std; int prodotto(int a, int b); // dichiarazione della function int main () int a, b, p; cout << "inserisci i due numeri interi" << endl; cin >> a >> b; cout << "a * b = " << prodotto(a,b) << endl; system ("PAUSE"); return 0; int prodotto(int a, int b) // definizione della function int p = 0; do p+=a; // p = p + a b--; // b = b - 1 while (b!= 0); //!= «diverso da» return p;

Il passaggio dei parametri main() chiamata alla function (parametri attuali) function(parametri formali).

Il passaggio per valore int prodotto(int x, int y); int main () int a, b, p; cout << "a * b = " << prodotto(a,b) << endl; int prodotto(int x, int y) do p+=x; y--; while (y!= 0);

Il passaggio (dei parametri) per valore int prodotto(int x, int y); int main () int a, b, p; cout << "a * b = " << prodotto(a,b) << endl; int prodotto(int x, int y) do p+=x; y--; while (y!= 0); I cambiamenti effettuati sui parametri formali durante l esecuzione della funzione non influenzano i valori delle variabili nella funzione chiamante (main oppure altra function)

Ordinamento (crescente) di tre numeri int main () int a,b, c; int temp; cout << "inserisci i tre numeri "; cin >> a >> b >> c; if (a > b) if (a > c) if (b > c) cout. temp = a; a = b; b = temp; temp = a; a = c; c = temp; temp = b; b = c; c = temp;

Il passaggio (dei parametri) per referenza void Ordina(int& x, int& y); // function int temp; if (x > y) temp = x; x = y; y = temp; // fine della function int main() int a, b, c;. Ordina(a,b); Ordina(a,c); Ordina(b,c); cout.. //programma principale I cambiamenti effettuati sui parametri formali durante l esecuzione della funzione influenzano i valori delle variabili nella funzione chiamante (main oppure altra function)

Le funzioni definite per ricorsione (ricorsività) Ricorsione: la possibilità che una funzione ha di chiamare se stessa La chiamata della funzione è contenuta all interno della funzione stessa.

Hofstadter s Law It always takes longer than you expect, even when you take into account the Hofstadter s Law

Calcolo del fattoriale (metodo iterativo) int main() int n; long double fatt; cout <<"inserisci il numero n: "; cin >> n; fatt = 1; for(int i=1; i<=n; i++) fatt=fatt*i; cout..

Calcolo del fattoriale (metodo ricorsivo) long double Fatt(int x); int main(). cout <<"il fattoriale di " << n << " e': " << Fatt(n) << endl;. long double Fatt(int x) double long f; if (x==0) f = 1; else f = x * Fatt(x-1); return f;

I coefficienti binomiali long int Disp (int x, int y); long int Fatt (int x); int main () int n, k; long int cnk; cout << "inserisci n e k" << endl; cin >> n >> k; cnk= Disp(n,k)/Fatt(k); cout << cnk; long int Fatt(int x) long int f; if (x==0) f = 1; else f = x * Fatt(x-1); return f; long int Disp (int n, int k) long int t; t=n; for (int i =1; i <=k-1 ; i++) t=t*(n-i); return t;

La successione di Fibonacci 1, 1, 2, 3, 5, 8, 13, 15, 28, 43, 71 f(k) = f(k-1) + f(k-2), k = 3, 4, 5 f(1)=f(2)=1

Prodotto tra due numeri positivi a*b = 0 se b = 0 a*b = a*(b-1) + a se b > 0

Somma di tutti i numeri che vanno da 1 a n 1 i=1 n i=1 i = 1 i = n + n 1 i=1 i