Eliana minicozzi linguaggi1 2005-20061 L1 Lezione3.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

IL MODELLO CLIENTE / SERVITORE. Servitore: un qualunque ente computazionale capace di nascondere la propria organizzazione interna presentando ai clienti.
Recupero debito quarto anno Primo incontro
Procedure e funzioni A. Ferrari.
LS Tron Classe 4TC – as 2006/07 LORGANIZZAZIONE DEI PROGRAMMI UD. 8 p. 282.
Le funzioni UD. 8 – Lorganizzazione dei programmi p. 309 LS Tron 4TC 06/07.
PUNTATORI Introduzione
Type Checking (1° parte)
Generazione di Codice Intermedio
Algoritmi e Programmazione
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
1 Semantica Operazionale di un frammento di Java: lo stato.
Metodologie di Programmazione = decomposizione basata su astrazioni
Generalità Linguaggio e Macchina Astratta
Introduzione al linguaggio C
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Funzioni definite dall’utente
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 4 Aprile 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
File.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
eliana minicozzi linguaggi1a.a lezione2
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Programmazione Corso di laurea in Informatica
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Approfondimento delle classi
Unità Didattica 2 I Linguaggi di Programmazione
nome: sequenza di caratteri usata per denotare un oggetto
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
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.
Le funzioni.
Espressioni condizionali
FUNZIONI: IL MODELLO APPLICATIVO 1) Valutazione, nellenvironment corrente, del simbolo che denota il nome della funzione; 2) Valutazione, nellenvironment.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
Ereditarietà e Polimorfismo
2000 Prentice Hall, Inc. All rights reserved. Capitolo 6 (Deitel) I vettori Sommario Introduzione Vettori Dichiarazione di vettori 6.4.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Cicli in Fortran I cicli consentono di eseguire una sequenza di istruzioni più di una volta due tipi: Cicli iterativi Cicli while.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Unità Didattica 3 Linguaggio C
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
Complessità di un algoritmo
Astrazione procedurale ed eccezioni
CORSO DI PROGRAMMAZIONE II Lezione 22
- prof. V. Riboldi - SOTTOPROGRAMMI IN TPASCAL METODO TOP DOWN.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
Programmazione ad oggetti
1. 2 Variabili statiche e dinamiche Un programma è un processo in esecuzione a cui il sistema operativo assegna una certa zona di memoria. Tale zona può.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

eliana minicozzi linguaggi L1 Lezione3

eliana minicozzi linguaggi Parametri :interfaccia tra la procedura chiamante e quella chiamata Parametri: mezzo di comunicazione esplicita dell informazione fra lunità di esecuzione chiamante e la procedura chiamata. Domanda:qual è la differenza fra i parametri e idata Object globali? 3 categorie di parametri: In,Out, IN OUT.

eliana minicozzi linguaggi Ovvio significato dei parametri In: contengono l informazione che l unità di esecuzione chiamante passa alla procedura nel momento della chiamata: solitamente passati per valore. Out : Informazione dalla procedura chiamata alla chiamante nel momento in cui avviene il ritorno del controllo alla chiamante. In Out: che hanno funzioni sia dell IN che dell Out Out e In Out sono solitamente passati per indirizzo : cioè i parametri attuali sono il nome del data object in cui va messo l eventuale valore di ritorno.

eliana minicozzi linguaggi Ancora sui parametri I parametri devono essere specificati sia nellunità che chiama la procedura (statement di chiamata) sia nella definizione della procedura chiamata. I Parametri nellunità che chiama si chiamano parametri reali (attuali), nella procedura chiamata si chiamano parametri formali. I parametri attuali e i parametri formali corrispondenti devono essere dello stesso tipo nei linguaggi fortemente tipati.

eliana minicozzi linguaggi Legame parametri con il tipo REGOLA: avviene a compile time. Eccezioni: - I parametri formali vengono legati al tipo a run- time quando la procedura è chiamata. Questo naturalmente non permette un controllo dei tipi a compile time. - I parametri formali vengono legati a run-time con sottotipi di qualche tipo di base a cui si è legato il parametro a tempo di compilazione. Questultima alternativa ovviamente permette il controllo dei tipi a compile-time.

