Procedure - Funzioni. Procedure e funzioni Parti di programma a cui è associato un nome e che può essere attivata mediante una chiamata. Le funzioni a.

Slides:



Advertisements
Presentazioni simili
Sottoprogrammi: funzioni e procedure
Advertisements

Esercizio Usate il ciclo repeat until (controllo post condizionale) per simulare il prodotto N x M con M somme di N. Esempio: 5 x 3 equivale a fare 5 +5.
Informatica 22/03/2012.
CAPITOLO 2.
Puntatori in C e C++.
LS Tron Classe 4TC – as 2006/07 LORGANIZZAZIONE DEI PROGRAMMI UD. 8 p. 282.
PROGRAMMARE IN PASCAL (le basi)
Le funzioni UD. 8 – Lorganizzazione dei programmi p. 309 LS Tron 4TC 06/07.
Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Algoritmi e Programmazione
numero rette n numero parti piano f(n) f(n -1)n -1 f(n -1) + nn numero parti piano f(n) numero rette n.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Ricorsione e Debug.
Primo esercizio Scrivere un programma che legge da input
Eliana minicozzi linguaggi L1 Lezione3.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
APPUNTI SUL LINGUAGGIO C
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Esercitazioni sui File Nicola Fanizzi - DIB Corso (B) di Programmazione CdL in Informatica – I livello A.A. 2003/2004.
Organizzazione del corso
Algoritmi su Tipi Semplici
Istruzioni Iterative Nicola Fanizzi
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Problema Ci sono 5 signore nel parco. Ognuna di loro ha 1 figlio. Ogni bambino ha 10 figurine di calciatori, per un totale quindi di 50 figurine. Questi.
OPERAZIONI CON STRINGHE Le operazioni più interessanti da fare, per ora, con le stringhe sono: determinare la lunghezza della stringa, cioè quanti caratteri.
CAPITOLO 7.
FILE TESTO OUTPUT INPUT + DATI PROGRAMMA OUTPUT INPUT PROGRAMMA CARICAMENTO DATI FILE DATI.
Algebra Lineare Esercizi assegnati.
CAPITOLO 6.
Le funzioni.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
ELEMENTI DI PROGRAMMAZIONE
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Cicli in Fortran I cicli consentono di eseguire una sequenza di istruzioni più di una volta due tipi: Cicli iterativi Cicli while.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Lo sviluppo del software e i linguaggi di programmazione
I numeri di Fibonacci.
matematico greco del III° secolo a.c.,
Problema: come dividere due numeri
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
1 Esempi domande di esame. 2 Dato il seguente programma #include int main(){ int *p,j=9,i=5; p=&j; *p=i; printf("%d %d %d\n", i,j,*p); scanf("%d",p);/*
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
- prof. V. Riboldi - SOTTOPROGRAMMI IN TPASCAL METODO TOP DOWN.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
TURBOPASCAL L’iterazione - prof. V. Riboldi -.
ESERCIZIO Assegnata una lista L di caratteri ed un carattere k, scrivere una procedura che cancelli tutte le occorrenze di k in L. PROGRAM Liste(output,input);
Il ciclo while.  Permette di ripetere un blocco di istruzioni fino a quando non si verifica un determinato evento  Il ciclo while può essere realizzato.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
PROVA INTERCORSO MOD.B a.a RICORSIONE ESERCIZI A1.1-A1.6.
RossiUgo /8796 BianchiCarlo /8746 II I Sia dato un file di testo riguardante un insieme di studenti di cui è.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Marzo 2014.
Lez. 11 (13/14)Elementi di Programmazione1 Lezione 11 Esercizi.
Lez.6 (13/14)Elementi di Programmazione1 Lezione 6 Funzioni Passaggio di parametri.
Ciclo for nei linguaggi di programmazione. Nei linguaggi di programmazione, il ciclo for è una struttura di controllo iterativa che determina l'esecuzione.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
Samuele Marino. Cos’è il Repeat Until?  In Pascal, il Repeat Until è un ciclo che consiste nel ripetere (Repeat) una o più istruzioni fino a quando (Until)
Strutture di controllo
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Esercizi sui dati strutturati 13 Tipi di dati strutturati.
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
Transcript della presentazione:

