Les autres programmes Perl :
le code patient, le code word et le code person


train animé


Sommaire

  1. Le code Patient


  2. Le code Word


  3. Le code Personne





Le code patient : usepatient2.pl et patient2.pm


Retour au sommaire



Voici le package commenté patient2.pm :

package patient;
sub new { #création de nouveaux patients
my ($class, $nom, $age, $unite) = @_; #récupération des informations concernant le patient
my $patient = {};
my $nbdevisite = 0;
$patient->{nom} = $nom;
$patient->{age} = $age;
$patient->{visite} = 0;
if ($unite) { #test pour savoir si une unité est affectée au patient
$patient->{unite} = $unite;
} else {
$patient->{unite} = 'Non definie';
}
return bless $patient;
}

sub transfert { #transfert d'unité
my ($patient, $nvunite) = @_; #récupération des données dans la variable par défaut
$patient->{unite} = $nvunite; #attribution de la nouvelle unité
print "le patient $patient->{nom} age de $patient->{age} ans a ete transfere dans l'unite $patient->{unite}\n\n"; #impression du resultat
}

sub affiche { #affichage de l'état du patient
my ($patient) = @_; #récupération des données dans la variable par défaut
print "le patient $patient->{nom} age de $patient->{age} ans est dans l'unite $patient->{unite}\n\n"; #impression du résultat
}

sub operation { #opération d'un patient
my ($patient, $bloc) = @_; #récupération des données dans la variable par défaut
print "le patient $patient->{nom} a ete opere au bloc numero $bloc\n\n"; #impression du résultat
}

sub accouchement { #accouchement
my ($patient, $nbenf, $sexe)=@_; #récupération des données dans la variable par défaut
print "la patiente $patient->{nom} a accouche et a eu $nbenf $sexe \n\n"; #impression du résultat
}

sub promenade { #localisation du patient
my($patient, $lieu)=@_; #récupération des données dans la variable par défaut
print "$patient->{nom} est dans $lieu \n\n"; #impression du résultat
}


sub DESTROY { # effacement des données
my ($patient) = @_; #récupération des données dans la variable par défaut
print "le patient $patient->{nom} est parti!\n\n"; #impression du résultat
}

1; #fin de la définition de la classe d'objets patients


Dans ce package, j’ai ajouté l’âge dans la définition des patients ainsi que trois nouvelles méthodes :
La méthode « affiche » est modifiée pour intègrer et afficher l’âge des patients.
La méthode « transfert » est modifiée, elle contient maintenant une commande print, ce qui permet de ne pas répéter par la suite la méthode « affiche » pour savoir quelle est l’unité du patient.

Lien vers le package

Voici le programme Usepatient2.pl qui est rataché au package précédent :

#!/bin/perl
use patient2; #définit la bibliothèque à utiliser

#définition des patients
$patient1=new patient('Dupont Pierre', '2');
$patient2=new patient('Durand Albert','68', 'Urgences');
$patient3=new patient('Martin Guy', '21', 'Urgenceschirurgie');
$patient4=new patient('Dualeau Marie','30');

#lancement de la méthode affiche qui ne prend aucun paramètre
$patient1->affiche;
$patient2->affiche;
$patient3->affiche;
$patient4->affiche;

#lancement de la méthode accouchement qui prend 2 paramètres
$patient4->accouchement('2','jumelles');

#lancement de la méthode transfert qui prend un seul paramètre
$patient1->transfert('Pediatrie');
$patient2->transfert('Pneumo');
$patient4->transfert('Maternite');

#lancement de la méthode operation qui prend un seul paramètre
$patient3->operation('3');

#lancement de la méthode promenade qui prend un seul paramètre
$patient2->promenade('le parc');

exit #fin du programme

Le programme Perl permet d’entrer les données concernant les patients ainsi que les paramètres nécessaires à l’application des méthodes.

Lien vers le programme


Le résultat du programme est le suivant :

le patient Dupont Pierre age de 2 ans est dans l'unite Non definie

le patient Durand Albert age de 68 ans est dans l'unite Urgences

le patient Martin Guy age de 21 ans est dans l'unite Urgenceschirurgie

le patient Dualeau Marie age de 30 ans est dans l'unite Non definie

la patiente Dualeau Marie a accouche et a eu 2 jumelles

le patient Dupont Pierre age de 2 ans a ete transfere dans l'unite Pediatrie

le patient Durand Albert age de 68 ans a ete transfere dans l'unite Pneumo

le patient Dualeau Marie age de 30 ans a ete transfere dans l'unite Maternite

le patient Martin Guy a ete opere au bloc numero 3

Durand Albert est dans le parc

le patient Dualeau Marie est parti!

le patient Martin Guy est parti!

le patient Dupont Pierre est parti!

le patient Durand Albert est parti!





Retour au sommaire



barre animée

Le code word : useWord2.pl et WORD2.pm


Retour au sommaire



Cette application permet de conjuguer des verbes du 1er groupe au présent.

Voici le package WORD2.pm :

#/usr/local/bin/perl
package WORD2;

