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

Somma dei divisori di un numero

Questa applicazione è una naturale estensione della precedente, quindi non la svilupperemo insieme, ma forniremo solo alcune indicazioni utili allo svolgimento dell'esercizio.

Innanzi tutto riportiamo qui di seguito, come al solito, le proprietà consigliate per la form:

  • object FormSommaDivisori: TFormSommaDivisori
      Caption = 'Somma divisori'
  • object LabelCommento: TLabel
      Caption = 'Somma dei divisori di N compresi fra 1 ed N escluso'
  • object LabelN: TLabel
      Caption = 'N'
      Alignment = taRightJustify
  • object EditN: TEdit
      Text = ''
  • object LabelSomma: TLabel
      Caption = 'Somma'
      Alignment = taRightJustify
  • object EditSomma: TEdit
      Text = ''
  • object BitBtnOK: TBitBtn
      Kind = bkOK
      OnClick = BitBtnOKClick
  • object BitBtnEsci: TBitBtn
      Caption = '&Esci'
      Kind = bkClose

Come si può vedere, le due Label: LabelN e LabelSomma hanno la Caption allineata a destra, anziché a sinistra come è di solito: proprietà Alignment = taRightJustify. Per ottenere l'allineamento voluto è inoltre necessario trascinare il lato destro del rettangolo della Label fino alla posizione voluta (8 pixel di distanza dall'Edit posto alla sua destra).

Infine il codice Pascal associato al Bottone OK.

procedure TFormSommaDivisori.BitBtnOKClick(Sender: TObject);
var
  n, i, s: Integer;
begin
  n:=StrToInt(EditN.Text);
  s:=0;
  for i:=1 to n-1 do
    if n mod i=0 then
      s:=s+i;
  EditSomma.Text:=IntToStr(s);
end;

N.B. In alternativa alla riga di codice: s:=s+i, si potrebbe utilizzare invece: Inc(s,i), che è equivalente al codice C/C++: s+=i, e fornisce un codice macchina più efficiente.
Analogamente sarebbe bene scrivere la riga di codice: n:=n+1, come: Inc(n), che è equivalente al famoso costrutto C/C++: n++, e fornisce, anch'essa, un codice macchina più efficiente.

 1.11 - Somma divisori