Si consiglia la lettura di alcune utili dispense presenti in Internet per la programmazione delle calcolatrici della famiglia HP48G. Un buon sito in italiano e' quello di Salvatore Miano, oppure quello in lingua inglese di Justin Dossey.
« A -> DIAG
A SIZE
DIAG->
» |
D
Costruiamo una matrice diagonale ossia avente tutti gli elementi nulli tranne quelli nella
posizione aii. riga 1: nello stack viene messa la matrice A: [[1 2] [3 4]] da cui vengono ottenuti gli elementi diagonali [1 4]. riga 2: Con A SIZE si ottiene la dim. di A: {2 2} riga 3: DIAG-> mette nella diagonale di una matrice con le dim. precedenti gli elementi in cima allo stack, ossia [1 4]. Quindi si otterra' p.e. : [[1 0] [0 4]] |
« "Inserire il valore della base del triangolo" "base " INPUT OBJ-> "Ora quello dell'altezza" "altezza " INPUT OBJ-> SWAP DROP AREA » |
ATRI. I due programmi che seguono, ATRI e AREA,
permettono inseme di calcolare l'area di un triangolo. Il problema da risolvere, elementare,
e' solo un pretesto per capire l'utilizzo del comando INPUT, e OBJ->. riga 1,2: visualizza un messaggio sul display riga 3: prompt che richiede un valore riga 4: esegue quanto scritto in riga 1,2,3 riga 5: OBJ-> scompone la stringa "base numeroInserito" in 'base' (liv. 2 dello stack) e numeroInserito (in cima lo stack) riga 9,10: elimina "altezza " dallo stack, e chiama AREA. |
« -> B A « 'B*A/2' ->NUM » » |
AREA. Semplice esempio di programma che utilizza i primi due valori dello stack e calcola l'area del triangolo. |
« 1 -> Z
«A
1 A SIZE HEAD
FOR Q
Z A SIZE HEAD
FOR P
{Q P} 0 PUT
NEXT
1 'Z' STO+
NEXT
»
» |
L. Data una matrice di dimensioni NxN, costruiamo un
programma che azzera gli elementi della diagonale principale, nonche' gli elementi al di sopra della
stessa. riga 1: Z = 1 riga 2: mette nello stack la matrice A per poi modificarla, con le varie iterazioni, in triang. bassa riga 3: da 1 alla dim. di A (primo ciclo FOR) riga 5: da Z alla dim. di A (secondo ciclo FOR) riga 7: metti a 0 gli elem. di riga P e colonna Q riga 9: la variabile Z viene incrementata di 1 appena usciti dal secondo ciclo FOR |
« A
A SIZE HEAD 2
FOR X
-> A
« A DET
A X ROW- DROP
X COL- DROP
»
-1 STEP
» |
DETMN.
Una matrice A puo' essere fattorizzata nel prodotto LDU, se i minori principali
di A sono non singolari. In altri termini se le "sottomatrici" costruite a partire dall'angolo
superiore sinistro hanno determinante diverso dal 0. Il programma in questione calcola i
determinanti dei minori principali di A.
NOTA: L e' triangolare bassa, D e' diagonale ed U e' triangolare alta (non viene riportato il codice per ottenere U perche' si puo' facilmente ricavare da A, L e D). riga 1: metti nello stack A riga 2: indici del ciclo FOR = dim(A) TO 2 riga 4: il minore di A viene memorizzato in A riga 5: calcola il determinante del minore riga 6,7: ridefinisce il nuovo minore riducendo la matrice di una riga e di una colonna |
![]() |
v1.03
Solo connessi ad Internet potete utilizzare DizSearch |
© Copyright 1997-2001 by Francesco Longo, flongo@dsi.unive.it