Vous êtes sur la page 1sur 18

Algorithme Principes gnraux

I.

Qu'est-ce qu'un algorithme ?

Programmer, c'est quoi ?


Programmer, c'est dfinir prcisment le problme rsoudre, dcrire peu peu une solution et aprs
seulement l'exprimer dans un langage de programmation.

Notation algorithmique
Les actions ou oprations d'un algorithme sont dcrites l'aide de mots (verbes, locutions, ...) respectant
des rgles syntaxiques et de prsentation qui en facilitent la comprhension. Toutes ces rgles dfinissent
la notation algorithmique.
Compltons la dfinition d'un algorithme, en prcisant que les actions d'un algorithme s'articulent l'aide
de structures de base. Les structures de base d'un algorithme sont :

la structure squentielle (ensemble d'oprations la suite les unes des autres)

la structure conditionnelle (ensemble d'oprations soumises une condition)

la structure rptitive (ensemble d'oprations rptes un nombre fini de fois)

Ces trois structures constituent les briques de base de tout algorithme et permettent de rsoudre n'importe
quel problme.

Convention syntaxique
Nous dfinirons les diffrentes instructions ncessaires. Voici un premier exemple de reprsentation d'un
algorithme.
Exemple
algo somme
const pi = 3.1416
var diamtre, circonfrence : rels
dbut
| lire_clavier "Quel est le diamtre du cercle",diamtre
| circonfrence := Diamtre * Pi
| crire_cran "La circonfrence est : ", circonfrence
fin
Les mots-clefs, constitutifs de la syntaxe de l'algorithme et utiliss dans le logiciel AlgExec, sont
indiqus en bleu gras.
Les lignes de l'algorithme sont indentes (avec une barre | <AltGr + 6>) afin d'en faciliter la lecture.

Liste des exemples dalgorithme.


N des algorithmes
Dclarations
tableaux : 1er indice = 0
tableaux : 1er indice = 1
structure

04_1
04_2
06

affectation
_la_ligne
curseur
crire_cran
crire_imprimante
efface_cran
lire_clavier
pourfin_pour

02, 03, 05
13_1
01, 04, 05
01, 02, 03, 04, 05, 06
16
01
01, 03, 04, 05, 06, 07, 08, 09
02, 04

Instructions

rpterjusqu
sifin_si
tantfin_tant_que

03
03, 05, 06, 09
05, 06

Organisation indexe
Organisation relative
Organisation
squentielle

06_1, 06_3, 06_5,13


06_2, 06_4, 10,14
12

alea()
datesyst()
entier()
existe()
finfichier()
heuresyst()
ligne()
majuscule()

05
01
05
06
06
02
05
06_5

Fichiers

Fonctions

Procdures

09

Fonctions
programmes

11, 17, 18

SQL

15

II.

Langage algorithmique (ALG'EXEC)

Toutes les options sont donnes titre purement indicatif.


Pour personnaliser les mots-clefs utiliss, il faudra modifier le fichier :
%systemdrive%\Program files\AlgExec\AlgExec.ini
Les mots-clefs (bleu gras) :

ne peuvent tre choisis comme identificateurs

peuvent tre crits en minuscule ou majuscule

les caractres accentus ne sont pas pris en compte : dbut est quivalent debut.

A) Structure gnral
algo nom_algo
[structure nom_structure
[nom_var : {type_standard|nom_structure1}]*
fin_structure]*
[const
[globale[s]] [nom_const = valeur]* ]
[fichier ... cf. dclaration des fichiers ...]*
[var
[globale[s]] [nom_var [,nom_var]* : {type_standard|nom_structure]* ]

dbut
instruction *
fin

B) Dclarations
a) un identificateur est un mot :
- commenant obligatoirement par une lettre
- ne comportant aucun espace
- compos des caractres suivants : a z, , , , , , , , , , , , 0 9, _
b) nom_const et nom_var sont des identificateurs
c) valeur est une donne littrale (cf. ci-dessous)
d) nom_structure est un type de donne :
type
boolen
chane
entier
rel

nom_type
bool
boolen
chane
chane(nbr_caract)
ent
entier

caractres
autoriss

