0% ont trouvé ce document utile (0 vote)
76 vues172 pages

Introduction à l'algorithmique en Java

Transféré par

Cedric Decraim
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
76 vues172 pages

Introduction à l'algorithmique en Java

Transféré par

Cedric Decraim
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Algorithmique en Java

Initiation à la programmation

1
Brainstorm Consulting
Table des matières

● Introduction
● Les variables
● Les opérateurs conditionnels
● Les structures conditionnelles
● Les structures itératives
● Les tableaux
● Les sous-programmes
● Suppléments

2
Brainstorm Consulting
INTRODUCTION À
L’ALGORITHMIQUE
3
Brainstorm Consulting
Courage, rigueur et persévérance
• L’apprentissage des techniques et méthodes de programmation est un long processus
constitué d’une multitude d’efforts à accomplir et d’embuches à surmonter !

• De même, développer un programme informatique est un long chemin composé d’un grand
nombre de petites étapes !

4
Brainstorm Consulting
Ordinateur, machine programmable

5
Brainstorm Consulting
Ordinateur, machine programmable
• Un ordinateur n’a pas de cerveau ! Il est donc nécessaire de lui dire tout ce qu’il doit
faire.

• L’algorithmique est là pour nous aider.

6
Brainstorm Consulting
Composants importants d’un ordinateur
• Processeur : permet d’exécuter des opérations basiques comme des calculs arithmétiques. Il est
composé de :

– Une unité arithmétique et logique

– Une unité de contrôle

– Une horloge

– Des registres

• Mémoire : permet à l’ordinateur d’enregistrer des informations.

• Bien qu’il y ait d’autres composants dans un ordinateur, nous nous intéresserons au processeur et à la
mémoire
7
Brainstorm Consulting
La mémoire
● Zone où l’ordinateur enregistre les données dont il a besoin pour fonctionner.
● Plusieurs types de mémoire dans un ordinateur :

○ RAM (ou mémoire vive) : utilisée dynamiquement par l’ordinateur, aucune


information n’est conservée une fois le système éteint. Cette mémoire est dite
volatile.

○ ROM : mémoire stockant des informations de manière permanente. Cette


mémoire est dite non volatile. Un exemple de cette mémoire est le disque dur.

8
Brainstorm Consulting
Algorithme ?
• Suite d’instructions précises permettant de résoudre un problème de manière automatique.

• Nous utilisons des « éléments algorithmiques » pour les construire.

• Composé de trois parties :

– Ce que l’on donne à l’algorithme.

– Ce qu’il fait (instructions précises).

– Ce que l’on attend comme résultat.

• Contrairement à ce que l’on pourrait penser de prime abord, l’informatique n’est pas la première
science concernée par l’algorithmique, cet honneur revient aux mathématiques.
9
Brainstorm Consulting
Recette de cuisine
• Un algorithme peut être comparé à une recette de cuisine. Elle décrit la marche à suivre, mais
c’est la personne exécutant les instructions qui réalise le plat.

• Les 3 parties sont présentes :

– Ce que l’on donne à l’algorithme : les ingrédients (pomme, poire, farine…)

– Ce que l’algorithme fait : les instructions (découper les pommes en quart…)

– Ce que l’on attend comme résultat : la recette réussie (crumble aux pommes et aux poires)

• Il n’y a donc rien de mystique ni de quantique dans l’algorithmique !

10
Brainstorm Consulting
Utilité d’un algorithme
• Nous retrouvons des algorithmes partout dans notre vie de tous les jours.

– Lorsqu’un GPS calcule le chemin le plus rapide vers une destination, il utilise un algorithme

– Une recherche sur un moteur de recherche fait appel à un algorithme

– Lorsqu’une intelligence artificielle doit prendre une décision, cette prise de décision est basée sur
un algorithme

11
Brainstorm Consulting
Instant réflexion
● À chaque utilisation de programme ou même parfois lors de certains raisonnements,
vous utilisez des algorithmes potentiellement célèbres.

● Pouvez-vous en citer ? (Si ce n’est leur nom, au moins leur utilité)

12
Brainstorm Consulting
Algorithme et programme : Nuances
Algorithme Programme
• Suite d’instructions totalement • Suite d’instructions, compréhensibles par
indépendantes de la technologie. l’ordinateur, permettant d’exécuter une
tâche.
• Solution abstraite à un problème donné.
• Peut être écrit dans différents langages
• Peut être réalisé à l’aide d’un simple (dits de programmation) conçus pour être
éditeur de texte ou même sur papier. compris par l’ordinateur : C, C#, Java,
Python, Ruby,…
• Un même algorithme peut être utilisé par
plusieurs programmes (qui peuvent être • Un programme met en œuvre un (ou
écrits dans différents langages) plusieurs) algorithme(s).

13
Brainstorm Consulting
Algorithme et programme : Dijkstra
● L’algorithme de Dijkstra (bien que méconnu par les non-informaticiens) est présent
dans divers domaines… Et pour cause, il permet de trouver le plus court chemin entre
un point A et un point B !

● Exemple ?

14
Brainstorm Consulting
Algorithme et programme : Dijkstra
• Cet algorithme « n’est qu’une » suite d’instruction que même un humain peut suivre
pour trouver le plus court chemin.

• Ceci dit, nous imaginons mal un conducteur faire lui-même cette suite d’instructions
pour trouver le chemin qui lui convient (long et possibilité d’erreurs).

• Des programmeurs ont transformé cet algorithme en programmes.

• Dans les exemples suivants, nous utiliserons des algorithmes plus « simples »,
contenant moins d’instructions

15
Brainstorm Consulting
Représentation d’un algorithme

• Représentation des instructions de manière structurée.


• Initialement sous forme d’organigramme.
• Exemple :

Algorithme d’Euclide permettant


de calculer le PGCD de deux entiers.

•Cette représentation fut rapidement


abandonnée au profit du pseudo-code.

16
Brainstorm Consulting
Pseudo-code
• Représentation des étapes sous forme écrite, Algorithme EuclidePGCD
de manière structurée.
Variable a, b, r : entier,
• La taille de l’algorithme n’influence pas la DEBUT
lisibilité et la compréhension du Lire(a)
pseudo-code. Lire(b)
TANT QUE (r ← a MOD b) ≠ 0 FAIRE
• Structure les instructions menant à la a ← b
résolution du problème pour lequel b ← r
l’algorithme a été élaboré. FINTQ
Ecrire("PGCD = ", b)
• Exemple : algorithme d’Euclide en FIN
pseudo-code.

17
Brainstorm Consulting
Pseudo-code : Structure de base
• Un algorithme est toujours divisé en trois
parties distinctes :
Algorithme EuclidePGCD
• Le nom de l’algorithme.
Variable a, b, r : entier
• La partie déclarative. Nous y déclarons les
DEBUT variables et constantes (nous verrons
Lire(a) bientôt ce qu’elles représentent).
Lire(b)
TANT QUE (r ← a MOD b) ≠ 0 FAIRE
a ← b
b ← r • Les instructions de l’algorithme délimitées
FINTQ par les mots-clés « Debut » et « Fin ».
Ecrire("PGCD = ", b)
FIN

18
Brainstorm Consulting
Langage de programmation
• Permets de faire exécuter des instructions concrètes à un ordinateur.

• Réalise de manière concrète les instructions définies dans un algorithme.

• Il existe de nombreux langages différents. Ils possèdent des éléments communs, mais
également des spécificités qui leur sont propres.

19
Brainstorm Consulting
Choix d’implémentation pour le cours : flowgorithm

● Afin de pouvoir mettre en application les notions


d’algorithmique, nous utiliserons Flowgorithm

● Flowgorithm est un outil de création et modification


graphiques de programmes informatiques sous
forme d'ordinogramme. Il permet ensuite aux
programmeurs d'exécuter ces programmes tout en
pouvant en suivre graphiquement le déroulement .

● Il est disponible ici :


[Link]

20
Brainstorm Consulting
Remarques importantes
• Il s’agit ici d’un cours d’algorithmique et non d’un cours de Java. Ce langage est utilisé à
titre d’exemple afin d’illustrer de manière concrète les concepts d’algorithmique que
nous allons aborder.

• Les notions d’orienté-objet ne seront pas abordées dans ce cours qui est uniquement
dédié aux concepts d’algorithmique.

21
Brainstorm Consulting
Petite histoire de Java
● Java :

○ est né en 1995

○ a été créé par JamesGosling et Patrick Naughton

○ doit son nom à la boisson favorite des programmeurs le café traduit en argot américain : java

