[successivo] [precedente] [inizio] [fine] [indice generale] [indice analitico] [parte]


Capitolo 1.   Primo esempio di programma Python

Per cominciare a cogliere un'idea delle caratteristiche(1) di Python, si consideri il problema della somma di due numeri positivi espressa attraverso il concetto dell'incremento unitario: n+m equivale a incrementare m, di un'unità, per n volte, oppure incrementare n per m volte. L'algoritmo risolutivo è banale, ma utile per apprendere il funzionamento dei cicli; il listato 1.1 presenta la soluzione tramite pseudocodifica.

Listato 1.1. Somma ciclica (pseudocodifica).

SOMMA (X, Y)

    LOCAL Z INTEGER
    LOCAL I INTEGER

    Z := X
    FOR I := 1; I <= Y; I++
        Z++
    END FOR

    RETURN Z

END SOMMA

Tenendo presente che in Python l'incremento unitario della variabile variabile; si esprime con l'idioma

variabile += 1

il listato 1.2 traduce l'algoritmo in un programma Python completo e commentato.

Listato 1.2. Primo esempio in Python.

#!/usr/bin/python
##
## somma.py <x> <y>
## Somma esclusivamente valori positivi.
##
#
# Importa il modulo sys, per usare sys.argv
#
import sys
#
# somma(<x>, <y>)
#
def somma(x, y):
  z = x
  for i in range(y):
    z += 1
  return z
#
# Inizio del programma.
#
x = int(sys.argv[1])
y = int(sys.argv[2])
z = somma(x, y)
print x, "+", y, "=", z

Si noti in particolare la compattezza del programma Python: solo dieci righe «utili», contro le sedici dell'equivalente programma in Perl (listato 1.3) e addirittura ventidue dell'equivalente programma in C (listato 1.4).

Listato 1.3. Somma ciclica (Perl).

#!/usr/bin/perl
##
## somma.pl <x> <y>
## Somma esclusivamente valori positivi.
##
#
# &somma (<x>, <y>)
#
sub somma
{
    local ($x) = $_[0];
    local ($y) = $_[1];
    #
    local ($z) = $x;
    local ($i);
    #
    for ($i = 1; $i <= $y; $i++)
      {
        $z++;
      }
    #
    return $z;
}
#
# Inizio del programma.
#
$x = $ARGV[0];
$y = $ARGV[1];
#
$z = &somma ($x, $y);
#
print "$x + $y = $z\n";
#

Listato 1.4. Somma ciclica (C).

/* ================================================================= */
/* somma <x> <y>                                                     */
/* Somma esclusivamente valori positivi.                             */
/* ================================================================= */

#include <stdio.h>

/* ================================================================= */
/* somma (<x>, <y>)                                                  */
/* ----------------------------------------------------------------- */
int somma (int x, int y)
{
    int z = x;
    int i;

    for (i = 1; i <= y; i++)
      {
        z++;
      };

    return z;
}

/* ================================================================= */
/* Inizio del programma.                                             */
/* ----------------------------------------------------------------- */
int main (int argc, char *argv[])
{
    int x;
    int y;
    int z;

    /* Converte le stringhe ottenute dalla riga di comando in
       numeri interi e li assegna alle variabili x e y.              */
    sscanf (argv[1], "%d", &x);
    sscanf (argv[2], "%d", &y);

    z = somma (x, y);

    printf ("%d + %d = %d\n", x, y, z);

    return 0;
}

Informatica per sopravvivere 2006.02.19 --- Copyright © 2004-2006 Massimo Piai -- <pxam67 (ad) virgilio·it>


1) Salvo diverso avviso, nel seguito si farà riferimento alla versione 2.3 del linguaggio.


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome primo_esempio_di_programma_python.html

[successivo] [precedente] [inizio] [fine] [indice generale] [indice analitico]

Valid ISO-HTML!

CSS validator!