Le funzioni UD. 8 – Lorganizzazione dei programmi p. 309 LS Tron 4TC 06/07
Che cosè una FUNZIONE E un modulo SW interno al programma Ha una struttura simile alle procedure: Riceve dal main i valori assegnati ai parametri formali MA si comporta diversamente: RESTITUISCE UN VALORE
Come si dichiara ? Function funz(parametri:tipo):TIPO; Begin …… End; Come si nota, SI DEVE INDICARE OBBLIGATORIAMENTE QUAL E IL TIPO (integer, real, boolean…) DEL VALORE CHE VIENE RESTITUITO AL MAIN
Come restituisce il valore ? Function funz (parametri:tipo):TIPO; Begin …… funz := … …… End; Allinterno della funzione COMPARIRA OBBLIGATORIAMENTE unistruzione di assegnazione contenente a sinistra il NOME DELLA FUNCTION
Esempio Es. Function Somma(A,B:INTEGER):integer; begin Somma:=a+b; end;
Il ritorno (nel main) Le funzioni vengono usate nel Main COME SE FOSSERO Variabili o espressioni: Nelles. di prima si potrebbe pensare a:... Totale:=somma(x,y)*2; … Writeln(somma(3,5):10); … IF somma(C,D)>100 THEN…
Funzioni predefinite (built in) Es. Abs(x) restituisce il valore assoluto Se non esistesse, il programmatore potrebbe crearla
Funzioni es. 1 Program ValoreAssoluto; VAR y:Real; Function Abs(x:real):real; BEGIN if x<0 then Abs:=-x else Abs:=x; END; Begin readln(y); writeln(Abs(y):10:2); End.
Funzioni es. 2 (al posto di Odd(x)) Program PariDispari; VAR y:Integer; Function Pari(x:integer):BOOLEAN; BEGIN if x MOD 2 =0 then pari:=TRUE else pari:=FALSE; END; Begin readln(y); IF pari(y) = true (oppure IF pari(y)) then writeln(Pari) else writeln(Dispari); End.
Funzioni Built in di Gestione stringhe in Pascal (Ringrazio il Prof. Catena per il file da cui sono stati presi gli esempi) Si suppone che: var S,S1:string; { S:=INFORMATICA;} N,K:integer; Operazione Function Length(S:string):integer Descrizione Funzione: restituisce la lunghezza della stringa (numero di caratteri) Esempio di uso N:=Length(S); {11} O writeln(Length(S));
Si suppone che: var S,S1:string; { S:=INFORMATICA;} N,K:integer; Operazione Function Copy(S:string;N,K:integer): string Descrizione Funzione: restituisce da S la sottostringa formata da K caratteri a partire dal carattere di posto N Esempio di uso S1:= copy(S,3,5); {FORMA} o writeln(copy(S,3,5));
Si suppone che: var S,S1:string; { S:=INFORMATICA;} N,K:integer; Operazione Function UpperCase(S:string): string Descrizione Funzione: restistuisce la stringa S in caratteri maiuscoli Esempio di uso S:= UpperCase(S); o writeln(UpperCase(S)); Operazione Function UpCase(CH:char): char Descrizione Funzione: restituisce il carattere CH in maiuscolo Esempio di uso CH:= UpCase(CH); {se CH=a, CH=A} o writeln(UpCase(CH));
Operazione Function Ord(CH:char): integer Descrizione Funzione: restituisce la posizione del carattere nel codice ASCII Esempio di uso N:= Ord(CH); {se CH=A, N=65} o writeln(Ord(CH)); Operazione Function Chr(N:integer): char Descrizione Funzione: restituisce il carattere che occupa la posizione N nel codice ASCII Esempio di uso CH:= Chr(N); {se N=65, CH=A } o writeln(Chr(N));
Operazione Function Succ(CH:char): char Descrizione Funzione: restituisce il carattere successivo nel codice ASCII Esempio di uso CH:= Succ(CH); {se CH=A, CH=B} o writeln(Succ(CH)); Operazione Function Pred(CH:char): char Descrizione Funzione: restituisce il carattere precedente nel codice ASCII Esempio di uso CH:= Pred(CH); {se CH=A, o writeln(Pred(CH));