{.vrai., .faux.}
tout caract.
0 9, -, +

rel

0 9, -, +,
.

dcimal(x,y)
x : nbr chiffres
avant .
y : nbr chiffres
aprs .
caractre car
caractre

0 9, -, +,
.

dcimal

ensemble
de valeurs

tout caract.

[32768..+32767]

exemples
de valeurs
.vrai. ou 1
.faux. ou 0
"abcd"
"67000"
-152
+4560 ou
4560
-12.3652
+0.186 ou
0.186
idem que le
type rel, mais
cadr droite
l'affichage

"A"
"*"

taille en
octets
(fichiers)

60
nbr_caract
6
22
x+y+2

remarque : utilisez le type dcimal pour viter des problmes de conversion binaire (essayez la
fonction dcimale(-150.36) pour vous rendre compte du problme).
Par dfaut, les constantes et variables dclares sont locales.
Pour dclarer les constantes ou/et les variables globales il suffit d'crire par ex. : globales
entiers

i,j,k :

e) dclaration de tableaux de variables :


1re syntaxe
nom_var{[t1[,t2[,t3]]] | [interv1[,interv2[,interv3]]] }: nom_type
2me syntaxe
nom_var : tableau[x]{[t1[,t2[,t3]]] | [interv1[,interv2[,interv3]]] } {de | d}
nom_type
t1,t2,t3 : dsignent le nombre maximum d'lments du tableau ; dans ce cas l'indice minimum
est toujours gal 1.
interv1, interv2, interv3 dsignent l'intervalle de dfinition de chaque indice ;
interv : vminimum..vmaximum avec vminimum >= 0 et vmaximum > vminimum
Les valeurs des dimensions peuvent tre des littraux numriques entiers ou des constantes
dclares prcdemment.
f) dclaration de variables structures :
structure nom_structure
nom_var1 : nom_type
nom_var2 : nom_type
...
fin_structure
g) dclaration des fichiers :
organisation squentielle :
fichier nom_fichier {en | (} organisation squentielle [fixe] [ ) ]
{enregistrement | dbut_article} nom_enreg
... dclaration de l'enregistrement
{finenregistrement | fin_enregistrement | fin_article}
si le mot-clef fixe est omis, l'organisation sera en mode variable : les valeurs de
chaque variable seront entre " " et spares chacune par une virgule.
organisation relative :
fichier nom_fichier
{en | (} organisation relative
accs {squentiel | direct | squentiel/direct }
{clef | cl} { = | : } nom_clef [ ) ]
{enregistrement | dbut_article} nom_enreg
... dclaration de l'enregistrement
{finenregistrement | fin_enregistrement | fin_article}
nom_clef est dclar dans la partie VAR et doit tre de type numrique (le numro de
l'enregistrement est la partie entire de la valeur de la clef : maximum 2147483647 ...
attention la place disponible sur le disque !!!)
nom_clef doit tre dclar GLOBALE
organisation indexe :
fichier nom_fichier
{en | (} organisation indexe
accs {squentiel | direct | squentiel/direct }
{clef | cl} { | primaire} { = | : } nom_clef1
[{clef | cl} secondaire { = | : } nom_clef2] [ ) ]
{enregistrement | dbut_article} nom_enreg
... dclaration de l'enregistrement
{finenregistrement | fin_enregistrement | fin_article}
nom_clef1 et nom_clef2 sont des donnes de type chane ou des structures de donnes
dclares dans l'enregistrement du fichier.
organisation binaire :
fichier nom_fichier {en | (} organisation binaire [ ) ]
il n'y a pas de dclaration d'enregistrement