○ est un langage orienté objet compilé (traduit d'abord en langage machine)

○ Est à la version 11.0.2

22
Brainstorm Consulting
Que peut-on faire avec lui ?
● Des petits programmes appelés applets (mort)
● Des jeux, des suites bureautiques, des logiciels multimédias, des clients de
messagerie…
● Des applications web
● Connexion aux bases de données
● Développer des applications mobiles

23
Brainstorm Consulting
Télécharger et installer
● [Link]
● Cliquer sur Download
● Installer + Oui téléchargement de JAVA
● Lancer eclipse
ou
● [Link]
● Cliquer sur Downloas dans la version Community
● Installer + Oui téléchargement de JAVA
● Lancer Intellij

24
Brainstorm Consulting
Changer le thème couleur

• Download sur [Link]

• Intellij -> File -> Import Settings -> Sélectionnez le fichier .zip

• Si pas activé au redémarrage : Settings -> Editor -> Colors & Fonts

25
Brainstorm Consulting
ALGORITHMIQUE : LES BASES

26
Brainstorm Consulting
LES VARIABLES

27
Brainstorm Consulting
Un monde de variables

• Un ordinateur doit retenir des informations temporaires pour


exécuter des tâches.

• Une variable peut être comparée à un tiroir avec une étiquette.

– L’étiquette permet de lui donner un nom

– L’intérieur du tiroir permet d’y ranger l’information

• Ces variables se trouvent dans la RAM. Cette dernière est comme


une immense armoire à tiroirs. En terme informatique :

– L’étiquette du tiroir est une adresse

– Le contenu du tiroir est une valeur


28
Brainstorm Consulting
Variables
• Une variable est donc un élément de programmation auquel on affecte une valeur
particulière pouvant être modifiée au cours de l’algorithme

• Une variable est définie par :

– Un nom : un identifiant unique permettant de la désigner

– Un type : définit quel type de valeur la variable peut contenir

– Un emplacement en mémoire RAM, représenté par son adresse

– Une valeur : correspondant au type

29
Brainstorm Consulting
Typage des variables
• Comme expliqué précédemment, une variable est entre autres définie par le type de valeur qu’elle
peut contenir.

• Il existe de nombreux types :

– Entier : 1, 2, 5, 6, 42…

/!\ Notez le . et non la ,


– Réel : 0.14, 157.1547, 3.1415…

– Caractère : 'a', 'B', '^'…

– Texte : "Bonjour", "Je suis de type texte"…

– Logique ou booléen : vrai ou faux (nous en reparlerons dans le chapitre sur les structures conditionnelles.)

30
Brainstorm Consulting
Déclarer une variable
• Déclarer une variable consiste à réserver un emplacement en mémoire afin de
pouvoir l’utiliser par la suite.

• Pour déclarer une variable, il nous faut spécifier 2 choses : son nom et son type. Il est
important de choisir un nom cohérent qui permet de facilement comprendre l’utilité
de la variable.

• En pseudo-code : Variable identificateur : Type

Variable age : Entier


• Exemples : Variable message : Texte

31
Brainstorm Consulting
Les constantes
• Dans nos algorithmes, nous avons parfois besoin de valeurs qui ne changent pas au cours de
l’exécution.

• Exemple : la valeur du nombre π (pi) ou encore le pourcentage de TVA.

• Ces valeurs sont appelées des constantes, car elles ne changent pas durant l’exécution de
l’algorithme.

• Voici comment déclarer une constante en pseudo-code :


Constante PI = 3.141592,
TAUXTVA = 0.21

32
Brainstorm Consulting
Bonnes pratiques

• Le choix des noms de variable doit rester cohérent. À la relecture de l’algorithme, il doit
être possible de comprendre le sens d’une variable en fonction de son nom. L’alphabet
n’est pas une bonne idée.

• Éviter les accents pour des raisons informatiques. Les langages sont écrits en anglais, et
cette langue ne comprend pas les accents
• Le nom d'une variable ne peut commencer par un chiffre mais il peut en contenir

• Une bonne pratique est d’utiliser le « lowerCamelCase » ou le « UpperCamelCase ». Le


choix dépend des conventions que certains langages utilisent. En Java, c’est le
« lowerCamelCase » qui est principalement utilisé. Et le « UpperCamelCase » pour le
nom des classes.

• Pour les constantes, c’est « UPPERCASE ».

33
Brainstorm Consulting
Mots réservés en Java
● Le nom d'une variable ne peut être un des mots suivants car ils ont une signification en Java.
abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends false final finally
float for goto if implements
import instanceof int interface long
native new null package private
protected public return short static
strictfp super switch synchronized this
throw throws transient true try
void volatile while

34
Brainstorm Consulting
Affectation
• Une fois une variable déclarée, il faut pouvoir lui donner une valeur. Cette opération
s’appelle une affectation.

• La première affectation est appelée initialisation. Il s’agit d’une opération importante :


on ne peut pas utiliser une variable ne possédant pas de valeur.

• En pseudo-code : identificateur ← valeur

• Exemple : message ← "Bonjour"

35
Brainstorm Consulting
Affectation
• L’initialisation est primordiale :
Variable a, b : Entier
Debut
b ← a + 2 Quelle est la valeur de A ?
Fin

• Il est important de respecter le typage des variables :

Variable a : Entier
Debut
a ← "Bonsoir" Ceci ne fonctionnera pas !
Fin La variable A est de type Entier

36
Brainstorm Consulting
Java : Déclaration et affectation d’une variable
• En Java, une variable se déclare de la manière suivante :
type nomVariable;

– Il est interdit d’utiliser des caractères accentués dans les noms de variables.
• L’affectation ne se fait pas avec une flèche, mais avec un « = ». Type Type
• Voici les différents types de variables en Java : Pseudo Java
Entier int
nomVariable = "valeur";
Réel double
Caractère char
• Il est possible de déclarer et d'initialiser un variable en même temps
Texte String
type nomVariable = "valeur";
/!\ Booléen boolean
Majuscule
37
Brainstorm Consulting
Exemple : Java

• Voici un exemple de déclaration et d’initialisation de variables :


char caractere = 'a';
int age = 10;
String message1 = "Bonsoir"; double temperature = 15.6;
String message2 = "Je m'appelle"; boolean booleen = true;
String message3 = "Son \"nom\" est :";

• \n permet de renvoyer à la ligne. Pour afficher un \, il faut l'échapper : \\

• Pour afficher le contenu d'une variable :


// avec un retour à la ligne
[Link](message1); Astuce ☺
// sans retour à la ligne eclipse : sysout + ctrl + espace
[Link](message1); intellij : sout + tab

38
Brainstorm Consulting
Exercice
● exo00 - Stockez dans une variable nommé message la chaine de caractères
"Bienvenue" et affichez son contenu à l'écran

39
Brainstorm Consulting
Inverser le contenu de deux variables

● exo01-Trouvez une méthode permettant d’inverser le contenu de deux


variables (du même type évidemment). Si a = 5 et b = 7, après ce traitement, a =
7 et b = 5.

40
Brainstorm Consulting
Opérations entrées/sorties
• Il est très régulièrement nécessaire d’interagir avec un algorithme. Comme vu dans l’introduction,
nous pouvons communiquer des informations à un algorithme et il peut nous en communiquer
également.

• 2 opérations sont mises à notre disposition :

– Lire, opération d’entrée

– Ecrire, opération de sortie

• Attention ! Ces deux opérations doivent être comprises du point de vue de l’ordinateur. L’opération
Ecrire va donc écrire une information (que nous pourrons lire sur l’écran par exemple) et l’opération
Lire va enregistrer une valeur (écrite sur le clavier par exemple).
41
Brainstorm Consulting
42
Brainstorm Consulting
Ecrire
• Opération permettant de communiquer une
information au « monde extérieur ». Ce qui
peut être : Variable message : Texte
DEBUT
– L’écran de l’ordinateur
message ← "Bonne
– Une autre machine journée"
Ecrire(message)
• Déroulement de cette opération : FIN

1. Lecture de la valeur de la variable spécifiée

2. Communication de cette valeur au monde


extérieur
43
Brainstorm Consulting
Lire
• Opération permettant de récupérer de
l’information du « monde extérieur ». Ce qui peut
être :
Variable message : Texte
– Saisie au clavier DEBUT
Lire(message)
– Info d’une machine (sonde de température ou autre
ordinateur par exemple) FIN

• Déroulement de cette opération :

1. Lecture de la valeur depuis la source de


l’information

2. Affectation de cette valeur à une variable donnée

44
Brainstorm Consulting
Lire et Ecrire en Java
• L’opération d’écriture est la suivante :
[Link]("Bienvenue"); [Link](nom_variable);

[Link]("Bienvenue "+ nom_variable);

• L’opération de lecture est la suivante :


import [Link]; //Pour importer la librairie scanner qui permet de
récupérer ce qui est indiqué dans la console
scanner sc = new Scanner([Link]); //Pour créer un scanner
nom = [Link](); // Pour récupérer ce qui aura été introduit : 2 mots ok
nom = [Link](); // Pour récupérer ce qui aura été introduit : le 1er mot
Il en existe d'autres mais il est preferable de récupérer avec nextLine et puis de
convertir vers le type souhaité

45
Brainstorm Consulting
Remarques : Lire en Java
• Il existe une grande différence entre l’algorithmique et le Java en ce qui concerne l’opération Lire.

• Cette dernière récupère la saisie au clavier sous la forme d’une chaine de caractère (le type String). C’est d’ailleurs
normal, l’utilisateur entre des touches claviers qui sont des caractères. La valeur « 123 » est la concaténation de
trois caractères, le chiffre 1, le chiffre 2 et le chiffre 3. Pour récupérer la valeur numérique 123, il faut convertir les
chiffres en nombre.

• Voici quelques exemples :


Scanner sc = new Scanner([Link]);
int nbEntier = [Link]([Link]());
double nbReel = [Link]([Link]());
boolean booleen = [Link]([Link]());
String message = [Link]();
char caractere = [Link]().charAt(0);

46
Brainstorm Consulting
Exercice
● exo02-Récupérer le nom et le prénom du l'utilisateur puis affichez le message
"Bienvenue prenom nom"
● Ex : Bienvenue Jules César

47
Brainstorm Consulting
Opérateurs
• Jusqu’à maintenant, nous avons vu plusieurs éléments importants :

– La notion de variable

– L’affectation

– Les opérations d’entrées et de sorties

• Nous aimerions pouvoir effectuer des opérations dans nos algorithmes. C’est
maintenant que les opérateurs entrent en jeu.

48
Brainstorm Consulting
Opérateurs
• Il existe plusieurs types d’opérateurs :

– Opérateurs arithmétiques

– Opérateurs de comparaisons

– Opérateurs logiques

• Les deux derniers seront abordés un peu plus tard dans le cours.

49
Brainstorm Consulting
Opérateurs arithmétiques
● Porte sur des valeurs de type numérique (entiers ou réels).

+ Addition

- Soustraction

* Multiplication

/ Division

DIV Division entière (partie entière uniquement)

MOD Modulo (reste d’une division d’entiers)

50
Brainstorm Consulting
Opérateurs arithmétiques : Exemples
Variable a, b, c, d : Entier, • Dans cet exemple, nous utilisons des opérateurs
e, f : Reel entre des valeurs, mais également des variables !
DEBUT
a ← 10 • Les valeurs de chaque variable sont donc les
b ← 5 DIV 2 suivantes :

c ← b + a Variables Valeurs
d ← 5 MOD 2 a 10
e ← 5 / 2 b 2
f ← (e - 0.5) * a c 12
FIN
d 1
e 2.5
f 20.0
51
Brainstorm Consulting
Opérateurs arithmétiques : Java
• Voici la table des opérateurs arithmétiques en Java.

+ Addition

- Soustraction

* Multiplication

/ Division

N'existe pas Division entière = type du donneur et receveur

% Modulo (reste d’une division d’entiers)

52
Brainstorm Consulting
Opérateurs arithmétiques : Exercices
• exo03a - Voici l’exemple précédent en Java

int a, b, c, d;
double e, f; Variables Valeurs
a = 10;
a
b = 5 / 2;
c = b + a; b
d = 5 % 2;
e = 5 / 2.0; c
f = (e - 0.5) * a; d
e
f

53
Brainstorm Consulting
Opérateurs arithmétiques : Exercices
• exo03a-Déterminez la valeur des variables de ce pseudo-code.
Variable a, b, c, d, e : Entier
DEBUT
a ← 8 MOD 3
b ← 4 + a
c ← b * a
• exo03b-Vérifiez vos réponses en utilisant d ← (c – a) * b

Java. e ← ((a + 7) * (d DIV a)) *


0
FIN
• exo04-Bonus : Imaginez une méthode permettant d’inverser le contenu
d’une variable entière SANS utiliser une variable temporaire.

54
Brainstorm Consulting
Un dernier pour la route

● exo05-Réalisez un algorithme convertisseur de secondes. Ce dernier reçoit un


nombre de secondes et détermine le nombre de jours, heures, minutes et
secondes auquel il correspond.

● Exemple :
4561 secondes correspondent à 0 jour 1 heure 16 minutes et 1 seconde.

● Réfléchissez à la méthode que nous devons utiliser.

● Une fois l’algorithme réalisé, testez-le en Java.

55
Brainstorm Consulting
LES OPÉRATEURS CONDITIONNELS

56
Brainstorm Consulting
Les booléens
• Type de variable n’ayant que deux valeurs possibles : vrai ou faux.
• Ce type permet de connaitre un état.
• Exemples :

– Considérons un interrupteur allumé ou éteint :

• Nous utilisons la variable interrupteurEteint :


– Vrai : l’interrupteur est éteint
– Faux : l’interrupteur est allumé

– Un panier est vide ou rempli :

• Nous utilisons la variable panierRempli :


– Vrai : le panier est rempli
– Faux : le panier est vide

57
Brainstorm Consulting
Comparer des variables
• Dans un algorithme, il est souvent intéressant de pouvoir comparer des
variables.

• Par exemple, pour savoir si un étudiant a réussi un examen, il faut savoir si ses
points sont supérieurs ou égaux à 10 (sur un total de 20).

• Les opérateurs de comparaisons sont là pour nous aider.

• Le résultat d’une comparaison sera un booléen.

58
Brainstorm Consulting
Opérateurs de comparaisons
● Comparaison de deux valeurs et obtenir une valeur logique (vrai ou faux) comme
résultat.
== Égalité stricte

!= Différence

> Strictement supérieur

< Strictement inférieur

>= Supérieur ou égal

<= Inférieur ou égal

59
Brainstorm Consulting
Comparaisons : Exemples
• Voici un exemple dans lequel nous comparons les
points de Jean et Paul pour savoir s’ils ont réussi.

Variable pointsJean, pointsPaul : Entier,


reussiteJean, reussitePaul : Booleen
Variables Valeurs
DEBUT
pointsJean ← 15 reussiteJean Vrai
pointsPaul ← 9 reussitePaul Faux
reussiteJean ← (pointsJean ≥ 10)
reussitePaul ← (pointsPaul ≥ 10)
FIN

60
Brainstorm Consulting
Comparaison : Java
• Voici l’exemple précédent en Java ainsi que les opérateurs de comparaison en Java:
Pseudo-co Java
int pointsJean = 15; de
int pointsPaul = 9;
== ==
boolean reussiteJean = (pointsJean >= 10); != !=
boolean reussitePaul = (pointsPaul >= 10);
> >
Variables Valeurs
< <
reussiteJean true
>= >=
reussitePaul false
<= <=

Attention en Java, pour comparer des valeurs de type “String”, il ne faut pas utiliser
l'opérateur “==”, mais la méthode equals. boolean test = [Link](chaine2);
61
Brainstorm Consulting
Combiner des comparaisons
• Nous désirons démarrer la chaudière lorsque la température est comprise entre 5 et
15 degrés. En considérant la variable température, deux comparaisons apparaissent :

– (température ≤ 15)

– (température ≥ 5)
Pour allumer la chaudière :
(température ≥ 5) et (température ≤ 15) doivent être vrais.

Il serait donc intéressant de pouvoir combiner ses deux comparaisons.

• Les opérateurs logiques vont nous permettre de le faire

62
Brainstorm Consulting
Opérateurs logiques
• Permettent de combiner des valeurs logiques. Ce qui va nous permettre
de combiner des comparaisons. Le résultat est toujours une valeur
logique.

! NON Négation logique

&& ET Le ‘et’ logique

|| OU Le ‘ou’ inclusif logique

63
Brainstorm Consulting
Opérateurs logiques : Java
• Voici la table des opérateurs logique en Java
! Négation logique

&& Le ‘et’ logique

|| Le ‘ou’ inclusif logique

boolean majeur = false; boolean majeur = false;

if (majeur == false) if (!majeur)


{ {
[Link]("Pas majeur"); [Link]("Pas majeur");
} }
else else
{ {
[Link]("Majeur"); [Link]("Majeur");
} }

64
Brainstorm Consulting
Tables de vérité : ET – OU – NON

• Une table de vérité permet de modéliser le comportement d’un opérateur


logique en fonction des valeurs des deux opérandes.

• Voici les tables de vérité des trois opérateurs :

ET OU NON

A∧ B Vrai Faux AvB Vrai Faux ¬A


Vrai V F Vrai V V Vrai F

Faux F F Faux V F Faux V

65
Brainstorm Consulting
Exemples
• Si A = vrai et B = faux :

– A ET B est faux

– NON(B) est vrai

– NON(À ET B) est vrai

• L’exemple de la chaudière sera donc :

– (température ≥ 5) ET (température ≤ 15)

• Nous pouvons donc utiliser les opérateurs logiques avec des booléens et des comparaisons.

66
Brainstorm Consulting
Lois de De Morgan
• De Morgan est un mathématicien britannique ayant formulé des propriétés d’algèbre
booléenne. Ces propriétés peuvent nous être utiles.

⌐(A ∨ B) ↔ (⌐A) ᴧ (⌐B)

⌐(A ᴧ B) ↔ (⌐A) ∨ (⌐B)

NON(A OU B) ↔ (NON A) ET (NON B)


NON(A ET B) ↔ (NON A) OU (NON B)

67
Brainstorm Consulting
Lois de De Morgan : Pseudo-code
NON(A ET B) = NON(A) OU NON(B)
A B A ET B NON(A ET B) NON(A) NON(B) NON(A) OU NON(B)
0 0 0 1 1 1 1
0 1 0 1 1 0 1
1 0 0 1 0 1 1
1 1 1 0 0 0 0

NON(A OU B) = NON(A) ET NON(B)


A B A OU B NON(A OU B) NON(A) NON(B) NON(A) ET NON(B)
0 0 0 1 1 1 1
0 1 1 0 1 0 0
1 0 1 0 0 1 0
1 1 1 0 0 0 0

68
Brainstorm Consulting
XOR
• Il existe un quatrième opérateur logique :

OU exclusif (⊕)
• XOR vient de l’anglais : eXclusive OR

• Cet opérateur logique reste très peu utilisé en programmation.

• Essayez d’en déterminer la table de vérité, voici deux indices :

– « l’un ou l’autre ».

– A XOR B ↔ ((NON(A)) OU B) ET (A OU NON(B))

69
Brainstorm Consulting
Table de vérité du XOR
● Soit l’un, soit l’autre, mais pas les deux

XOR

A⊕B Vrai Faux


Vrai F V

Faux V F

70
Brainstorm Consulting
Exercices
• Considérons A = 3, B = 9, C = Faux, D = NON (C), E = 9.
• Donnez le résultat pour chacune de ces instructions :
Notation pseudo-code :
Notation Java :
1. (A > 8)
A != 3
2. (B == 9) !(D) || C
3. (NON(A != 3)) ((A + B) == 12) && D
4. (NON(C))
5. ((A < B) OU C)
6. NON((A + B) != 12)
7. ((B == 5) OU ( (E > 10) ET (A < 8) ))
8. ((((B == 5) OU ((E > 10) ET (A < 8))) OU (A < B) OU C) ET C)
exo06 - Vérifiez avec Java
71
Brainstorm Consulting
LES STRUCTURES CONDITIONNELLES

72
Brainstorm Consulting
Les structures conditionnelles
● Souvent, un algorithme se retrouve face à plusieurs situations qui ne peuvent pas être
traitées avec les mêmes instructions. Nous ne savons pas quel sera le cas de figure à
l’exécution.

● Nous devons alors prévoir tous les cas possibles. Nous allons donc utiliser les
structures conditionnelles.

73
Brainstorm Consulting
SI… SINON
• Reprenons l’exemple de la chaudière :
Nous désirons l’allumer si la température est comprise entre 5 et 15 degrés. Pour cela, nous
avons besoin de dire :

SI la température est comprise entre 5 et 15 degrés ALORS


allume la chaudière SINON éteindre la chaudière.

● Cette phrase illustre une structure conditionnelle.

74
Brainstorm Consulting
SI… SINON
• Il s’agit d’une structure conditionnelle qui va nous permettre d’effectuer des
instructions différentes si une condition est vérifiée ou non.

• En pseudo-code :
SI [condition] ALORS
[instructions1]
SINON
[instructions2]
FINSI

75
Brainstorm Consulting
Exemples : Pseudo-code

Variable age : Entier


DEBUT
Lire(age)
SI age >= 18 ALORS
Ecrire("Bienvenue")
SINON
Ecrire("Accès interdit")
FINSI
FIN

76
Brainstorm Consulting
Exemples : Java
int age;
if (conditions) age = [Link]([Link]());
{ if (age >= 18)
//instructions; {
}
else [Link]("Bienvenue");
{ }
//instructions; else
} {
[Link]("Accès interdit");
}
NB : L'instruction
else
est optionnelle