sub new {
my ($class,$radical,$forme)= @_; #récupération des données concernant les verbes
my $verbe={};

$verbe->{'FORME'} = $forme;
$verbe->{'RADICAL'} = $radical;
return bless $verbe;

}

sub display { #affiche le radical correspondant au verbe

my ($verbe) = @_;
print "Le verbe $verbe->{'FORME'} a pour radical : $verbe->{'RADICAL'}\n";

}

sub DESTROY {#supprime les verbes avant la fin du programme

my ($verbe) = @_;
print "DESTROY $verbe->{'FORME'}\n";

}


sub END {#méthode qui permet d'afficher un message en fin de programme
print "All people are going away now.\n";
}

sub forme { #donne la forme du verbe
my $verbe=shift;
if (@_) { $verbe->{'FORME'}=shift}
return $verbe->{'FORME'};
}

sub radical {#donne le radical du verbe
my $verbe=shift;
if (@_) { $verbe->{'RADICAL'}=shift}
return $verbe->{'RADICAL'};
}

sub conjugaison {#conjugue les verbes au présent
my ($verbe)=shift;
print "*******Conjugaison du verbe au present de l'indicatif*******\n";
print " je \t$verbe->{'RADICAL'}"."e\n";
print " tu \t$verbe->{'RADICAL'}"."es\n";
print " il \t$verbe->{'RADICAL'}"."e\n";
print " nous \t$verbe->{'RADICAL'}"."ons\n";
print " vous \t$verbe->{'RADICAL'}"."ez\n";
print " ils \t$verbe->{'RADICAL'}"."ent\n";
print "*************************************************************\n";
}

1;



Lien vers le package

Voici le programme Perl associé à ce package :

#/usr/bin/perl

use WORD2;#lien vers le package WORD2.pm

$oneWord = new WORD2("chant","CHANTER");#définition des verbes
$oneWord1 = new WORD2 ("dans","DANSER");

#impression des données
printf "----------\nINFINITIF : %s \n----------\nRADICAL : %s\n\n",$oneWord->forme, $oneWord->radical;
printf "----------\nINFINITIF : %s \n----------\nRADICAL : %s\n\n",$oneWord1->forme, $oneWord1->radical;

#appel des méthodes
$oneWord->display;
$oneWord->conjugaison;

$oneWord1->display;
$oneWord1->conjugaison;



Lien vers le programme

Le résultat du programme est le suivant :

----------
INFINITIF : CHANTER
----------
RADICAL : chant

----------
INFINITIF : DANSER
----------
RADICAL : dans

Le verbe CHANTER a pour radical : chant
*******Conjugaison du verbe au present de l'indicatif*******
je chante
tu chantes
il chante
nous chantons
vous chantez
ils chantent
*************************************************************
Le verbe DANSER a pour radical : dans
*******Conjugaison du verbe au present de l'indicatif*******
je danse
tu danses
il danse
nous dansons
vous dansez
ils dansent
*************************************************************
All people are going away now.
DESTROY CHANTER
DESTROY DANSER




Retour au sommaire






barre animée

Le code personne : usePerson3b.pl et person3b.pm


Retour au sommaire



Cette application permet de gérer un carnet d'adresse.
Voici le package person3b.pm :

#/usr/local/bin/perl
package person3b;

sub new {
my ($class,$nom,$prenom,$adress,$email)= @_;#récupération des données
my $self={};

$self->{'PRENOM'} = $prenom;
$self->{'NOM'} = $nom;
$self->{'ADRESSE'} = $adress;

if ($email){#test pour vérifier que la personne a entré une adresse email
$self->{'EMAIL'}=$email;
}
else {
$self->{'EMAIL'}='inconnu';
}
return bless $self;

}

sub display {#affiche les données

my ($self) = @_;
print "La personne $self->{'NOM'} $self->{'PRENOM'} a pour email : $self->{'EMAIL'}\n";

}
sub habitat {#méthode qui indique où habite la personne

my ($self) = @_;
print "$self->{'NOM'} $self->{'PRENOM'} habite à l'adresse suivante : $self->{'ADRESSE'}\n";
}
sub demenagement {#méthode qui permet de modifier l'adresse en cas de déménagement

my ($self, $nvadresse) = @_;
$self->{'ADRESSE'}=$nvadresse;
print "$self->{'NOM'} $self->{'PRENOM'} a déménagé, maintenant cette personne habite à : $self->{'ADRESSE'}\n";
}

sub DESTROY {#méthode qui élimine les données

my ($self) = @_;
print "DESTROY $self->{'NOM'}\n";

}

sub END {#méthode qui permet d'afficher un message à la fin du programme
print "All people are going away now.\n";
}

sub nom {#récupère le nom des personnes
my $self=shift;
if (@_) { $self->{'NOM'}=shift}
return $self->{'NOM'};
}

sub prenom {#récupère le prénom des personnes
my $self=shift;
if (@_) { $self->{'PRENOM'}=shift}
return $self->{'PRENOM'};
}

