Home

A scuola di Delphi

www.gpeano.org 

Introduzione · Capitolo 1 · Capitolo 2 · Capitolo 3 · Capitolo 4 · Capitolo 5 · Download 

Sommario
Euroconvertitore
Area rettangolo
Propagaz. errori
Cubo binomio
Equazione lineare
Calcolatrice
Numeri dispari
Esadecimale
Sommat. Produtt.
Divisori
Somma divisori
Fattori
 

Capitolo 1

Sommatoria Produttoria

Questa applicazione permette di calcolare la somma o il prodotto dei primi n numeri naturali (0 escluso). La scelta se effettuare il calcolo della sommatoria o della produttoria viene effettuata dall'utente per mezzo di un nuovo componente delphi, il RadioButton.

Il RadioButton è un componente molto utilizzato in Windows e serve per permettere all'utente di scegliere fra 2 o più opzioni mutuamente esclusive. Il che significa che se in una form appaiono 2 o più bottoni radio che appartengono allo stesso gruppo, almeno uno deve essere selezionato: è un esempio di cattiva programmazione una form con vari bottoni radio senza che ve ne sia alcuno selezionato.
Il RadioButton si trova nella linguetta Standard di Delphi . Possiede varie proprietà: Caption contiene l'etichetta che viene visualizzata a destra del bottone; Checked, che può essere True o False, indica se il bottone è selezionato oppure no.

La nostra form contiene due bottoni radio, il primo Somma, il secondo Prodotto; inizialmente Somma è selezionato (Checked=True). Sono poi presenti altri oggetti che già conosciamo. Elenchiamo le proprietà qui di seguito:

  • object FormSommatoriaProduttoria: TFormSommatoriaProduttoria
      Caption = 'Sommatoria Produttoria'
  • object RadioButtonSomma: TRadioButton
      Caption = 'Somma'
      Checked = True
  • object RadioButtonProdotto: TRadioButton
      Caption = 'Prodotto'
      Checked = False
  • object LabelDeiNumeriNaturali: TLabel
      Caption = 'dei numeri naturali da 1 a '
  • object EditN: TEdit
      Text = ''
  • object LabelRisultato: TLabel
      Caption = 'Risultato'
  • object EditRisultato: TEdit
      Text = ''
  • object BitBtnOK: TBitBtn
      Kind = bkOK
      OnClick = BitBtnOKClick
  • object BitBtnEsci: TBitBtn
      Caption = '&Esci'
      Kind = bkClose

Scriviamo la procedura di calcolo:

procedure TFormSommatoriaProduttoria.BitBtnOKClick(Sender: TObject);
var
  n, i, s, p: Integer;
begin
  n:=StrToInt(EditN.text);
  if RadioButtonSomma.Checked then
  begin
    s:=0;
    for i:=1 to n do
      s:=s+i;
    EditRisultato.Text:=IntToStr(s);
  end
  else
  begin
    p:=1;
    for i:=1 to n do
      p:=p*i;
    EditRisultato.Text:=IntToStr(p);
  end;
end;

Come si può vedere, dopo aver letto il valore di n fino a cui deve arrivare il calcolo, viene letta all'interno dell'if la proprietà Checked del RadioButtonSomma: se questa è vera viene effettuato il calcolo della sommatoria:

  begin
    s:=0;
    for i:=1 to n do
      s:=s+i;
    EditRisultato.Text:=IntToStr(s);
  end

altrimenti se questa è falsa (il che significa che automaticamente la proprietà Checked del RadioButtonProdotto è vera) viene calcolata la produttoria:

  begin
    p:=1;
    for i:=1 to n do
      p:=p*i;
    EditRisultato.Text:=IntToStr(p);
  end

Da rilevare iil modo in cui vengono calcolati la somma e il prodotto. Nella somma viene usata una variabile s che funge da accumulatore ed è inizialmente impostata a 0. All'interno del cliclo for vengono accumulati in essa i valori successivi di i da 1 a n. Al termine del ciclo, s contiene la somma di tutti i numeri da 1 a n. Analogamente accade per il prodotto, ma la variabile p deve essere inizialmente impostata a 1, elemento neutro del prodotto.

Bisogna ancora rilevare infine che nel caso della produttoria è assai facile superare il numero intero massimo che può essere contenuto in una variabile Integer a 32 bit, che è 231-1 = 2'147'483'647. In tal caso il risultato ottenuto non sarà corretto; il massimo numero che può essere inserito e che fornisce un risultato corretto è 12.

 1.09 - Sommatoria Produttoria