MODELE DE PROGRAMME A IMITER
On apprend mieux en imitant.
Objectif : Un programme est organisé en plusieurs parties : une partie principale (programme principal) appelle des sous-parties (sous-programmes) dans son fonctionnement. Chaque sous-programme est chargé d’exécuter une tâche unique dont elle transmet le résultat au programme principal appelant.
Remarques :
Gosub Cadre veut dire va à la partie du programme dont le nom est Cadre, puis après, tu reviens ici. Le sous-programme prend fin avec la commande return.(Cadre est un sous-programme chargé de tracer des cadres sur l’écran)
Cls veut dire : efface l’écran pour que je puisse afficher ce qui suit (Clear Screen)
Ink RGB(10,150,50),0 veut dire mélange du Rouge (Red = 10), du Vert (Green=150), Bleu (Blue=50). Les valeurs se situent entre 0 et 255
Set cursor (30,120) veut dire place le curseur à la position x = 30, y = 120 (La largeur de l’écran est de 640 et la hauteur est de 480). La position 0,0 est le coin supérieur gauche. On commence donc du haut vers le bas (pour les y dont les valeurs se situent entre 0 et 480) et de la gauche vers la droite (pour les x dont les valeurs se situent entre 0 et 640). Un point a pour cordonnées x,y.
Set text font « Verdana » veut dire la police du texte qui suit a pour nom Verdana.
Set text size 14 veut dire la police verdana a pour taille 14
Rem veut dire commentaire du programme. Ce qui vient après la commande rem est en gris, c’est un texte simple que le programme ignore dans son fonctionnement.
BOX 10,20,630,470 : On dessine un grand RECTANGLE de fond
BOX Left,Top,Right,Bottom (on trace une ligne large : coin supérieur Gauche : X = 10, Y = 20) coin inférieur Droit : X=630, Y = 470
Goto ressemble à gosub. Goto comme gosub, saute pour aller à un endroit précis. Mais Goto ne ramène pas le curseur d’où il est parti comme le fait Gosub. Et puis Goto n’est pas limité par un return. Donc il exécute tout le code dans lequel il tombe.
Debut :
Il y a deux points à la fin du mot Debut. Pour cela il est appelé Label. Un Goto ou un Gosub tombe toujours sur un Label qui est en fait le nom et le commencement du programme appelé.
On aura d’autres labels ou noms de sous-programmes. Exemple Carre : , Rectangle : , Cadre : , Triangle :
Attention ! Quand on appelle un programme par son nom, on omet les deux points. Exemple :
Gosub Carre (Il n’y a pas les deux points) Goto Debut, Gosub Rectangle. Dans les noms de labels, il ne faut pas mettre des lettres accentuées. Il faut écrit Debut (sans accent sur le e).
Rem PROGRAMME CALCUL SURFACES
Rem Programme qui calcule la surface d’un rectangle, d’un carré et d’un triangle
rem ++++ PROGRAMME PRINCIPAL DEVANT APPELER DES SOUS-PROGRAMMES
Debut:
cls
gosub Cadre
rem déclaration de variables et de leur type
F as integer
ink RGB(10,150,50),0
set cursor 30,100
set text font "verdana"
set text size 14
print "CALCUL DE SURFACES"
set cursor 30,120
print "Il s'agit de calculer la surface soit d'un rectangle, soit d'un carre, soit d'un triangle."
set cursor 30,140
print "Pour un Rectangle, tapez 1:"
set cursor 30,160
print "Pour un Carre, tapez 2 "
set cursor 30,180
print "Pour un Triangle, tapez 3"
ink RGB(255,0,128),0
set cursor 30,240
print "Quelle figure ? ";
input F
IF F = 1 then gosub Rectangle rem appel du sous-programme Rectangle
IF F = 2 then gosub Carre rem appel du sous-programme Carre
IF F = 3 then gosub Triangle rem appel du sous-programme Triangle
IF F <> 1 AND F <> 2 AND F <> 3 Then gosub Erreur rem appel du sous-programme Erreur
goto Continuer rem appel du sous-programme Continuer
rem +++++++++++ FIN DU PROGRAMME PRINCIPAL ++++++++++++++
rem ------------------------------------------------------------
rem DEBUT DES SOUS-PROGRAMMES APPELES PAR LE PROGRAMME PRINCIPAL
rem ------------------------------------------------------------
rem Sous-Programme traitant du Rectangle
Rectangle:
cls
gosub Cadre
rem déclaration de variables et de leur type
Lon as float
Lar as float
Surf as float
ink RGB(10,150,50),0
set cursor 30,100
print "CALCUL DE LA SURFACE D'UN RECTANGLE"
ink RGB(255,0,128),0
set cursor 30,120
print "Longueur : ";
input Lon
set cursor 30,140
print "Largeur : ";
input Lar
IF Lon < Lar
ink RGB(225,225,0),0
set cursor 30,160
print "Erreur... ! La longueur doit être supérieure à la largeur ! "
wait key
goto Rectangle
else
Surf = Lon * Lar
ink RGB(10,150,50),0
set cursor 30,180
print "La surface du rectangle est : "; Surf
endif
wait key
return rem Fin du sous-programme Rectangle
rem ------------------------------------------------------
rem Sous-Programme traitant du Carré
Carre:
cls
gosub cadre
rem déclaration de variables et de leur type
C as float
Surf as float
ink RGB(10,150,50),0
set cursor 30,100
print "CALCUL DE LA SURFACE D'UN CARRE"
ink RGB(255,0,128),0
set cursor 30,120
print "Côté: ";
input C
Surf = C * C
ink RGB(10,150,50),0
set cursor 30,140
print "La surface du Carré est : "; Surf
wait key
return rem Fin du sous-programme Carré
rem -------------------------------------------------------
rem Sous-Programme traitant du triangle
Triangle:
cls
gosub Cadre
rem déclaration de variables et de leur type
B as float
H as float
Surf as float
ink RGB(10,150,50),0
set cursor 30,100
print "CALCUL DE LA SURFACE D'UN TRIANGLE"
ink RGB(255,0,128),0
set cursor 30,120
print "Base: ";
input B
set cursor 30,140
print "Hauteur : ";
input H
Surf = (B * H)/2
ink RGB(10,150,50),0
set cursor 30,160
print "La surface du Triangle est : "; Surf
wait key
return rem Fin du sous-programme Triangle
rem ------------------------------------------------------
rem sous-programme pour capturer les erreurs
Erreur:
ink RGB(255,255,0),0
set cursor 30,270
print "ERREUR....!"
set cursor 30,300
print "Veuillez saisir entre 1 et 3 ! "
wait key
return rem Fin sous-programme Erreur
rem -----------------------------------------------------
rem sous-programme traçant le cadre
Cadre:
ink rgb(255,128,0),0
BOX 10,10,630,15 rem ligne au-dessus
ink rgb(0,128,128),0 rem couleur blanche
BOX 10,20,630,470 rem RECTANGLE DE FOND
set cursor 190,30
set text size 18
set text to bold rem le texte sera en Gras
ink rgb(225,225,255),0 rem bleu
print "PROGRAMME LE MAGICIEN DE VILNA"
ink rgb(0,0,0),0 rem couleur blanche
BOX 20,50,620,450 rem RECTANGLE INTERIEUR
return
rem Sous-Programme permettant de continuer ou non
Continuer:
rem déclaration de variables et de leur type (Integer = entier)
Rep as integer
ink RGB(225,0,128),0
set cursor 30,320
print "Voulez-vous continuer ? (1 pour continuer) ";
input Rep
IF Rep = 1 then goto Debut
ink RGB(255,255,0),0
set cursor 30,340
print "FIN ... MERCI ET A BIENTOT !"
wait key
end
Commentaires