77
Brainstorm Consulting
Instant Réflexion

Peut-on placer un SI..SINON dans un autre ?

78
Brainstorm Consulting
Beaucoup de conditions

• Lorsque de nombreux traitements sont possibles en fonction de la valeur


d’une variable, nous pouvons imbriquer des SI..SINON, mais cela devient
rapidement illisible et laborieux à écrire.

• Voyons ça avec un petit algorithme déterminant le jour de la semaine.

79
Brainstorm Consulting
SI..SINON imbriqués
Variable jour : Entier
DEBUT
Lire(jour)
SI jour = 1 ALORS Ecrire("Lundi")
SINON
SI jour = 2 ALORS Ecrire("Mardi")
SINON
SI jour = 3 ALORS Ecrire("Mercredi")
SINON
SI jour = 4 ALORS Ecrire("Jeudi")
SINON
SI jour = 5 ALORS Ecrire("Vendredi")
SINON
Pas très intuitif

SI jour = 6 ALORS Ecrire("Samedi")
SINON
SI jour = 7 ALORS Ecrire("Dimanche")
SINON
Ecrire("Dimanche")
FINSI
FINSI
FINSI
FINSI
FINSI
FINSI
FINSI
FIN

80
Brainstorm Consulting
L’indentation
• Nous commençons à voir apparaitre, dans le pseudo-code, des blocs d’instructions.
Afin de garder le code lisible, nous utilisons des espaces (ou des tabulations) pour
structurer le code en fonction de sa logique.

