|
Qualités d'un projet
-
Fiabilité : il doit donner les
résultats corrects attendus.
-
Robustesse : il doit gérer les
erreurs de manipulation des utilisateurs.
-
Convivialité : il doit être agréable
à utiliser (souris, icônes, menus…)
-
Efficacité : il doit donner des
réponses rapides et claires.
-
Compacité : il doit occuper le moins
de place possible en mémoire.
-
Lisibilité : il doit être structuré
en modules, commenté, présenté clairement.
-
Portabilité : il doit être aisément
transférable sur une machine d'un autre type.
Algorithme 1
Quand on a un problème à résoudre par programmation on doit
tout d'abord trouver une stratégie
pour y parvenir.
Il
faut bien sur que cette stratégie soit "programmable"
dans le langage de programmation choisi. Il faut donc bien connaître les
caractéristiques et les possibilités de ce langage.
Le
plus souvent on écrit un algorithme
en français (c'est la stratégie adoptée) que l'on pourra ensuite
coder dans le langage de programmation
choisi.
Premier exemple
Il
s'agit de chercher quel jour de la semaine tombe la fête de Noël d'une
année donnée.
Référence : Noël 1900 était un mardi.
Rappel : 1900 n'était pas bissextile mais 2000 le sera.
Analyse :
Noël
se décale d'un jour par an (365 jours = 52 semaines + 1 jour) pour les
années normales et de 2 jours par an pour les années bissextiles.
On
suppose que le dimanche est numéroté 1, lundi 2 … … … et samedi 7 ou 0.
Donc
le mardi 25 décembre 1900 porte le numéro 3.
Il
suffit donc d'ajouter à ce nombre (3) les décalages occasionnés par
les années (normales ou bissextiles).
Algorithme :
Année ß saisie de l'année à traiter
DécalageA ß nombre d'années entre 1900 et Année
DécalageB ß nombre d'années bissextiles entre 1900 et Année
DécalageTotal ß 3 + DécalageA + DécalageB
JourSem ß reste de la division de DécalageTotal par 7
Programme :
Private
Sub Form_Load()
Dim Année As Integer
Dim DécalageA As
Integer, DécalageB As Integer
Dim NombreDeJours,
JourSem As Integer
Année = InputBox("Taper
une année")
DécalageA = Année -
1900
DécalageB = Int(DécalageA
/ 4)
NombreDeJours = 3 +
DécalageA + DécalageB
JourSem = NombreDeJours
Mod 7
MsgBox (JourSem)
End Sub
Algorithme 2
Deuxième exemple
Il
s'agit de trier en ordre décroissant les nombre contenus dans un
tableau de 100 entiers.
Différentes stratégies sont à notre disposition. La plus classique est
celle du tri à bulles.
Analyse :
On
peut comparer chaque nombre à son suivant et mettre en tête le plus grand
des deux.
On
avance ainsi dans le tableau jusqu'à la fin de celui-ci.
Puis
on recommence au début jusqu'à ce que plus aucune permutation ne
soit effectuée.
Pour
cela il faut un indicateur de permutation (drapeau ou sémaphore).
Alors
le tableau est trié.
Algorithme :
Début
Faire
Permuté ¬
0 ' drapeau indiquant qu'aucune
permutation n'a été effectuée
Pour i
= 1 à 99
Si Case i
< Case i+1 alors
Auxiliaire
¬
Case i
Case i
¬
Case i+1
Case
i+1
¬
Auxiliaire
Permuté
¬
1 ' drapeau indiquant qu'une permutation
a été effectuée
Fin de Si
Nouveau i
Recommencer tant que Permuté
= 1
Fin
Programme :
Public Sub TriABulles()
Dim Permuté As Integer
Dim Auxiliaire As
Integer
Do
Permuté =
0
For i = 1
To 99
If
TabEntiers(i) < TabEntiers(i + 1) Then
Auxiliaire
= TabEntiers(i)
TabEntiers(i) = TabEntiers(i + 1)
TabEntiers(i + 1) = Auxiliaire
Permuté =
1
End If
Next i
Loop While Permuté = 1
End Sub
Derniers conseils
-
Privilégier une étude descendante
: du général au particulier.
-
Réfléchir à la structure des données
la plus appropriée.
Par
exemple pour le jeu du PENDU utiliser un tableau
TabTitres(1 To 10, 1 To 3) As String qui contiendra :
- En
ligne 1 les titres des films
- En
ligne 2 les squelettes (*******)
- En
ligne 3 une aide sous forme de texte ("C'est un western")
-
Utiliser des noms de variables significatifs
:
NombreATrouver As
Integer
TitreIncomplet As
String
LettreInitiale As
String*1
-
Initialiser les variables même si VB
le fait dans certains cas.
- Si
nécessaire travailler sous forme de
procédures publiques utilisables dans toute la feuille.
-
Définir une interface utilisateur complète.
Par
exemple pour le jeu du PENDU prévoir un bouton pour "Ajouter une lettre"
et un autre pour "Proposer une réponse".
-
Commenter le programme pour qu'il
soit plus compréhensible en vue de modifications ultérieures et le
rédiger clairement.
-
Enfin : que le programme "Tourne"
avant de soigner sa forme.
|