Applet e servlet finanziarie

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Applet e servlet finanziarie"

Transcript

1 33 Applet e servlet finanziarie Nonostante tutte le grandi applicazioni sofisticate quali elaboratori di testi, database e pacchetti di calcolo che dominano il paesaggio del calcolo, esiste una classe di programmi diffusi e di dimensioni ridotte. Effettuano diversi calcoli finanziari, quali le rate di un prestito, il valore futuro di un investimento o il saldo restante di un prestito. Nessuno dei calcoli citati è molto complesso o richiede molto codice, ma fornisce informazioni utili. Come è noto, inizialmente Java è stato progettato per supportare la creazione di piccoli programmi portabili. In origine tali programmi erano sotto forma di applet, ma alcuni anni dopo sono state aggiunge le servlet (si ricordi che le applet sono eseguite sulla macchina locale, nel browser, e che le servlet sono eseguite sul server). Grazie alle dimensioni ridotte, molti calcoli finanziari diffusi hanno le dimensioni giuste per applet e servlet. Inoltre, l inserimento di un applet/servlet finanziaria in una pagina web è un amenità apprezzata da molti utenti. Un utente torna spesso su una pagina che offre i calcoli desiderati. Il presente capitolo sviluppa numerose applet che effettuano i calcoli finanziarli elencati di seguito: Rate di un prestito Saldo restante di un prestito Valore futuro di un investimento Investimento iniziale necessario per ottenere un valore futuro desiderato Rendita annua di un investimento. Investimento necessario per una rendita annua desiderata. Il capitolo termina mostrando come convertire le applet finanziarie in servlet.

2 2 Capitolo Calcolo delle rate di un prestito Forse il calcolo finanziario più diffuso è quello che calcola le rate di un prestito, per esempio per un automobile o una casa. Le rate per un prestito si trovano utilizzando la formula indicata di seguito: Payment = (tassoint * (capitale /rateannue)) / (1 ((tassoint /rateannue) + 1) rateannue * numanni) tassoint specifica il tasso di interesse, capitale contiene il saldo iniziale, rateannue indica il numero di rate all anno e numanni specifica la durata del prestito in anni. L applet di seguito, dal nome RegPay, utilizza la formula precedente per calcolare le rate di un prestito date le informazioni immesse dall utente. Come tutte le applet del capitolo, RegPay è basata su Swing. Significa che estende la classe JApplet e utilizza le classi Swing per fornire l interfaccia utente. Si noti che implementa anche l interfaccia ActionListener. // Una semplice applet che calcola prestiti. import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.text.*; /* <applet code= RegPay width=320 height=200> </applet> */ public class RegPay extends JApplet implements ActionListener { JTextField amounttext, paymenttext, periodtext, ratetext; JButton doit; double principal; // capitale originale double intrate; // tasso di interesse double numyears; // durata del prestito in anni /* Numero di rate annuali. Si può consentire all utente di impostare tale valore. */ final int payperyear = 12; NumberFormat nf; public void init() { try { SwingUtilities.invokeAndWait(new Runnable () { public void run() { makegui(); // inizializza la GUI