• Ce concept se nomme l’indentation. Il est primordial de le mettre en application sous


peine de vexer le formateur ☹ !

• Le slide suivant vous démontre son importance.

81
Brainstorm Consulting
Code non indenté vs Code indenté
Variable jour : Entier Variable jour : Entier
DEBUT DEBUT
Lire(jour)
Lire(jour)
SI jour = 1 ALORS Ecrire("Lundi")
SI jour = 1 ALORS Ecrire("Lundi") SINON
SINON SI jour = 2 ALORS Ecrire("Mardi")
SI jour = 2 ALORS Ecrire("Mardi") SINON
SINON SI jour = 3 ALORS Ecrire("Mercredi")
SI jour = 3 ALORS Ecrire("Mercredi") SINON
SI jour = 4 ALORS Ecrire("Jeudi")
SINON
SINON
SI jour = 4 ALORS Ecrire("Jeudi") SI jour = 5 ALORS Ecrire("Vendredi")
SINON SINON
SI jour = 5 ALORS Ecrire("Vendredi") SI jour = 6 ALORS Ecrire("Samedi")
SINON SINON
SI jour = 6 ALORS Ecrire("Samedi") SI jour = 7 ALORS Ecrire("Dimanche")
SINON SINON
Ecrire("Dimanche")
SI jour = 7 ALORS Ecrire("Dimanche")
FINSI
SINON FINSI
Ecrire("Erreur") FINSI
FINSI FINSI
FINSI FINSI
FINSI FINSI
FINSI ILLISIBLE !!! FINSI
FIN
FINSI
FINSI
FINSI
FIN

82
Brainstorm Consulting
SI… SINON SI... SINON
• Lorsque nous avons plus de deux conditions à vérifier, nous pouvons utiliser le SINON
SI dans la structure conditionnelle que nous avons vue précédemment.

• En pseudo-code : SI condition ALORS


instructions1

SINON SI condition2
instructions2

SINON
instructions3
FINSI

83
Brainstorm Consulting
Exemples : Pseudo-code
Variable jour : Entier
DEBUT
Lire(jour)
SI jour = 1 ALORS Ecrire("Lundi")
SINONSI jour = 2 ALORS Ecrire("Mardi")
SINONSI jour = 3 ALORS Ecrire("Mercredi")
SINONSI jour = 4 ALORS Ecrire("Jeudi")

SINONSI jour = 5 ALORS Ecrire("Vendredi") C’est déjà
SINONSI jour = 6 ALORS Ecrire("Samedi")
SINONSI jour = 7 ALORS Ecrire("Dimanche")
mieux
SINON : Ecrire("Erreur")
FINSI
FIN

84
Brainstorm Consulting
Exemples : Java int jour;
jour = [Link]([Link]());
if (jour == 1)
if (condition) [Link]("Lundi");
{
instructions; else if (jour == 2)
[Link]("Mardi");
}
else if (condition) else if (jour == 3)
{ [Link]("Mercredi");
instructions;
} else if (jour == 4)
[Link]("Jeudi");
else
{ else if (jour == 5)
instructions; [Link]("Vendredi");
}
else if (jour == 6)
[Link]("Samedi");