remarques pralables :
- expr dsigne une variable dclare, une constante dclare ou une formule mathmatique
- expr_logique dsigne une expression logique (rsultat de type boolen)
- littral dsigne une chane de caractre place entre " "
- une ligne de programme a une longueur maximum de 73 caractres ; lorsqu'une instruction
dpasse cette longueur, il faudra appliquer les rgles de csure (saut de ligne) indiques
chaque instruction (aucune indication signifie que l'instruction doit tre crite en 1 ligne).
Pour une expression logique ou mathmatique, le saut de ligne doit tre plac aprs une '(' ou
aprs un oprateur binaire (pas aprs + - non).

C) les instructions
Toute instruction doit tre suivie d'un espace au minimum ou de la touche <Entre>
1 entres/sorties
a) entre au clavier
lire_clavier [littral,] nom_var
littral est affich avant la saisie la position courante du curseur
b) sortie l'cran
crire_cran [{expr | littral}] [,{expr | littral}]* [&]
- afficher seul ralise un saut de ligne
- la csure doit se faire aprs la virgule
- implicitement, aprs l'affichage, le curseur se dplacera au dbut de la ligne suivante;
le caractre & annule ce dplacement
- l'affichage des nombres dcimaux (point dcimal) se fera en concordance avec le
panneau de configuration de nombres (International).
c) sortie l'cran
_la_ligne
- ralise un saut de ligne
d) impression (en diffr) : aprs excution de l'algo. slectionner Excution Imprimer l'tat pour
diter l'tat obtenu.
crire_imprimante [{expr | littral}] [,{expr | littral}]* [&]
- voir les commentaires de l'instruction afficher version 1
- largeur maximum des lignes d'impression :
79 caractres pour une taille en points de 12
120 caractres pour une taille en points de 8 (au-del la ligne est tronque
120 car.)
la taille en points tant automatiquement ajuste en fonction de la longueur des
lignes
e) dplacement du curseur l'cran
curseur {expr | littral}] ,{expr | littral}
- la premire expression indique le numro de ligne (1 24)
- la deuxime le numro de colonne (1 80)
f) effaage de l'cran
efface_cran

2 affectation et calcul
nom_var {:= | <- | flche d'affectation} {expr | littral}
oprateurs (dans l'ordre de leur priorit) :
Type
Oprateurs
Commentaires
d'oprandes
+ et unaire
entier, rel, dcimal
non
unaire
boolen
^
exponentielle
entier, rel, dcimal
*
multiplication
entier, rel, dcimal
/
division
entier, rel, dcimal
div
division entire
entier, rel, dcimal
mod
reste d'une division
entier, rel, dcimal
+ ou &
concatnation
chane ou caractre
+ et binaire
entier, rel, dcimal
< <= > >=
tout type
= <>
et
boolen
ou
boolen
oux
boolen
3 structures conditionnelles
a) alternative simple
si expr_logique alors
[sinon]
{finsi | fsi | fin_si}
b) choix multiples
selon expr.
cas littral :
...
cas_sinon :
{finselon | fselon | fin_selon}
ou
suivant expr.
cas littral :
...
cas sinon :
{finsuivant | fsuivant | fin_suivant}

Type
du rsultat
de l'oprande
boolen
entier, rel, dcimal
entier, rel, dcimal
entier, rel, dcimal
entier
entier
chane
entier, rel, dcimal

boolen
boolen
boolen

4 structures rptitives et itratives


a) rptitives
tant_que expr._logique
...
{fintantque | ftantque | fin_tant_que | ftq}
rpter
...
{jusqu | jq } expr_logique
b) itratives
itrer

sortir_si expr_logique
{finitrer | fitrer | fin_itrer}