eliana minicozzi linguaggi Associazione:Parametri attuali con parametri formali per posizione: a seconda della posizione relativa nella sequenza dei parametri; per nome: il nome del parametro formale è aggiunto come prefisso al parametro attuale;

eliana minicozzi linguaggi Esempio di Associazione Esempio: supponiamo lintestazione della seguente procedura (ADA): procedure TEST (A: in Atype; b: in out Btype; C: out Ctype) invocazione con associazione per posizione : TEST(X, Y, Z); Invocazione con associazione per nome: TEST(A=>X, C=>Z, b=>Y); Una ulteriore tecnica `e la cosiddetta associazione di default. Essa permette di specificare valori di default ai parametri formali che non sono statilegati a valori da parametri attuali (valida ovviamente solo per parametri In)

eliana minicozzi linguaggi Implementazione dei Parametri Tutti i tipi di parametri possono essere implementati per indirizzo o per copia : Per capire al volo le diapositive seguenti ricordate che gli IN contengono informazione mandata, per essere usata, dalla procedura chiamante, gli OUT devono riportare alla chiamante i risultati della computazione che si è svolta nella procedura chiamata

eliana minicozzi linguaggi Parametri IN implementati per indirizzo il parametro IN è trattato come una costante con nome: il compilatore controllerà che il parametro formale non sia modificato dalla procedura: non appaia nella parte sinistra di uno statement di assegnazione, non sia usato, nella procedura, come parametro reale di OUT o di IN OUT in uno statement di chiamata di un altra procedura ……....

eliana minicozzi linguaggi Parametri IN implementati per copia Il parametro attuale è trattato come valore di una variabile locale alla procedura chiamata (il cui nome è il nome del parametro formale). Può essere modificato durante lesecuzione della procedura e la sua modifica non ha chiaramente effetti sul parametro reale. Il Pascal usa per default questa implementazione

eliana minicozzi linguaggi Parametri OUT implementati per indirizzo Per distinguerli dai parametri IN OUT, spesso i compilatori, quando sono passati per indirizzo, permettono laccesso solo per modificarne il valore e non per usarlo: parametri OUT sempre alla sinistra degli eventuali statement di assegnazione! Nellimplementazione per copia, il parametro formale è usato come una variabile locale il cui valore iniziale è indefinito. Al termine della procedura il suo valore è passato al parametro reale.

eliana minicozzi linguaggi Parametri OUT implementati per copia Nellimplementazione per copia, il parametro formale è usato come una variabile locale il cui valore iniziale è indefinito. Al termine della procedura il suo valore è passato al parametro reale

eliana minicozzi linguaggi Parametri IN OUT implementati per indirizzo Non ci sono restrizioni del parametro formale dentro la procedura. In Pascal questo è il modello usato per i parametri VAR.

eliana minicozzi linguaggi Parametri IN OUT implementati per copia Ritroviamo tutto quello che abbiamo nelle implementazioni per copia degli IN e degli OUT: Si crea una variabile locale per il parametro formale e il parametro reale viene copiato nella variabile locale. Quando la procedura termina, il valore finale del parametro formale viene copiato nella locazione del parametro reale. Limplementazione IN OUT per copia è comunemente chiamato: value-result parameter passing.

eliana minicozzi linguaggi Ancora IN OUT Nel caso degli IN-OUT lunica differenza nel passaggio per copia o per indirizzo è che nel secondo caso il parametro reale è modificato ogni volta che il parametro formale è modificato; nel primo caso, gli effetti delle modifiche si hanno solo alla fine della procedura

eliana minicozzi linguaggi ALIASING Aliasing è la possibilità di riferirsi con nomi differenti alla stessa locazione. Esempio: program main; var A : integer; procedure test ( var X, Y : integer ); begin X : = A + Y; writeln (A, X, Y); end; begin A : = 1; Test (A,A); end Poiché var in Pascal è implementatoper indirizzo qui A, Y e X sono legati alla stessa locazione Il risultato in Pascal è Contrariamente a quello che Ci si aspetta

eliana minicozzi linguaggi Discussione esempio aliasing Linvocazione Test (A, A) produce che A, Y e X sono legati alla stessa locazione producendo aliasing. Laliasing diminuisce molto la comprensibilità della procedura e forza il programmatore a dipendere a livelli profondi dallimplementazione del linguaggio. Per esempio nellimplementazione del Pascal dei parametri definiti VAR, il programma scriverà 2 2 2; Se (cosa che non è) i VAR fossero implementati per copia, il risultato del writeln sarà Cosa che uno si aspetta. Ma anche in questo caso al termine di TEST la locazione identificata da A, potrà contenere 1 o 2, in dipendenza dallordine in cui i parametri formali saranno scritti in A

eliana minicozzi linguaggi Riassumendo: Aliasing avviene quando a) variabili non locali e parametri formali implementati per indirizzo condividono lo stesso indirizzo b) quando due parametri reali condividono la stessa locazione. c) quando cè il trasferimento di valori in locazioni diverse. In ogni caso anche quando i parametri sono implementati per copia, può ancora verificarsi ambiguità quando due OUT o IN OUT parametri reali si riferiscono alla stessa entità dato.

eliana minicozzi linguaggi Definizione di funzioni o VRP: value- returning-procedure Esempio di definizione in Pascal e in Modula 2: In Pascal function F (X: Xtype; Y: Ytype) : Result type; In Modula 2 procedure F (X: Xtype ; Y: Ytype) : Result type;

eliana minicozzi linguaggi Funzioni: esecuzione. Sono procedure che restituiscono un valore alla unità chiamante: esse quindi hanno bisogno, in aggiunta a tutto quello che riguarda le procedure, di aver definito il tipo del valore che ritornano. Sono realizzate o creando, senza previa definizione, nellambiente locale della procedura chiamata, una pseudovariabile legata al nome della VRP, a cui si può accedere solo per modifiche (per es. deve apparire solo alla sinistra di uno statement di assegnazione).Il cui valore viene ritornato all unità chiamante quando finisce l esecuzione della VPR. o utilizzando uno statement di ritorno,contenente Return seguito da un espressione, per restituire esplicitamente il controllo alla procedura chiamante inviandole allo stesso tempo il valore dellespressione sopracitata. Nota che: tutti i tipi di parametri che pure si possono implementare possono avere effetti indesiderabili in quanto l espressione che astrae la VRP non dovrebbe cambiare implicitamente nessun valore dell ambiente in cui viene invocata.

eliana minicozzi linguaggi Overloading E permessa la definizione di due procedure (funzioni) con lo stesso nome a patto che il numero di parametri e/o il tipo di essi (nel caso di funzione e/o il tipo del valore di ritorno) siano diversi.

eliana minicozzi linguaggi Esempio di overloading in ADA procedure MAIN is R: FLOAT:= 0.0; I: INTEGER:= 0; function F(X: FLOAT) return INTEGER is begin return 1; end; function F(X: INTEGER) return INTEGER is begin return 2; end; function F(X: FLOAT; Y: INTEGER) return INTEGER is begin return 3; end;

eliana minicozzi linguaggi Segue Esempio di overloading in Ada function F(X: INTEGER; Y: FLOAT) return INTEGER is begin return 4; end; function F(X: INTEGER) return FLOAT is begin return 5.0; end; begin put (F(R)); -- Stampa 1 put (F(I)); -- Stampa 2 put (F(R,I)); -- Stampa 3 put (F(I,R)); -- Stampa 4 R:= F(I); put (Integer(R)); -- Stampa 5 end MAIN;

eliana minicozzi linguaggi Riassunto Astrazione Procedurale Nellastrazione procedurale abbiamo visto due importanti proprietà: INCAPSULAMENTO e PARAMETRIZZAZIONE Incapsulamento: è la proprietà di nascondere i dettagli dell implementazione di una procedura p e quindi anche dell ambiente locale, allunità di esecuzione che usa p, ovvero è la possibilità di isolare limplementazione di p dallambiente in cui viene usato. Parametrizzazione: è la proprietà mediante la quale una procedura può effettuare attività diverse al variare dei valori dei suoi parametri. Per esempio ordinamento su array, può ordinare ogni array di ogni grandezza purché corrisponda alla definizione dei parametri

eliana minicozzi linguaggi Esercizi ESERCIZIParadigmaImperativoProcedure.do c ESERCIZIParadigmaImperativoProcedure.do c