NB : SI (il n'y a qu'une seule else if (jour == 7)


[Link]("Dimanche");
ligne d'instructions) ALORS les {}
ne sont pas obligatoires. On les else
met pour ne pas devoir les mettre [Link]("Erreur");
si on doit ajouter une instruction.

85
Brainstorm Consulting
SELON QUE
• Bien que le SI.. SINON SI..SINON soit plus compact, cela reste un peu lourd. Une
autre instruction va nous permettre de soulager l’écriture de ce genre de tests : le
SELON QUE.

• Permet de condenser une armée de SI..SINON SI..SINON de manière plus élégante.

SELON QUE expression VAUT


valeur : instructions1
• Pseudo-code : valeur : instructions2
[sinon : instructions3]
FINSQ

86
Brainstorm Consulting
Exemple : Pseudo-code
• Voici l’algorithme du jour de la semaine en utilisant un SELON
QUE. Variable jour : Entier
DEBUT
Lire(jour)
SELONQUE jour vaut
1 : Ecrire("Lundi")
2 : Ecrire("Mardi")
3 : Ecrire("Mercredi")
4 : Ecrire("Jeudi")
5 : Ecrire("Vendredi")
6 : Ecrire("Samedi")
7 : Ecrire("Dimanche")
Sinon : Ecrire("Erreur")
FINSQ
FIN

87
Brainstorm Consulting
int jour;

SWITCH : Java jour = [Link]([Link]());


switch (jour)
{
case 1:
switch (nomVariable) [Link]("Lundi");
break;
{
case valeur1 : case 2:
[Link]("Mardi");
instructions; break;
break; case 3:
case valeur2 : [Link]("Mercredi");
break;
instructions;
break; case 4:
[Link]("Jeudi");
case valeur3 : break;
case valeur4: case 5:
instructions; [Link]("Vendredi");
break;
break;
default : case 6:
[Link]("Samedi");
instructions; break;
break; case 7:
} [Link]("Dimanche");
break;
default:
[Link]("Erreur");
break;
}

88
Brainstorm Consulting
Exercices
● exo07-Année bissextile (Pseudo-Code + Java)
Réalisez un petit algorithme qui sur base d’une année donnée va déterminer s’il s’agit d’une
année bissextile. Une année est bissextile si elle est divisible par 4, mais non divisible par
100. Ou si elle est divisible par 400.
Bissextile : 2000, 1996 !Bissextile : 1900, 1997

● exo8-Lanceur de balles de tennis (Pseudo-Code + Java)


Réalisez l’algorithme d’un lanceur de balles de tennis. Ce lanceur possède deux états :

● pret : permet de savoir si le tennisman est prêt. Il ne faut pas lancer de balles dans le
cas contraire
● panierVide : permet de savoir s’il y a encore des balles disponibles

Le lanceur de balle possède l’opération « lancerBalle » qui, vous l’aurez compris, permet de
lancer une balle.

89
Brainstorm Consulting
Exercices
● exo09-Distributeur de boissons (Pseudo-Code + Java) (switch())
Réalisez l’algorithme d’un distributeur de boissons. Ce dernier propose plusieurs boissons et
l’utilisateur choisit celle qu’il désire en entrant le numéro correspondant. N'oubliez pas de
vérifier s’il y a encore des boissons en stock.

● exo10-Calculatrice (Pseudo-Code + Java) (switch())


Réaliser l’algorithme d’une calculatrice basique. L’utilisateur est invité à saisir un nombre, un
opérateur, et un deuxième nombre. La calculatrice affiche ensuite le résultat. (Gérer la division
par 0)

90
Brainstorm Consulting
Exercices
● exo11-Note (Pseudo-Code + Java)
Ecrire un algorithme qui met l'appréciation par rapport à des notes. Ces notes sont comprises
entre 0 et 20.
- 0-10 : I, 11-12 : S, 13-15 : B, 16-18 : TB, 19-20 : Excellent
/!\ Gérer les erreurs : ex : -2; 25

● exo12
Réalisez un algorithme utilisant le convertisseur de secondes, il reçoit deux durées (jours,
heures, minutes et secondes) et calcule la différence entre ces dernières.

91
Brainstorm Consulting
LES STRUCTURES ITÉRATIVES

92
Brainstorm Consulting
Introduction aux structures itératives
• Nous pouvons maintenant faire pas mal de choses avec ce que nous avons appris.

• Mais jusqu’à présent, nos algorithmes ne peuvent exécuter leurs instructions qu’une
seule fois. Ce n’est pas très pratique !

• Reprenons le lanceur de balle de tennis, le distributeur de boissons et la calculatrice :

– Le lanceur de balle devrait pouvoir lancer des balles jusqu’à ce que son stock soit vide

– Le distributeur de boissons pourrait proposer une autre boisson au client tant que ce dernier
le désire

– Pareil pour la calculatrice

93
Brainstorm Consulting
Les boucles
• Afin répéter des instructions dans nos algorithmes, nous utilisons les boucles.

• Une boucle est une structure itérative permettant de réitérer un comportement sur
base d’une condition précise.

• Exemple :
TANT QU’il y a des balles, lancer une balle.

Proposer une boisson JUSQU’À ce que le client soit comblé.

FAIRE un calcul TANT QUE l’utilisateur veut faire des calculs.

94
Brainstorm Consulting
Les boucles
• Pour utiliser une boucle, il est nécessaire de pouvoir identifier clairement :

– Ce qu’il faut répéter

– Pourquoi le répéter

– Maîtriser cette répétition (principalement, comment l’arrêter)

• Nous répétons des instructions afin d’atteindre un état défini. Il est donc primordial
que les instructions répétées permettent d’atteindre l’état voulu sous peine de se
retrouver dans une boucle infinie !

95
Brainstorm Consulting
Les types de boucles

• Nous avons à notre disposition 3 types de boucles :

– Boucles à tests antérieurs (TANT QUE… FAIRE)

– Boucles à tests postérieurs, décomposées en deux (FAIRE… TANT QUE et FAIRE… JUSQU’À)

96
Brainstorm Consulting
TANT QUE.. FAIRE
• Dans cette boucle, nous répétons nos instructions tant que la condition définie est
vraie. De plus, si cette condition n’est pas vérifiée au départ, nous n’exécutons pas du
tout les instructions.

• En pseudo-code : TANT QUE condition(s) FAIRE


instructions
FINTQ

97
Brainstorm Consulting
Java : Boucle Tant Que

● Voici à quoi ressemble une boucle TANT QUE en Java.

while (conditions)
{
instructions;
}

98
Brainstorm Consulting
Exemples : Pseudo-code
• Nous pouvons utiliser une boucle pour valider la saisie d’un utilisateur par exemple :

Variable selection : Entier


DEBUT
Ecrire("Entrez un nombre entre 1 et 10")
Lire(selection)
TANTQUE (selection < 1) OU (selection > 10) FAIRE
Ecrire("Valeur incorrecte ! Réessayer")
Lire(selection)
FINTQ
FIN

99
Brainstorm Consulting
Exemples : Java

[Link]("Entrez un nombre entre 1 et 10");


nombre = [Link]([Link]());
while ((nombre < 1) || (nombre > 10))
{
[Link]("Nombre incorrect ! Réessayez.");
nombre = [Link]([Link]());
}

100
Brainstorm Consulting
Exercices
• exo13-À l’aide d’une boucle, affichez la table de multiplication par 2. Ensuite, codez
votre algorithme en Java.

• exo14-Reprenez l’algorithme du lanceur de balles de tennis et faites en sorte qu’il


lance une balle tant que le stock n’est pas vide. Il y a donc 2 variables stockBalles et
pret

• exo15-À l’aide de deux boucles, affichez les tables de multiplication de 1 à 9. Ensuite,


codez votre algorithme en Java.

101
Brainstorm Consulting
Plus ou Moins
• exo16- C'est plus, c'est moins, c'est gagné
Un algorithme reçoit deux nombres de l’utilisateur (opération Lire) : justePrix et
proposition.

Il répond : « C’est plus » lorsque proposition est plus petit que justePrix.

Et inversement, il répond : « C’est moins » lorsque proposition est plus grand que
justePrix.

Si justePrix est égal à proposition, il répond : « C’est gagné ».

102
Brainstorm Consulting
Plus ou Moins

Améliorons ce Plus ou Moins !

103
Brainstorm Consulting
Remarques
• Dans certains cas, il est nécessaire d’effectuer les instructions au moins une fois avant
d’évaluer s’il est nécessaire de les répéter.
• Reprenons l’exemple de la validation de la saisie d’un utilisateur :
Variable selection : Entier
Debut
Ecrire("Entrez un nombre entre 1 et 10")
L’instruction Lire() Lire(selection)
est répétée deux fois. TANTQUE (selection < 1) OU (selection > 10) FAIRE
Ecrire("Valeur incorrecte ! Réessayer")
Lire(selection)
FINTQ
Fin

• La solution serait d’évaluer la condition après une première répétition.

104
Brainstorm Consulting
FAIRE .. TANT QUE
• La boucle FAIRE.. TANT QUE nous permet d’effectuer les instructions de la boucle une
première fois avant d’évaluer s’il est nécessaire de les réitérer.

• Même si la condition de répétition est fausse dès le départ, les instructions seront
exécutées une fois.

• En pseudo-code :
FAIRE
instructions à répéter
TANTQUE conditions FINTQ

105
Brainstorm Consulting
Exemples : Pseudo-code

Variable selection : Entier


Debut

FAIRE
Ecrire("Entrez un nombre entre 1 et 10")
Lire(selection)
TANTQUE (selection < 1) OU (selection > 10) FINTQ
Fin

106
Brainstorm Consulting
Exemples : Java

do
{
// instructions
} while (conditions) ; /!\ N'oubliez pas le ;

107
Brainstorm Consulting
Exemples : Pseudo-code

int selection;
do
{
[Link]("Entrez un nombre entre 1 et 10");
selection = [Link]([Link]());
} while (selection < 1) || (selection > 10) ;

108
Brainstorm Consulting
FAIRE .. JUSQU’À

• La troisième boucle est similaire à FAIRE .. TANT QUE, seule l’évaluation de la


condition diffère.

• Comme vous l’aurez compris, cette boucle va répéter les instructions JUSQU’À
ce que la condition soit vraie.

• En pseudo-code : FAIRE
instruction
JUSQU’A condition(s)

109
Brainstorm Consulting
Quel intérêt entre les deux ?
FAIRE .. TANT QUE FAIRE .. JUSQU’À
• Répète les instructions tant que la • Répète les instructions tant que la
condition est VRAIE. condition est FAUSSE.

• Répète les instructions jusqu’à ce que • Répète les instructions jusqu’à ce que
la condition soit FAUSSE. la condition soit VRAIE.

• Forme la plus répandue dans les • Présente dans certains langages


langages de programmation comme le Pascal, Visual Basic…
courants : C, C#, Java…
• Cette boucle n’existe pas en C#, Java

110
Brainstorm Consulting
Attention aux conditions !

• La subtilité entre les deux boucles se trouve principalement dans la


formulation de la condition. Les deux exemples ci-dessous sont équivalents !

Variable selection : Entier Variable selection : Entier


Debut Debut
Ecrire("Entrez un nombre entre 1 et 10") Ecrire("Entrez un nombre entre 1 et 10")
FAIRE FAIRE
Lire(selection) Lire(selection)
TANTQUE (selection < 1) OU (selection > 10) FINTQ JUSQU’À (selection ≥ 1) ET (selection ≤ 10) FINJ
Fin Fin

Remarquez la différence entre les deux conditions.

111
Brainstorm Consulting
Exercices
● exo17-À l’aide d’une boucle Faire … TantQue , améliorez l’algorithme du distributeur de
boissons pour qu’il demande au client s’il désire une autre boisson (Tant qu’il en a envie).

● exo18-À l’aide d’une boucle Faire … TantQue, améliorez l’algorithme de la calculatrice afin
qu’elle demande à l’utilisateur s’il veut faire un autre calcul (tant qu’il le désire).

● exo19-À l’aide de la boucle TantQue … Faire, réalisez un algorithme calculant le résultat de


N10. N étant un nombre saisi par l’utilisateur.

● exo20-Reprenez l’exercice précédent et modifiez-le pour que l’utilisateur entre également


l’exposant qu’il désire calculer.

112
Brainstorm Consulting
Exercices
● exo21- Améliorez le "C'est plus, c'est moins, c'est gagné" pour qu'il tourne en
boucle tant que le juste_prix n'a pas été trouvé.

L'ordinateur choisit un nombre aléatoirement entre 1 et 100.

L'utilisateur est invité à entrer un nombre et l'algorithme nous répond "C'est plus"
ou "C'est moins".

Lorsqu'on a trouvé le bon nombre, l'algorithme affiche le nombre de tentatives


effectuées pour trouver le résultat

113
Brainstorm Consulting
Exercices supplémentaires
1. Réalisez un système de connexion à l'aide d'un mot de passe. L'algorithme demande à
l'utilisateur de saisir son mot de passe. Si ce dernier valide de bon mot de passe, on le
salue. Par contre, si il fait une erreur trois fois de suite, un message lui signalera que son
compte est bloqué et il ne pourra pas réessayer une quatrième fois

2. Ecrivez un algorithme qui demande à l’utilisateur de taper 10 entiers et qui affiche le plus
petit de ces entiers.

3. Algorithme demandant 3 nombres : nbRep, nbTiret, nbEspace. Ce dernier affiche à


l'écran autant de tiret que la valeur de nbTiret, suivi d'autant d'espace que la valeur de
nbEspace. Le tout autant de fois que la valeur de [Link] : si nbRep = 2, nbTiret =
1 et nbEspace = 3 le résultat est le suivant :|- - |

114
Brainstorm Consulting
Projet : justePrix
● Améliorez encore le justePrix : l'utilisateur a droit à 10 essais après ces 10 essais, il a
perdu et l'ordinateur affiche le justePrix

● Ajouter un niveau :
○ facile : entre 1 et 10
○ moyen : entre 1 et 100
○ difficile : entre 1 et 1000

● Tant que la personne veut rejouer, redemandez le niveau et générez un nombre

● Vérifiez que tout caractère entré est correct, c'est-à-dire pour que le programme ne
plante jamais.
115
Brainstorm Consulting
Indices
● Pour générer un nombre entre 0 et 10 non compris, il faut :

int max = 10;

Random rng = new Random();

int valeur = [Link](max);

● Pour effacer l'écran, il faut 2 choses :

- c'est impossible en java : il faut donc ajouter des retours à la ligne pour que le texte disparaisse.

116
Brainstorm Consulting
Indices

● Pour vérifier qu'une chaine de caractères est un nombre :


String chaine = "4";
[Link](estEntier(chaine));

public static boolean estEntier(String chaine) {


try {
[Link](chaine);
} catch (NumberFormatException e){
return false;
}
return true;
}

117
Brainstorm Consulting
LES TABLEAUX

118
Brainstorm Consulting
Utilité
• Dans beaucoup de cas, nous pouvons avoir besoin de nombreuses variables d’un même type :

– Garder un ensemble de relevés de température pour fournir des statistiques.

– Conserver les notes d’un élève pour calculer sa moyenne

– …

• Nous serions tentés de déclarer autant de variables que le nombre de valeurs dont nous avons besoin.
C’est embêtant et laborieux ! Et les informaticiens sont paresseux, ils n’aiment pas faire deux fois la
même chose ☺ !

• Les tableaux nous permettent d’obtenir un nombre donné d’éléments d’un même type.

119
Brainstorm Consulting
Les tableaux
• Un tableau est une structure de données composée d’un ensemble de variables, du même type, accessibles
par leur indice.

Tableau
d’entiers
12 512 15 4 -5 1 -88 782

• La déclaration d’un tableau est similaire à celle des variables avec deux éléments supplémentaires :

– Le type de variables que va contenir le tableau

– La taille du tableau : représente le nombre d’éléments que peut contenir le tableau

120
Brainstorm Consulting
Déclarer un tableau
• Pour déclarer un tableau, rien de plus simple :
Variable : nomTableau : Tableau[nombreElement] de typeElement

• Exemple : Variable : tableauCotes : Tableau[10] de Reel

• Lorsque nous déclarons un tableau, l’ordinateur réserve le nombre de cases


nécessaires dans la mémoire vive.
• Contrairement aux variables que nous avons vues précédemment, il n’y a pas de nom
pour chaque cellule du tableau. Mais comment accéder aux éléments du tableau ?

121
Brainstorm Consulting
Affectation dans un tableau

Variable tab : Tableau[10] de Texte


Debut
tab ← "Test"
Fin

Est-ce possible ? Si oui, pourquoi et


comment ?

122
Brainstorm Consulting
L’opérateur d’accès [ ]
• Nous sommes capables de déclarer un tableau de N cases d’un certain type. Mais
nous devons pouvoir accéder à chaque case du tableau !

• Les cellules d’un tableau sont toutes numérotées à partir de 0 jusqu’à la taille du
tableau -1.

• Le numéro d’une cellule peut être appelé l’indice de la cellule.

• Nous utilisons dès lors l’opérateur d’accès [ ] qui va nous permettre de l’indice de la
cellule à laquelle nous désirons accéder.

123
Brainstorm Consulting
L’opérateur d’accès [ ] : Exemples
Variable : tabSMS : Tableau[3] de Texte
DEBUT
Constatez que la tabSMS[0] ← "Première case du tableau"
tabSMS[1] ← "Deuxième case du tableau"
numérotation commence
tabSMS[2] ← "Dernière case du tableau"
bien à 0 et termine à 2 (taille FIN
du tableau -1).

INTERDIT !
Variable : tab : Tableau[2] de Entier
DEBUT
Car il s’agit d’un tableau
tab[0] ← 10 d’entiers
tab[1] ← "valeur"
Ne fonctionnera pas, car
tab[2] ← 1
FIN nous sommes en dehors
du tableau.
124
Brainstorm Consulting
Les tableaux en Java

• Un tableau en Java se déclare de cette manière.


// déclaration // déclaration
type[] nomTableau = new type[taille]; int[] tableau = new int[3];
// initialisation/affectation // initial./affectation
nomTableau[0] = "element 1"; tableau[0] = 1;
nomTableau[1] = "element 2"; tableau[1] = 2;
// ou directement : décla. + initia. tableau[2] = 3;
type[] nomTableau = {"elt1", "elt2"}; // ou
int[] tableau = { 1, 2, 3 };
• Pour afficher un élément du tableau
[Link](tableau[0]);

125
Brainstorm Consulting
Représentation d’un tableau en mémoire
• Voici un petit résumé de ce que nous avons vu sur les tableaux :

Élément du
tableau

Tableau 1 4 7 3 1 4 9 0 9 2
de 10
entiers 0 1 2 3 … 9 Indices du
tableau

3e cellule du tableau ayant l’indice 2 et


contenant la valeur 7

126
Brainstorm Consulting
Exemple :

• Voici un exemple d’utilisation d’un Variable : tabCotes : Tableau[3] de Réel,


moyenne : Réel
tableau Debut
Ecrire("Veuillez entrer la première cote")
Lire(tabCotes[0])
Ecrire("Veuillez entrer la deuxième cote")
• Nous demandons à l’utilisateur de Lire(tabCotes[1])
Ecrire("Veuillez entrer la troisième cote")
rentrer 3 cotes sur 20, que nous Lire(tabCotes[2])
enregistrons dans un tableau pour moyenne ← tabCotes[0]
ensuite calculer la moyenne des trois moyenne ← moyenne + tabCotes[1]
cotes. moyenne ← moyenne + tabCotes[2]

Ecrire("La moyenne est de ", moyenne/3," sur 20")


Fin

• Nous verrons par la suite comment


améliorer cet exemple.

127
Brainstorm Consulting
Exemple : Représentation du tableau en mémoire
• En considérant les cotes suivantes : 14/20, 14/20 et 11/20.
Le tableau en mémoire serait représenté comme suit :

Élément du
tableau

tabCotes 14 14 11

0 1 2 Indices du
tableau

tabCotes[0] ayant
comme valeur : 14

128
Brainstorm Consulting
Trucs et astuces

• Il est souvent utile de stocker la taille d’un tableau dans une constante. Cela rend
l’algorithme plus facilement modifiable. Nous illustrerons cela un peu plus loin
dans le chapitre.

• Nous avons donc la taille du tableau en constante, mais comment savoir quelles
sont la ou les cellules possédant déjà une valeur ou non ? Une solution simple
consiste à utiliser une variable supplémentaire pour retenir le nombre d’éléments
utiles dans le tableau.

• De plus, l’utilisation de cette variable va nous permettre d’enregistrer les nouvelles


valeurs au bon endroit sans nous tromper.

129
Brainstorm Consulting
Trucs et astuces : Exemple

0 1 2
Constante : TAILLE = 10
Variable : tab : Tableau[TAILLE] de 9 3 @ @ @ @ @ @ tab
Entier
nbElement : Entier
DEBUT 2 nbElemen
nbElement ← 0 t
tab[nbElement] ← 9
nbElement ← nbElement +1 Nous ne connaissons pas le contenu
tab[nbElement] ← 79
de ces cellules (résidus de mémoire).
nbElement ← nbElement +1
FIN
La variable nbElement nous permet
donc de connaitre le nombre de
cellule ayant une valeur utile.

130
Brainstorm Consulting
Les tableaux en Java
• Pour ajouter un élément au tableau.
// déclaration
String[] nomTableau = new String[10];

// récupération
[Link]("Saisissez une valeur à ajouter");
Scanner sc = new Scanner([Link]);
String nomVariable = [Link]();

// ajouter le contenu d'une variable dans un tableau


nomTableau[0] = nomVariable;
// ou directement
nomTableau[1] = [Link]();
[Link](nomTableau[0]);
[Link](nomTableau[1]);

131
Brainstorm Consulting
Trucs et astuces : Exemple

0 1 2
Constante : TAILLE = 10
Variable : tab : Tableau[TAILLE] de Entier 9 3 @ @ @ @ @ @ tab
nbElement : Entier
DEBUT
tab[0] ← 9 2 nbElemen
tab[1] ← 79 t
Ecrire(tab[0])
Ecrire(tab[1]) Pour accéder un élément précis, il
FIN
suffit d'ajouter l'indice entre [].

132
Brainstorm Consulting
Les tableaux en Java

• Pour récupérer un élément bien précis.


maVariable = nomTableau[indice];

maVariable = nomTableau[0];

• Pour afficher un élément bien précis.


[Link](nomTableau[indice]);

[Link](nomTableau[0]);

133
Brainstorm Consulting
Les tableaux en Java
• Pour parcourir un tableau.
// déclarer
String[] nomTableau = new String[3];
nomTableau[0] = "element 1";
nomTableau[1] = "element 2";
nomTableau[2] = "element 3";

// initialiser le compteur de la boucle


int i = 0;

// parcourir le tableau :
// .lenght renvoie le nombre d'éléments dans le tableau
while (i < [Link])
{
[Link](nomTableau[i]);
i++; // incrémentation
}

134
Brainstorm Consulting
Exercices
• exo22-Écrire un algorithme qui saisit 6 entiers et les stocke dans un tableau, puis
affiche le contenu de ce tableau une fois qu’il est rempli.

• exo23-BONUS : initialiser un tableau de 10 entiers avec les valeurs 2, 4, 8, 16, 32, 64,
128, 256, 512, 1024 à l’aide d’une boucle. Ensuite, à l’aide d’une boucle afficher la valeur
de chaque cellule du tableau avec l’opération Ecrire().

135
Brainstorm Consulting
Correction de l’exercice BONUS
● Pour pouvoir parcourir un tableau, nous avons besoin de plusieurs éléments :

○ La taille du tableau

○ Le nombre d’éléments dans le tableau

○ Une variable servant d’indice

○ Une boucle

136
Brainstorm Consulting
Exercice BONUS
Déclaration des constantes et des Constante TAILLE = 10
variables. Variable tab : Tableau[TAILLE] d'Entier
nbElem, indice : Entier
DEBUT
nbElem ← 0
Initialisation du compteur d’élément, de la
indice ← 0
variable indice ainsi que du premier
tab[nbElem] ← 2
élément du tableau. nbElem ← nbElem + 1

Boucle d’initialisation du tableau. Nous TANTQUE nbElem < TAILLE FAIRE


attribuons la valeur d’une cellule en tab[nbElem] ← tab[nbElem-1] * 2
multipliant la valeur de la cellule nbElem ← nbElem + 1
précédente par deux. Ensuite nous FINTQ
mettons à jour le compteur d’élément
(nbElem). TANTQUE indice < nbElem FAIRE
Ecrire(tab[indice])
Boucle d’affichage des éléments du
indice ← indice + 1
tableau. Nous utilisons la variable indice
FINTQ
pour parcourir le tableau à chaque
FIN
passage dans la boucle.

137
Brainstorm Consulting
Une nouvelle boucle sauvage apparait !
● Une boucle spéciale va nous permettre d’itérer plus facilement un tableau.

● Nous aurons souvent besoin de faire ceci :

Pour chaque élément du tableau, effectue les instructions données.

138
Brainstorm Consulting
Boucle POUR

POUR indice DE valeurDebut À valeurFin [PAR p] FAIRE


• En pseudo-code : instructions
FINP

– indice : corresponds à la variable utilisée pour l’indice du tableau (comme dans l’exercice bonus)

– valeurDebut : représente la valeur à laquelle la variable indice va être initialisée

– valeurFin : représente la valeur à laquelle la boucle va s’arrêter

– p : indique un pas d’incrémentation, c’est-à-dire de combien indice va être augmenté (ou diminuer)
à chaque itération. Cette clause est facultative, elle vaut 1 par défaut

139
Brainstorm Consulting
Java : Boucle POUR (version 1)
● La boucle Pour en Java :

// initial. condition incrémentation


for(int i = 0; i < [Link]; i++)
{
[Link](nomTableau[i]);
}

○ La boucle for parcourt tout le tableau, il est possible d'accéder à chaque élément du tableau grâce
nomTableau[i]

140
Brainstorm Consulting
Java : Boucle POUR (version 2)
● La boucle Pour en Java :

for(String element : nomTableau)


{
[Link](element);
}

○ La boucle for parcourt tout le tableau, il est possible d'accéder à chaque élément du tableau grâce
element (le nom est variable)

141
Brainstorm Consulting
Équivalence POUR et TANT QUE

Les deux exemples ci-dessous sont


strictement équivalents !

indice ← 0
POUR indice de 0 à 9 par 2 FAIRE TANT QUE non(indice > 9) FAIRE
Ecrire(tableau[indice]) Ecrire(tableau[indice])
FINPR indice ← indice + 2
FINTQ

142
Brainstorm Consulting
Exemple : Pseudo-code
• Reprenons l’exemple de l’exercice bonus en utilisant une boucle POUR :
Constante MAXCOTES = 10 Nous en profitons pour afficher la
Variable tabCotes : Tableau[MAXCOTES] de Entier
nbCotes, indice : Entier valeur calculée directement afin ne
DEBUT pas devoir utiliser une deuxième
nbCotes ← 0 boucle.
indice ← 0
tabCotes[nbCotes] ← 2
nbCotes ← nbCotes + 1

POUR indice DE nbCotes À maxCotes - 1 FAIRE


tabCotes[indice] ← tabCotes[indice-1] * 2 Voilà le résultat,
nbCotes ← nbCotes + 1 Plus compréhensible non ? ☺
Ecrire(tabCotes[indice])
FINPR
Fin

143
Brainstorm Consulting
Exercices
• exo24-Écrire un algorithme demandant à l’utilisateur le nombre de joueurs (max 10 joueurs).
Ensuite, l’algorithme doit demander à l’utilisateur le score de chaque joueur. Une fois ceci fini,
il faut afficher la moyenne des scores. Faites de même en Java

• exo25-Inverser un tableau : soit un tableau T. Saisir ce tableau. Changer de place les


éléments de ce tableau de façon à ce que le nouveau tableau soit une sorte de miroir de
l'ancien et afficher le nouveau tableau.

• exo26-À l’aide des boucles, réalisez un algorithme permettant de trier un tableau d’entiers
dans l’ordre croissant. Mettez-le ensuite en pratique avec Java.

144
Brainstorm Consulting
Java : Quelle touche enfoncée ?
● Pour récupérer le premier caractère d'une String :

Scanner sc = new Scanner([Link]);


String s = [Link]();
char c = [Link](0);

145
Brainstorm Consulting
Exercices
● exo27-Refaites l'algorithme qui demande à l’utilisateur de taper 10 entiers et qui
affiche le plus petit de ces entiers mais cette fois-ci à l'aide d'un tableau et sans retenir
le minimum lors de la saisie.

● exo28-Réalisez un algorithme permettant de rechercher une valeur dans un tableau.


Si la valeur se trouve bien dans le tableau, nous affichons sa position.

● exo29-Réalisez un algorithme nous permettant de déplacer un pion dans un tableau


de 10 éléments. Au début, le pion se trouve dans la première case du tableau. Nous
pouvons ensuite le déplacer par la gauche (g), par la droite (d) ou de stopper
l'algorithme (q).

146
Brainstorm Consulting
Exercices
● exo30-En considérant un tableau d'entiers trié dans l'ordre croissant, réalisez un
algorithme étant capable d'insérer une nouvelle valeur dans le tableau de façon à ce
que le tableau reste trié. Le but n'est évidemment pas d'insérer la valeur à la fin et de
trier après mais bien de l'insérer au bon endroit directement.

● exo31-Réalisez un algorithme dans lequel nous devons rechercher une valeur (entrée
par l'utilisateur) dans un tableau d'entiers.

● exo32-En considérant deux tableaux d'entiers (non triés), réalisez un algorithme qui
place tous les éléments des deux tableaux dans un troisième. Ce dernier doit être trié
une fois l'algorithme terminé. Notez que le tri doit être fait en même temps que la
fusion des deux tableaux et pas après.

147
Brainstorm Consulting
LES SOUS-PROGRAMMES

148
Brainstorm Consulting
Diviser pour mieux régner

● Jusqu’à maintenant, nous avons écrit des petits algorithmes ne dépassant pas
la trentaine de lignes. Mais comment s’y retrouver lorsqu’il y en a plusieurs
milliers ?

• « À tout problème, il existe une solution ». La plus utilisée en algorithmique


est la suivante : Décomposition d’un problème complexe en plusieurs problèmes
de complexité moindre.

149
Brainstorm Consulting
Diviser pour mieux régner : Illustration
● Exemple : un robot doit pouvoir conduire un
véhicule. Problème
Problème complexe
● Conduire peut être décomposé en : complexe
• Démarrer le moteur
• Rouler jusqu’à la destination
Problème
• Couper le moteur complexe Décomposition
en petits
● Ces trois étapes sont encore décomposables problèmes
en :
• Mettre la clé dans le contact
• Se mettre au point mort
• Embrayer
• Tourner la clé de contact
• Passer la première vitesse
• …

150
Brainstorm Consulting
Diviser pour mieux régner

● Ce principe est fortement illustré par l’adage informatique KISS :

« Keep It Simple, Stupid »


« Garde ça simple, idiot »

● En d’autres termes : Ne nous compliquons pas la tâche.

151
Brainstorm Consulting
Sous-programme
• Le concept de sous-programme est donc une illustration de la décomposition de problèmes
complexes en nombreux problèmes de complexité moindre.

• Concrètement, un sous-programme enferme un ensemble d’instructions dans une « boite noire »


que nous pourrons réutiliser dans l’algorithme en faisant appel à cette boite.

• Les sous-programmes permettent donc de généraliser des actions ou des fonctionnalités.

• Il existe deux types de sous-programmes :

– Les procédures

– Les fonctions

152
Brainstorm Consulting
Utilité
• Outre le fait de décomposer un algorithme en plusieurs parties, les sous-programmes sont
très utiles pour de nombreuses choses :

– Ils permettent une réutilisabilité du code. En effet, lorsque nous effectuons régulièrement les
mêmes instructions, il est plus pratique d’écrire ces instructions une seule fois ! (Souvenez-vous,
les informaticiens sont paresseux)

– Les sous-programmes réduisent également l’impact d’une erreur : si nous utilisons plusieurs fois les
mêmes instructions dans notre algorithme, une erreur dans ces dernières nous obligerait à corriger
l’erreur à tous les endroits où nous avons utilisé ces instructions (au risque d’en oublier une quelque
part)

153
Brainstorm Consulting
Les procédures et fonctions
• Une procédure est un sous-programme que nous pouvons appeler pour utiliser des
actions : traitement de données.

• Une fonction est un sous-programme que nous pouvons utiliser pour sa


fonctionnalité, un peu comme un opérateur (+, /…). Une fonction va donc nous
communiquer un résultat.

154
Brainstorm Consulting
Exemple introductif
Algorithme diviseur :
DEBUT
Algorithme saisirDonnees()
abstrait traiterDonnees()
divisant deux afficherResultats() Concrétisatio Algorithme diviseur :
nombres. FIN n Variable : nombre1, nombre2, resultat : Reel
DEBUT
Procedure saisirDonnees() : saisirDonnees()
DEBUT traiterDonnees()
Lire(nombre1) afficherResultats()
Lire(nombre2) FIN
FIN

Procedure traiterDonnees() :
DEBUT
Procedure afficherResultats() :
Si nombre2 ≠ 0 Alors
DEBUT
resultat ←
Ecrire(resultat)
nombre1/nombre2
FIN
FinSi
FIN

155
Brainstorm Consulting
Les paramètres : Introduction
• Notre exemple précédent comporte un gros défaut :

Nous utilisons les variables déclarées dans l’algorithme au sein de nos procédures. Si
nous devons changer le nom d’une variable, nous devons le changer dans toutes nos
procédures. Nous nous retrouvons donc avec le même problème que nous désirions
éviter grâce au sous-programme.

• Les variables déclarées dans l’algorithme principal sont appelées des variables
globales.

• C’est maintenant que les paramètres arrivent sur la scène !

156
Brainstorm Consulting
Portée lexicale
• Comme expliqué précédemment, les variables déclarées dans l’algorithme principal
sont des variables globales. Mais qu’en est-il des paramètres et des variables déclarés
dans nos procédures/fonctions ?

• Ces variables sont appelées variables locales, car elles existent en mémoire
uniquement lorsque nous nous trouvons à l’intérieur de la procédure/fonction.

157
Brainstorm Consulting
Les paramètres
• Les paramètres nous permettent de transmettre des informations de notre algorithme principal à nos
sous-programmes et inversement.
• Ils se présentent sous la forme de variables.
• Considérons un sous-programme qui affiche le contenu d’un tableau. Ce dernier reçoit un tableau et affiche les
valeurs du tableau à l’aide de l’opération Ecrire. Il effectue une action, il s’agit donc d’une procédure. Pour
fonctionner, cette procédure a besoin de deux éléments :

– Le tableau
Procedure afficherTableau()
– La taille du tableau
• Ces deux éléments représentent les paramètres de la procédure.

Tableau
Taille du tableau

158
Brainstorm Consulting
Les deux types de paramètres
• Nous distinguons deux paramètres différents :

– Les paramètres de données : variables permettant de transmettre des données à notre


sous-programme

– Les paramètres de résultats : variables permettant à un sous-programme de transmettre les


données calculées à l’algorithme principal

• Les procédures sont caractérisées par le concept d’action, elles n’utilisent pas les paramètres
de résultats contrairement aux fonctions.

• Il est important de préciser qu’une fonction ou une procédure n’a pas obligatoirement des
paramètres de données.

159
Brainstorm Consulting
Les procédures : Concrètement
• Une procédure se déclare de cette façon en pseudo-code :
Procedure nomProcedure(parametre1 : type,...) :
DEBUT
instructions
FIN

• Voici un exemple de procédure :

Procedure direBonjour() :
DEBUT
Ecrire("Bonjour jeune Padawan")
FIN

160
Brainstorm Consulting
Java : Procédures
public static void nomProcedure(type parametre, ...)
{
// instructions
}

Exemple : // définition des procédures à l'extérieur du main


public static void direBonjour()
{
[Link]("Bonjour");
}
public static void direBonjourPrenom(String prenom)
{
[Link]("Bonjour " + prenom);
}

// appel des procedures dans le main


direBonjour();
direBonjourPrenom("Jules");

161
Brainstorm Consulting
Les fonctions : Concrètement
• Une fonction se déclare à peu de chose près de la même façon qu’une procédure :
Nouvelle action Fonction nomFonction(parametre1 : type,...) : type_retour
permettant de revenir à DEBUT Spécifie le type du
l’algorithme principal en instructions paramètre de
donnant une valeur renvoie(valeur)
résultat
correspondant au type de FIN
paramètre de résultat.

• Voici un exemple de fonction : Et son utilisation :

Fonction multiplierPar2(nb : Entier) : Entier Variable chiffre : Entier


DEBUT DEBUT
renvoie(nb*2) chiffre ← 5
FIN chiffre ← multiplierPar2(chiffre)
FIN

162
Brainstorm Consulting
Java : Fonctions = return

public static typeRetour nomFonction(type parametre, ...)


{
// instructions
return variableDuTypeDeRetour;
}

// définition de la fonction à l'extérieur du main


public static int multiplierPar2(int x)
{
Exemple : return x * 2;
}
//appel de la fonction à l'intérieur du main
[Link](multiplierPar2(2));

163
Brainstorm Consulting
Passage de paramètres à un sous-programme
• Comme nous l’avons vu dans la déclaration des procédures/fonctions, nous donnons des paramètres
dans la parenthèse qui suit le nom de la procédure/fonction. Mais qu’est-ce qui se cache derrière ça ?

• Reprenons l’exemple précédent :

Lorsque nous donnons la variable chiffre à la fonction, la valeur de cette dernière est copiée dans
la variable locale nb de la fonction multiplierPar2(). Ce processus se nomme le passage par
valeur.
Voici une petite illustration : Copie de la
chiffre valeur
nb
5 5
Renvoi de la

valeur calculée
Espace mémoire Espace mémoire
Algorithme fonction multiplierPar
principal 2
164
Brainstorm Consulting
Les paramètres par référence
• Nous connaissons maintenant le fonctionnement du passage de paramètres. Mais comment
faire si nous désirons modifier une variable globale à l’intérieur d’une procédure/fonction ?

• Le passage de paramètres par référence va nous le permettre.

• Nous savons que la valeur d’une variable est copiée dans la variable locale d’une
procédure/fonction. Nous utilisons donc la référence de la variable ! La référence peut être
comparée à l’adresse en mémoire de la variable globale.

• Si nous donnons cette référence à notre sous-programme, il sera capable d’accéder à la


variable globale de l’algorithme et donc de pouvoir la modifier.

165
Brainstorm Consulting
Les paramètres par référence : Pseudo-code
• Dans la déclaration d’une procédure/fonction, il suffit d’ajouter le mot-clé ref devant
les paramètres devant être passés par référence.

Procedure ajouterUn(ref A : Entier) :


• Exemple : DEBUT
A ← A + 1
FIN

• Facile n’est-ce pas ?

166
Brainstorm Consulting
Java : Passage par référence
Le passage par référence n'est possible qu'avec les tableaux
Tout tableau passé en paramètre dans un sous-programme sera mis à jour

// définition de la procédure à l'extérieur du main


public static void metajour(int[] tab)
{
tab[0] = 3;
}
// appel de la procédure à l'intérieur du main
Exemple : int[] tableau = new int[2];
tableau[0] = 1;
tableau[1] = 2;
//appel de la fonction
[Link]("Avant : " + tableau[0]);
metajour(tableau);
[Link]("Après : " + tableau[0]);

167
Brainstorm Consulting
Exercices
● exo33-Réalisez une fonction calculant le carré d’un nombre entier donné en
paramètre.

● exo34-Réalisez une fonction de recherche dans un tableau. Cette fonction va recevoir


un tableau, la taille du tableau, et la valeur recherchée en paramètres et renvoyer
l’indice de l’élément dans le tableau. Si l’élément ne s’y trouve pas, la fonction renvoie
-1.

● exo35-Réalisez une procédure dont l’objectif est de fusionner deux tableaux d’entiers.

168
Brainstorm Consulting
Exercices récapitulatifs
● exo36-Algorithme du peleur de patate.
Le peleur de patate possède un seau dans lequel se trouvent les pommes de terre non
pelées. Il prend une pomme de terre dans ce sceau, la pelle et la place ensuite dans
une grosse marmite jusqu’à ce qu’elle soit pleine. Si le seau est vide, il est capable de le
remplir.
La marmite peut contenir un maximum de 50 pommes de terre tandis que le sceau
peut en contenir maximum 17.

● Réalisez cet algorithme.

169
Brainstorm Consulting
SUPPLÉMENTS

170
Brainstorm Consulting
Les tableaux à n dimensions

• Jusqu’à présent, nous avons utilisé des tableaux à une dimension. Mais il est possible d’avoir autant de
dimension qu’on le souhaite.

• Un tableau à 2 dimensions représente une matrice d’éléments.


Variable matrice : Tableau[4,3] d’Entier

Variable matrice : Tableau[ligne, colonne] d’Entier

• Un tableau à 3 dimensions représente un cube d’éléments.

Variable matrice : Tableau[4][4][3] d’Entier

Variable matrice : Tableau[ligne][colonne][profondeur] d’Entier

171
Brainstorm Consulting
Merci pour votre attention.

Brainstorm Consulting 172

Vous aimerez peut-être aussi