Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno 1 2005/2006.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

INFORMATICA Altre Istruzioni di I/O
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
PROGRAMMARE IN PASCAL (le basi)
PHP.
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Type Checking (1° parte)
Generazione di Codice Intermedio
Algoritmi e Programmazione
Introduzione al linguaggio C
Anno accademico Array e puntatori in C.
INFORMATICA Strutture iterative
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.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Semantica Denotazionale
PROGRAMMI DI RICERCA E ORDINAMENTO
Linguaggio MATLAB: costrutti tipici (IF,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.
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.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Codifica di algoritmi linguaggio macchina vs programmazione strutturata Lab Programmazione - turno /2006.
Esempi di riuso del codice nei linguaggi di alto livello Lab Programmazione - turno /2006.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
CAPITOLO 7.
I File.
Il Linguaggio C.
Le funzioni.
AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno.
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di argomenti, ovvero valori che devono essere passati alla funzione.
CODIFICA Da flow-chart a C++.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Algoritmi di conversione in basi numeriche diverse
Lo sviluppo top down Le funzioni
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.
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
Anno accademico Le istruzioni di controllo in C.
- prof. V. Riboldi - SOTTOPROGRAMMI IN TPASCAL METODO TOP DOWN.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
Programmazione in linguaggio C
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Introduzione a Javascript
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
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 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Marzo 2014.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
Transcript della presentazione:

Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006

AA 2005/06 Lab Programmazione L. Capra 2 Procedura Costrutto sintattico presente in quasi tutti i LdP di alto livello che consente di raggruppare un blocco di istruzioni (che implementano un algoritmo) in maniera che possano essere richiamate in qualunque punto di un programma attraverso un nome Oltre al nome, una procedura è caratterizzata dallavere zero o più variabili di input (contenenti i dati su cui opera la procedura) detti parametri I parametri usati nella definizione di una procedura sono detti formali (essi rappresentano dei dati generici) I parametri formali vengono associati a valori effettivi (detti parametri attuali) al momento di una chiamata alla procedura

AA 2005/06 Lab Programmazione L. Capra 3 Parametri I parametri formali di una procedura, come ogni altra variabile di un programma, devono essere dichiarati di un certo tipo Il numero ed il tipo dei parametri formali varia da procedura a procedura Quando si richiama una procedura occorre che vi sia una corrispondenza in numero, tipo e ordine di apparizione tra i parametri attuali e quelli formali (associazione di tipo posizionale) Es. se la procedura A è stata definita con due parametri formali, di cui il primo di tipo intero ed il secondo di tipo stringa, allora A(2,due) è un esempio di chiamata corretta, mentre A(due,2) è un esempio di chiamata scorretta

AA 2005/06 Lab Programmazione L. Capra 4 Parametri (2) I parametri attuali usati nella chiamata ad una procedura, possono essere a loro volta delle variabili, o più in generale delle espressioni (compatibili per tipo rispetto ai corrispondenti parametri formali) Es.A( x + y * 3, sommaprodotto) Lespressione usata come parametro attuale viene prima valutata, quindi il valore risultante viene assegnato al parametro formale corrispondente Le variabili usate come parametri attuali possono essere modificate o meno dallesecuzione della procedura (nel primo caso si parla di side-effect, o parametri di I/O) Tale aspetto è molto importante, e dipende dalle modalità di passaggio dei parametri, che possono essere diverse a seconda dei linguaggi

AA 2005/06 Lab Programmazione L. Capra 5 Funzioni Una funzione è una procedura che restituisce un valore di tipo fissato come risultato di un calcolo Tale valore è reso disponibile alla istruzione contenente la chiamata alla funzione (ambiente chiamante) Quindi una (chiamata a funzione) può comparire allinterno di qualsiasi espressione Es. supponendo che A ritorni un intero: x = w - A(x*x,dueallax) + 3

AA 2005/06 Lab Programmazione L. Capra 6 Una funzione che calcola x y FUN eleva PAR x: INT,y: INT INT VAR r: INT ENDVAR IF y < 0 or (x == 0 and y ==0) THEN ABORT 1 ELSE r = 1 WHILE y > 0 DO r = r * x y = y – 1; REPEAT return r ENDIF ENDFUN

AA 2005/06 Lab Programmazione L. Capra 7 Descrizione FUN eleva PAR x: INT,y: INT INT VAR r: INT ENDVAR IF y < 0 or (x == 0 and y ==0) THEN ABORT 1 ELSE r = 1 WHILE y > 0 DO r = r * x y = y – 1; REPEAT return r ENDIF ENDFUN Parametri formali tipo rientro

AA 2005/06 Lab Programmazione L. Capra 8 Descrizione FUN eleva PAR x: INT,y: INT INT VAR r: INT ENDVAR IF y < 0 or (x == 0 and y ==0) THEN ABORT 1 ELSE r = 1 WHILE y > 0 DO r = r * x y = y – 1; REPEAT return r ENDIF ENDFUN Parametri formali tipo rientro Var. locali

AA 2005/06 Lab Programmazione L. Capra 9 Descrizione FUN eleva PAR x: INT,y: INT INT VAR r: INT ENDVAR IF y < 0 or (x == 0 and y ==0) THEN ABORT 1 ELSE r = 1 WHILE y > 0 DO r = r * x y = y – 1; REPEAT return r ENDIF ENDFUN Parametri formali tipo rientro Var. locali istruzione rientro istruzione rientro anomalo

AA 2005/06 Lab Programmazione L. Capra 10 Esercizio: conversione da base 2 Input : stringa di bit Es Output: valore intero corrispondente (base 10) : = 1 · · · · 2 0 Assunzione: esistono due funzioni predefinite stringlength e getchar per calcolare la lunghezza di una stringa data, e conoscere il carattere in una posizione data Suggerimento: usare la funzione eleva

AA 2005/06 Lab Programmazione L. Capra 11 funzione di conversione FUN convertFrom2to10 PAR bits: STRING INT VAR res, i, nb: INT; c CHAR ENDVAR nb = stringlength (bits) IF nb == 0 THEN return -1 %codice di errore% ELSE return res ENDIF ENDFUN

AA 2005/06 Lab Programmazione L. Capra 12 funzione di conversione FUN convertFrom2to10 PAR bits: STRING INT VAR res, i, nb: INT; c CHAR ENDVAR nb = stringlength (bits) IF nb == 0 THEN return -1 %codice di errore% ELSE res = 0 i = 0 DO i = i + 1 WHILE i < nb return res ENDIF ENDFUN

AA 2005/06 Lab Programmazione L. Capra 13 funzione di conversione FUN convertFrom2to10 PAR bits: STRING INT VAR res, i, nb: INT; c CHAR ENDVAR nb = stringlength (bits) IF nb == 0 THEN return -1 %codice di errore% ELSE res = 0 i = 0 DO c= getchar(bits,i) IF c =/= '1' and c =/= '0 THEN return –2 %codice di errore% ELSE i = i + 1 ENDIF WHILE i < nb return res ENDIF ENDFUN

AA 2005/06 Lab Programmazione L. Capra 14 funzione di conversione FUN convertFrom2to10 PAR bits: STRING INT VAR res, i, nb: INT; c CHAR ENDVAR nb = stringlength (bits) IF nb == 0 THEN return –1 %codice di errore% ELSE res = 0 i = 0 DO c= getchar(bits,i) IF c =/= '1' and c =/= '0 THEN return –2 %codice di errore% ELSE IF c == '1 THEN res = res + eleva(2, nb - i -1) ENDIF i = i + 1 ENDIF WHILE i < nb return res ENDIF ENDFUN

AA 2005/06 Lab Programmazione L. Capra 15 Esercizio: conversione da base 10 in base 2 Input : numero intero Es:20 Output: stringa binaria corrispondente Es. : Algoritmo: Assunzione: loperatore + può essere anche usato per concatenare stringhe resti

AA 2005/06 Lab Programmazione L. Capra 16 Conversione inversa FUN convertFrom10to2 PAR num: INT STRING VAR c CHAR; res: STRING ENDVAR res = %stringa vuota% IF num < 0 THEN return res%codice di errore% ELSE IF num == 0 THEN return 0 ELSE return res ENDIF ENDFUN

AA 2005/06 Lab Programmazione L. Capra 17 Conversione inversa FUN convertFrom10to2 PAR num: INT STRING VAR c CHAR; res: STRING ENDVAR res = %stringa vuota% IF num < 0 THEN return res%codice di errore% ELSE IF num == 0 THEN return 0 ELSE DO num = num / 2 %divisione intera% WHILE num =/= 0 return res ENDIF ENDFUN

AA 2005/06 Lab Programmazione L. Capra 18 Conversione inversa FUN convertFrom10to2 PAR num: INT STRING VAR c CHAR; res: STRING ENDVAR res = %stringa vuota% IF num < 0 THEN return res%codice di errore% ELSE IF num == 0 THEN return 0 ELSE DO IF (num mod 2) == 0 THEN c = 0%resto zero% ELSE c = 1 ENDIF res = c + res%appende c a sinistra di res% num = num / 2 %divisione intera% WHILE num =/= 0 return res ENDIF ENDFUN