pour nom_var op_affect1 {expr | valeur} op_fin {expr | valeur} [PAS op_affect2 {expr |
valeur}]
{finpour | fpour | fin_pour}
- op_affect1 : {:= | <- | flche d'affectation | DE | DEPUIS }
- op_fin
: {A | JUSQU'A | JQA}
- op_affect2 : {pas d'oprateur | := | <- | flche d'affectation }
- csure aprs chaque oprateur
- nom_var doit tre de type numrique (entier ou rel)

5 fichiers
a) ouverture
ouvrir nom_fichier {en | (} {lecture | criture | lecture/criture | extension} [)]
le mode d'ouverture est implicite (lecture/criture) pour les fichiers en organisation binaire.
b) fermeture
fermer nom_fichier1[,nom_fichier2]*
c) lecture
organisation squentielle
: lire nom-enreg
organisation indexe ou relative :
accs direct
: lire nom_enreg avec clef [{:= | flche d'affectation} nom_clef]
accs squentiel
: lire nom_enreg suivant
organisation binaire : lire nom_fichier , [nom_var1] , nom_var2
nom_fichier
: nom du fichier binaire dclar
nom_var1
: position du premier octet de nom_var2 lu dans le fichier
cette position est dfinie par rapport au dbut du fichier
si la variable nom_var1 est omise : lecture squentielle
nom_var2
: lecture du nombre d'octets gal la longueur de la variable
entier
: 2 octets
rel
: 4 octets
chane
: 60 octets
chane(n)
: n octets
dcimal(e,d) : e + d + 2 octets (signe et point dcimal)
boolen
: 2 octets
d) criture
crire nom_enreg
organisation binaire : crire nom_fichier , [nom_var1] , nom_var2
e) rcriture (organisation indexe et relative uniquement)
rcrire nom_enreg
f) supprimer (organisation indexe et relative uniquement)
supprimer nom_enreg
g) positionnement (organisation indexe et relative uniquement)
positionner nom_enreg avec clef [{ < | <= | = | >= | > } nom_clef]
h) positionnement du pointeur de fichier (organisation binaire)
positionner nom_fichier , nom_var1
i) les fonctions d'erreur sont les suivantes :
finfichier(nom_fichier)
: retourne la valeur .vrai. en cas de fin de fichier
erreur(nom_fichier)
: retourne la valeur .vrai. en cas d'erreur (lecture, criture,
suppression)
erreur_clef(nom_fichier) : retourne la valeur .vrai. en cas d'erreur (lecture, criture,
suppression)
trouv(nom_enreg)
: retourne la valeur .vrai. en cas de lecture directe russie
existe(nom_enreg)
: retourne la valeur .vrai. en cas de lecture directe russie

6 Procdure
a) dclaration d'une procdure
version 1
procdure nom_procdure([{donne|rsultat|donne modifie}:nom_var[,nom_var]*:nom_type
]*)
version 2
procdure nom_procdure([{e|s|es} nom_var[,nom_var]*:nom_type ;]*)
donne ou e ou valeur ou par_valeur
rsultat ou s
donne modifie ou es ou adresse ou par_adresse

: paramtres en entre
: paramtres en sortie
: paramtres en entre/sortie

b) appel d'une procdure


sans paramtre
: nom_procdure()
avec paramtre(s) : nom_procdure(param_rel1[,param_rel2]*)
7 Fonction (rcursive)
a) dclaration d'une fonction
version 1
fonction nom_procdure([{donne}:nom_var[,nom_var]*:nom_type ]*) : type_fonction
version 2
fonction nom_procdure([{e} nom_var[,nom_var]*:nom_type ;]*) : type_fonction
donne ou e ou valeur
type_fonction

: paramtres en entre
: type de la fonction (entier, rel, ...)

b) appel d'une fonction


une fonction est appele dans toute expression, sauf si elle est rcursive (dans ce cas seule
l'instruction d'affectation est autorise)
c) retour d'appel
version 1 : valeur_retour {:= | <- | flche d'affectation} expression
version 2 : dlivre(expression)
version 3 : nom_fonction {:= | <- | flche d'affectation} expression
remarque : dans le cas d'une fonction rcursive, expresssion doit tre une variable uniquement.
Csure dans la dclaration d'une procdure (ou d'une fonction) :
csure possible aprs la dclaration de type d' un ou de plusieurs paramtres.
exemples :
version 1 : PROCEDURE EXEMPLE (donnes : a,b : rels
rsultats : x,y,z : rels)
version 2 : PROCEDURE EXEMPLE (e a,b : rels ;
s x,y,z : rels)
8 Instructions de service
copie chemin du fichier copier
[fincopie]
a) le chemin du fichier copier doit tre complet (ex. c:\alg'exec\procedu1.alg)
b) la ligne FINCOPIE est facultative

9 SQL
AlgExec peut accder :

aux bases de donnes MS Access


ouverture d'une base de donnes MS Access
exec_sql
START DATABASE nom_de_la_base
fin_exec

le nom de la base peut tre :