Procedure - Funzioni

Procedure e funzioni Parti di programma a cui è associato un nome e che può essere attivata mediante una chiamata. Le funzioni a differenza delle procedure restituisco un valore. Scrivere un programma che legge da input le misure dei lati di tre diversi parallelepipedi e ne calcoli il volume: vol1 := largh1 * prof1 * alt1 vol2 := largh2 * prof2 * alt2 vol3 := largh3 * prof3 * alt3 Cosa usereste per leggere i valori e per calcolare il volume? Procedura o funzione?

Parametri Parametri formali: sono quelli specificati nell’intestazione della procedura: Procedure p(x: char; var t: integer); Parametri attuali: sono quelli specificati al momento della chiamata, dopo il nome della procedura: p(a, b); I parametri attuali devono corrispondere, per numero e per tipo, ai parametri formali. Quindi a deve essere di tipo char e b di tipo integer.

Passaggio dei parametri Per valore: Il parametro per valore è una variabile locale della procedura/funzione, che viene inizializzata, al momento della chiamata, con il valore fornito come parametro attuale, che può essere una variabile o anche un’espressione di tipo equivalente al parametro formale. Per indirizzo (o per riferimento): Il parametro attuale deve essere una variabile dello stesso tipo specificato per il parametro formale. Ogni operazione riguardante il parametro formale è applicata direttamente al parametro attuale. Il nome del parametro formale deve essere preceduto dalla parola chiave var.

VAR larghezza, profondita, altezza, volume, i: integer; Procedure leggi (var larg, prof, alt:integer); BEGIN writeln('parallelepipedo ',i); write('inserire i valori della larghezza: '); readln(larg); write('inserire i valori della profondita'': '); readln(prof); write('inserire i valori dell''altezza: '); readln(alt); END; function calcolavolume (larg, prof, alt:integer):integer; BEGIN calcolavolume := larg * prof * alt; END; BEGIN for i:=1 to 3 do begin leggi (larghezza, profondita, altezza); WHILE (larghezza < 0) OR (profondita < 0) OR (altezza < 0) DO BEGIN write('Dati non corretti - Ripetere l''inserimento '); leggi (larghezza, profondita, altezza); END; volume:=calcolavolume(larghezza,profondita,altezza); writeln('Il volume del parallelepipedo e'' ', volume); writeln; end; readln; END. Passaggio per indirizzo Passaggio per valore

Individuare le chiamate non corrette Procedure A (x: integer; var y,z: integer; w: char); Le variabili n, k, h sono di tipo integer, b è di tipo char. A (n+1, k, h, b) A (n, k+1, h, b) A(ord(b), k, h, chr(n)) A(k div h, k, h, chr(n)) A( k / h, k, h, chr(n))

Simulazione Si simuli “manualmente” l'esecuzione del seguente programma al fine di dedurre l'output prodotto. VAR x, y: integer; PROCEDURE piu5 (a: integer; VAR b: integer); BEGIN writeln ('All''inizio dell''esecuzione di piu5: ',a:4,b:4); a := a + 5; b := b + 5; writeln ('Alla fine dell''esecuzione di piu5: ',a:4,b:4) END; BEGIN x := 10; y := 20; piu5(x,y); writeln ('Al rientro, dopo l''esecuzione di piu5: ',x:4, y:4); readln; END.

Inizializzazione nel main x1020y BEGIN x := 10; y := 20; piu5(x,y); writeln ('Al rientro, dopo l''esecuzione di piu5: ',x:4, y:4); readln; END.

