• Aucun résultat trouvé

Donn ´ees

N/A
N/A
Protected

Academic year: 2022

Partager "Donn ´ees"

Copied!
2
0
0

Texte intégral

(1)

Le Langage Pseudo-Code

Cours d’Algorithmique 1er Semestre (Fr ´ed ´eric Koriche) IUT Informatique de Lens

Donn ´ees

En algorithmique, toute donn ´ee est d ´efinie par

I sonnom: d ´esigne la donn ´ee dans l’algorithme,

I sontype: d ´esigne le domaine de valeurs de la donn ´ee, et

I sanature: variable (peut changer de valeur) ou constante (ne peut pas changer de valeur).

Types Simples

Type Domaine

bool ´een {faux,vrai}

caract `ere Symboles typographiques

entier Z

r ´eel R

Op ´erateurs

Un op ´erateur est unefonctiond ´efinie par

I sonarit ´e: d ´esigne le nombre de variables d’entr ´ee,

I saposition: l’op ´erateur peut ˆetre pr ´efixe (devant), infixe (milieu) ou postfixe (derri `ere), et

I sontype: d ´esigne le type de ses entr ´ees et celui de sa sortie.

Exemple: L’op ´erateur d’addition sur les entiers

Op ´erateur binaire, not ´e+ (position infixe), dont le type est:

+ : entier×entierentier

Op ´erateurs sur les types simples

I Arithm ´etiques (entiers): toutes les entr ´ees sont desentierset la sortie est un entier.

Nom Symbole

addition +

soustraction −

multiplication × division enti `ere /

reste mod

inversion de signe −

I Arithm ´etiques (r ´eels): au moins une entr ´ee est unr ´eelet la sortie est un r ´eel.

Nom Symbole

addition +

soustraction −

multiplication ×

division /

inversion de signe −

I Comparaisons: les deux entr ´ees sont desentiers,caract `eres our ´eels. La sortie est un bool ´een.

Nom Symbole

est ´egal `a =

est plus petit que <

est plus grand que >

est plus petit ou ´egal `a ≤ est plus grand ou ´egal `a ≥

I Logiques: toutes les entr ´ees sont des bool ´eenset la sortie est un bool ´een.

Nom Symbole

conjonction et disjonction ou n ´egation non

Expressions

Une expression est une composition d’op ´erations dont l’ordre est sp ´ecifi ´e par les parenth `eses.

Letype d’une expression est donn ´e par le type de sa valeur de sortie Exemple: Supposons quex,y,z soient des entiers.

I (x >0)et(y <0)est une expression bool ´eenne

I (x +y)/z est une expression enti `ere

Instructions

Une instruction est uneaction `a accomplir par l’algorithme. Les quatre instructions de base sont lad ´eclaration(m ´emoire), l’assignation (calcul), lalecture(entr ´ees) et l’´ecriture(sorties).

Instruction Sp ´ecification D ´eclaration type variable

Assignation variable←− expression Lecture lirevariable

Ecriture ´ecrireexpression

Blocs

Un bloc est une s ´equence d’instructions identifi ´ee par une barre verticale.

Exemple: permutation de valeurs d ´ebut

entiera,b,temp lirea, b

temp←−a a←−b b ←−temp affichera, b fin

L’instruction de test ”si alors”

Dans l’instruction si condition alors bloc, la condition est une expression bool ´eenne, et le bloc n’est ex ´ecut ´e que si la condition est vraie.

Exemple: valeur absolue d ´ebut

r ´eelx,y lirex y ←x

siy <0 alors y ← −y affichery fin

L’instruction de test ”si alors sinon”

Danssicondition alorsbloc 1sinonbloc 2, la condition est une expression bool ´eenne. Le bloc 1 est ex ´ecut ´e si la condition est vraie ; le bloc 2 est ex ´ecut ´e si la condition est fausse.

Exemple: racine carr ´ee d ´ebut

r ´eelx,y lirex

