Académique Documents
Professionnel Documents
Culture Documents
PROGRAMMATION
MISE A NIVEAU
Cours
2002-2003
Claire EDELIST
GENERALITES.................................................................................................................... 3
Objectifs du cours ..................................................................................................................... 3
Définition.................................................................................................................................. 3
Principales étapes pour concevoir un programme......................................................................... 3
Les fautes de programmation ..................................................................................................... 4
Règles de savoir-vivre de la programmation structurée................................................................. 4
1. On ne programme qu'après avoir fait l'analyse : ................................................................. 4
2. Règle de modularité : ....................................................................................................... 4
3. Règle de documentation :................................................................................................. 4
4. Règle de lisibilité :............................................................................................................ 4
5. Règle d'interactivité (ou convivialité) : ............................................................................... 5
6. En Pascal comme en VBA, on écrit en anglais ..................................................................... 5
Objectifs du cours
Définition
L’informatique est une discipline qui permet le traitement de l’information à partir de machines
appelées ordinateurs.
Elle permet de traiter des problèmes que l’on sait théoriquement résoudre, mais dont la résolution
serait longue (ou insoluble en raison du temps de calcul nécessaire) sans l’aide d’un ordinateur. Ce
dernier fonctionne avec une relative autonomie si le programme qui lui est fourni est adéquat.
Pour résoudre un problème, il faut écrire un programme. Les principales étapes de cette conception
sont les suivantes :
R Jeux d’essai
• Les fautes de syntaxe sont signalées à la compilation (ou à l'interprétation pour les langages
interprétés) et se corrigent aisément.
• Les fautes de logique peuvent conduire à des résultats faux et il n'y a aucun remède, sauf un
« débogage » (de l'américain « bug » = cafard) pas à pas.
• Les fautes dans la présentation des données résultent d'une interactivité médiocre qui conduit à
une contradiction entre le programme et les données rentrées. Elles se traduisent par le message
« run time error » au moment de l'exécution d'un programme écrit en Turbo-Pascal (TP), « erreur
d'exécution » en Visual Basic pour applications (VBA).
2. Règle de modularité :
• Un programme est un ensemble organisé d'objets possédant des propriétés (et même des
méthodes en VBA), de sous-programmes ou modules (function et procedure ou subroutine).
• Aucun module ne doit dépasser un écran. Eventuellement, au fur et à mesure de l'évolution
d'un programme certains modules seront décomposés en plusieurs modules.
3. Règle de documentation :
• Les identificateurs (noms de modules, de constantes, de variables) doivent être évocateurs.
• Les astuces et les différentes étapes du programme doivent être expliquées, ce qui permet de
relire un programme plusieurs mois après l'avoir écrit, ou d'assurer la maintenance par un
programmeur autre que celui qui a écrit le programme.
• Insertion de commentaire dans le source du programme :
En TP, { } ou (* *) permettent d’insérer des commentaires ;
En VBA, on introduit des lignes de commentaires, en plaçant un ’ en début de ligne.
4. Règle de lisibilité :
La typographie (= indentations) doit faire apparaître la structure logique de chaque module,
notamment les tests et les boucles. Cela permet de trouver plus facilement ses erreurs de
programmation éventuelles.
NE PAS OUBLIER :
• Les initialisations des variables.
• Pour la mise au point, chaque module doit être testé indépendamment avant d'être intégré au
programme complet.
• Contrôle et mise au point du programme final sur des données « test ».
En résumé, les diverses étapes de mise au point d’un programme, sont les suivantes :
• Cahier des charges
• Analyse descendante
• Recherche d'un algorithme de résolution
• Synthèse ou analyse ascendante
• En-tête et partie déclarative
• Ecriture du (des) module(s) d’entrée des données
• Ecriture du (des) module(s) de sortie des résultats et de contrôle des données
• Ecriture progressive des autres modules, documentés et lisibles
• Mise au point sur un ou plusieurs jeux d’essais
Cette brève description devrait vous permettre d’utiliser mieux l’outil mis à votre disposition, mais est
outrageusement simplifiée.
UNITE CENTRALE
↑ ↑
↓ ↓
Imprimante Ecran Clavier Souris PERIPHERIQUES
• Microprocesseur
• Mémoires : ROM ou mémoire morte
RAM ou mémoire vive
• Bus
• Organes d’entrées / sorties : appartiennent aux organes périphériques
Utilisation de l’ordinateur
Définition
Le système d'exploitation (ou SE) est un programme qui supervise le fonctionnement de l'ordinateur;
il organise notamment la mémoire centrale et gère les communications entre les divers organes de
l'ordinateur. Avec le Turbo-Pascal, nous utilisons le MSDOS pour Microsoft Disk Operating System
(nous verrons quelques éléments de Windows avec le Visual Basic). Au départ ce programme est à un
emplacement convenu du disque. Il est partiellement chargé en mémoire vive (RAM) par ordre du
BIOS (Basic Input Output System) qui réside dans la ROM (mémoire morte) de l'ordinateur.
Contrairement au BIOS, le MSDOS n'est pas lié à l'ordinateur et est évolutif (il existe mais est masqué
sous Windows). Après chargement du tout début du MSDOS en RAM, l'ordinateur sait trouver des
fichiers particuliers : config.sys, command.com, autoexec.bat… C'est alors que l'utilisateur peut
taper une commande ou un nom de fichier en fonction de ses désirs.
Une bonne partie du travail du SE consiste à manipuler des fichiers. Il faut donc connaître la façon de
les désigner. Le nom complet comporte, dans l'ordre :
la désignation du lecteur à utiliser
le nom du fichier proprement dit (8 caractères au maximum) ou de son chemin d'accès
un point
l'extension (3 caractères maximum)
Par exemple : C:\turbo.cmd
Dans ce nom, « * » peut remplacer une chaîne de caractères quelconque, alors que « ? » peut
remplacer un unique caractère quelconque.
A chaque sauvegarde d’un programme écrit en Turbo-Pascal, l'ancien fichier devient nom.bak et le
fichier sauvegardé est nom.pas.
• DIR donne le catalogue du disque correspondant au lecteur actif. On peut éventuellement préciser
le lecteur demandé (DIR A:) ou un répertoire particulier (DIR A:\DATA).
DIR/W permet un affichage abrégé sur 4 colonnes.
DIR/P permet d’afficher le catalogue écran par écran.
• FORMAT « formatte » le lecteur actif. Cette opération est nécessaire sur une disquette avant d'y
enregistrer des fichiers. Cela correspond à une préparation de la disquette pour qu'elle soit
compatible avec le système d'exploitation en définissant des secteurs différents. Cette opération
entraîne la perte irrémédiable des fichiers qui étaient sur la disquette.
• COPY A:\fichorigine C:\fichdestination effectue une copie du fichier fichorigine
(modèle, qui était sur le disque A) sur le disque C, en lui attribuant le nom fichdestination.
Les conventions GNS (Graphes de Nassi-Shneiderman, 1973) ont été étendues sous le nom de RAS
(Représentations Algorithmiques Structurées). Les correspondances vont vous être fournies ici. Un
bloc comprenant plus d’une instruction doit être entouré de begin et end;.
Affectation
SI…ALORS…SINON
Structure CAS
R repeat
E instructions(s)
P until <condition>;
E instructions de l’itération
T
E
R
jusqu’à <condition>
1. Structure
Programme principal
uses nom_des_unités;
Partie déclarative
const … ;
type … ;
var … ;
Partie exécutive
BEGIN
instruction 1;
instruction 2;
…
instuction n;
END.
program ……….;
uses <noms unités>;
const ……….;
type ……….;
var objet1 : type1;
objet2, objet3 : type2;
P
A
procedure truc (X : type1 ; Y : type2); X et Y sont des arguments formels R
T
const ……….;
I
type ……….;
E
var ……….; variables locales de la procédure
Begin
D
instruction 1;
E
…
C
instruction n;
L
End; A
R
A
function machin (Z : type1) : type2; Z est un argument formel
T
la fonction est de type2
const ……….; I
type ……….; V
var ……….; variables locales de la fonction E
Begin
instruction 1;
…
instruction n;
End;
BEGIN
E
……….; P X
A E
truc(objet1, objet2);
R C
……….; T U
I T
objet3 := machin(objet1);
E I
………. ; V
E
END.
Les modules
1. Définition
Un programme est un ensemble de modules liés entre eux par une ou plusieurs relation(s) d’appel.
Chacun a la même structure : en-tête, partie déclarative, partie exécutive. Un programme permet
ainsi l’exécution automatisée d’une tâche complexe.
Par commodité, nous fixons les règles suivantes :
• les programmes seront écrits en minuscules,
2. Réseau de modules
Il existe un module principal unique ou programme principal (PP). C’est par lui que commence
l’exécution du programme et c’est lui qui permet l’établissement des liens logiques (conçus par le
programmeur) entre les divers modules. En effet, un module peut employer d’autres modules
spécialisés dans des sous-tâches particulières. Pour décrire ces relations, on utilise le réseau des
modules.
PP
↓
↓
↓ intervalle_de_confiance
entre
↓
↓ ↓
moyenne variance
Nous venons de l’illustrer pour un programme qui permettrait de calculer l’intervalle de confiance de la
moyenne d’un échantillonnage ; les valeurs seraient connues grâce au module entre (ce dernier
module peut correspondre aussi bien à une saisie au clavier qu’à la lecture d’un fichier préexistant).
Le PP appelle deux module entre et intervalle_de_confiance ;ce dernier appelle lui-même deux autres
modules moyenne et variance.
RAS IN IN/EX EX
IN correspond à la consultation de données, IN/EX à leur modification, alors que EX est une
création de variables.
5. Fonctions
La convention est un peu différente pour les fonctions (une seule valeur de sortie définie par la
fonction, dont il faut aussi définir le type, le type de la fonction). Soit une fonction de nom chose.
chose de type…
variables locales
partie exécutive
Chiffres
Type significatifs Intervalle de définition Octets
Entiers byte 0 ≤ X ≤ 255 1
shortint -128 ≤ X ≤ 127 1
integer -32 768 ≤ X ≤ 32 767 2
tous
word 0 ≤ X ≤ 65 535 2
longint -2 147 483 648 ≤ X ≤ 2 147 483 647 4
18
comp* |X| ≤ 9,2 . 10 8
-39 38
Réels real 11-12 2,9 . 10 ≤ |X| ≤ 1,7 . 10 6
single@ 7-8 1,5 . 10-45≤ |X| ≤ 3,4 . 1038 4
double@ 15-16 5,0 . 10-324≤ |X| ≤ 1,7 . 10308 8
@ -4951 4932
extended 19-20 1,9 . 10 ≤ |X| ≤ 1,1 . 10 10
@
types nécessitant un coprocesseur arithmétique.
Ce sont les informations traitées par le programme. Elles occupent une certaine place en mémoire (ou
encombrement) qui leur est affectée au moment où on définit leur nom en leur attribuant un type.
Chacune correspond à une adresse en RAM. Leur contenu est défini par affectation, par saisie ou
transfert de données, ou par calcul.
Deux types de variables un peu plus délicates à manier vont être décrits plus en détail. Le mieux est
de commenter un extrait de programme dans chaque cas.
BEGIN
{remplissage du contenu des variables longueur et proteine}
for i := 1 to longueur do
write(proteine[i]);
{affichage de la protéine en code à une lettre} PE
{proteine[i] permet d'avoir accès à chaque case du tableau}
writeln;
END.
BEGIN BEGIN
{remplissage de la var. obs} {remplissage de la var. obs}
writeln(obs.secteur); with obs do
writeln(obs.espece); begin
writeln(obs.date); writeln(secteur);
writeln(obs.nombre); PE1 writeln(espece); PE2
END. writeln(date);
writeln(nombre);
end;
END.
Avec obs
Afficher (secteur)
Afficher (espece)
Afficher (date)
Afficher (nombre)
Les opérateurs
1. Syntaxe
Identificateur(liste de paramètres)
L’identificateur désigne la fonction ou la procédure. La liste des paramètre, si elle existe, est
constituée d’une ou plusieurs constantes, variables ou expressions, séparées par des virgules.
2.4. Divers
Définition
Les fichiers informatiques permettent de stocker (enregistrer) des informations sur une mémoire
distincte de la mémoire centrale ou mémoire vive (RAM), c’est-à-dire sur un disque (support
physique). Ceci évite de devoir refaire une saisie à chaque exécution (RUN). Ces informations
peuvent être consultées (lues), modifiées, stockées (enregistrées) à la demande.
Nous étudierons deux types de fichiers :
Programmeur =
Programme ou
2bis calcul
Programmeur =
Programm
2bis calcul
1. récupération d’un fichier (fiche par fiche) 2. résultats : affichage à l’écran ou impression
2bis. utilisation du fichier pour de nouveaux calculs
En somme, il y a deux étapes successives pour la récupération de données sur un fichier :
• récupération du contenu d’une fiche
• affichage à l’écran ou impression avec des explications pour l’utilisateur, ou utilisation pour de
nouveaux calculs
3. Ecriture en Turbo-Pascal
Le maniement des fichiers exige systématiquement au moins 5 instructions dans un programme écrit
en Turbo Pascal.
• pour enregistrer une fiche,
• pour consulter une fiche,
• pour modifier une fiche.
La variable fichier, qui correspond à une mémoire-tampon de l'ordinateur au moment de l'exécution,
est définie dans la partie déclarative. C'est une variable abstraite qui va servir à la manipulation du
fichier et n'existera plus après exécution. Elle est associée au nom concret du fichier (nom sur le
disque qui persiste après exécution) grâce au couplage qui appartient à la partie exécutive du
programme. Les tableaux suivant résument l’utilisation de ces 5 instructions dans tous les cas de
figure : fichiers des deux types utilisés en création, modification ou récupération.
Fichiers « TEXT »
ECRITURE = STOCKAGE = ENREGISTREMENT LECTURE = CONSULTATION = RECUPERATION
Partie exécutive
Fichiers « FILE OF »
ECRITURE = STOCKAGE = ENREGISTREMENT LECTURE = CONSULTATION = RECUPERATION
Partie exécutive
1. Les fonctions
Cet outil est intéressant lorsqu’il n’existe plus de fautes de syntaxe (détectées à la compilation), et
que néanmoins à l’exécution (RUN), on n’obtient pas ce que l’on attendait.
La commande F7 exécute le programme ligne à ligne, car, pour le débogueur, l’unité est la ligne de
programme.
• Si plusieurs instructions sont écrites sur la même ligne, elles sont exécutées par le même F7.
Par contre, une instruction à cheval sur plusieurs lignes est traitée d’un bloc.
• Les instructions begin et end sont considérées comme exécutables, mais non repeat.
• Les lignes qui ne comportent pas d’instruction exécutable ne sont pas prises en compte.
Après chaque exécution d’une ligne, il y a arrêt et retour au mode éditeur, avec surbrillance sur la
prochaine ligne à exécuter, le curseur pouvant être à nouveau déplacé à volonté. En répétant la
frappe de la touche F7, on progresse de ligne en ligne avec, en cas d’appel d’une procédure ou d’une
fonction, passage à la première ligne de ce module. La frappe répétée de F7 permettra de parcourir
tout le sous-programme avant de retourner au module appelant. On peut éviter ces entrées dans les
sous-programmes, si on le désire, en tapant F7, ou RUN → Step over à la place de F7. Le sous-
programme est alors entièrement exécuté comme une seule instruction, et on passe à la ligne suivant
l’appel de ce module dans le module appelant.
Cette commande est à utiliser afin d’interrompre moins souvent le programme pour exécuter d’un seul
coup des parties qui ne posent pas de problème. C’est très utile pour examiner les boucles.
L’exécution s’arrêtera à la ligne où est placé le curseur.
Interruptions
A tout instant, on peut lancer l’exécution par Ctrl+F9 ou RUN → Run à partir de l’endroit où l’on
s’est arrêté jusqu’à la fin du programme.
On peut aussi cesser le débogage et revenir à la situation suivant la compilation par Ctrl+F2 ou
RUN → Program reset.
On peut consulter les valeurs de toutes les variables connues (locales ou globales au module dans
lequel on se trouve) à chaque interruption grâce à la commande Ctrl+F4 ou
Debug → Evaluate/Modify. Elle permet à la fois d’afficher la valeur prise par une variable et, ce qui
est beaucoup moins intéressant, de modifier cette valeur.
La commande Ctrl+F4 affiche une boîte de dialogue avec trois lignes de saisie (« Expression »,
« Result », « New value ») et quatre boutons (« Evaluate », « Modify », « Cancel », « Help »).
L’utilisateur, en général, écrit sur la première ligne une expression, le plus souvent un nom de
variable. La valeur s’écrit sur la deuxième ligne lorsque l’utilisateur appuie (grâce à la souris) sur le
bouton « Evaluate ». On peut aussi vérifier les valeurs des différentes cases d’un tableau, celui-ci
étant parcouru à l’aide des flèches. Lorsque le tableau est trop vaste, on peut n’en afficher qu’une
partie en précisant l’élément, la ligne (premier indice) ou les répétitions: par exemple pour un tableau