Chiamata alla procedura: Piu5(x,y),dove x=10, y=20 x10 a y20 Quindi: writeln ('All''inizio dell''esecuzione di piu5: ',a:4,b:4); stampa All'inizio dell'esecuzione di piu5: x 10 b y25a15 Quindi: writeln ('Alla fine dell''esecuzione di piu5: ',a:4,b:4) stampa Alla fine dell'esecuzione di piu5: Infine: writeln('Al rientro, dopo l''esecuzione di piu5: ',x:4, y:4); stampa Al rientro, dopo l''esecuzione di piu5: BEGIN writeln ('All''inizio dell''esecuzione di piu5: ',a:4,b:4); a := a + 5; b := b + 5; writeln ('Alla fine dell''esecuzione di piu5: ',a:4,b:4) END; PROCEDURE piu5 (a: integer; VAR b: integer); b

program EC; {$APPTYPE CONSOLE} uses SysUtils; var b, ris: integer; Function doppio(Var a: integer): integer; begin a:=2*a; doppio:=a; end; begin b:=3; ris:=2* doppio (b); writeln('Primo risultato: ', ris); writeln; b:=3; ris:= doppio (b) + doppio (b); writeln ('Secondo risultato: ', ris); readln; end. Cosa stampa?

Primo risultato: ris:=2* doppio (B) B3 A B6 A B3 La funzione doppio(b) = 2 ris = 2 * 6 = 12 Quindi writeln('Primo risultato: ', ris); stampa Primo risultato: 12 Function doppio (Var a: integer): integer; begin a:=2*a; doppio:=a; end;

Secondo risultato: ris:=doppio(B)+doppio(B) B3 A B6 A B3 La funzione doppio(B) = 6 Ris = 6 + doppio(B) B6 A B12 A B6 La funzione doppio(B) = 12 Risultato = = 18 Function doppio (Var a: integer): integer; begin a:=2*a; doppio:=a; end;

Var a, b: integer; Procedure Proc1 (var x,y: integer; c: integer); var aus: integer; Procedure Proc2 (var v,z: integer; c: integer); begin v:=v+c; z:=z+c; end; begin aus:=x; x:=y; y:=aus; Proc2(x,y,c); end; begin write ('Digita il primo numero: '); readln (a); write ('Digita il secondo numero: '); readln (b); Proc1(a,b,5) writeln('Il primo numero e'': ',a); writeln('Il secondo numero e'': ',b); readln; end. Cosa succede quando chiamo: Proc1 (a, b, 5) ?????? Se a=4, b=6 Si ha a = 11 b= 9 Scambia x e y Somma a v e z il valore c=5

Esercizio: permutazione random Dato un un numero intero n, costruire una procedura che generi una permutazione random di n elementi. Di cosa necessitiamo? Random(numero): funzione che ritorna un numero random nell’intervallo 0 <= X < numero. Se numero non è specificato, restituisce un valore reale nell’intervallo 0<= X < 1. E se volessi generare un numero 1 <= X <= numero? Randomize: procedura che inizializza il generatore di numeri random utilizzando un valore random ottenuto dal clock di sistema.

Procedura Procedure permRandom (var A: tipoArray); Var i: integer; begin for i:=1 to n do p[i]:=i; for i:=n downto 2 do begin x:= random(i)+1; //Deve generare 1 <= x <= i scambia (v[i], v[x]); end;

Esempio: n= for i:=1 to n do p[i]:=i; for i:=n downto 2 do begin x:= random(i)+1; scambia (v[i], v[x]); end; i=4, x=random(4)+1= 2Scambia(v[4], v[2]) i=3, x=random(3)+1= 2Scambia(v[3], v[2]) i=2, x=random(2)+1= 1Scambia(v[2], v[1]) La permutazione random è

Esercizio 2 Data un numero intero n, costruire una procedura che generi una permutazione random di n elementi e la disponga in una matrice 4x4. Esempio: gioco del 15. Il 16 corrisponde alla casella vuota