six ≥0 alors y ←sqrt(x) affichery sinon

afficher”Valeur ind ´efinie”

fin

L’instruction de test ”suivant cas”

Dans l’instructionsuivant condition cas o `u v1 bloc 1 cas o `u v2 bloc 2 . . . , la condition est une expression pouvant prendre plusieurs valeurs v1,v2, . . .. Selon la valeur de la condition, le bloc du cas correspondant est ex ´ecut ´e.

Exemple: choix de menu d ´ebut

entiermenu liremenu

suivantmenufaire cas o `u 1

afficher”Menu enfants”

cas o `u 2

afficher”Menu v ´eg ´etarien”

autres cas

afficher”Menu standard”

fin

L’instruction de boucle ”pour”

L’instructionpourest utilis ´ee lorsque le nombre d’it ´erations est connu `a l’avance: elle initialise un compteur, l’incr ´emente apr `es chaque ex ´ecution du bloc d’instructions, et v ´erifie que le compteur ne d ´epasse pas la borne sup ´erieure.

Exemple: Somme des entiers de 1 `an d ´ebut

entiern, s, i liren

s ←0

pouri de1 `an faire s ←s+i

affichers fin

L’instruction de boucle ”tant que”

La boucle tant que est utilis ´ee lorsque le nombre d’it ´erations n’est pas connu `a l’avance: elle ex ´ecute le bloc d’instructions tant que la condition reste vraie.

Exemple: Somme des entr ´ees saisies par l’utilisateur (version ”tant que”) d ´ebut

entiern←1,s ←0 tant quen 6=0 faire

afficher”Entrer un entier (0 pour arr ˆeter) : ” liren

s ←s+n affichers fin

L’instruction de boucle ”r ´ep ´eter jusqu’ `a”

La boucle r ´ep ´eter jusqu’ `a est utilis ´ee lorsque le nombre d’it ´erations n’est pas connu `a l’avance, et qu’il faut lancerau moins une ex ´ecution du bloc d’instructions. Elle ex ´ecute le bloc jusqu’ `a ce que la condition d’arr ˆet devienne vraie.

Exemple: Somme des entr ´ees saisies par l’utilisateur (version ”r ´ep ´eter jusqu’ `a”) d ´ebut

entiern, s ←0 r ´ep ´eter

liren s ←s+n jusqu’ `an =0 affichers fin

(2)

Le Langage Pseudo-Code

Cours d’Algorithmique 1er Semestre (Fr ´ed ´eric Koriche) IUT Informatique de Lens

Tableaux Statiques Unidimensionnels

Untableau(statique unidimensionnel) est une s ´equence de donn ´ees du m ˆeme type accessibles par leur index. Il est d ´efini par:

I sonnom,

I le typede ses ´el ´ements, et

I satailleou le nombre de ses ´el ´ements.

Le premier index d’un tableau deN ´el ´ements est 0et le dernier index estN −1.

0 1 2 3 4 5 6 7

12 14 16 09 11 10 13 17

Un tableau de 8 entiers

Les seules op ´erations possibles sont la d ´eclaration, l’initialisation (d ´eclaration avec valeurs initiales) et l’acc `es `a ses ´el ´ements.

Op ´eration Sp ´ecification Exemple

D ´eclaration type nom[taille] entiertab[10]

Initialisation type nom[n]← {v1,· · · ,vn} caract `erevoyelles[5]← {’a’,’e’,’i’,’o’,’u’,’y’}

Acc `es nom[index] voyelles[i]

Tableaux Statiques Multidimensionnels

Untableau statique de dimension dest une s ´equence de tableaux de dimensiond−1. En particulier, une matrice est un tableau de dimension 2. Comme pour tous les tableaux statiques, les seules op ´erations possibles sont lad ´eclaration, l’initialisationet l’acc `es `a ses ´el ´ements.

Op ´eration Sp ´ecification Exemple

D ´ecl. type nom[rang ´ees][colonnes] r ´eel matrice[4][4]

Init. type nom[m][n]← {{v11,· · · ,v1n},· · ·,{vm1,· · · ,vmn}} r ´eel unit ´e[2][2] ← {{1,0},{0,1}}

Acc `es nom[rang ´ee][colonne] matrice[i][j]

