Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012
|
|
- Raimonda Rossi
- 6 anni fa
- Visualizzazioni
Transcript
1 Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012
2 Sommario Operatore? Tipo di dato: struct La ricorsione Funzioni ricorsive Esercizi proposti 26/04/2012 2
3 Operatore? L'operatore? può essere utilizzato per scrivere un'istruzione condizionale del tipo if-else in modo più rapido. Sintassi: espressione_test? azione_true : azione_false; Esempio: (var1>var2)?x=0:x=1 Si valuta l espressione l espressione_test (ovvero (var1>var2) ) se è vera si esegue azione_true (cioè x=0;), altrimenti si esegue azione_false (cioè x=1;) Equivale all'istruzione if (var1>var2) x=0 else x=1; L'operatore? viene anche denominato operatore ternario in quanto richiede tre operandi. 3
4 Operatore? Esempio completo #include <iostream> using namespace std; int main() { int m, n; cout << "Digita Y o N> "; char c; cin >> c; cout << ( (( c == 'Y') ( c == 'y'))? "Hai accettato!" : "Non accettato o non valido" )<< endl; return 0; } 4
5 Operatore? Esempi: cout << "\ndigita valore "; int valore; cin >> valore; bool positivo=false; positivo =( (valore>=0)? true : false); cout << "\nvalore= "<<valore<<" "<<positivo<<endl; cout << "\ndigita importo "; int aliquota,importo; cin >> importo; aliquota = ((importo>=60000)? 45 : 33); cout << "\nimporto = "<<importo<<" aliquota = "<<aliquota;; 5
6 Struct Il tipo struct ( record ) è tipo di dato che permette di rappresentare in modo aggregato (sotto uno stesso nome) gruppi di valori non omogenei (ossia tipi di dato differenti) come ad esempio dati numerici (es. numero telefonico, voto, ecc.) e testuali (nome, cognome, ecc.) Un tipo struct (redocrd) è costituito da un elenco di campi, ognuno dei quali sarà accessibile singolarmente. I campi possono a loro volta essere delle strutture. struct studente{ int matricola; string materia; int g,m,a; int voto; }; struct contatto { int id; string nome; int telefono; string indirizzo; }; 6
7 Struct Una struct si dichiara con la seguente sintassi: struct NomeStruttura { tipo_elemento1 nome_elemento1; tipo_elemento2 nome_elemento2;... }; In questo modo noi abbiamo definito solo un tipo di struttura, ma non abbiamo ancora creato nessuna variabile. Per creare variabili di tipo struct si può procedere in 3 modi: Prima modalità (elencando le variabili da dichiarare separate da virgola dopo le parentesi graffe della dichiarazione della struttura) struct contatto { int id; string nome; int telefono; string indirizzo; } contatto1, contatto2; 7
8 Struct Seconda modalità (dichiarando le variabili di tipo struct come delle normali variabili ovvero facendo precedere al nome della variabile il tipo "NomeStruttura precedentemente dichiarato.) struct contatto { int id; string nome; int telefono; string indirizzo; }; contatto contatto1, contatto2; Terza modalità (inizializzando un variabile struttura in fase di dichiarazione, facendo seguire al nome della variabile un uguale e i dati da mettere nei campi della struttura contenuti tra parentesi graffe e separati da virgola) contatto contatto1 = {0, "Rossi Mario", , "via XX settembre, 1"}; 8
9 Trattamento dei campi di un record (struct) Data la struct stud e una variabile studente di tipo stud L input e l output della struct ( record ) avviene un campo alla volta struct stud { string cognome; string nome; int annonascita; }; stud studente; Esempio: La visualizzazione del cout<< \ncognome = <<studente.cognome; record prevede l output dei cout<< \nnome = <<studente.nome; singoli campi cout<< \nanno di nascita = <<studente.annonascita;
10 Struct Ogni campo di una struct può essere considerato come una variabile singola con il nome seguente: Nome_Variabile.Nome_Campo Es. contatto1.nome contatto2.indirizzo Possiamo creare array di struct. Ad esempio, utilizzando la struct contatto (definita prima) creare una rubrica di contatti contatto rubrica[100]; In questo modo abbiamo creato una rubrica di 100 contatti, e se ad esempio vogliamo stampare il nome del primo contatto dobbiamo scrivere: cout<<rubrica[0].nome 10
11 Esercizio Definire una struttura adatta a memorizzare i dati di un libro( titolo del libro, costo, numero di pagine) successivamente si scriva un programma che acquisisce due libri e stampa ti dati del libro che costa di più
12 Esercizio Definire una struttura adatta a memorizzare i dati di un libro( titolo del libro, costo, numero di pagine) successivamente si scriva un programma che acquisisce due libri e stampa ti dati del libro che costa di più struct libro { string titolo; float prezzo; int numeropagine; };
13 #include <iostream> #include <string> using namespace std; struct libro { string titolo; float prezzo; int numeropagine; Esercizio Definire }; una struttura adatta a memorizzare i dati di un libro( titolo del libro, int main() costo, numero di pagine) successivamente si scriva un programma { libro L1, L2; che acquisisce due libri e stampa ti dati del libro che costa di più cout<<"\nindica i dati del primo libro:"<<endl; cout<<"\ntitolo : "; cin>>l1.titolo; cout<<"\nprezzo : "; cin>>l1.prezzo; cout<<"\npagine : "; cin>>l1.numeropagine; cout<<"\nindica i dati del secondo libro:"<<endl; cout<<"\ntitolo : "; cin>>l2.titolo; cout<<"\nprezzo : "; cin>>l2.prezzo; cout<<"\npagine : "; cin>>l2.numeropagine; if(l1.prezzo>l2.prezzo) { cout<<"\nil libro piu' costo e' "<<L1.titolo; cout<<" con prezzo "<<L1.prezzo; cout<<" e pagine "<<L1.numeroPagine<<endl; } else { cout<<"\nil libro piu' costo e' "<<L2.titolo; cout<<" con prezzo "<<L2.prezzo; cout<<" e pagine "<<L2.numeroPagine<<endl; } return 0; } struct libro { string titolo; float prezzo; int numeropagine; };
14 Esercizio Definire una struttura adatta a memorizzare i dati di uno studente e successivamente scrivere un programma C++ che permetta di inserire da input i dati degli allievi di un corso e di stampare le matricole degli allievi che hanno il campo voto > di 24.
15 Esercizio Definire una struttura adatta a memorizzare i dati di uno studente e successivamente scrivere un programma C++ che permetta di inserire da input i dati degli allievi di un corso e di stampare le matricole degli degli allievi che hanno il campo voto > di 24. struct studente{ string nome; int matricola; string materia; int g,m,a; int voto; }; const int n=10; studente allievi[n]; //array di tipo studente
16 La ricorsione In C++ ogni funzione può chiamare anche se stessa, secondo una tecnica detta ricorsione. Ovviamente tali funzioni devono sempre contenere un istruzione di controllo che ha il compito di interrompere la successione delle chiamate, se si verificano certe condizioni. 16
17 Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! 1 n( n 1)! se se n n 0 0 dove n è un numero intero non negativo 17
18 Confronto fra definizione iterativa e ricorsiva Funzione non ricorsiva n!= 1*2*3*...*(n-1)*n fatt(n)= 1*2*3*...*(n-1)*n; Funzione ricorsiva 0!=1 n!= n*(n-1)!; fatt(n)=n*fatt(n-1) 18
19 Il calcolo del fattoriale Vediamo di chiarirne il significato 0! = 1 1! = 1(1-1)! = 1 0! = 1 1 = 1 2! = 2(2-1)! = 2 1! = 2 1 = 2 3! = 3(3-1)! = 3 2! = = 6 4! = 4(4-1)! = 4 3! = = 24 5! = 5(5-1)! = 5 4! = = 120 Quindi, per ogni n intero positivo, il fattoriale di n è il prodotto dei primi n numeri interi positivi
20 Il calcolo del fattoriale Per implementare la funzione per il calcolo del fattoriale in modo iterativo siamo costretti a fare un analisi della definizione per scrivere l algoritmo #include <iostream> using namespace std; int fatt(int); int main() { int n; do { cout << "\nintroduci un numero >0 : "; cin >> n;} while (n<=0); cout << "Fattoriale di: " << n<< " =" << fatt(n) << endl; return 0; } 20
21 Il calcolo del fattoriale Per implementare la funzione per il calcolo del fattoriale in modo iterativo siamo costretti a fare un analisi della definizione per scrivere l algoritmo #include <iostream> using namespace std; int fatt(int); senza usare la ricorsione int main() { int fatt(int k) int n; { int i = 2,m =1; do { while ( i <= k ) cout << { "\nintroduci m *= i++ un numero ; } >0 : "; cin >> n;} return m; while (n<=0); cout << } "Fattoriale di: " << n<< " =" << fatt(n) << endl; return 0; } 21
22 Il calcolo del fattoriale Implementando direttamente la definizione ricorsiva, è naturale scrivere: int fatt (int k) { if (k==0)return 1;/*istruzione di controllo */ else return k*fatt(k-1);}
23 Il calcolo del fattoriale #include <iostream> using namespace std; int fatt(int); int main() { int n; do { cout << "\nintroduci un numero >0 : "; cin >> n;} while (n<=0); cout << "Fattoriale di: " << n<< " =" << fatt(n) << endl; return 0; } int fatt (int k) { if (k==0)return 1;/*istruzione di controllo */ else return k*fatt(k-1);} 23
24 Il calcolo del fattoriale La funzione ricorsiva fattoriale non necessita di iterazioni, ma include internamente il calcolo del risultato, infatti restituisce 1 se il parametro ricevuto è uguale a 0 mentre in caso contrario il valore restituito è il prodotto di n per il fattoriale (n-1), pertanto fattoriale calcola il valore da restituire chiamando se stessa e "passandosi" come parametro il parametro appena ricevuto, diminuito di uno. int fatt (int k) { if (k==0)return 1;/*istruzione di controllo */ else return k*fatt(k-1);} Questa soluzione si basa sulla invocazione di una funzione mentre si esegue la funzione stessa! Questa possibilità è permessa in tutti i linguaggi di programmazione che ammettono la ricorsione
25 La ricorsione Per capire come utilizzare correttamente la ricorsione, vediamo innanzitutto come funziona. Quando una funzione ricorsiva invoca se stessa, vengono eseguite le stesse azioni di quando viene invocata una funzione qualsiasi Si sospende l esecuzione della funzione chiamante (le variabili locali rimangono congelate) Si esegue la funzione chiamato fino alla sua terminazione (con nuove variabili locali e passando i parametri per valore) Si riprende l esecuzione della funzione chiamante dal punto in cui era stata sospesa (recuperando le variabili locali) 25
26 La ricorsione Vediamo la sequenza delle istruzioni per calcolare 3! si chiama f(3) f(3) lascia in sospeso il calcolo 3* f(2) e chiama f(2) f(2) lascia in sospeso il calcolo 2* f(1) chiama f(1) f(1) lascia in sospeso il calcolo 1* f(0) e chiama f(0) f(0) restituisce 1 a f(1) f(1) calcola1*1 e restituisce 1 a f(2) f(2) calcola 2*1 e restituisce 2 a f(3) f(3) calcola 3*2 e restituisce 6 alla funzione chiamante Si crea quindi una pila ( stack) di funzioni in attesa, ciascuno con le sue variabili locali, che si allunga e che poi si accorcia fino ad esaurirsi
27 La ricorsione Chiamare una funzione mentre si esegue la stessa funzione è un paradigma di programmazione che si chiama ricorsione e una funzione che ne faccia uso si chiama Funzione ricorsiva La ricorsione è uno strumento molto potente per realizzare alcuni algoritmi (ma è anche fonte di errori di difficile diagnosi) Esistono infatti due regole ben definite (passo base e passo ricorsivo) che vanno utilizzate per scrivere funzioni ricorsive che funzionino. 27
28 Prima regola La ricorsione: passo base la funzione ricorsiva deve fornire la soluzione del problema in almeno un caso particolare, senza ricorrere ad una chiamata ricorsiva questo caso si chiama caso base della ricorsione nel nostro esempio, il caso base era if (n == 0) return 1; a volte ci sono più casi base, infatti non è necessario che il caso base sia unico 28
29 Seconda regola La ricorsione: passo ricorsivo la funzione ricorsiva deve effettuare la chiamata ricorsiva dopo aver semplificato il problema nel nostro esempio, per il calcolo del fattoriale di n si invoca la funzione ricorsivamente per conoscere il fattoriale di n-1, cioè per risolvere un problema più semplice f = n * fattoriale(n - 1); il concetto di problema più semplice varia di volta in volta: in generale, bisogna avvicinarsi ad un caso base 29
30 Ricorsione infinita Si noti quindi che non tutte le funzioni ricorsive realizzano algoritmi! se manca il caso base, la funzione ricorsiva continua ad invocare se stessa all infinito se il problema non viene semplificato ad ogni invocazione ricorsiva, la funzione ricorsiva continua ad invocare se stessa all infinito In questo caso la lista delle funzioni in attesa si allunga indefinitamente, l ambiente runtime esaurisce la memoria disponibile per tenere traccia di questa lista, e il programma termina con un errore. 30
31 Le regole appena viste Ricorsione infinita implicano che ad ogni invocazione il problema diventi più semplice avvicinandosi sempre più al caso base che non richiede ricorsione ovvero che per quanto complesso possa essere il problema la soluzione sia calcolata in un numero finito di passi 31
32 Esercizio Scrivere una funzione ricorsiva e una iterativa che ricevendo in input, come parametro un intero n, calcola F(n) dove F è la funzione di Fibonacci.
33 Esercizio Scrivere una funzione ricorsiva per il calcolo della funzione esponenziale definita come segue: 26/04/
34 Esercizio Scrivere un programma che calcola il prodotto tra due numeri interi a e b mediante una funzione ricorsiva che utilizza somme successive. Suggerimento Il calcolo da svolgere deve essere del tipo a*b = a*(b-1)+a; 34
35 Esercizio Scrivere una funzione che, dati come parametri di input un array di interi a ed un intero n, restituisce il numero delle occorrenze di n in a. 35
36 Esercizio Scrivere una funzione che, dati come parametri di input un array di interi a ed un intero n, restituisce la posizione della prima occorrenza di n in a, e -1 se n non compare in a. 36
37 Esercizio Scrivere una funzione che, dati come parametri di input un array di interi a ed un intero n, restituisce true se n compare in a, false altrimenti. 37
38 Esercizio Scrivere una funzione che, dati come parametri di input un array bidimensionale di interi a ed un intero n, restituisce true se n compare in a, false altrimenti. 26/04/
39 Esercizio Scrivere una funzione che dati come parametri di input un array di interi restituisca true se tutti i suoi elementi sono identici, e false altrimenti. 26/04/
40 Esercizio Scrivere una funzione che, dati come parametri di input un array bidimensionale di interi a e due interi k ed n, restituisce true se in ogni riga a[i] di a esistono almeno k elementi maggiori di n, altrimenti la funzione restituisce false. 26/04/
Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario La ricorsione Metodi ricorsivi Esercizi proposti 16/01/2013 2 La ricorsione In Java ogni metodo può chiamare anche se stesso,
Dettaglin n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita
Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale
Dettaglin n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita
Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale
DettagliL organizzazione dei programmi
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
DettagliEsercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliElementi di Informatica A. A. 2016/2017
Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 2
DettagliCorso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale
DettagliCorso di Fondamenti di Informatica. La ricorsione
Corso di Fondamenti di Informatica La ricorsione La ricorsione Si dice che un oggetto (una struttura dati, una funzione matematica, un concetto ) è ricorsivo se è possibile darne una definizione in termini
DettagliFondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliEsercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x
DettagliInformatica! Appunti dal laboratorio 1!
Informatica! Appunti dal laboratorio 1! Sistema Operativo! Windows 7, Windows 8, Mac OS X, Linux, Debian, Red Hat, etc etc! Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti
DettagliLaboratorio di Informatica
Laboratorio di Informatica Seconda lezione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Dottoressa Sara Zuppiroli - sara.zuppiroli@unibo.it L'importanza di capire Perché non dobbiamo dichiarare
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 1 Introduzione G. Mecca M. Samela Università della Basilicata Tipi Strutturati: Introduzione >> Sommario Sommario Panoramica Alcuni Esempi
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Le classi di istruzioni in C++ 1 Le classi di istruzioni in C++ SEQUENZIALI Statement semplice Statement composto CONDIZIONALI if < expr.> else switch case
DettagliArray. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere
DettagliRICORSIONE. Informatica B - A.A. 2013/2014
RICORSIONE Informatica B - A.A. 2013/2014 RICORSIONE Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che comporta
DettagliParte 2. Ricorsione. [M.C.Escher Drawing hands, 1948] - AA. 2012/13 2.1
Parte 2 Ricorsione - AA. 2012/13 [M.C.Escher Drawing hands, 1948] 2.1 Funzioni ricorsive Una funzione si dice ricorsiva se richiama se stessa, direttamente o indirettamente La ricorsione si dice diretta
DettagliBreve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
DettagliARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.
3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il
DettagliVariabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliLaboratorio di Python
Problem solving, Ricorsione, Università di Bologna 13 e 15 marzo 2013 Sommario 1 2 3 4 Errore di semantica Esercizio def vocali(s): voc='' for c in s: if c in 'aeiou': voc=voc+c return voc Cerchiamo di
DettagliGestione di files Motivazioni
Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)
DettagliSTRUTTURE DI CONTROLLO DEL C++
STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto
DettagliInformatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 14/02/2012 / Foglio delle domande / VERSIONE 1 1) Il bus in un computer trasporta a) solo dati b) solo istruzioni c) sia dati sia istruzioni 2) In una sequenza
DettagliProgrammazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
DettagliC espressioni condizionali
C espressioni condizionali Esiste un particolare operatore, detto operatore condizionale, che rappresenta un istruzione if else. estremamente compattata?: Supponiamo di voler inserire nella variabile intera
DettagliCorso di Fondamenti di Informatica Classi di istruzioni 2
Corso di Informatica Classi di istruzioni 2 Anno Accademico 2010/2011 Francesco Tortorella Strutture di controllo Caratteristica essenziale degli algoritmi è la possibilità di decidere le operazioni da
DettagliLe strutture di controllo in C++
Le strutture di controllo in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi di Napoli
Dettagli4. Accesso diretto per gli archivi con record a lunghezza costante
4. Accesso diretto per gli archivi con record a lunghezza costante Nell accesso diretto (in inglese, random) al file binario, le operazioni di lettura o scrittura devono essere precedute dall operazione
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliLaboratorio di Informatica
Strutture di dati Laboratorio di Informatica 5. Strutture / Array di oggetti / Pila&Coda in C++ Una struttura è un insieme finito di variabili (dette campi) non necessariamente dello stesso tipo, ognuna
DettagliIl paradigma OO e le Classi
Oggetti e Classi (CAP 10) Alberto Garfagnini Università degli studi di Padova 1 Dicembre 2009 Il paradigma OO e le Classi La programmazione ad Oggetti () è una filosofia di programmazione che si basa sui
Dettagli#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliINFORMATICA. Strutture iterative
INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale
DettagliImplementazione dell albero binario in linguaggio C++
Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve
DettagliFondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012
Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario Introduzione alla sintassi C++ Array a una dimensione Array a due dimensioni Array multidimensionali Funzioni standard della libreria
DettagliLE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve
LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliLa ricorsione. Ver Claudio Fornaro - Corso di programmazione in C
La ricorsione Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C 2 Divide et impera Metodo di approccio ai problemi che consiste nel dividere il problema dato in problemi più semplici I risultati
DettagliPr1: determinare il maggiore di n numeri interi n. Fondamenti di Informatica Prof. Vittoria de Nitto Personè
Pr1: determinare il maggiore di n numeri interi 1 2 3 4 n 1 Pr1: determinare il maggiore di n numeri interi 1 2 3 4 n P1. trovare il maggiore fra i primi 2 numeri; P2. trovare il maggiore fra il terzo
DettagliERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
DettagliIstruzioni semplici e strutturate
Consorzio NETTUNO Corso di Fondamenti di Informatica I secondo giorno di stage Istruzioni semplici e strutturate Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II
DettagliInformatica Generale Andrea Corradini Ancora sui linguaggi di programmazione
Informatica Generale Andrea Corradini 18 - Ancora sui linguaggi di programmazione Sommario Principali componenti di un linguaggio di programmazione Variabili e costanti Strutture dati: array e record Strutture
DettagliFunzioni. Unità 1. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione II Tatiana Zolo zolo@cs.unipr.it 1 IL PROGRAMMA C++ Istruzioni (espressioni terminate da ; ) istruzioni di dichiarazione (es. int x = 0;); istruzioni di assegnamento
DettagliLa principale modalità di calcolo è l applicazione di funzioni
1 La principale modalità di calcolo è l applicazione di funzioni Nei linguaggi funzionali puri non esistono strutture di controllo predefinite per la realizzazione di cicli quali for, while, repeat Un
DettagliEsercizi su strutture dati
Esercizi su strutture dati Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 21 dicembre 2016 Liste collegate
DettagliCapitolo 19. Ricorsione
Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!
Dettagli1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio
soluzione di un problema 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio rappresentazioni disponibili in C++:
DettagliPolitecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE
INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni
DettagliFunzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
DettagliLaboratorio di Programmazione M-Z
Diretta Laboratorio di Programmazione M-Z Docente: Dott.ssa Alessandra Lumini alessandra.lumini@unibo.it Università di Bologna, Sede di Cesena Divide et impera Dividere un problema in sottoproblemi più
DettagliFunzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliUniversità di Roma Tor Vergata L6-1. iterazione: struttura di controllo per ripetere più volte uno stesso comando
Università di Roma Tor Vergata L6-1 iterazione: struttura di controllo per ripetere più volte uno stesso comando comandi iterativi C++: while, do-while, for while: sintassi while (espressione) comando;
DettagliFondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura
DettagliUn esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);
Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i
DettagliRappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
DettagliFondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da
DettagliInformatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande/ VERSIONE 1 1) L approccio con cui si studia un sistema focalizzandosi solo sul rapporto tra input e output si chiama
DettagliEsercizio 1: funzione con valore di ritorno di tipo puntatore
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio
DettagliFUNZIONI RICORSIVE PROGRAMMAZIONE RICORSIVA: Esempi di problemi ricorsivi:
FUNZIONI RICORSIVE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento (chiamata) a se stessa. Esempio: Esempi di problemi ricorsivi: 1) Somma dei primi
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
DettagliStrutture di iterazione
Strutture di iterazione 1. Leggi i programmi qui sotto e disegna le tabelle di traccia nelle situazioni seguenti: a. Nel primo e nel secondo programma viene inserito da tastiera il valore 2; b. Nel primo
DettagliProgrammazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
DettagliStrutture di Controllo
Introduzione Strutture di Controllo per strutture condizionali e cicliche Quando si affronta la programmazione si devono indicare al computer delle istruzioni da eseguire. Se il computer potesse comprendere
Dettaglipublic static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
DettagliFondamenti di Informatica
Passaggio di parametri in C++ Il passaggio dei parametri tra funzione chiamante e funzione chiamata in C++ avviene secondo due modalità: Fondamenti di Informatica 16. Funzioni in C++ (parte 2) per valore
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 3 Record G. Mecca M. Samela Università della Basilicata Tipi Strutturati: Record >> Sommario Sommario Introduzione Dichiarazione di Record
DettagliJavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132
JavaScript Core Language Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 Condizioni L utilizzo di operatori relazionali e logici consente di formulare delle condizioni
DettagliEsercizio 2: Algebra dei Puntatori e Puntatori a Puntatori
Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Salvatore Mandrà 7 Ottobre 2008 1 Esercizio L esercizio prevede l implementazione di funzioni per il prodotto di una matrice per un vettore, attraverso
DettagliTipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
DettagliIntroduzione al C++ (continua)
Introduzione al C++ (continua) I puntatori Un puntatore è una variabile che contiene un indirizzo di memoria pi_greco 3.141592 pi_greco_ptr indirizzo di 3.141592 & DEREFERENZIAZIONE RIFERIMENTO * se x
DettagliVittoria de Nitto Personè. Esercizi proposti per il corso Fondamenti di informatica
Vittoria de Nitto Personè Esercizi proposti per il corso Fondamenti di informatica Facoltà di Ingegneria - Università degli studi di Roma Tor Vergata Esercizi a. tipi predefiniti, assegnamento Esercizio
DettagliEspressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test
Espressioni logiche Espressioni Logiche e Istruzione di Test Fondamenti di Informatica 1 Massimo Di Nanni Gennaio, 2001 Espressioni logiche nelle Istruzioni di Test e di Iterazione Calcolo del massimo
DettagliUn tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente:
Pag 29 4) La ricorsione 4.1 Funzioni matematiche ricorsive Partiamo da un concetto ben noto, quello delle funzioni matematiche ricorsive. Una funzione matematica è detta ricorsiva quando la sua definizione
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
Dettagli#include <iostream.h> #include <stdlib.h> int main(){ return 0;
L'ambiente DevC++ e la struttura di un programma C++ Il C++ è stato sviluppato da Bjarne Stroustrup negli anni '80 (Bell Laboratories) ed è senza dubbio il linguaggio di programmazione ad alto livello
DettagliCorso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica
Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare
DettagliLaboratorio di Informatica
Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento
DettagliStrutture di controllo iterative
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione Problema Scrivere un programma che acquisisca da standard input un intero
DettagliProva di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:
Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
DettagliCOMANDI ITERATIVI. Ivan Lanese
COMANDI ITERATIVI Ivan Lanese Argomenti Comando while Comando do while Comando for Comando while: reminder while (condizione) comando; Semantica: la condizione viene testata: se è vera, viene eseguito
DettagliFondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 Obiettivi di questa lezione 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Valutazione in cortocircuito In C, le espressioni booleane sono
DettagliPolitecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 21 Luglio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA
Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 21 Luglio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 4 esercizi,
DettagliLinguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative
DettagliProgrammazione modulare
Programmiamo in.. Programmazione modulare Un programma complesso si suddivide in più sottoprogrammi o funzioni. Un programma suddiviso in piccoli pezzi, è più semplice da gestire da aggiornare da correggere
DettagliRELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA
RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA Anno scolastico Lab informatica AULA n 35 Data inizio svolgimento Progr. relazione primo trimestre secondo pentamestre Cognome e Nome DATI DELLO STUDENTE
DettagliLezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
DettagliPROGRAMMAZIONE STRUTTURATA
PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:
DettagliFondamenti di Programmazione
Fondamenti di Programmazione 1 Programmazione Concetti base: dati istruzioni Dati: variabili tipi Istruzioni: istruzioni base strutture di controllo sotto-programmi 2 Sotto-programmi Necessità di scomporre
DettagliC: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
DettagliErrori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente
DettagliLaboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
DettagliLinguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C tipi di dati definiti dall utente Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Tipi di dati in C Predefiniti
DettagliLaboratorio di Python
Problem solving, Ricorsione, 14 marzo 2014 Sommario 1 2 3 4 Sintassi ed Esempi Esercizi Lunedì il numero di studenti che avevano consegnato gli esercizi era 13. Martedì il numero di esercizi ricevuti,
Dettagli