3 Applet e servlet fi nanziarie 3 ); catch(exception exc) { System.out.println( Can t create because of + exc); // Imposta e inizializza la GUI. private void makegui() { // Usa un grid bag layout. GridBagLayout gbag = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); setlayout(gbag); JLabel heading = new JLabel( Compute Monthly Loan Payments ); JLabel amountlab = new JLabel( Principal ); JLabel periodlab = new JLabel( Years ); JLabel ratelab = new JLabel( Interest Rate ); JLabel paymentlab = new JLabel( Monthly Payments ); amounttext = new JTextField(10); periodtext = new JTextField(10); paymenttext = new JTextField(10); ratetext = new JTextField(10); // Campo rate solo per la visualizzazione. paymenttext.seteditable(false); doit = new JButton( Compute ); // Definisce il grid bag. gbc.weighty = 1.0; // usa un peso di riga pari a 1 gbc.anchor = GridBagConstraints.NORTH; gbag.setconstraints(heading, gbc); PARTE IV // Ancora molti componenti a destra. gbc.anchor = GridBagConstraints.EAST; gbag.setconstraints(amountlab, gbc); gbag.setconstraints(amounttext, gbc); gbag.setconstraints(periodlab, gbc);

4 4 Capitolo 33 gbag.setconstraints(periodtext, gbc); gbag.setconstraints(ratelab, gbc); gbag.setconstraints(ratetext, gbc); gbag.setconstraints(paymentlab, gbc); gbag.setconstraints(paymenttext, gbc); gbc.anchor = GridBagConstraints.CENTER; gbag.setconstraints(doit, gbc); // Aggiunge tutti i componenti. add(heading); add(amountlab); add(amounttext); add(periodlab); add(periodtext); add(ratelab); add(ratetext); add(paymentlab); add(paymenttext); add(doit); // Si registra per la ricezione di eventi di azione. amounttext.addactionlistener(this); periodtext.addactionlistener(this); ratetext.addactionlistener(this); doit.addactionlistener(this); // Crea un formato di numero. nf = NumberFormat.getInstance(); nf.setminimumfractiondigits(2); nf.setmaximumfractiondigits(2); /* L utente ha premuto Invio in un campo di testo o ha premuto Compute. Visualizza il risultato se tutti i campi sono completi. */ public void actionperformed(actionevent ae) { double result = 0.0; String amountstr = amounttext.gettext(); String periodstr = periodtext.gettext(); String ratestr = ratetext.gettext();

5 Applet e servlet fi nanziarie 5 try { if(amountstr.length()!= 0 && periodstr.length()!= 0 && ratestr.length()!= 0) { principal = Double.parseDouble(amountStr); numyears = Double.parseDouble(periodStr); intrate = Double.parseDouble(rateStr) / 100; result = compute(); paymenttext.settext(nf.format(result)); showstatus( ); // elimina i messaggi di errore precedenti catch (NumberFormatException exc) { showstatus( Invalid Data ); paymenttext.settext( ); // Calcola il pagamento del prestito. double compute() { double numer; double denom; double b, e; numer = intrate * principal / payperyear; e = -(payperyear * numyears); b = (intrate / payperyear) + 1.0; denom = Math.pow(b, e); return numer / denom; PARTE IV L applet generata dal programma è mostrata nella Figura Per utilizzare l applet, immettere semplicemente il capitale del prestito, la durata del prestito in anni e il tasso di interesse. Si presuppongono rate mensili. Dopo avere immesso le informazioni fare clic su Compute per calcolare la rata mensile. I paragrafi di seguito esaminano in dettaglio il codice di RegPay. Poiché tutte le applet del capitolo utilizzano la stessa struttura di base, gran parte della spiegazione presentata di seguito vale anche per le altre applet.

6 6 Capitolo 33 Figura 33.1 L applet RegPay. I campi di RegPay RegPay inizia dichiarando numerose variabili di istanza contenenti riferimenti ai campi di testo in cui l utente immette le informazioni sul prestito. Quindi dichiara la variabile doit contenente un riferimento al pulsante Compute. RegPay dichiara quindi tre variabili double contenenti i valori del prestito. Il capitale originale è memorizzato in principal, il tasso di interesse è memorizzato in intrate e la durata del prestito in anni è memorizzata in numyears. Tali valori sono immessi dall utente mediante i campi di testo. Quindi viene dichiarata la variabile intera final payperyear e inizializzata su 12. Il numero di rate annuali è inserito nel codice come mensile perché è il metodo di pagamento per la maggior parte dei prestiti. Come suggeriscono i commenti, è possibile consentire all utente di immettere tale valore, ma l operazione richiede un altro campo di testo. L ultima variabile di istanza dichiarata da RegPay è nf, un riferimento a un oggetto di tipo NumberFormat, che descrive il formato di numero utilizzato per l output. NumberFormat è memorizzato nel package java.text. Sebbene esistano altri metodi per formattare l output numerico, per esempio l utilizzo della classe Formatter, in questo caso NumberFormat è una buona scelta, perché si utilizza ripetutamente lo stesso formato, che può essere impostato una volta all inizio del programma. Le applet finanziarie offrono inoltre una buona opportunità per mostrarne l utilizzo. Il metodo init() Come tutte le applet, il metodo init() viene chiamato quando l applet avvia l esecuzione la prima volta. Il metodo chiama semplicemente il metodo makegui() sul thread di invio degli eventi. Come spiegato nel Capitolo 30, le applet basate su Swing devono costruire componenti GUI e interagire con essi solo attraverso il thread di invio degli eventi.

7 Applet e servlet fi nanziarie 7 Il metodo makegui() Il metodo makegui() imposta l interfaccia utente per l applet. Effettua le operazioni elencate di seguito: 1. Cambia il gestore di layout in GridBagLayout. 2. Istanzia i diversi componenti della GUI. 3. Aggiunge i componenti al grid bag. 4. Aggiunge rilevatori di azioni per i componenti. Di seguito si esamina makegui() riga per riga. Il metodo inizia con le righe di codice mostrate di seguito: // Usa un grid bag layout. GridBagLayout gbag = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); setlayout(gbag); La sequenza crea un gestore di layout GridBagLayout utilizzato dall applet (per i dettagli sull utilizzo di GridBagLayout consultare il Capitolo 25). Si utilizza GrigBagLayout perché consente un controllo dettagliato sul posizionamento dei controlli in un applet. In seguito makegui() crea i componenti etichetta, campi di testo e il pulsante Compute, come mostrato di seguito: JLabel heading = new JLabel( Compute Monthly Loan Payments ); JLabel amountlab = new JLabel( Principal ); JLabel periodlab = new JLabel( Years ); JLabel ratelab = new JLabel( Interest Rate ); JLabel paymentlab = new JLabel( Monthly Payments ); amounttext = new JTextField(10); periodtext = new JTextField(10); paymenttext = new JTextField(10); ratetext = new JTextField(10); PARTE IV // Campo rate solo per la visualizzazione. paymenttext.seteditable(false); doit = new JButton( Compute ); Si noti che il campo di testo che visualizza la rata mensile è impostato sulla sola lettura chiamando seteditable(false). In tal modo il campo è disattivato e l utente non può immettere testo in esso. Tuttavia i contenuti del campo di testo possono ancora essere impostati chiamando settext(). Quindi quando si disattiva la modifica in un JTextField, è possibile utilizzare il campo per visualizzare testo, ma l utente non può modificarlo.

8 8 Capitolo 33 Quindi si impostano i limiti del grid bag per ogni componente con la sequenza di codice di seguito: // Definisce il grid bag. gbc.weighty = 1.0; // usa un peso di riga pari a 1 gbc.anchor = GridBagConstraints.NORTH; gbag.setconstraints(heading, gbc); // Ancora molti componenti a destra. gbc.anchor = GridBagConstraints.EAST; gbag.setconstraints(amountlab, gbc); gbag.setconstraints(amounttext, gbc); gbag.setconstraints(periodlab, gbc); gbag.setconstraints(periodtext, gbc); gbag.setconstraints(ratelab, gbc); gbag.setconstraints(ratetext, gbc); gbag.setconstraints(paymentlab, gbc); gbag.setconstraints(paymenttext, gbc); gbc.anchor = GridBagConstraints.CENTER; gbag.setconstraints(doit, gbc); Sebbene inizialmente sembri complesso, non lo è. Si ricordi semplicemente che ogni riga nella griglia è specificata separatamente. La sequenza funziona come spiegato di seguito. In primo luogo, il peso di ogni riga, contenuto in gbc. weighty, viene impostato su 1. In tal modo si indica al grid bag di distribuire uniformemente lo spazio extra quando è presente più spazio verticale di quanto sia necessario a contenere i componenti. Quindi si impostano gbc.gridwidth su REMAINDER e gbc.anchor su NORTH. L etichetta a cui fa riferimento l intestazione si aggiunge chiamando setconstraints() su gbag. La sequenza imposta la posizione dell intestazione nella parte superiore della griglia (north) e le fornisce la parte restante della riga. Quindi dopo l esecuzione della sequenza l intestazione si trova in alto nella finestra su una riga per proprio conto. In seguito si aggiungono i quattro campi di testo e le relative etichette. Si imposta gbc.anchor su EAST. In tal modo ogni componente è allineato a destra. Quin-

9 Applet e servlet fi nanziarie 9 di si imposta gbc.gridwidth su RELATIVE e si aggiunge l etichetta. In seguito si imposta gbc.gridwidth su REMAINDER e si aggiunge il campo di testo. In tal modo ogni coppia di campo di testo ed etichetta occupa una riga. Il processo si ripete fino all aggiunta delle quattro coppie campo di testo/etichetta. Infine si aggiunge al centro il pulsante Compute. Dopo l impostazione dei limiti del grid bag i componenti vengono aggiunti alla finestra con il codice di seguito: // Aggiunge tutti i componenti. add(heading); add(amountlab); add(amounttext); add(periodlab); add(periodtext); add(ratelab); add(ratetext); add(paymentlab); add(paymenttext); add(doit); In seguito si registrano i rilevatori di azioni per i tre campi di input di testo e il pulsante Compute, come mostrato di seguito: // Si registra per la ricezione di eventi di azione. amounttext.addactionlistener(this); periodtext.addactionlistener(this); ratetext.addactionlistener(this); doit.addactionlistener(this); Infine si ottiene un oggetto NumberFormat e si imposta il formato su due cifre decimali: // Crea un formato di numero. nf = NumberFormat.getInstance(); nf.setminimumfractiondigits(2); nf.setmaximumfractiondigits(2); PARTE IV La chiamata al metodo factory getinstance() ottiene un oggetto NumberFormat adatto alla località predefinita. Le chiamate a setminimumfractiondigits() e setmaximumfractiondigits() impostano i numeri minimo e massimo di cifre decimali da visualizzare. Poiché sono impostati entrambi su due, sono sempre visibili due cifre decimali. Il metodo actionperformed() Il metodo actionperformed() viene chiamato ogni volta che l utente preme Invio quando si trova in un campo di testo, o fa clic sul pulsante Compute. Il metodo svolge tre funzioni principali: ottiene le informazioni sul prestito immesse dall u-

10 10 Capitolo 33 tente, chiama compute() per calcolare le rate e visualizza il risultato. Di seguito si esamina actionperformed() riga per riga. Dopo avere dichiarato la variabile result, actionperformed() inizia ottenendo le stringhe dei tre campi di testo inseriti dall utente utilizzando la sequenza di seguito: String amountstr = amounttext.gettext(); String periodstr = periodtext.gettext(); String ratestr = ratetext.gettext(); Quindi avvia un blocco try e verifica che tutti i tre campi di testo contengano informazioni, come mostrato di seguito: try { if(amountstr.length()!= 0 && periodstr.length()!= 0 && ratestr.length()!= 0) { Si ricordi che l utente deve immettere l importo originale del prestito, il numero di anni per il prestito e il tasso di interesse. Se tutti i tre campi di testo contengono informazioni, la lunghezza di ogni stringa è maggiore di zero. Se l utente ha immesso tutti i dati del prestito, si ottengono i valori numerici corrispondenti a tali stringhe e si memorizzano nella variabile di istanza corrispondente. Quindi si chiama compute() per calcolare le rate e si visualizza il risultato nel campo di testo di sola lettura a cui fa riferimento paymenttext, come mostrato di seguito: principal = Double.parseDouble(amountStr); numyears = Double.parseDouble(periodStr); intrate = Double.parseDouble(rateStr) / 100; result = compute(); paymenttext.settext(nf.format(result)); Si noti la chiamata a nf.format(result): formatta il valore in result come specificato in precedenza (con due cifre decimali) e restituisce la stringa risultante. La stringa si utilizza quindi per impostare il testo nel JTextField specificato da paymenttext. Se l utente ha immesso un valore non numerico in un campo di testo, Double.parseDouble() lancia una NumberFormatException. Se ciò accade, viene visualizzato un messaggio di errore nella riga di stato e il campo di testo Payment viene svuotato, come mostrato di seguito: showstatus( ); // elimina i messaggi di errore precedenti catch (NumberFormatException exc) { showstatus( Invalid Data ); paymenttext.settext( );

11 Applet e servlet finanziarie 11 Altrimenti gli errori precedenti vengono rimossi. Il metodo compute() Il calcolo delle rate ha luogo in compute(). Implementa la formula mostrata in precedenza e opera sui valori in principal, intrate, numyears e payperyear. Restituisce il risultato. La struttura di base utilizzata da RegPay è utilizzata da tutte le applet del presente capitolo Calcolo del valore futuro di un investimento Un altro calcolo finanziario diffuso trova il valore futuro di un investimento dati l investimento iniziale, il tasso di interesse, il numero di periodi composti per anno e il numero di anni per cui si mantiene l investimento. Per esempio, si può desiderare di sapere quale sarà il valore di un capitale tra 12 anni se attualmente è di $ e ha un tasso di interesse annuo del 6%. L applet FutVal sviluppata di seguito fornisce la risposta. Per calcolare il valore futuro utilizzare la formula di seguito: Future Value = capitale * ((tassoint / compperanno) + 1) compperanno * numanni tassoint specifica il tasso di interesse, capitale contiene il valore iniziale dell investimento, compperanno indica il numero di periodi composti all anno e numanni specifica la durata dell investimento in anni. Se per tassoint si utilizza un tasso di interesse annuale, il numero di periodi composti è 1. L applet di seguito, dal nome FutVal, utilizza la formula precedente per calcolare il valore futuro di un investimento. L applet generata dal programma è mostrata nella Figura A parte le differenze di calcolo nel metodo compute(), l applet ha un funzionamento simile all applet RegPay descritta nel paragrafo precedente. PARTE IV // Calcola il valore futuro di un investimento. import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.text.*; /* <applet code= FutVal width=380 height=240> </applet> */

12 12 Capitolo 33 public class FutVal extends Japplet implements ActionListener { JTextField amounttext, futvaltext, periodtext, ratetext, comptext; JButton doit; double principal; // capitale originale double rateofret; // tasso di interesse double numyears; // durata dell investimento in anni int compperyear; // numero di periodi composti all anno NumberFormat nf; public void init() { try { SwingUtilities.invokeAndWait(new Runnable () { public void run() { makegui(); // inizializza la GUI ); catch(exception exc) { System.out.println( Can t create because of + exc); // Imposta e inizializza la GUI. private void makegui() { // Usa un grid bag layout. GridBagLayout gbag = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); setlayout(gbag); JLabel heading = new JLabel( Future Value of an Investment ); JLabel amountlab = new JLabel( Principal ); JLabel periodlab = new JLabel( Years ); JLabel ratelab = new JLabel( Rate of Return ); JLabel futvallab = new JLabel( Future Value of Investment ); JLabel complab = new JLabel( Compounding Periods per Year ); amounttext = new JTextField(10); periodtext = new JTextField(10); futvaltext = new JTextField(10); ratetext = new JTextField(10); comptext = new JTextField(10);

13 Applet e servlet fi nanziarie 13 // Campo di valore futuro solo per visualizzazione. futvaltext.seteditable(false); doit = new JButton( Compute ); // Definisce il grid bag. gbc.weighty = 1.0; // usa un peso di riga pari a 1 gbc.anchor = GridBagConstraints.NORTH; gbag.setconstraints(heading, gbc); // Ancora molti componenti a destra. gbc.anchor = GridBagConstraints.EAST; gbag.setconstraints(amountlab, gbc); gbag.setconstraints(amounttext, gbc); gbag.setconstraints(periodlab, gbc); gbag.setconstraints(periodtext, gbc) gbag.setconstraints(ratelab, gbc); gbag.setconstraints(ratetext, gbc); gbag.setconstraints(complab, gbc); gbag.setconstraints(comptext, gbc); gbag.setconstraints(futvallab, gbc); gbag.setconstraints(futvaltext, gbc); PARTE IV gbc.anchor = GridBagConstraints.CENTER; gbag.setconstraints(doit, gbc); add(heading); add(amountlab); add(amounttext); add(periodlab); add(periodtext); add(ratelab); add(ratetext); add(complab);

14 14 Capitolo 33 add(comptext); add(futvallab); add(futvaltext); add(doit); // Si registra per la ricezione di eventi di azione. amounttext.addactionlistener(this); periodtext.addactionlistener(this); ratetext.addactionlistener(this); comptext.addactionlistener(this); doit.addactionlistener(this); // Crea un formato di numero. nf = NumberFormat.getInstance(); nf.setminimumfractiondigits(2); nf.setmaximumfractiondigits(2); /* L utente ha premuto Invio in un campo di testo o ha premuto Compute. Visualizza il risultato se tutti i campi sono completi. */ public void actionperformed(actionevent ae) { double result = 0.0; String amountstr = amounttext.gettext(); String periodstr = periodtext.gettext(); String ratestr = ratetext.gettext(); String compstr = comptext.gettext(); try { if(amountstr.length()!= 0 && periodstr.length()!= 0 && ratestr.length()!= 0 && compstr.length()!= 0) { principal = Double.parseDouble(amountStr); numyears = Double.parseDouble(periodStr); rateofret = Double.parseDouble(rateStr) / 100; compperyear = Integer.parseInt(compStr); result = compute(); futvaltext.settext(nf.format(result)); showstatus( ); // elimina i messaggi di errore precedenti catch (NumberFormatException exc) { showstatus( Invalid Data );

15 Applet e servlet fi nanziarie 15 futvaltext.settext( ); // Calcola il valore futuro. double compute() { double b, e; b = (1 + rateofret/compperyear); e = compperyear * numyears; return principal * Math.pow(b, e); Figura 33.2 L applet FutVal. PARTE IV 33.3 Calcolo dell investimento iniziale necessario per ottenere un valore futuro A volte si desidera conoscere l importo di un investimento iniziale per ottenere un valore futuro. Per esempio, se si risparmia per l università di un figlio ed è noto che serviranno $ tra cinque anni, quanto denaro è necessario investire con un interesse del 7 per raggiungere l obiettivo? L applet InitInv sviluppata di seguito è in grado di rispondere. La formula per calcolare un investimento iniziale è mostrata di seguito:

16 16 Capitolo 33 Initial Investment = valorefinale / (((tassoint /compperanno) + 1) compperanno * numanni) tassoint specifica il tasso di interesse, valorefinale contiene il valore che l investimento deve raggiungere, compperanno indica il numero di periodi composti all anno e numanni specifica la durata dell investimento in anni. Se per tassoint si utilizza un tasso di interesse annuale, il numero di periodi composti è 1. L applet di seguito, dal nome InitInv, utilizza la formula precedente per calcolare l investimento iniziale necessario a raggiungere un valore futuro desiderato. L applet generata dal programma è mostrata nella Figura /* Calcola l investimento iniziale necessario per un valore futuro specificato. */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.text.*; /* <applet code= InitInv width=340 height=240> </applet> */ public class InitInv extends JApplet implements ActionListener { JTextField targettext, initialtext, periodtext, ratetext, comptext; JButton doit; double targetvalue; // valore futuro finale double rateofret; // tasso di interesse double numyears; // durata del prestito in anni int compperyear; // numero di periodi composti all anno NumberFormat nf; public void init() { try { SwingUtilities.invokeAndWait(new Runnable () { public void run() { makegui(); // inizializza la GUI ); catch(exception exc) { System.out.println( Can t create because of + exc); // Imposta e inizializza la GUI.

17 Applet e servlet fi nanziarie 17 private void makegui() { // Usa un grid bag layout. GridBagLayout gbag = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); setlayout(gbag); JLabel heading = new JLabel( Initial Investment Needed for + Future Value ); JLabel targetlab = new JLabel( Desired Future Value ); JLabel periodlab = new JLabel( Years ); JLabel ratelab = new JLabel( Rate of Return ); JLabel complab = new JLabel( Compounding Periods per Year ); JLabel initiallab = new JLabel( Initial Investment Required ); targettext = new JTextField(10); periodtext = new JTextField(10); initialtext = new JTextField(10); ratetext = new JTextField(10); comptext = new JTextField(10); // Campo di valore iniziale solo per visualizzazione. initialtext.seteditable(false); doit = new JButton( Compute ); // Definisce il grid bag. gbc.weighty = 1.0; // usa un peso di riga pari a 1 gbc.anchor = GridBagConstraints.NORTH; gbag.setconstraints(heading, gbc); PARTE IV // Ancora molti componenti a destra. gbc.anchor = GridBagConstraints.EAST; gbag.setconstraints(targetlab, gbc); gbag.setconstraints(targettext, gbc); gbag.setconstraints(periodlab, gbc); gbag.setconstraints(periodtext, gbc);

18 18 Capitolo 33 gbag.setconstraints(ratelab, gbc); gbag.setconstraints(ratetext, gbc); gbag.setconstraints(complab, gbc); gbag.setconstraints(comptext, gbc); gbag.setconstraints(initiallab, gbc); gbag.setconstraints(initialtext, gbc); gbc.anchor = GridBagConstraints.CENTER; gbag.setconstraints(doit, gbc); // Aggiunge tutti i componenti. add(heading); add(targetlab); add(targettext); add(periodlab); add(periodtext); add(ratelab); add(ratetext); add(complab); add(comptext); add(initiallab); add(initialtext); add(doit); // Si registra per la ricezione di eventi di azione. targettext.addactionlistener(this); periodtext.addactionlistener(this); ratetext.addactionlistener(this); comptext.addactionlistener(this); doit.addactionlistener(this); // Crea un formato di numero. nf = NumberFormat.getInstance(); nf.setminimumfractiondigits(2); nf.setmaximumfractiondigits(2); /* L utente ha premuto Invio in un campo di testo o ha premuto Compute. Visualizza il risultato se tutti i campi sono completi. */ public void actionperformed(actionevent ae) { double result = 0.0;

19 Applet e servlet fi nanziarie 19 String targetstr = targettext.gettext(); String periodstr = periodtext.gettext(); String ratestr = ratetext.gettext(); String compstr = comptext.gettext(); try { if(targetstr.length()!= 0 && periodstr.length()!= 0 && ratestr.length()!= 0 && compstr.length()!= 0) { targetvalue = Double.parseDouble(targetStr); numyears = Double.parseDouble(periodStr); rateofret = Double.parseDouble(rateStr) / 100; compperyear = Integer.parseInt(compStr); result = compute(); initialtext.settext(nf.format(result)); showstatus( ); // elimina i messaggi di errore precedenti catch (NumberFormatException exc) { showstatus( Invalid Data ); initialtext.settext( ); // Calcola l investimento iniziale necessario. double compute() { double b, e; b = (1 + rateofret/compperyear); e = compperyear * numyears; return targetvalue / Math.pow(b, e); PARTE IV 33.4 Calcolo dell investimento iniziale necessario per una rendita annuale desiderata Un altro calcolo finanziario diffuso calcola la quantità di denaro da investire per ottenere una rendita annuale desiderata, in termini di prelievi regolari. Per esempio, si può decidere di avere necessità di $ al mese per la pensione e che tale importo sia necessario per 20 anni. La domanda è: quanto è necessario investire per avere tale rendita? La risposta si trova con la formula mostrata di seguito:

20 20 Capitolo 33 Figura 33.3 L applet InitInv. Initial Investment = ((rate * rateperanno) / tassoint) * (1 (1 / (tassoint / rateperanno + 1) rateperanno * numanni)) tassoint specifica il tasso di interesse, rate contiene il valore dei prelievi regolari, rateperanno indica il numero di prelievi all anno e numanni specifica la durata della rendita in anni. L Annuity mostrata di seguito calcola l investimento iniziale necessario a generare la rendita desiderata. L applet generata dal programma è mostrata nella Figura /* Calcola l investimento iniziale necessario per una rendita desiderata. In altre parole calcola l importo iniziale necessario a consentire prelievi regolari di un importo desiderato in un periodo di tempo. */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.text.*; /* <applet code= Annuity width=340 height=260> </applet> */ public class Annuity extends JApplet implements ActionListener {

21 Applet e servlet fi nanziarie 21 JTextField regwdtext, initialtext, periodtext, ratetext, numwdtext; JButton doit; double regwdamount; // importo di ogni prelievo double rateofret; // tasso di interesse double numyears; // durata in anni int numperyear; // numero di prelievi all anno NumberFormat nf; public void init() { try { SwingUtilities.invokeAndWait(new Runnable () { public void run() { makegui(); // inizializza la GUI ); catch(exception exc) { System.out.println( Can t create because of + exc); // Imposta e inizializza la GUI. private void makegui() { // Usa un grid bag layout. GridBagLayout gbag = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); setlayout(gbag); + JLabel heading = newjlabel( Initial Investment Needed for Regular Withdrawals ); JLabel regwdlab = new JLabel( Desired Withdrawal ); JLabel periodlab = new JLabel( Years ); JLabel ratelab = new JLabel( Rate of Return ); JLabel numwdlab = new JLabel( Number of Withdrawals per Year ); JLabel initiallab = new JLabel( Initial Investment Required ); PARTE IV regwdtext = new JTextField(10); periodtext = new JTextField(10); initialtext = new JTextField(10); ratetext = new JTextField(10); numwdtext = new JTextField(10);

22 22 Capitolo 33 // Campo di investimento iniziale solo per visualizzazione. initialtext.seteditable(false); doit = new JButton( Compute ); // Definisce il grid bag. gbc.weighty = 1.0; // usa un peso di riga pari a 1 gbc.anchor = GridBagConstraints.NORTH; gbag.setconstraints(heading, gbc); // Ancora molti componenti a destra. gbc.anchor = GridBagConstraints.EAST; gbag.setconstraints(regwdlab, gbc); gbag.setconstraints(regwdtext, gbc); gbag.setconstraints(periodlab, gbc); gbag.setconstraints(periodtext, gbc); gbag.setconstraints(ratelab, gbc); gbag.setconstraints(ratetext, gbc); gbag.setconstraints(numwdlab, gbc); gbag.setconstraints(numwdtext, gbc); gbag.setconstraints(initiallab, gbc); gbag.setconstraints(initialtext, gbc); gbc.anchor = GridBagConstraints.CENTER; gbag.setconstraints(doit, gbc); // Aggiunge tutti i componenti. add(heading); add(regwdlab); add(regwdtext); add(periodlab);

23 Applet e servlet fi nanziarie 23 add(periodtext); add(ratelab); add(ratetext); add(numwdlab); add(numwdtext); add(initiallab); add(initialtext); add(doit); // Si registra per la ricezione di eventi di campo di testo. regwdtext.addactionlistener(this); periodtext.addactionlistener(this); ratetext.addactionlistener(this); numwdtext.addactionlistener(this); doit.addactionlistener(this); // Crea un formato di numero. nf = NumberFormat.getInstance(); nf.setminimumfractiondigits(2); nf.setmaximumfractiondigits(2); /* L utente ha premuto Invio in un campo di testo o ha premuto Compute. Visualizza il risultato se tutti i campi sono completi. */ public void actionperformed(actionevent ae) { double result = 0.0; String regwdstr = regwdtext.gettext(); String periodstr = periodtext.gettext(); String ratestr = ratetext.gettext(); String numwdstr = numwdtext.gettext(); try { if(regwdstr.length()!= 0 && periodstr.length()!= 0 && ratestr.length()!= 0 && numwdstr.length()!= 0) { PARTE IV regwdamount = Double.parseDouble(regWDStr); numyears = Double.parseDouble(periodStr); rateofret = Double.parseDouble(rateStr) / 100; numperyear = Integer.parseInt(numWDStr); result = compute(); initialtext.settext(nf.format(result));

24 24 Capitolo 33 showstatus( ); // elimina i messaggi di errore precedenti catch (NumberFormatException exc) { showstatus( Invalid Data ); initialtext.settext( ); // Calcola l investimento iniziale necessario. double compute() { double b, e; double t1, t2; t1 = (regwdamount * numperyear) / rateofret; b = (1 + rateofret/numperyear); e = numperyear * numyears; t2 = 1 - (1 / Math.pow(b, e)); return t1 * t2; Figura 33.4 L applet Annuity.

25 Applet e servlet fi nanziarie Calcolo della rendita annua massima per un dato investimento Un altro calcolo di rendita annua calcola la rendita annua massima (in termini di prelievo regolare) disponibile per un dato investimento in un periodo di tempo specificato. Per esempio, se si dispone di $ , quanto è possibile prelevare ogni mese per 20 anni, supponendo un tasso di interesse del 6%? La formula che calcola il prelievo massimo è mostrata di seguito: Maximum Withdrawal = capitale * (((tassoint / rateperanno) / ( 1 + ((tassoint / rateperanno ) + 1)ratePerAnno * numanni)) + (tassoint / rateperanno)) tassoint specifica il tasso di interesse, capitale contiene il valore dell investimento iniziale, rateperanno indica il numero di prelievi all anno e numanni specifica la durata della rendita in anni. L applet MaxWD mostrata di seguito calcola i prelievi periodici massimi che si possono effettuare in un periodo di tempo specificato per dato un tasso di interesse. L applet generata dal programma è mostrata nella Figura /* Calcola la rendita annuale massima che si può prelevare da un investimento in un periodo di tempo. */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.text.*; /* <applet code= MaxWD width=340 height=260> </applet> */ public class MaxWD extends JApplet implements ActionListener { PARTE IV JTextField maxwdtext, orgptext, periodtext, ratetext, numwdtext; JButton doit; double principal; // capitale iniziale double rateofret; // tasso di interesse annuale double numyears; // durata in anni int numperyear; // numero di prelievi all anno NumberFormat nf; public void init() { try { SwingUtilities.invokeAndWait(new Runnable () {

26 26 Capitolo 33 public void run() { makegui(); // inizializza la GUI ); catch(exception exc) { System.out.println( Can t create because of + exc); // Imposta e inizializza la GUI. private void makegui() { // Usa un grid bag layout. GridBagLayout gbag = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); setlayout(gbag); JLabel heading = new JLabel( Maximum Regular Withdrawals ); JLabel orgplab = new JLabel( Original Principal ); JLabel periodlab = new JLabel( Years ); JLabel ratelab = new JLabel( Rate of Return ); JLabel numwdlab = new JLabel( Number of Withdrawals per Year ); JLabel maxwdlab = new JLabel( Maximum Withdrawal ); maxwdtext = new JTextField(10); periodtext = new JTextField(10); orgptext = new JTextField(10); ratetext = new JTextField(10); numwdtext = new JTextField(10); // Campo di prelievo massimo solo per visualizzazione. maxwdtext.seteditable(false); doit = new JButton( Compute ); // Definisce il grid bag. gbc.weighty = 1.0; // usa un peso di riga pari a 1 gbc.anchor = GridBagConstraints.NORTH; gbag.setconstraints(heading, gbc); // Ancora molti componenti a destra. gbc.anchor = GridBagConstraints.EAST; gbag.setconstraints(orgplab, gbc);

27 Applet e servlet fi nanziarie 27 gbag.setconstraints(orgptext, gbc); gbag.setconstraints(periodlab, gbc); gbag.setconstraints(periodtext, gbc); gbag.setconstraints(ratelab, gbc); gbag.setconstraints(ratetext, gbc); gbag.setconstraints(numwdlab, gbc); gbag.setconstraints(numwdtext, gbc); gbag.setconstraints(maxwdlab, gbc); gbag.setconstraints(maxwdtext, gbc); gbc.anchor = GridBagConstraints.CENTER; gbag.setconstraints(doit, gbc); // Aggiunge tutti i componenti. add(heading); add(orgplab); add(orgptext); add(periodlab); add(periodtext); add(ratelab); add(ratetext); add(numwdlab); add(numwdtext); add(maxwdlab); add(maxwdtext); add(doit); PARTE IV // Si registra per la ricezione di eventi di azione. orgptext.addactionlistener(this); periodtext.addactionlistener(this); ratetext.addactionlistener(this); numwdtext.addactionlistener(this); doit.addactionlistener(this); // Crea un formato di numero. nf = NumberFormat.getInstance(); nf.setminimumfractiondigits(2); nf.setmaximumfractiondigits(2);

28 28 Capitolo 33 /* L utente ha premuto Invio in un campo di testo o ha premuto Compute. Visualizza il risultato se tutti i campi sono completi. */ public void actionperformed(actionevent ae) { double result = 0.0; String orgpstr = orgptext.gettext(); String periodstr = periodtext.gettext(); String ratestr = ratetext.gettext(); String numwdstr = numwdtext.gettext(); try { if(orgpstr.length()!= 0 && periodstr.length()!= 0 && ratestr.length()!= 0 && numwdstr.length()!= 0) { principal = Double.parseDouble(orgPStr); numyears = Double.parseDouble(periodStr); rateofret = Double.parseDouble(rateStr) / 100; numperyear = Integer.parseInt(numWDStr); result = compute(); maxwdtext.settext(nf.format(result)); showstatus( ); // elimina i messaggi di errore precedenti catch (NumberFormatException exc) { showstatus( Invalid Data ); maxwdtext.settext( ); // Calcola i prelievi regolari massimi. double compute() { double b, e; double t1, t2; t1 = rateofret / numperyear; b = (1 + t1); e = numperyear * numyears; t2 = Math.pow(b, e) - 1; return principal * (t1/t2 + t1);

29 Applet e servlet fi nanziarie 29 Figura 33.5 L applet MaxWD Calcolo del saldo restante di un prestito Spesso si desidera conoscere il saldo restante di un prestito. Si calcola facilmente se sono noti il capitale originale, il tasso di interesse e il numero di rate pagate. Per calcolare il saldo restante è necessario sommare le rate, sottraendo da ogni rata l importo allocato per gli interessi, quindi sottraendo tale risultato dal capitale. L appleet RemBal, mostrata di seguito, calcola il saldo restante di un prestito. L applet generata dal programma è mostrata nella Figura // Trova il saldo restante su un prestito. import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.text.*; /* <applet code= RemBal width=340 height=260> </applet> */ PARTE IV public class RemBal extends JApplet implements ActionListener { JTextField orgptext, paymenttext, rembaltext, ratetext, numpaytext; JButton doit;

30 30 Capitolo 33 double orgprincipal; // capitale originale double intrate; // tasso di interesse double payment; // importo di ogni rata double numpayments; // numero di rate pagate /* Numero di rate annuali. Si può consentire all utente di impostare tale valore. */ final int payperyear = 12; NumberFormat nf; public void init() { try { SwingUtilities.invokeAndWait(new Runnable () { public void run() { makegui(); // inizializza la GUI ); catch(exception exc) { System.out.println( Can t create because of + exc); // Imposta e inizializza la GUI. private void makegui() { // Usa un grid bag layout. GridBagLayout gbag = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); setlayout(gbag); JLabel heading = new JLabel( Find Loan Balance ); JLabel orgplab = new JLabel( Original Principal ); JLabel paymentlab = new JLabel( Amount of Payment ); JLabel numpaylab = new JLabel( Number of Payments Made ); JLabel ratelab = new JLabel( Interest Rate ); JLabel remballab = new JLabel( Remaining Balance ); orgptext = new JTextField(10); paymenttext = new JTextField(10); rembaltext = new JTextField(10); ratetext = new JTextField(10); numpaytext = new JTextField(10); // Campo saldo solo per la visualizzazione. rembaltext.seteditable(false); doit = new JButton( Compute );

31 Applet e servlet fi nanziarie 31 // Definisce il grid bag. gbc.weighty = 1.0; // usa un peso di riga pari a 1 gbc.anchor = GridBagConstraints.NORTH; gbag.setconstraints(heading, gbc); // Ancora molti componenti a destra. gbc.anchor = GridBagConstraints.EAST; gbag.setconstraints(orgplab, gbc); gbag.setconstraints(orgptext, gbc); gbag.setconstraints(paymentlab, gbc); gbag.setconstraints(paymenttext, gbc); gbag.setconstraints(ratelab, gbc); gbag.setconstraints(ratetext, gbc); gbag.setconstraints(numpaylab, gbc); gbag.setconstraints(numpaytext, gbc); gbag.setconstraints(remballab, gbc); gbag.setconstraints(rembaltext, gbc); gbc.anchor = GridBagConstraints.CENTER; gbag.setconstraints(doit, gbc); PARTE IV // Aggiunge tutti i componenti. add(heading); add(orgplab); add(orgptext); add(paymentlab); add(paymenttext); add(numpaylab); add(numpaytext); add(ratelab); add(ratetext); add(remballab); add(rembaltext);

32 32 Capitolo 33 add(doit); // Si registra per la ricezione di eventi di azione. orgptext.addactionlistener(this); numpaytext.addactionlistener(this); ratetext.addactionlistener(this); paymenttext.addactionlistener(this); doit.addactionlistener(this); // Crea un formato di numero. nf = NumberFormat.getInstance(); nf.setminimumfractiondigits(2); nf.setmaximumfractiondigits(2); /* L utente ha premuto Invio in un campo di testo o ha premuto Compute. Visualizza il risultato se tutti i campi sono completi. */ public void actionperformed(actionevent ae) { double result = 0.0; String orgpstr = orgptext.gettext(); String numpaystr = numpaytext.gettext(); String ratestr = ratetext.gettext(); String paystr = paymenttext.gettext(); try { if(orgpstr.length()!= 0 && numpaystr.length()!= 0 && ratestr.length()!= 0 && paystr.length()!= 0) { orgprincipal = Double.parseDouble(orgPStr); numpayments = Double.parseDouble(numPayStr); intrate = Double.parseDouble(rateStr) / 100; payment = Double.parseDouble(payStr); result = compute(); rembaltext.settext(nf.format(result)); showstatus( ); // elimina i messaggi di errore precedenti catch (NumberFormatException exc) { showstatus( Invalid Data ); rembaltext.settext( ); // Calcola il saldo del prestito.

33 Applet e servlet fi nanziarie 33 double compute() { double bal = orgprincipal; double rate = intrate / payperyear; for(int i = 0; i < numpayments; i++) bal -= payment - (bal * rate); return bal; Figura 33.6 L applet RemBal Creazione di servlet finanziarie Sebbene le applet siano facili da creare e da utilizzare, sono solo la metà dell equazione di Java Internet; l altra metà sono le servlet. Le servlet sono eseguite sul lato server della connessione e sono più adatte per alcune applicazioni. Poiché per le applicazioni commerciali molti lettori possono desiderare di utilizzare servelet invece di applet, la parte restante del capitolo mostra come convertire le applet finanziarie in servlet. Poiché tutte le applet finanziarie utilizzano la stessa struttura di base, si esamina la conversione di una sola applet: RegPay. È quindi possibile applicare lo stesso processo di base per la conversione per proprio conto di tutte le altre applet in servlet. Come si vedrà, non è difficile. PARTE IV

34 34 Capitolo 33 Per informazioni sulla creazione, il test e l esecuzione di servlet consultare il Capitolo 32. Conversione dell applet RegPay in una servlet La conversione dell applet per il calcolo di un prestito RegPay in una servlet è semplice. In primo luogo la servlet deve importare i package javax.servlet e javax.servlet.http. Deve inoltre estendere HttpServlet, non JApplet. Quindi è necessario eliminare tutto il codice per la GUI. Si deve aggiungere il codice che ottiene i parametri passati alla servlet dal codice HTML che chiama la servlet. Infine la servlet deve inviare il codice HTML che visualizza il risultato. I calcoli finanziari di base restano inalterati; cambia solo il modo in cui si ottengono e si visualizzano i dati. La servlet RegPayS La classe RegPayS di seguito è la versione servlet dell applet RegPay. Per come è scritto, il codice presuppone che RegPayS.class sia memorizzata nella directory delle servlet di esempio di Tomcat, come descritto nel Capitolo 32. Si ricordi di immetterne il nome nel file web.xml, come descritto nel Capitolo 32. // Una semplice servlet che calcola prestiti. import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.text.*; public class RegPayS extends HttpServlet { double principal; // capitale originale double intrate; // tasso di interesse double numyears; // durata del prestito in anni /* Numero di rate annuali. Si può consentire all utente di impostare tale valore. */ final int payperyear = 12; NumberFormat nf; public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { String paystr = ; // Crea un formato di numero. nf = NumberFormat.getInstance(); nf.setminimumfractiondigits(2); nf.setmaximumfractiondigits(2);

35 Applet e servlet fi nanziarie 35 // Ottiene i parametri. String amountstr = request.getparameter( amount ); String periodstr = request.getparameter( period ); String ratestr = request.getparameter( rate ); try { if(amountstr!= null && periodstr!= null && ratestr!= null) { principal = Double.parseDouble(amountStr); numyears = Double.parseDouble(periodStr); intrate = Double.parseDouble(rateStr) / 100; paystr = nf.format(compute()); else { // uno o più parametri mancanti amountstr = ; periodstr = ; ratestr = ; catch (NumberFormatException exc) { // Intraprendere l azione adatta qui. // Imposta il tipo di contenuto. response.setcontenttype( text/html ); // Ottiene il flusso di output. PrintWriter pw = response.getwriter(); // Visualizza il codice HTML necessario. pw.print( <html><body> <left> + <form name=\ Form1\ + action=\ + examples/servlets/servlet/regpays\ > + <B>Enter amount to finance:</b> + <input type=textbox name=\ amount\ + size=12 value=\ ); pw.print(amountstr + \ > ); pw.print( <BR><B>Enter term in years:</b> + <input type=textbox name=\ period\ + size=12 value=\ ); pw.println(periodstr + \ > ); pw.print( <BR><B>Enter interest rate:</b> + <input type=textbox name=\ rate\ + size=12 value=\ ); pw.print(ratestr + \ > ); pw.print( <BR><B>Monthly Payment:</B> + <input READONLY type=textbox + name=\ payment\ size=12 value=\ ); PARTE IV

36 36 Capitolo 33 pw.print(paystr + \ > ); pw.print( <BR><P><input type=submit value=\ Submit\ > ); pw.println( </form> </body> </html> ); // Calcola il pagamento del prestito. double compute() { double numer; double denom; double b, e; numer = intrate * principal / payperyear; e = -(payperyear * numyears); b = (intrate / payperyear) + 1.0; denom = Math.pow(b, e); return numer / denom; Il primo elemento da notare in RegPayS è che contiene solo due metodi: do- Get() e compute(). Il metodo compute() è uguale a quello utilizzato dall applet. Il metodo doget() è definito dalla classe HttpServlet, che estende RegPayS. Il metodo viene chiamato dal server quando la servlet deve rispondere a una richiesta GET. Si noti che si passa un riferimento agli oggetti HttpServletRequest e HttpServletResponse associati alla richiesta. Dal parametro request la servlet ottiene gli argomenti associati alla richiesta, chiamando getparameter(). Il parametro viene restituito sotto forma di stringa. Quindi è necessario convertire manualmente un valore numerico nel relativo formato binario. Se non è disponibile alcun parametro viene restituito null. Dall oggetto response, la servlet ottiene un flusso in cui è possibile scrivere informazioni sulla risposta. La risposta viene restituita al browser inviando output in tale flusso. Prima di ottenere un PrintWriter sul flusso di risposta, è necessario impostare il tipo di output su text/html chiamando setcontenttype(). È possibile chiamare RegPayS con o senza parametri. Se si chiama senza parametri la servlet risponde con il codice HTML necessario a visualizzare un modulo per il calcolo di prestiti vuoto, altrimenti, se viene chiamata con tutti i parametri necessari, RegPayS calcola il pagamento del prestito e visualizza nuovamente il modulo, con il campo di pagamento compilato. Il modo più semplice di chiamare RegPayS è collegarla al proprio URL senza passare parametri. Per esempio, supponendo di utilizzare Tomcat, per eseguirla è possibile utilizzare la riga di seguito: <A HREF = RegPayS > Loan Calculator</A>

37 Applet e servlet fi nanziarie 37 Viene visualizzato un collegamento dal nome Loan Calculator che collega alla servlet RegPayS nella directory delle servlet di esempio di Tomcat. Si noti che non vengono passati parametri. In tal modo RegPayS restituisce il codice HTML completo che visualizza una pagina con il calcolatore di prestiti vuoto. È anche possibile chiamare RegPayS visualizzando prima un modulo vuoto manualmente, se si desidera. Tale approccio è mostrato di seguito, utilizzando sempre la directory delle servlet di esempio di Tomcat: <html> <body> <form name= Form1 action= RegPayS > <B>Enter amount to finance:</b> <input type=textbox name= amount size=12 value= > <BR> <B>Enter term in years:</b> <input type=textbox name= period size=12 value= > <BR> <B>Enter interest rate:</b> <input type=textbox name= rate size=12 value= > <BR> <B>Monthly Payment:</B> <input READONLY type=textbox name= payment size=12 value= > <BR><P> <input type=submit value= Submit > </form> </body> </html> 33.8 Operazioni da provare La prima operazione che si può desiderare di provare è convertire le altre applet finanziarie in servlet. Poiché tutte le applet finanziarie sono realizzate sulla stessa struttura, seguire semplicemente lo stesso approccio utilizzato per RegPayS. Esistono molti altri calcoli finanziari che si possono trovare utili da implementare come applet o servlet, per esempio il tasso di interesse di un investimento o l importo di un deposito regolare necessario nel tempo per raggiungere un valore futuro. Si può anche stampare un grafico dell ammortamento del prestito. Si può desiderare di provare a creare un applicazione di dimensioni maggiori che offra tutti i calcoli presentati nel capitolo, consentendo all utente di selezionare il calcolo desiderato da un menu. PARTE IV

38

Grafico della parabola

Grafico della parabola Grafico della parabola Il grafico matematico è un disegno che mostra l andamento di una funzione f(x) al variare della variabile x. Per tracciare un grafico sul video del computer, si deve scegliere un

Dettagli

Tutorial SWING-AWT: Il Layout Manager GridBagLayout Di Michele de Nittis

Tutorial SWING-AWT: Il Layout Manager GridBagLayout Di Michele de Nittis Tutorial SWING-AWT: Il Layout Manager GridBagLayout Di Michele de Nittis Generalità... 2 Il principio di funzionamento... 2 Impiego degli oggetti di classe GridBagLayout e GridBagConstraints... 2 Posizionamento

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

Gestione Risorse Umane Web

Gestione Risorse Umane Web La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Avvertenze: e severamente vietato consultare libri e appunti; chiunque verrà trovato in possesso di

Dettagli

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo Creazione di moduli Creazione di moduli Che cos'è un modulo? Un elenco di domande accompagnato da aree in cui è possibile scrivere le risposte, selezionare opzioni. Il modulo di un sito Web viene utilizzato

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Applicazioni Web J2EE: Java Servlet Parte a versione 3.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca

Dettagli

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano

Dettagli

Note pratiche sullo sviluppo di servlet (I)

Note pratiche sullo sviluppo di servlet (I) Note pratiche sullo sviluppo di servlet (I) Nel caso in cui sulla macchina locale (PC in laboratorio/pc a casa/portatile) ci sia a disposizione un ambiente Java (con compilatore) e un editor/ambiente di

Dettagli

FORMULE: Operatori matematici

FORMULE: Operatori matematici Formule e funzioni FORMULE Le formule sono necessarie per eseguire calcoli utilizzando i valori presenti nelle celle di un foglio di lavoro. Una formula inizia col segno uguale (=). La formula deve essere

Dettagli

Tener traccia del client

Tener traccia del client Tener traccia del client Raramente un applicazione web è costituita da una singola pagina (risorsa). E utile quindi tener traccia dei client che si collegano per rendere più semplice lo sviluppo dell applicazione.

Dettagli

Test di unità con JUnit4

Test di unità con JUnit4 Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso

Dettagli

Programmazione Java: Interfacce grafiche (GUI)

Programmazione Java: Interfacce grafiche (GUI) Programmazione Java: Interfacce grafiche (GUI) romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp ( 1 ) (GUI) Interfacce grafiche Rendere facili le cose semplici e possibili le cose difficili

Dettagli

METODI per effettuare previsioni con analisi di tipo WHAT-IF

METODI per effettuare previsioni con analisi di tipo WHAT-IF METODI per effettuare previsioni con analisi di tipo WHAT-IF 1. TABELLA DATI Una tabella di dati è un intervallo che mostra come la modifica di alcuni valori nelle formule ne influenza i risultati. Le

Dettagli

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Siti web centrati sui dati Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Esercitazione del 05-03-2007

Esercitazione del 05-03-2007 FUNZIONI Esercitazione del 05-03-2007 1. Aprire una nuova cartella di lavoro. 2. Inserire nel foglio di lavoro di Excel le seguenti colonne: A B 1000 100 1100 200 1200 300 1300 400 1400 500 1500 600 1600

Dettagli

GENERAZIONE RAPPORTO XML

GENERAZIONE RAPPORTO XML E.C.M. Educazione Continua in Medicina GENERAZIONE RAPPORTO XML Guida rapida Versione 2.0 Luglio 2014 E.C.M. Guida rapida per la generazione Indice 2 Indice Revisioni 3 1. Introduzione 4 2. del report

Dettagli

esercizi Esercizi / problemi

esercizi Esercizi / problemi Sistemi informativi applicati (reti di calcolatori): esercizi 1 Esercizi / problemi 1. Creare un applicazione che calcoli la media aritmetica dei seguenti valori interi: 35, 117, 23 e ne visualizzi il

Dettagli

FIRESHOP.NET. Gestione Lotti & Matricole. www.firesoft.it

FIRESHOP.NET. Gestione Lotti & Matricole. www.firesoft.it FIRESHOP.NET Gestione Lotti & Matricole www.firesoft.it Sommario SOMMARIO Introduzione... 3 Configurazione... 6 Personalizzare le etichette del modulo lotti... 6 Personalizzare i campi che identificano

Dettagli

Gestire le sessioni con le Servlet

Gestire le sessioni con le Servlet PROGETTO Gestire le sessioni con le Servlet Con il termine sessione si intende un insieme di attività correlate, con una o alcune di queste che sono preliminari ad altre. Si pensi, per esempio, a un qualsiasi

Dettagli

Modulo 3 - Elaborazione Testi 3.5 Stampa unione

Modulo 3 - Elaborazione Testi 3.5 Stampa unione Università degli Studi dell Aquila Corso ECDL programma START Modulo 3 - Elaborazione Testi 3.5 Stampa unione Maria Maddalena Fornari Stampa Unione Processo che permette di unire dati provenienti da tipi

Dettagli

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame(Finestra); // crea frame invisibile I Canvas Tra i vari contenitori Java il Canvas (area di disegno o tela) è una semplice superficie di disegno particolarmente utile per visualizzare immagini o per effettuare altre operazioni grafiche.

Dettagli

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Modeler Text Analytics versione 15 mediante un licenza

Dettagli

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Java Applet 1 Application VS Applet Una

Dettagli

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI ORDINAMENTO DEI DATI Quando si ordina un elenco (ovvero una serie di righe contenenti dati correlati), le righe sono ridisposte in base al contenuto di una colonna specificata. Distinguiamo due tipi di

Dettagli

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Una tabella Pivot usa dati a due dimensioni per creare una tabella a tre dimensioni, cioè una tabella

Dettagli

I file WAR. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2004/05-1

I file WAR. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2004/05-1 I file WAR WAR è una contrazione di Web ARchive. I file WAR consentono di archiviare un intera applicazione web in un unico file. Tomcat fornisce (tramite il Tomcat Manager) un interfaccia grafica per

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

Programmazione server-side: Java Servlet

Programmazione server-side: Java Servlet Programmazione server-side: Java Servlet Corso di Applicazioni Telematiche A.A. 2006-07 Lezione n.11 parte II Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Cos

Dettagli

Interesse, sconto, ratei e risconti

Interesse, sconto, ratei e risconti TXT HTM PDF pdf P1 P2 P3 P4 293 Interesse, sconto, ratei e risconti Capitolo 129 129.1 Interesse semplice....................................................... 293 129.1.1 Esercizio per il calcolo dell

Dettagli

2 - Modifica. 2.1 - Annulla. 2.2 - Selezione finestra. S.C.S. - survey CAD system FIGURA 2.1

2 - Modifica. 2.1 - Annulla. 2.2 - Selezione finestra. S.C.S. - survey CAD system FIGURA 2.1 2 - Modifica FIGURA 2.1 Il menu a tendina Modifica contiene il gruppo di comandi relativi alla selezione delle entità del disegno, alla gestione dei layer, alla gestione delle proprietà delle varie entità

Dettagli

Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni

Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni Tomcat & Servlet Programmazione in Ambienti Distribuiti V 1.2 Marco Torchiano 2005 Contenuti Tomcat Applicazioni Web Struttura Sviluppo Deployment Servlet JSP Uso delle sessioni 1 Tomcat Tomcat è un contenitore

Dettagli

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31

Dettagli

GENERAZIONE ARCHIVIO F24 AGENZIA ENTRATE

GENERAZIONE ARCHIVIO F24 AGENZIA ENTRATE GENERAZIONE ARCHIVIO F24 AGENZIA ENTRATE Il riferimento al manuale è il menù Redditi, capitolo Stampe, paragrafo Versamenti F24, sottoparagrafo Generazione Archivio F24 Agenzia Entrate. Questa funzione

Dettagli

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie Facoltà di Scienze Motorie CHE COS È UN FOGLIO ELETTRONICO Una tabella che contiene parole e numeri che possono essere elaborati applicando formule matematiche e funzioni statistiche. Esame di Informatica

Dettagli

Interesse, sconto, ratei e risconti

Interesse, sconto, ratei e risconti 129 Interesse, sconto, ratei e risconti Capitolo 129 129.1 Interesse semplice....................................................... 129 129.1.1 Esercizio per il calcolo dell interesse semplice........................

Dettagli

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo Release 5.20 Manuale Operativo COLLI Gestione dei Colli di Spedizione La funzione Gestione Colli consente di generare i colli di spedizione in cui imballare gli articoli presenti negli Ordini Clienti;

Dettagli

Manuale Backoffice. 1 Introduzione. 2 Attivazione del Backoffice

Manuale Backoffice. 1 Introduzione. 2 Attivazione del Backoffice Manuale Backoffice Indice 1 Introduzione... 1 2 Attivazione del Backoffice... 1 3 Impostazione di un agenda... 3 3.1 Modificare o creare un agenda... 3 3.2 Associare prestazioni a un agenda... 4 3.3 Abilitare

Dettagli

Laboratorio di sistemi Prima Web Application JSP [Java]

Laboratorio di sistemi Prima Web Application JSP [Java] Vogliamo scrivere la nostra prima web application che legga da tastiera il nostro nome e fornisca un messaggio di saluto. Per costruire la nostra applicazione creiamo con NetBeans un nuovo progetto. File

Dettagli

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools Una breve introduzione operativa a STGraph Luca Mari, versione 5.3.11 STGraph è un sistema software per creare, modificare ed eseguire modelli di sistemi dinamici descritti secondo l approccio agli stati

Dettagli

- DocFinance Manuale utente

- DocFinance Manuale utente Interfaccia - DocFinance Manuale utente Installazione interfaccia. L interfaccia - DocFinance viene installata tramite il pacchetto di Setup, che permette di lanciare la console di configurazione automatica

Dettagli

DENUNCE EDILCONNECT GUIDA COMPILAZIONE

DENUNCE EDILCONNECT GUIDA COMPILAZIONE Cassa Edile Como e Lecco DENUNCE EDILCONNECT GUIDA COMPILAZIONE COMPILAZIONE DA FILE PAGHE Guida per i consulenti e le imprese che compilano la denuncia utilizzando il file di esportazione dei software

Dettagli

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda

Dettagli

Manuale Utente Albo Pretorio GA

Manuale Utente Albo Pretorio GA Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate

Dettagli

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario

Dettagli

HTML HTML. HyperText Markup Language. Struttura di un documento. Gli elementi essenziali di un documento HTML sono i seguenti TAG: <HTML>...

HTML HTML. HyperText Markup Language. Struttura di un documento. Gli elementi essenziali di un documento HTML sono i seguenti TAG: <HTML>... HTML HyperText Markup Language Struttura di un documento HTML Gli elementi essenziali di un documento HTML sono i seguenti TAG: ... ... ... Struttura di un documento

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 1 di 38 Portale tirocini Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 2 di 38 INDICE 1. INTRODUZIONE... 3 2. ACCESSO AL SISTEMA...

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 B1 Gestione eventi 1 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti AWT o Swing Programmazione ad eventi 2 1 Introduzione Le interfacce create

Dettagli

Introduzione a Word. Prima di iniziare. Competenze che saranno acquisite. Requisiti. Tempo stimato per il completamento:

Introduzione a Word. Prima di iniziare. Competenze che saranno acquisite. Requisiti. Tempo stimato per il completamento: Introduzione a Word Word è una potente applicazione di elaborazione testi e layout, ma per utilizzarla nel modo più efficace è necessario comprenderne gli elementi di base. Questa esercitazione illustra

Dettagli

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore ARPA Fonte Dati Regione Toscana 1 Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.1 Data emissione 09/10/13 Stato FINAL 2 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 1.1 09/10/2013

Dettagli

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

Dettagli

Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo

Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo - la durata del mutuo in anni - l importo del mutuo

Dettagli

Al giorno d oggi, i sistemi per la gestione di database

Al giorno d oggi, i sistemi per la gestione di database Introduzione Al giorno d oggi, i sistemi per la gestione di database implementano un linguaggio standard chiamato SQL (Structured Query Language). Fra le altre cose, il linguaggio SQL consente di prelevare,

Dettagli

LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL

LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL ESERCITAZIONE GUIDATA: LE RENDITE 1. Il montante di una rendita immediata posticipata Utilizzando Excel, calcoliamo il montante di una

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Stampa su moduli prestampati utilizzando Reflection for IBM 2011 o 2008

Stampa su moduli prestampati utilizzando Reflection for IBM 2011 o 2008 Stampa su moduli prestampati utilizzando Reflection for IBM 2011 o 2008 Ultima revisione 13 novembre 2008 Nota: Le informazioni più aggiornate vengono prima pubblicate in inglese nella nota tecnica: 2179.html.

Dettagli

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Il raggruppamento e la struttura dei dati sono due funzioni di gestione dati di Excel, molto simili tra

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Gestione e allineamento delle Giacenze

Gestione e allineamento delle Giacenze Release 5.20 Manuale Operativo INVENTARIO Gestione e allineamento delle Giacenze Il modulo permette la contemporanea gestione di più inventari, associando liberamente ad ognuno un nome differente; può

Dettagli

L interfaccia grafica in Java

L interfaccia grafica in Java L interfaccia grafica in Java Java possiede due package per la creazione di interfacce grafiche java.awt javax.swing AWT (Abstract Widget Toolkit) presente già in Java 1.0, migliorato in Java 1.1. Invariato

Dettagli

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

LA GESTIONE DELLE VISITE CLIENTI VIA WEB LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici

Dettagli

MANUALE UTENTE. TeamPortal Liste Distribuzioni 20120100

MANUALE UTENTE. TeamPortal Liste Distribuzioni 20120100 MANUALE UTENTE 20120100 INDICE Introduzione... 3 1 - Messaggi... 4 1.1 Creazione / Modifca Email... 6 1.2 Creazione / Modifca Sms... 8 2 -Liste... 10 3 Gruppi Liste... 15 4 Tipi Messaggi... 17 5 Amministrazione...

Dettagli

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web Corso di PHP 6.1 PHP e il web 1 1 Prerequisiti Conoscenza HTML Tecnica della programmazione Principi di programmazione web 2 1 Introduzione In questa Unità illustriamo alcuni strumenti di programmazione

Dettagli

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia Scuola Digitale Manuale utente Copyright 2014, Axios Italia 1 SOMMARIO SOMMARIO... 2 Accesso al pannello di controllo di Scuola Digitale... 3 Amministrazione trasparente... 4 Premessa... 4 Codice HTML

Dettagli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

Dettagli

Architetture Web: un ripasso

Architetture Web: un ripasso Architetture Web: un ripasso Pubblicazione dinamica di contenuti. Come si fa? CGI Java Servlet Server-side scripting e librerie di tag JSP Tag eseguiti lato server Revisione critica di HTTP HTTP non prevede

Dettagli

Obiettivo dell esercitazione

Obiettivo dell esercitazione Database e Web - Esercitazioni ASP - Andrea Proli proliand@csr.unibo.it Laboratorio di Basi di Dati A.A. 2005/2006 Obiettivo dell esercitazione L obiettivo finale dell esercitazione è quello di creare

Dettagli

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera WORD per WINDOWS95 1.Introduzione Un word processor e` come una macchina da scrivere ma con molte più funzioni. Il testo viene battuto sulla tastiera ed appare sullo schermo. Per scrivere delle maiuscole

Dettagli

Gestione delle Presenze WorkFlow Manuale Operativo

Gestione delle Presenze WorkFlow Manuale Operativo Sistemi di Gestione per l Area del Personale Gestione delle Presenze Work Flow Modulo Presenze Manuale Operativo Guida Utente: Pag. 1 Work Flow Procedura di gestione delle presenze La procedura Work Flow

Dettagli

1. Le macro in Access 2000/2003

1. Le macro in Access 2000/2003 LIBRERIA WEB 1. Le macro in Access 2000/2003 Per creare una macro, si deve aprire l elenco delle macro dalla finestra principale del database: facendo clic su Nuovo, si presenta la griglia che permette

Dettagli

Moduli (schede compilabili) in Word Esempio: scheda di alimentazione per un degente

Moduli (schede compilabili) in Word Esempio: scheda di alimentazione per un degente Moduli (schede compilabili) in Word Esempio: scheda di alimentazione per un degente Vediamo come utilizzare Word per costruire un modulo compilabile, ovvero una scheda che contenga delle parti fisse di

Dettagli

Tutorial KISSsoft: versione di prova e fasi iniziali

Tutorial KISSsoft: versione di prova e fasi iniziali Tutorial KISSsoft 001: installazione e fasi iniziali KISSsoft AG - +41 55 254 20 50 Uetzikon 4 - +41 55 254 20 51 8634 Hombrechtikon - info@kisssoft.ag Svizzera - www.kisssoft.ag Tutorial KISSsoft: versione

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 9 Architettura Model-View-Controller (MVC) Adottando l'architettura MVC e la tecnologia Servlet-JSP, un'applicazione web può essere realizzata

Dettagli

Paghe. 131.1.1 Scaglioni. Fascia di reddito. Fascia di reddito

Paghe. 131.1.1 Scaglioni. Fascia di reddito. Fascia di reddito 339 Paghe Capitolo 131 131.1 Suddivisione del reddito in scaglioni....................................... 339 131.1.1 Scaglioni......................................................... 339 131.1.2 Suddivisione

Dettagli

Database Manager Guida utente DMAN-IT-01/09/10

Database Manager Guida utente DMAN-IT-01/09/10 Database Manager Guida utente DMAN-IT-01/09/10 Le informazioni contenute in questo manuale di documentazione non sono contrattuali e possono essere modificate senza preavviso. La fornitura del software

Dettagli

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa. La finestra di Excel è molto complessa e al primo posto avvio potrebbe disorientare l utente. Analizziamone i componenti dall alto verso il basso. La prima barra è la barra del titolo, dove troviamo indicato

Dettagli

Word processor funzione Stampa Unione

Word processor funzione Stampa Unione Word processor funzione Stampa Unione La funzione Stampa unione permette di collegare un documento che deve essere inviato ad una serie di indirizzi ad un file che contenga i nominativi dei destinatari.

Dettagli

Guida dell utente. Centro di fatturazione UPS

Guida dell utente. Centro di fatturazione UPS Guida dell utente Centro di fatturazione UPS 2015 United Parcel Service of America, Inc. UPS, il marchio UPS e il colore marrone sono marchi commerciali di United Parcel Service of America, Inc. Tutti

Dettagli

Parola chiave extends

Parola chiave extends Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi

Dettagli

SOMMARIO... 3 INTRODUZIONE...

SOMMARIO... 3 INTRODUZIONE... Sommario SOMMARIO... 3 INTRODUZIONE... 4 INTRODUZIONE ALLE FUNZIONALITÀ DEL PROGRAMMA INTRAWEB... 4 STRUTTURA DEL MANUALE... 4 INSTALLAZIONE INRAWEB VER. 11.0.0.0... 5 1 GESTIONE INTRAWEB VER 11.0.0.0...

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

Xerox 700 Digital Color Press con Integrated Fiery Color Server. Stampa di dati variabili

Xerox 700 Digital Color Press con Integrated Fiery Color Server. Stampa di dati variabili Xerox 700 Digital Color Press con Integrated Fiery Color Server Stampa di dati variabili 2008 Electronics for Imaging, Inc. Per questo prodotto, il trattamento delle informazioni contenute nella presente

Dettagli

Cambio esercizio CONTABILE Flusso operativo

Cambio esercizio CONTABILE Flusso operativo Cambio esercizio CONTABILE Flusso operativo (ver. 3 07/11/2014) INDICE Sito web:!"#"! Tel. (0423) 23.035 - Fax (0423) 601.587 e-mail istituzionale: "$%!"#"! PEC:!"#%&'(&)("&"! PREMESSA nuovo) contemporaneamente.

Dettagli

Lezione 6: Form 27/04/2012

Lezione 6: Form 27/04/2012 Lezione 6: Form In alcuni documenti HTML può essere utile creare dei moduli (form) che possono essere riempiti da chi consulta le pagine stesse (es. per registrarsi ad un sito). Le informazioni sono poi

Dettagli

Hub-PA Versione 1.0.6 Manuale utente

Hub-PA Versione 1.0.6 Manuale utente Hub-PA Versione 1.0.6 Manuale utente (Giugno 2014) Hub-PA è la porta d ingresso al servizio di fatturazione elettronica verso la Pubblica Amministrazione (PA) a disposizione di ogni fornitore. Questo manuale

Dettagli

Introduzione alla programmazione Http lato server in Java

Introduzione alla programmazione Http lato server in Java Introduzione alla programmazione Http lato server in Java Tito Flagella Laboratorio Applicazioni Internet - Università di Pisa Slide API Java Titleper il Protocollo Http Programmazione Client java.net.url

Dettagli

ISTRUZIONI SULLE OPERAZIONI DI CAMBIO ANNO CONTABILE 2005/2006 LIQUIDAZIONE IVA - STAMPA REGISTRI - CHIUSURA/APERTURA CONTI

ISTRUZIONI SULLE OPERAZIONI DI CAMBIO ANNO CONTABILE 2005/2006 LIQUIDAZIONE IVA - STAMPA REGISTRI - CHIUSURA/APERTURA CONTI ISTRUZIONI SULLE OPERAZIONI DI CAMBIO ANNO CONTABILE 2005/2006 LIQUIDAZIONE IVA - STAMPA REGISTRI - CHIUSURA/APERTURA CONTI PREMESSA La procedura contabile consente la gestione di più anni in linea. Questo

Dettagli

Capitolo 3 Guida operativa del programma TQ Sistema

Capitolo 3 Guida operativa del programma TQ Sistema Capitolo 3 Guida operativa del programma TQ Sistema Panoramica delle funzionalità Questa guida contiene le informazioni necessarie per utilizzare il pacchetto TQ Sistema in modo veloce ed efficiente, mediante

Dettagli

Gestione dell account AdWords di Google Guida pratica

Gestione dell account AdWords di Google Guida pratica Gestione dell account AdWords di Google Guida pratica Benvenuti in AdWords di Google Questa guida fornisce una panoramica del Centro di controllo gestionale AdWords, l interfaccia per la gestione e il

Dettagli

Uso delle tabelle e dei grafici Pivot

Uso delle tabelle e dei grafici Pivot Uso delle tabelle e dei grafici Pivot 1 Una tabella Pivot usa dati a due dimensioni per creare una tabella a tre dimensioni, cioè una tabella riassuntiva basata su condizioni multiple che hanno punti di

Dettagli

Gestione Manutenzioni Immobiliari. http://www.snt-fi.it

Gestione Manutenzioni Immobiliari. http://www.snt-fi.it Gestione Manutenzioni Immobiliari http://www.snt-fi.it Gestione Manutenzioni Immobiliari Software sviluppato da S&NT in tecnologia Microsoft.NET, dedicato agli amministratori di condominio per la gestione

Dettagli

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO 1 Installazione e requisiti per il corretto funzionamento del sito: L istallazione è possibile sui più diffusi sistemi operativi. Il pacchetto

Dettagli

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010) Sapienza - Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Corso di Laurea in Ingegneria Informatica ed Automatica, Ingegneria dei Sistemi Informatici Esercitazioni

Dettagli

ELENCO CLIENTI FORNITORI Patch1

ELENCO CLIENTI FORNITORI Patch1 ELENCO CLIENTI FORNITORI Patch1 Il pacchetto P15_200ElencoCF_Patch1.exe contiene una serie di aggiornamenti alla procedura di generazione del file contenente l. Download: 1) Assicurarsi di avere una versione

Dettagli

Corso Eclipse. Prerequisiti. 3 Window Builder

Corso Eclipse. Prerequisiti. 3 Window Builder Corso Eclipse 3 Window Builder 1 Prerequisiti Conoscenza elementare ambiente Eclipse Conoscere la nomenclatura dei componenti delle interfacce grafiche Conoscere attributi e metodi dei principali componenti

Dettagli