sub adresse {#récupère l'adresse des personnes
my $self=shift;
if (@_) { $self->{'ADRESSE'}=shift}
return $self->{'ADRESSE'};
}

sub email {#récupère l'email des personnes
my $self=shift;
if (@_) { $self->{'EMAIL'}=shift}
return $self->{'EMAIL'};
}


1;#fin du package


Dans ce package, j'ai rajouté une boucle « if » pour savoir si un email est donné pour chaque personne, si ce n'est pas le cas, la catégorie email se retrouve attribuée la valeur inconnu.
J'ai également ajouté deux méthodes qui sont la méthode « habitat » qui donne le lieu où réside la personne et la méthode « déménagement » qui indique que la personne a déménagé et donne la nouvelle adresse.


Lien vers le package

Voici le programme Perl associé à ce package :

#/usr/local/bin/perl
use person3b;#lien vers le package person3b.pm

#déclaration des personnes
$Personne1 = new person3b("Fleury","Serge","ILPGA, 19 rue des Bernardins, 75005 Paris","serge.fleury\@univ-paris3.fr");
push (@BOOKMARK, $Personne1);#entre ces données dans le tableau BOOKMARK
$Personne2 = new person3b("Salem","André","ILPGA, 19 rue des Bernardins, 75005 Paris","andre.salem\@univ-paris3.fr");
push (@BOOKMARK, $Personne2);
$Personne3 = new person3b("Dupond","Lila","Maison des fleurs, 3 rue des bégonias, 13012 Magnolia");
push (@BOOKMARK, $Personne3);

#impression du contenu du BOOKMARK donc du carnet d'adresse
print "-----------\nContenu du BOOKMARK\n-----------\n";
foreach $person (@BOOKMARK) {
printf "-----------\nNOM : %s PRENOM : %s \nADRESSE: %s\nEMAIL : %s\n------------\n\n", $person->nom, $person->prenom, $person->adresse, $person->email;
}

$Personne1->display;#appel de la méthode display
$Personne2->display;
$Personne3->display;
$Personne1->habitat;#appel de la méthode habitat
$Personne2->habitat;
$Personne3->habitat;
$Personne3->demenagement('214 Avenue des géranium 51024 Iris');#appel de la méthode déménagement avec un argument (la nouvelle adresse)

#impression du BOOKMARK suite aux modifications
print "\n\n-----------\nRéimpression du contenu du BOOKMARK avec les modifications\n-----------\n";
foreach $person (@BOOKMARK) {
printf "-----------\nNOM : %s PRENOM : %s \nADRESSE: %s\nEMAIL : %s\n------------\n", $person->nom, $person->prenom, $person->adresse, $person->email;
}


Dans ce programme, j'ai rajouté une personne sans email pour faire fonctionner la boucle. Puis j'ai fait appel aux nouvelles méthodes que j'ai intégré dans le package et enfin, j'ai rajouté une impression du carnet d'adresse à la suite de l'appel des méthodes afin que l'on voit bien les modifications.

Lien vers le programme

Le résultat de cette application est le suivant :

-----------
Contenu du BOOKMARK
-----------
-----------
NOM : Fleury PRENOM : Serge
ADRESSE: ILPGA, 19 rue des Bernardins, 75005 Paris
EMAIL : serge.fleury@univ-paris3.fr
------------

-----------
NOM : Salem PRENOM : André
ADRESSE: ILPGA, 19 rue des Bernardins, 75005 Paris
EMAIL : andre.salem@univ-paris3.fr
------------

-----------
NOM : Dupond PRENOM : Lila
ADRESSE: Maison des fleurs, 3 rue des bégonias, 13012 Magnolia
EMAIL : inconnu
------------

La personne Fleury Serge a pour email : serge.fleury@univ-paris3.fr
La personne Salem André a pour email : andre.salem@univ-paris3.fr
La personne Dupond Lila a pour email : inconnu
Fleury Serge habite à l'adresse suivante : ILPGA, 19 rue des Bernardins, 75005 Paris
Salem André habite à l'adresse suivante : ILPGA, 19 rue des Bernardins, 75005 Paris
Dupond Lila habite à l'adresse suivante : Maison des fleurs, 3 rue des bégonias, 13012 Magnolia
Dupond Lila a déménagé, maintenant cette personne habite à : 214 Avenue des géranium 51024 Iris


-----------
Réimpression du contenu du BOOKMARK avec les modifications
-----------
-----------
NOM : Fleury PRENOM : Serge
ADRESSE: ILPGA, 19 rue des Bernardins, 75005 Paris
EMAIL : serge.fleury@univ-paris3.fr
------------
-----------
NOM : Salem PRENOM : André
ADRESSE: ILPGA, 19 rue des Bernardins, 75005 Paris
EMAIL : andre.salem@univ-paris3.fr
------------
-----------
NOM : Dupond PRENOM : Lila
ADRESSE: 214 Avenue des géranium 51024 Iris
EMAIL : inconnu
------------
All people are going away now.
DESTROY Fleury
DESTROY Salem
DESTROY Dupond





Retour au sommaire






barre animée