Vous êtes sur la page 1sur 16

Algorithmique et programmation

en Deust @mrl

• Variables indicées
• Memo

1
Variables indicées
• introduction
• déclarations
• accès
• exemple complet
• cas de plusieurs indices
• indice hors bornes
• visualisation
2
Introduction
• transposition de la notion de variable
indicée x2 puis x3
en maths et ailleurs 2 est remplacé par 3
xi : ième terme d’une suite
• nécessité de décrire la structure de base :
cas d’un indice = liste d’éléments
accessibles par leur numéro (l’indice)

3
Déclaration de type
• déclaration de type :
type d’indice et d’élément
Type nomtype=array[TypeIndice] of TypeEléments;
• exemple pour mémoriser 24 mesures de
température effectuées à intervalle régulier :
Type TMesures=array[1..24] of real;
• c’est une définition de structure de données,
pas un emplacement pour les stocker
4
Types d’indice
• les bornes d’indices peuvent être
numériques entières, pas non entières
Char
Boolean
• elles peuvent être négatives, positives ou
nulles
c’est toujours la borne inférieure en premier

5
Déclaration de variable
• déclaration de variable
Var nomvar : TypeDéfini;
• exemple :
Var Paris:TMesures;
• un type défini peut être utilisé
à différents endroits, les variables de ce
type sont compatibles entre elles :
si on déclare Var Lyon:TMesures;
on pourra écrire Paris:=Lyon;
6
Accès aux éléments
• mémorisation d’une valeur dans un élément
nomvar[indice] := expression;
l’indice est précisé comme
constante, variable ou expression
• Paris[2]:=12.5;
Paris[n]:=15; (n connu)
Paris[n-1]:=-3.5;
indice :
constante,
variable
ou expression de type convenable 7
Accès aux éléments (2)
• utilisation du contenu d’un élément
dans une expression : ... nomvar[indice]...
• exemples :
Ecart:=Paris[2]-Paris[1];
ou
NumLabel1.Value:=Paris[n]; (n connu)
ou
if Paris[1]<Lyon[1] then ...

8
Exemple complet
• boucle de “mesure” des 24 températures
d’une journée
• recherche de la température maximale
(cas d’un seul indice)
• pour simuler les mesures :
random(20)[0..19[

9
Texte de l’exemple
Type TMesures=array[1..24] of real;
var Paris:TMesures;
h:byte;
Max:real;
begin
{simulation et mémorisation
des 24 températures}
for h:=1 to 24 do begin
Paris[h]:=random(20);
end;
10
Texte de l’exemple (suite)
{on suppose a priori que la
première est la plus grande}
Max:=Paris[1];
{on étudie les 23 autres}
for h:=2 to 24 do begin
if Paris[h]>Max then begin
Max:=Paris[h];
end;
end;
end; 11
Cas de plusieurs indices
• exemples
matrice ligne, colonne
couleur d’un point repéré par N° ligne/col.
grandeur physique pour ensemble de param
• déclaration de type
Type TScores = array[1..2,1..4] of integer;
pour stocker les scores de 2 équipes de 4
joueurs
• var Scores:TScores
Scores[1,2]:=10; 12
Indices hors bornes
• que se passe-t’il si l’indice est en dehors de la
zone annoncée dans la définition du type ?
• Paris[0] n’a pas de zone de mémoire prévue
• en absence de vérification d’indice
la valeur est mémorisée dans la variable
située juste avant
• Projet, Options, Compilateur,
cocher Vérification Limites
ce réglage est enregistré avec le projet
13
Visualisation
• il existe plusieurs moyens pour visualiser
les éléments d’une variable à un indice
• composant NumList :
méthode DisplayReal :
DisplayReal(nom de la variable)
tous les éléments réservés sont listés
• si les éléments sont de type Integer :
DisplayInteger(nom variable)
etc.
14
Composant Memo
• pour afficher des lignes de texte
éventuellement modifiables par l’utilisateur
• propriété Lines :
clic sur ... dans l’inspecteur d’objet
ouvre un éditeur de lignes
pour taper ces lignes
• propriété ReadOnly booléenne :
true pour empêcher les modifs utilisateur

15
Composant Memo
• propriété Lines :
Memo1.Lines[n] :
la ligne N° n
la première porte le N° zéro
• une ligne est un texte :
pour l’utiliser comme nombre, il faut
convertir : StrToInt ou StrToFloat

16

Vous aimerez peut-être aussi