- soit un littral de type chane
- soit une variable de type chane (le nom de la variable hte sera prcd d'un : ).
aux bases ODBC
aprs avoir cr une source de donnes ODBC
exec_sql
START DATABASE
("ODBC;DSN=nom_source;UID=nom_utilisateur;PWD=mot_de_passe")
fin_exec
ou encore
exec_sql
START DATABASE (:var_hte)
fin_exec
var_hte tant de type chane et contenant la valeur de la chane de connection Odbc.

b) fermeture de la base de donnes active


exec_sql
STOP DATABASE
fin_exec
b) instructions SQL
exec_sql
instruction SQL
fin_exec
Les instructions SQL admises sont les suivantes :
- instructions SANS curseurs
DELETE FROM ... WHERE ...
INSERT INTO ... VALUES (valeur1, valeur2, ...)
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
UPDATE .... SET ....
- instructions AVEC curseurs
DECLARE nom_curseur CURSOR FOR SELECT .....
OPEN nom_curseur
FETCH nom_curseur INTO :var_hte_1, :var_hte_2, ...
CLOSE nom_curseur

CONSTANTE.
Les constantes sont dclares TOUT au dbut de l'algorithme aprs le mot_clef CONST.
exemple :
ALGO exemple
CONST
a = 10
b = "ABCDEF"
c = 18.6
Choix multiples : selon ... cas ... fin_selon
selon expression
cas littral1 :
... suite d'actions 1 ...

