Funzioni

Notazioni

Prefissa -x
Infissa x+y
Postfissa x!
xy+
Funzionale Succ(x)
Altre… x2
xy
logab

Notazione funzionale

Un’espressione come la seguente

Z <-- (a+b)*(c-d)

utilizzando le espressioni con gli operatori propri del linguaggio (+, -, * …) diventa in modo quasi automatico

Z:=(a+b)*(c-d);

Se le operazioni da svolgere non sono previste dal linguaggio (UNO, DUE, TRE...)

Z <-- (a UNO b) TRE (c DUE d)

possiamo utilizzare le procedure per ottenere

UNO(a, b, X);
DUE(c, d, Y);
TRE(X, Y, Z);

dove X e Y sono delle variabili di appoggio per i risultati intermedi.

Se fosse almeno possibile utilizzare la notazione funzionale della matematica

Z:=TRE(UNO(a, b), SUB(c, d));

ci sarebbe un notevole miglioramento...

Funzioni

Dovendo svolgere delle azioni e dare infine una risposta si usa una notazione simile a quella delle procedure

Function NOME(lista argomenti...): TIPO;

nella quale compare il TIPO della risposta che la funzione restituisce nel punto dove è stata chiamata.

Per realizzare questo, è obbligatoria almeno un’istruzione del tipo

NOME:="Espressione";

nel blocco delle istruzioni della funzione stessa.

Gli operatori binari infissi non sono definibili da programma per realizzare i nostri algoritmi (invece con l’overloading del C++...) e quindi dobbiamo accontentarci della notazione funzionale.

Esercizi

Funzioni con e senza parametri da realizzare, anche imitando le versioni originali.

  • Funzioni SENZA parametri: RandRIGA, RandCOL, RandCIFRA, RandALFA
  • Funzioni CON parametri: Media(X, Y), Minimo(X, Y), Massimo(X, Y), ByteAlto(), ByteBasso(), BytesSwap(), Tangente(x), Potenza(X, Y), Log10(), Pari(), MediaGeometrica(X, Y), InteroSuperiore(), Maiuscolo(), Minuscolo()