• 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

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

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

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

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

[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

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