cas littral2 :
... suite d'actions 2 ...
[ cas sinon
... suite d'actions 3 ...]
fin_selon
Selon la valeur de l'expression,
la suite d'actions 1 est ralise si l'expression est gale littral1
la suite d'actions 2 est ralise si l'expression est gale littral2
la suite d'actions 3 est ralise si l'expression est diffrente de
littral1 ou de littral2.
Aprs l'excution des suites d'action, l'algorithme continue aprs l'instruction fin_selon .
Exemple :
selon code_catgorie
cas 1 : taux_rduction := 0.10
cas 2 : taux_rduction := 0.15
cas 3 : taux_rduction := 0.22
fin_selon
Dclaration des variables.
Les variables sont dclares au dbut de l'algorithme aprs le mot-clef var.
L'identificateur d'une variable est un mot de 20 caractres maximum ;
ce mot ne doit pas comporter d'espace et doit commencer par une lettre.
Une variable est d'un type donn ; voici la liste des types :
Types de variables alpha-numriques :
- car
: valeur de 1 caractre de longueur
- chane
: valeur de longueur variable (de 0 60 car. maxi.)
- chane(n) : valeur de longueur fixe (n caractres)
Types de variables numriques :
- entier : valeur numrique entire comprise entre -32768 et +32767
- rel : valeur numrique
Type de variables boolnnes :
- boolen :
valeur {.FAUX.|.VRAI.}
ou valeur {0 | 1}
Exemple de dclaration :
algo exemple
var
a,b,c : entiers
d : chane(20)
e : rel
f : boolen
Par dfaut les variables sont dclares locales.
Toutefois si vous dsirez les dclarer globales, il suffit d'ajouter devant la dclaration de chaque ligne de
variables le mot rserv
globale ou globales
Exemple :
var
nom,prnom : chane(20)
globales i,j,k : entiers
rue : chane
...
nom, prnom et rue sont des variables locales, c'est--dire des variables uniquement "visibles" dans la
procdure ou fonction dans laquelle elles sont dclares.
i,j,k sont des variables globales, c'est--dire des variables "visibles" dans toutes les procdures ou
fonctions.

EXPRESSION.

Une expression dsigne :


- une variable affecte ou une constante
- une combinaison de variables affectes ou de constantes avec
des oprateurs
Liste des oprateurs dans l'ordre de leur priorit :
+: unaire
NON
^ **
: exponentielle
*
: multiplication
/
: division
DIV
: division entire
MOD
: reste d'une division entire
+: binaire
&
: oprateur de concatnation de chanes de caractres
< <= = > >= <>
ET
OU

FICHIERS.
Il existe 4 organisations (squentielle, relative, indexe et binaire).
Organisation squentielle fixe :
FICHIER nom_fichier {en|(} organisation squentielle fixe [)]
{ENREGISTREMENT nom_enreg
... dclaration de l'enregistrement
{FINENREGISTREMENT}
Organisation squentielle variable :
FICHIER nom_fichier {en|(} organisation squentielle [)]
{ENREGISTREMENT nom_enreg
... dclaration de l'enregistrement
{FINENREGISTREMENT}
chaque valeur est entre " " et spare par une virgule
Organisation relative :
FICHIER nom_fichier
{en|(} organisation relative
accs {squentiel|direct|squentiel/direct}
{cl|clef} {=|:} nom_clef [)]
{ENREGISTREMENT nom_enreg
... dclaration de l'enregistrement
{FINENREGISTREMENT}
nom_clef est dclar dans la partie VAR et doit tre de type
numrique (maximum 2147483647 : attention la place disponible
sur disque !!!).
FICHIERS (suite)
Organisation indexe :
FICHIER nom_fichier
{en|(} organisation indexe
accs {squentiel|direct|squentiel/direct}
{cl|clef} [primaire] {=|:} nom_clef1
[{cl|clef} secondaire {=|:} nom_clef2]* [)]
{ENREGISTREMENT nom_enreg
... dclaration de l'enregistrement
{FINENREGISTREMENT}
nom_clef1, nom_clef2, ... sont des variables de type chane ou des
structures de variables dclares dans l'enregistrement.
Organisation binaire :

FICHIER nom_fichier {en|(} organisation binaire [)]


il n'y a pas de dclaration d'enregistrement;
FONCTIONS PROGRAMMES.
a) Dclaration d'une fonction ( la fin de l'algorithme principal) :
fonction nom_fonction ([donne : nom_var[,nom_var]* : type]*) :
type_fonction
ou
fonction nom_fonction ([e nom_var[,nom_var]* : type]*) :
type_fonction
donne ou e ou par_valeur : paramtres en entre
type_fonction : type de la fonction (entier, rel,...)
b) Appel d'une fonction :
Une fonction est appele dans les instructions d'affectation, si, tant_que et jusqu' , sauf si elle est
rcursive (dans ce cas seule l'instruction d'affectation est autorise).
c) Retour d'appel :
valret {:=|flche d'affectation} expression
ATTENTION : il faut un ESPACE aprs valret
ou
dlivre(expression)
remarque : dans le cas d'une fonction rcursive, expression doit tre une variable uniquement.
ou
nom_fonction {:=|flche d'affectation} expression

INSTRUCTIONS SQL.
Une instruction SQL commence par la ligne : EXEC SQL
et se termine par la ligne : FIN SQL
Les bases de donnes doivent tre au format Access version 2.0 au maximum.
Les instructions SQL acceptes sont les suivantes :
START DATABASE <nom base de donnes>
STOP DATABASE
Instructions sans curseur :
SELECT ...FROM .. WHERE ... GROUP BY ... HAVING ... ORDER BY
DELETE FROM ... WHERE ...
INSERT INTO ... VALUES (valeur1, valeur2,...)
UPDATE ... SET ...
Instructions avec curseur :
DECLARE nom_curseur CURSOR FOR SELECT ...
OPEN nom_curseur
CLOSE nom_curseur
FETCH nom_curseur INTO :variablehte1,:variablehte2, ...

PROCDURES.
a) Dclaration d'une procdure ( la fin de l'algorithme principal) :
Version 1 :
procdure nom_proc([{donne|rsultat|donne modifie} :

nom_var,[nom_var]* : type]*)
Version 2 :
procdure nom_proc([{e|s|es} nom_var,[nom_var]* : type ; ]*)
Version 3 :
procdure nom_proc([{par_valeur|par_adresse} nom_var,[nom_var]*
: type ; ]*)
donne ou e ou par_valeur
: paramtres en entre
rsultat ou s
: paramtres en sortie
donne modifie ou es ou par_adresse : paramtres en entre/sortie
b) Appel d'une procdure :
sans paramtres
: nom_procdure()
avec paramtre(s) : nom_procdure(param_rel1[,param_rel2]*)
Exemple :
...
proc1(a,b,c)
...
procdure proc1(e x,y : entiers ; es z : rel)
var
d : entier
dbut
lire_clavier a
z := z * x * y / d
fin