Tableaux Dynamiques

Un tableau dynamique (unidimensionnel) ou vecteur est une s ´equence de donn ´ees du m ˆeme type ; la taille de la s ´equence est variable(elle peut changer au cours de l’ex ´ecution du programme).

En plus des op ´erations de tableaux statiques, les vecteurs permettent des op ´erations de copie et de modification.

Op ´eration Sp ´ecification Exemple

D ´eclaration vecteur de type nom vecteur de r ´eelsv

Initialisation vecteur de type nom(quantit ´e,valeur) vecteur de r ´eelsv(10,0)

Copie nom1 ←−nom2 v ←w

Acc `es aux ´el ´ements nom[index] v[i]

Acc `es `a la taille longueur(nom) longueur(v)

Test du vecteur vide vide(nom) si(vide(v))alors . . .

Ajout d’un ´el ´ement `a la fin ´etend ´etend(v,10.0)

Chaˆınes

Une chaˆıne est un tableau dynamique unidimensionnel compos ´e de caract `eres ascii. En plus des op ´erations de vecteurs, les chaˆınes permettent des op ´erations decomparaison lexicographique.

Op ´eration Sp ´ecification Exemple

D ´eclaration chaˆınenom chaˆınec

Initialisation chaˆınenom ←constante chaˆıne chaˆınec ←”Bonjour”

Copie nom1 ←−nom2 c ←d

Acc `es aux ´el ´ements nom[index] c[i]

Acc `es `a la taille longueur(nom) longueur(c)

Test de la chaˆıne vide vide(nom) si(vide(c)) alors . . .

Concat ´enation + c ←c +d

Comparaisons ≤, <,=,6=, >,≥ si(c 6= d)alors . . .

Typage

Il est possible de construire de nouveaux types `a partir de types pr ´ed ´efinis en utilisant le mot-cl ´e type.

En pseudo-code les types apparaissent avant les algorithmes.

Exemple: d ´eclaration d’un type et d’une variable de ce type type entierMatriceDeRotation [2][2]

d ´ebut

MatriceDeRotation m . . .

fin

Enum ´erations

Une ´enum ´eration(ou type ´enum ´er ´e) est un type dont le domaine de valeurs est d ´efini par le programmeur.

Op ´eration Sp ´ecification Exemple

D ´eclaration de type ´enum ´erationNom {v1,· · · ,vn} ´enum ´erationCouleurs {r,v,b}

D ´eclaration de variable Nom variable Couleurs c

Copie variable enum←−donn ´ee ´enum c ←r

Conversion variable enum←−(Nom)donn ´ee enti `ere c ←(Couleurs)2

Comparaisons ≤, <,=,6=, >,≥ si(c =r)alors . . .

Structures

Unestructureest un type composite form ´e par plusieurs types group ´es ensembles.

Op ´eration Sp ´ecification Exemple

D ´ecl. de type structureNom {Type 1 nom 1,· · · ,Type k nom k} structurePoint {r ´eelx,r ´eely}

D ´ecl. de variable Nom variable Point p

Copie variable1 ←−variable2 p ←q

Acc `es . p.x

Exemple: d ´eclaration d’un tableau de structures structure Point

r ´eel x r ´eel y

type Point Figure[100]

d ´ebut Pointp

afficherp.x // Affiche l’abscisse du point p

Figuref

afficherf[0].x // Affiche l’abscisse du premier point de la figure f fin

Fonctions

En algorithmique, unefonctionest d ´efinie par deux parties:

I Uneen-t ˆete: elle sp ´ecifie le type de la fonction, c’est `a dire, le type de ses donn ´ees d’entr ´ees et le type de sa valeur de sortie.