Structure d'un algorithme :


les mots obligatoires sont en caractres majuscules
les mots entre crochets sont facultatifs
ALGO nom_de_l'algo
[STRUCTURE]
dclaration de types de donnes
[CONST]
dclaration des constantes
[FICHIER]
dclaration des fichiers
[VAR]
dclaration des variables
DEBUT
...
...
lignes de l'algorithme principal
...
...
FIN
[PROCEDURE]
dclaration des procdures
...
[FONCTION]
dclaration des fonctions programmes
Les procdures et/ou les fonctions peuvent tre galement dclares en dbut d'algorithme.

Structure alternative.
si expression_logique alors
...
suite d'actions 1
...
sinon
cette
...
partie
suite d'actions 2
est
...
facultative (structure SI ... ALORS ... FINSI)
fin_si

Si le rsultat de l'expression logique est VRAI, la suite d'actions 1 est ralise et l'algorithme continue
son droulement apres l'instruction FIN_SI.
Si le rsultat de l'expression logique est FAUX, la suite d'actions 2 est ralise.
Exemple :
si code_tva = "A" alors
tva := montant_ht * 0.055
sinon
tva := montant_ht * 0.206
fin_si

Structure itrative : pour ... fin_pour


pour identificateur := valeur_initiale valeur_finale [pas := valeur]
...
suite d'actions
...
fin_pour
Cette structure permet de rpter une suite d'actions un nombre de fois CONNU.
L'identificateur est de type numrique (entier ou rel).
La valeur initiale et la valeur finale sont des expressions numriques de type entier ou rel.
L'incrment (pas) est la valeur d'augmentation (ou de diminution) progressive de l'identificateur. La
valeur par dfaut est de 1.
La boucle est ralise jusqu' ce que la valeur finale soit dpasse.
Exemple :
pour i := 1 12
crire_cran nom_mois[i]
fin_pour

Structure rptitive : ITER ....SORTIRSI .... FINITER


Cette structure permet la rptition des lignes comprises entre
Iter et Finiter.
La sortie de cette structure est ralise dans l'instruction
SORTIRSI expr_logique
lorsque l'expression logique est VRAIE.
Structure rptitive : Rpter ... jusqu
rpter
...
suite d'actions
...
jusqu expression_logique
La suite d'actions est ralise jusqu' ce que le rsultat de l'expression logique soit VRAIE ;
lorsque le rsultat est VRAI, l'algorithme continue aprs l'instruction jusqu.
Le rsultat de l'expression logique VRAI permet donc l'arrt de la rptition de l'excution de la suite
d'actions.
Dans cette structure, la suite d'actions est ralise de 1 n fois
( ce propos voir la structure rptitive Tant_que ... fin_tant_que)
Exemple :
rpter
.

lire_clavier "code catgorie (1, 2 ou 3) ? ",code_catgorie


jusqu code_catgorie >= 1 et code_catgorie <= 3
Structure rptitive : TANT QUE
tant_que expression_logique
...
suite d'actions
...
fin_tant_que
Tant que le rsultat de l'expression logique est VRAI, la suite d'actions est ralise ;
lorsque le rsultat est FAUX, l'algorithme continue aprs l'instruction fin_tant_que.
Dans cette structure, la suite d'actions est ralise de 0 n fois
( ce propos voir la structure rptitive Rpter ... Jusqu')
Exemple :
lire_clavier "Nom du client ou FIN ? ",cli_nom
tant_que majuscule(cli_nom) <> "FIN"
lire_clavier cli_rue
...
lire_clavier "Nom du client ou FIN ? ",cli_nom
fin_tant_que
TABLEAUX
Un tableau est une structure de donne linaire qui permet de stocker des donnes de mme type.
Chacune des valeurs est repre par un indice indiquant la position de la donne dans le tableau.
Format 1 :
<nom_du_tableau>[indice1,indice2,indice3] : tableau de <type>
Format 2 :
<nom_du_tableau> : tableau[indice1,indice2,indice3] de <type>
On peut dfinir pour chaque indice, l'indice minimum et l'indice maximum :
<indice_minimum:indice_maximum>
Exemple 1 :
t1[5,6],t2[10] : tableaux de rels
t[0:20]
: tableau de chane(10)
Exemple 2 :
var t[100] : tableau d'entiers
dbut
charge_tableau(t)
affiche_tableau(t)
fin
procdure charge_tableau(t[]:tableau d'entiers)
var i : entier
dbut
pour i:=1 100
t[i] := i * 100
fin_pour
fin
procdure affiche_tableau(t[]:tableau d'entiers)
var i : entier
dbut
pour i := 1 100
crire_cran t[i]
fin_pour
fin

III.

Fonctions standard

Tableau des fonctions


Rsultat

p1
entier, rel

abs(p1)

valeur absolue de
p1

entier,
rel

alea()

nombre alatoire
compris entre 0 et
1
code ansi du
premier caractre.
de p1
partie entire de
p1 avec arrondi
commercial
arc tangente de p1

rel

ansi(p1)

p2

p3

code
algexec.ini
505
515

entier

car, chane

503

entier,
rel

entier, rel

520

entier,
rel

entier, rel

516

caractre ayant
pour code ansi la
valeur de p1
convertit p1 en
nombre

car,
chane

entier

509

entier,rel

chane

502

position courante
du curseur (N de
la colonne)
cosinus de p1

entier
entier,
rel

entier, rel

517

cvchane(p1)

convertit p1 en
chane

chane

entier, rel

508

datesyst()

date systme au
format jj/mm/aaaa

chane

dcimale(p1)

partie dcimale de
p1

rel

rel

droite(p1,p2)

partie droite de
p1 ; p2 = nombre
de caractres
retourns
partie entire de
p1 sans arrondi

chane

chane

entier,
rel

rel

506

rsultat dune
lecture, criture,
(fichier)
rsultat dune
instruction SQL

boolen

nom du fichier

529

retourne un
nombre despaces
gal p1
supprime les
espaces droite de
p1
supprime les
espaces gauche
de p1
rsultat dune
lecture (fichier)

chane

entier

533

chane

chane

537

chane

chane

538

boolen

nom de
lenregistrement

530

arrondi(p1)
atn(p1)
car(p1)
chnombre(p1)
colonne()
cos(p1)

ent(p1)
erreur(p1)
erreur_sql()
espace(p1)
espacedroite(p1)
espacegauche(p1)
existe(p1)

523

513

boolen

507
entier

511

539

exp(p1)

exponentielle de
p1

entier,
rel

entier, rel

519

ff(p1)

rsultat dune
lecture (fichier)

boolen

nom du fichier

531

gauche(p1,p2)

partie gauche de
p1 ;p2 = nombre
de caractres
retourns
heure systme au
format hh:mm:ss

chane

chane

valeur
hexadcimale de
p1
position courante
du curseur (N de
la ligne)
longueur de p1

chane

entier

chane

501

maj(p1)

caractres de p1
en majuscule

chane

chane

527

milieu(p1,p2,p3)

sous-chane de p1
de p3 caractres
partir de la
position p2 incluse
caractres de p1
en minuscule

chane

entier

chane

chane

528

rac2(p1)

racine carre de p1

entier,
rel

entier, rel

524

rang(p1,p2,p3)

position du 1er car.


de p2 dans p1 ; p3
est la position de
dpart
chane constitue
de la rptition de
p1 caractres
(p2=code ansi du
car.)
sinus de p1

entier

chane

chane

entier

534

entier,
rel

entier, rel

518

supprime de p1
une sous-chane de
longueur p3
partir de p2 inclus
dplace le curseur
la colonne p1

chane

chane

tan(p1)

tangente de p1

entier,
rel

uncar()

lit un caractre au
clavier

car,
chane

536

unetouche()

lit un caractre au
clavier

car,
chane

522

heuresyst()
hex(p1)
ligne()
long(p1)

min(p1)

rptecar(p1,p2)

sin(p1)
suppr(p1,p2,p3)

tab(p1)

entier

510

chane

514
entier

521

entier

535

entier

chane

entier

512

entier

entier

504

532

entier

525

entier, rel

526