I Uncorps: il sp ´ecifie l’algorithme permettant de passer des donn ´ees d’entr ´ee `a la valeur de sortie.

La d ´eclaration d’une fonction consiste `a sp ´ecifier seulement l’en-t ˆete de la fonction. La d ´efinition d’une fonction consiste `a sp ´ecifier `a la fois l’en-t ˆete et le corps de la fonction.

Exemple: d ´efinition de la fonction factorielle r ´eelfact(entiern)

d ´ebut entieri r ´eel f ←1

pour i de1 `a nfaire f ←f ∗i

retournerf fin

Algorithmes de construction

Les algorithmes permettant de construire des ensembles (tableaux, chaˆınes, etc.) utilisent des boucles ”pour”: il faut construire tous les ´el ´ements de l’ensemble.

Exemple: addition de deux matrices type r ´eel Matrice[4][4]

Matriceaddition(MatriceA, MatriceB) d ´ebut

Matrice C entieri

pour i de0 `a 3faire C[i]←A[i] +B[i]

retournerC fin

Algorithmes de recherche

Les algorithmes permettant de rechercher un objet dans un ensemble utilisent des boucles

”tant que”: la recherche s’arr ˆete d `es que l’ ´el ´ement est trouv ´e

Exemple: recherche un entier dans un vecteur non tri ´e; si la valeur recherch ´ee est pr ´esente alors l’algorithme retourne son index, sinon il retourne la taille du vecteur

entierrechercher(vecteur d’entiers tab, entierx) d ´ebut

bool ´een trouv ´e←faux entieri ←0

tant que (i <longueur(tab))et(nontrouv ´e) faire trouv ´e←tab[i] =x

si nontrouv ´e alorsi ←i+1 retourneri

fin

Algorithmes de recherche dichotomique

Les algorithmes permettant de rechercher un objet dans un ensemble tri ´e peuvent ex- ploiter la dichotomie (beaucoup plus rapide).

entierdichotomie(vecteur d’entiers tab,entierx) d ´ebut

entiermilieu,gauche←0,droite ←longueur(tab) r ´ep ´eter

milieu←(gauche+droite)/2

six < tab[milieu] alorsdroite ←milieu−1 six > tab[milieu] alorsgauche←milieu+1 jusqu’ `a (gauche>droite)ou(tab[milieu] =x) sigauche>droite alorsmilieu←longueur(tab) retournermilieu

fin

Algorithmes de tri

Les algorithmes de tri simple (insertion, s ´election) utilisent deux boucles ”pour”

triParSelection(vecteur d’entierstab) d ´ebut

entieri,j

pour i de0 `alongueur(tab)−2faire

pour j dei +1 `alongueur(tab)−1 faire sitab[j] <tab[i]alors

permuter(tab[i],tab[j]) fin

Références

Documents relatifs

Lorsque des «ratés ll se pro- duisent, ma collègue et moi cherchons une solution chacune de notre côté afin de réduire pour l' élève le sent iment d'échec et

Les instructions (corps de la boucle) sont exécutées tant que la condition est vraie, on sort de la boucle dès que la condition devient fausse.  dans la boucle while le test

La condition est ´ evalu´ ee avant chaque passage dans la boucle, ` a chaque fois qu’elle est v´ erifi´ ee, on ex´ ecute les instructions de la boucle. Un fois que la condition

[r]

Mais il est fort probable qu’il s’agisse d’une fraction de π , et donc considéré comme un nombre décimal par la machine.. On va donc diviser A par π , pour ne conserver que

Introduction.- En langage C, l’acc`es ` a un ´el´ement d’un tableau peut se faire classiquement par le nom du tableau accompagn´e d’un index, mais aussi par un pointeur

Perdre ses photos de vacances : ¸ca n’a pas de

Ce nombre F (n, c) se d´ eduit de la remarque suivante : ceux des coloriages o` u le secteur n est bord´ e de deux couleurs diff´ erentes peuvent ˆ etre mis en correspondance avec les