Sie sind auf Seite 1von 55

Objectif gnral : Matriser lalgorithmique et les structures algorithmiques et savoir coder un algorithme en un programme Java.

Pr requis : Aucun Organisation : 30h de cours intgrs et 30 h de travaux pratiques.

Cours Algorithmique et Programmation JAVA

Prface

Ce document prsente un support de cours et dexercices pour lenseignement du module Algorithmique et programmation Java. Ce support sadresse principalement aux stagiaires qui vont suivre le programme de prqualification pour la prparation aux tests daccs aux cursus de formation du programme national de certification des comptences en TIC dans son tronc commun.

Le document est structur en 9 chapitres. Le premier chapitre prsente quelques dfinitions et gnralits, les 3 chapitres suivant dcrivent les structures de programmation allant des actions simples aux structures itratives et passant par les structures conditionnelles.

Le chapitre 5 traite les tableaux et le chapitre 6 dfinit la notion de tri des tableaux et prsente quelques algorithmes de tri. Au cours du chapitre 7, une tude de la programmation procdurale est prsente. Les notions de loriente objet sont dcrites au cours du chapitre 8. Le dernier chapitre introduit quelques notions gnrales sur le langage Java.

Le document est dans sa premire version, donc on vous serez reconnaissant si vous nous faites part de vos remarques et suggestions.

Tout en sexcusant de notre part si jamais il ya eu quelques omissions ou erreurs, on vous souhaite une bonne lecture et nhsitez pas nous faire part de vos remarques et suggestions dans lobjectif damlioration de ce support.

I7 de Gabs 2010-2011

Cours Algorithmique et Programmation JAVA

Sommaire

Chapitre 1 Chapitre 2 Chapitre 3 Chapitre 4 Chapitre 5 Chapitre 6 Chapitre 7 Chapitre 8 Chapitre 9

Gnralits Les actions algorithmiques simples Les structures conditionnelles Les structures itratives Les tableaux Les algorithmes de tri Les sous programmes La programmation oriente objet Initiation au langage Java

4 7 13 19 26 32 38 47 52

I7 de Gabs 2010-2011

Cours Algorithmique et Programmation JAVA

CHAPITRE I.

GENERALITES

Objectif : Connatre le but du cours dalgorithmique lments de contenu :


Quest ce quune application informatique ? Comment arriver dun problme rel un programme pouvant tre excut par ordinateur Liens entre ALGORITHMIQUE et STRUCTURES DE DONNEES

I.1.Intrt de lalgorithmique
Informatiser une application, facturation de la consommation deau, par exemple, cest faire raliser par ordinateur, une tche qui tait ralise par lHomme. Pour faire excuter une tche par ordinateur, il faut tout dabord, dtailler suffisamment les tapes de rsolution du problme, pour quelle soit excutable par lhomme. Ensuite, transfrer la rsolution en une suite dtapes si lmentaire et simple excuter, pouvant tre code en un programme dans un langage comprhensible par ordinateur. Toute suite dtapes si lmentaire et simple excuter sappelle un ALGORITHME. Un programme cest un algorithme cod dans un langage comprhensible par ordinateur laide dun compilateur (traducteur).

I.2.Dfinitions
Lalgorithme est le rsultat dune dmarche logique de rsolution dun problme pour la mise en uvre pratique sur ordinateur et afin dobtenir des rsultats concrets il faut passer par lintermdiaire dun langage de propagation. Un algorithme dcrit une succession doprations qui, si elles sont fidlement excutes, produiront le rsultat dsir. Un algorithme est une suite dactions que devra effectuer un automate pour arriver en un temps fini, un rsultat dtermin partir dune situation donne. La suite doprations sera compose dactions lmentaires appeles instructions. Quest ce que lAlgorithmique ? Cest la logique dcrire des algorithmes. Pour pouvoir crire des algorithmes, il faut connatre la rsolution manuelle du problme, connatre les capacits de lordinateur en terme dactions lmentaires quil peut assurer et la logique dexcution des instructions.

I.3.Les tapes de rsolution dun problme


1. Comprendre lnonc du problme 2. Dcomposer le problme en sous-problmes plus simple rsoudre 3. Associer chaque sous problme, une spcification : Les donnes ncessaires Les donnes rsultantes La dmarche suivre pour arriver au rsultat en partant dun ensemble de donnes. 4. Elaboration d'un algorithme.

I7 de Gabs 2010-2011

Cours Algorithmique et Programmation JAVA Illustration du fonctionnement d'un ordinateur

Dispositifs dentre : - clavier - souris, - ....... Donnes en entre MEMOIRE ..... Excution Suite de cases mmoire Ecran ou Imprimante Donnes en sortie On peut dire que la partie EXECUTANT est le problme de lalgorithmique, et la partie MEMOIRE (stockage de donne) concerne la matire " Structures de donnes ". Rsultat EXECUTANT

I.4.Structure dun algorithme


ALGORITHME nom_de_lalgorithme CONSTANTES {Dfinition des constantes} TYPES {Dfinition de types} VARIABLES {Dclaration de variables} DEBUT {Suite dinstructions} FIN Notions de : Constante, Type, Variable. Exemple 1 ALGORITHME afficher DEBUT Ecrire("La valeur de 3*5 est ", 3*5) FIN Cet algorithme permet d'afficher sur l'cran la phrase suivante : La valeur de 3*5 est 15 Exemple 2 On veut crire lalgorithme qui permet de saisir 3 notes dun tudiant dans trois matires, tant donns les coefficients respectifs 2, 3 et 1. Rsolution A partir de lnonc du problme, nous recherchons la solution par une dmarche en 2 phases.

I7 de Gabs 2010-2011

Cours Algorithmique et Programmation JAVA On doit comprendre comment le rsoudre manuellement, Dfinir ce quon a besoin comme donnes, quelles est la dmarche suivre (formules de calcul) pour arriver aux rsultats. Pour notre problme, nous connaissons les coefficients et la formule de calcul (Ni*Ci / Ci), nous avons besoins des notes de chaque matire dans lordre, et enfin nous pouvons communiquer le rsultat lutilisateur. ALGORITHME MOYENNE CONSTANTES C1=2 C2=3 C3=1 VARIABLES N1, N2, N3 : REEL MOY : REEL DEBUT {Affichage message : Invitation de l'utilisateur introduire des donnes} ECRIRE (" Donner trois valeurs relles ") {Saisie des notes} LIRE (N1, N2, N3) {Calcul de la moyenne} MOY (N1*C1+N2*C2+N3*C3) / (C1+C2+C3) {Affichage du rsultat sur lcran} ECRIRE (" La moyenne est = ", MOY) FIN Remarque : Le texte entre les accolades est purement explicatif, il sert rendre lalgorithme plus lisible.

I7 de Gabs 2010-2011

Cours Algorithmique et Programmation JAVA

CHAPITRE II. LES ACTIONS ALGORITHMIQUES SIMPLES Objectif : Comprendre les actions algorithmiques simples et connatre leurs syntaxes lments de contenu :
Concepts de base La saisie de donnes L'affichage L'affectation L'valuation d'une expression arithmtique

II.1. Concepts de base


Dans tout ce qui suit, pour prsenter les syntaxes, on suit les rgles suivantes : Ce qui est entre les crochets est optionnel. La suite des points de suspensions "" veut dire que ce qui prcde peut se rpter plusieurs fois. Le symbole " | " veut dire : " ou bien ". Les mots en majuscule sont des mots rservs. Ce qui est entre accolades est un commentaire, pour la lisibilit des algorithmes.

II.2. Laffichage : ECRIRE


Cette action permet de communiquer un rsultat ou un message sur cran ou sur imprimante pour l'utilisateur. Syntaxe ECRIRE(paramtre1 [[,paramtre2]]) Paramtre = variable | expression | constante Constante = nombre | message Exemples ECRIRE(" La valeur de 3*2 est gale ", 3*2) message expression ECRIRE(" La moyenne est = ", MOY) Variable

II.3.2. La saisie des donnes : LIRE


L'ordre LIRE permet l'ordinateur dacqurir des donnes partir de lutilisateur, dans des cases mmoire bien dfinies (qui sont les variables dclares). Rappel Les variables sont des cases mmoire, supposes contenir un type de donnes, nommes par le nom de variable. Syntaxe LIRE(variable1 [[, variable2] ])

I7 de Gabs 2010-2011

Cours Algorithmique et Programmation JAVA Remarques : 1. La saisie se fait uniquement dans des variables. Ce sont les cases (cellules) qui pourront accueillir les donnes correspondantes. 2. La donne introduire doit tre de mme type que la variable rceptrice.

II.4.3. Les expressions arithmtiques


Parmi les oprateurs, on distingue les fonctions et les oprateurs. Les fonctions La fonction DIV permet de donner le rsultat de la division entire dun nombre par un autre. 7 DIV 2 3 La fonction MOD (se lit Modulo), permet de donner le reste de la division entire dun entier par un autre. 7 MOD 2 1 La fonction ** ou ^ permet dlever un nombre la puissance dun autre. 2**3 8 Les oprateurs

Sont le "+", "-", "/", "*"

Ordre de priorit Les oprateurs suivants sont ordonns du plus prioritaire au moins prioritaire dans l'valuation d'une expression arithmtique. 1- Les parenthses 2- Les fonctions 3- Les oprateurs de multiplication " * " et de division " / " 4- Les oprateurs daddition " + " et de soustraction " - " Remarque Si lordre entre les oprateurs dans une expression est le mme, on value lexpression de gauche droite. Exemples 3**2+4 = 9+4=13 3**(2+4)=3**6 car les parenthses sont plus prioritaires 17 MOD 10 DIV 3=(17MOD10)DIV3=7DIV3=2

II.5.4. Laffectation
Cest laction de charger une valeur dans une variable. Cette valeur peut elle-mme tre une variable, le rsultat dune expression arithmtique ou logique ou une constante. Syntaxe Variable1 variable2 | expression | constante A B se lit " A reoit B " Le rsultat de cette action est de mettre le contenu de la variable B dans la variable A. Si B tait une expression, elle aurait t value, ensuite sa valeur est transfre dans la variable rceptrice ( notre gauche). Remarque Laffectation ne vide pas la variable mettrice ( notre droite) de sa valeur. Par contre, le contenu de la variable rceptrice est cras et remplac par la nouvelle valeur.

I7 de Gabs 2010-2011

Cours Algorithmique et Programmation JAVA Illustration de laffectation Supposons quon ait deux rcipients A et B o A contient un liquide color en jaune et B contient un liquide rouge. Peut-on changer les contenus de A et de B (c.--d. mettre le liquide rouge dans A et le liquide jaune dans B). Rsultat Cette opration nest possible que si on utilise un troisime rcipient quon appelle rcipient auxiliaire.

Etat 0 A B

Aux Aux

A = Jaune B = Rouge Aux = Vide

Etat 1

Aux

Aux B A = Jaune B = vide Aux = Rouge

Etat 2

B A A = Vide B = Jaune Aux = Rouge

Etat Final

A Aux A = Rouge B = Jaune Aux = Vide

Avec des variables relles, cette opration dchange de contenu se fait entre cases mmoires qui reprsentent les conteneurs (rcipients). Problme : Echanger les valeurs de 2 variables numriques. Principe : pour viter de perdre lune des 2 valeurs initiales (A et B), on utilise une 3ime variable pour prserver la valeur initiale de la premire variable modifie.

Remarques Importantes
Toute variable utilise dans un algorithme doit tre dclare au dbut de lalgorithme, une fois et une seule.

I7 de Gabs 2010-2011

Cours Algorithmique et Programmation JAVA

Laffectation de valeur une variable peut tre effectue autant de fois que lon veut au cours dun algorithme. La valeur de la variable sera alors modifie chaque affectation. Lorsquune variable apparat en partie droite dune action daffectation, cest que lon suppose quelle contient obligatoirement une valeur. Cette valeur devra lui avoir t affecte auparavant (par initialisation ou saisie), sinon lon dira que la valeur est indfinie, et le rsultat de laffectation ne sera pas dfini. La variable rceptrice dune affectation doit tre de mme type que de la valeur affecter ou de type compatible. Le type est dit compatible sil est inclus dans le type de la variable rceptrice. Exemple : REEL ENTIER est possible mais pas linverse.
Exemple Ecrire lalgorithme qui permet de calculer le discriminant (delta) dune quation du second degr.

I7 de Gabs 2010-2011

10

Cours Algorithmique et Programmation JAVA

TD 1 : Les actions simples


Exercice 1 Soit lalgorithme suivant : ALGORITHME EQUATION2D VAR a,b,c : REEL delta : REEL DEBUT Ecrire("Donnez la valeur du premier paramtre") Lire(a) Ecrire("Donnez la valeur du second paramtre") Lire(b) Ecrire("Donnez la valeur du troisime paramtre") Lire(c) delta b2 b * b - 4a * c Ecrire(" le discriminant est = ") Fin 1 - Dcrire cet algorithme en dtail (ligne par ligne), en donnant les ventuelles erreurs. 2 - Quelles sont les valeurs de delta dans les cas suivants : a=2 b=-3 c=1 a=1 b=2 c=2 Exercice 2 Ecrire l'algorithme permettant de saisir l'abscisse d'un point A et de calculer son ordonn f(x)= 2 x3 - 3x2 + 4 Evaluer le rsultat en expliquant les ordres de priorit pour x=-2. Exercice 3 Ecrire l'algorithme qui permet de permuter les valeurs de A et B sans utiliser de variable auxiliaire. Exercice 4 Faire l'algorithme qui lit les coordonnes de deux vecteurs u et v, et de calculer leur norme et leur produit scalaire. Exercice 5 Ecrire lalgorithme qui permet de saisir les paramtres dune quation du second degr et de calculer son discriminant. Exercice 6 Ecrire lalgorithme permettant de calculer et dafficher le salaire net dun employ. Sachant que : Le salaire net = Salaire brut Valeur de limpt Valeur de CNSS Salaire brut = (Salaire de base + Prime de technicit + Prime de transport + Prime des enfants) * Taux de travail Taux de travail = Nombre de jours travaills / 26 Prime des enfants = Prime dun enfant * Nombre denfants Valeur de lImpt = Taux de lImpt * Salaire Brut

I7 de Gabs 2010-2011

11

Cours Algorithmique et Programmation JAVA Valeur de CNSS = Taux de CNSS * Salaire Brut Taux CNSS = 26,5% Taux Impt = 2%

Indication : Dcrire lenvironnement de travail : toutes les variables en entre, en sortie et de calcul.

I7 de Gabs 2010-2011

12

Cours Algorithmique et Programmation JAVA

CHAPITRE III. LES STRUCTURES CONDITIONNELLES III.1. Introduction


Souvent les problmes ncessitent l'tude de plusieurs situations qui ne peuvent pas tre traites par les squences d'actions simples. Puisqu'on a plusieurs situations, et qu'avant l'excution, on ne sait pas quel cas de figure on aura excuter, dans lalgorithme on doit prvoir tous les cas possibles. Ce sont les structures conditionnelles qui le permettent, en se basant sur ce quon appelle prdicat ou condition.

III.2. Notion de PREDICAT


Un prdicat est un nonc ou proposition qui peut tre vrai ou faux selon ce quon est entrain de parler. En mathmatiques, cest une expression contenant une ou plusieurs variables et qui est susceptible de devenir une proposition vraie ou fausse selon les valeurs attribues ces variables. Exemple : (10 < 15) est un prdicat vrai (10 < 3) est un prdicat faux

III.3. Evaluation d'une expression logique


Une condition est une expression de type logique. Ils lui correspondent deux valeurs possibles VRAI et FAUX qu'on note par V ou F. Considrons deux variables logiques A et B. Voyons quels sont les oprateurs logiques et leurs ordres de priorits. 1-a) Notons que (A = faux) non A (A = vrai) A

Les oprateurs logiques sont : La ngation : "non" L'intersection : "et" L'union : "ou" 1-b) 1. non : 2. et : 3. ou : 1-c) 1-d) Notation et Ordre de priorit des oprateurs logiques

Tableaux d'valuations

La ngation d'une condition A Vrai Faux L'intersection de deux conditions Non A Faux Vrai

I7 de Gabs 2010-2011

13

Cours Algorithmique et Programmation JAVA A et B Vrai Faux L'union de deux conditions A ou B Vrai Faux Thorme de DE MORGAN (A B) A B (A B) A B Vrai Vrai Vrai Faux Vrai Faux Vrai Vrai Faux Faux Faux Faux

III.4. La structure conditionnelle SI


Syntaxe SI <Condition> ALORS <suite daction(s)-1> [SINON <suite dactions(s)-2>] FINSI Format Organigramme faux condition vrai

TRAITEMENT-2

TRAITEMENT-1

FINSI La <condition> est un prdicat, qui peut tre vrai ou faux, selon les valeurs des paramtres la constituant. Si la condition est vrifie (sa valeur est vrai), cest la <suite dactions-1> qui sera excute. Ensuite, le systme passe lexcution juste aprs le FINSI. Dans le cas contraire, lorsque la condition nest pas vrifie (valeur de la condition est faux), cest la <suite dactions-2> qui sexcute, en cas o celle ci existe (facultative). Si elle nexiste pas, le systme passe directement linstruction qui suit le FINSI. Les suites d'actions 1 et 2, peuvent tre des actions simples ou mme des structures conditionnelles.

Exemple 1 Lire un nombre rel, et dire sil est positif ou strictement ngatif.

I7 de Gabs 2010-2011

14

Cours Algorithmique et Programmation JAVA ALGORITHME POS-NEG VARIABLES A : rel DEBUT ECRIRE("Donner un nombre ") LIRE(A) SI (A < 0) ALORS ECRIRE(A, " est ngatif ") SINON ECRIRE(A, " est positif ") FINSI FIN Autrement : ALGORITHME POS-NEG-1 VARIABLES A : rel B : logique DEBUT ECRIRE("Donner un nombre ") LIRE(A) B (A < 0) SI (B) ALORS ECRIRE(A, " est ngatif ") SINON ECRIRE(A, " est positif ") FINSI FIN Dans cet exemple, on a dtermin uniquement les cas de positivit ou de ngativit, et on n'a pas dtermin le cas o A est nulle. ALGORITHME POS-NEG-NUL VARIABLES A : rel DEBUT ECRIRE("Donner un nombre ") LIRE(A) SI (A < 0) ALORS ECRIRE(A, " est ngatif ") SINON {A >= 0} SI (A > 0)ALORS ECRIRE(A, " est positif ") SINON {A = 0} ECRIRE (A, "est nulle") FINSI FINSI FIN Exemples 1) Ecrire l'algorithme qui permet de dterminer si un entier lu est pair ou impair. 2) Ecrire l'algorithme qui permet de saisir deux nombres A et B et de dterminer si la valeur de A est suprieure, infrieure ou gale B.

I7 de Gabs 2010-2011

15

Cours Algorithmique et Programmation JAVA

III.5. La structure conditionnelle SELON


Cette structure conditionnelle est appele aussi choix multiple ou slective car elle slectionne entre plusieurs choix la fois, et non entre deux choix alternatifs (le cas de la structure SI). Syntaxe SELON (slecteur) FAIRE Cas <liste de valeurs-1> : <suite d'action (s)-1> [Cas <liste de valeur-2> : <suite d'action (s)-2> . ] [SINON : <suite d'action (s)-n> ] FINSELON Le slecteur peut tre une variable de type scalaire ou une expression arithmtique ou logique. La structure SELON value le "slecteur", passe comparer celui ci respectivement avec les valeurs dans les listes. En cas d'galit avec une valeur, les actions correspondantes, qui sont devant cette valeur seront excutes. Devant "Cas", il peut y avoir une seule valeur, une suite de valeurs spares par des virgules et/ou un intervalle de valeurs. Aprs avoir traiter la suite d'actions correspondante, l'excution se poursuit aprs le FINSELON. Remarque 1. Le slecteur doit avoir le mme type que les valeurs devant les cas. 2. Le type de ces valeurs ne doit tre, ni rel ni chane de caractres. Exemple Ecrire l'algorithme qui permet de saisir un numro de couleur de l'arc-en-ciel et d'afficher la couleur correspondante : 1: rouge, 2 : orang, 3 : jaune, 4 : vert, 5 : bleu, 6 : indigo et 7 : violet.

I7 de Gabs 2010-2011

16

Cours Algorithmique et Programmation JAVA

TD 2 : Les Structures Conditionnelles


Exercice 1 Evaluer les expressions logiques suivantes, avec (a, b, c, d) = (2, 3,5, 10) et (X, Y) = (V, F). 1) (a < b) (a < c) 4) (a < c) (c = d/2) 7) (d / c = b) = X 2) ((a < b) (a < c)) 5) (d / a = c) = Y 8) (a < b) (d < c) 3) (a < b) (a < c) 6) (d / c = b) = Y 9) (a < b) (d < c) = X

Exercice 2 Rcrire l'exercice 6 de la srie N1 en supposant que le taux de l'impt n'est pas fixe mais il varie selon la valeur du salaire de base. En effet : Taux de l'impt = 0 si le salaire de base < 150 Taux de l'impt = 2% si le salaire de base [150,250[ Taux de l'impt = 5% si le salaire de base [250,500[ Taux de l'impt = 12% si le salaire de base >= 500. En plus, la prime des enfants est dfinit comme suit : 7DT pour le premier enfant, 5DT pour le deuxime enfant, 4DT pour le troisime enfant. Pas de prime pour le reste. Exercice 3 Ecrire l'algorithme qui permet de saisir un nombre puis dterminer sil appartient un intervalle donn, sachant que les extrmits de lintervalle sont fixes par lutilisateur. Exercice 4 Ecrire l'algorithme qui permet de calculer le montant des heures supplmentaires dun employ, sachant le prix unitaire dune heure selon le barme suivant : Les 39 premires heures sans supplment, De la 40ime la 44ime heure sont majores de 50%, De la 45ime la 49ime heure sont majores de 75%, De la 50ime heure ou plus, sont majores de 100%. Exercice 5 Ecrire l'algorithme qui permet de saisir la moyenne gnrale dun tudiant et de dterminer son rsultat et sa mention. (les conditions de rachat sont appliques partir de 9,75. Exercice 6 Ecrire l'algorithme qui permet de saisir les trois paramtres d'une quation du second degr, et de discuter les solutions selon les valeurs de a, b et c, lorsqu'elles sont nulles ou pas. Exercice 7 Ecrire l'algorithme qui permet de saisir le jour, le mois et l'anne d'une date (Mois : numro du mois), et de dterminer si elle est correcte ou non, et o est l'erreur. Exercice 8 Ecrire l'algorithme qui permet de saisir deux nombres, et un oprateur et d'valuer l'expression arithmtique correspondante. Exercice 9

I7 de Gabs 2010-2011

17

Cours Algorithmique et Programmation JAVA Ecrire l'algorithme CONTRAT qui permet d'aider une compagnie d'assurance prendre une dcision concernant les demandes d'affiliation en se basant sur les critres suivants : CRITERE DECISION Contrat A Contrat B Contrat refus Expertise demande AGE <=30 >30 Bonne sant OUI OUI NON OUI Accident NON OUI OUI OUI

Exercice 10 Ecrire un algorithme qui permet de saisir un numro de mois et un jour (le contrle n'est pas demand) et d'afficher la priode correspondante selon le tableau suivant : Priode DU AU Vacances d't 1/7 15/9 Premier trimestre 16/9 19/12 Vacances d'hiver 20/12 3/1 Deuxime trimestre 4/1 19/3 Vacances de printemps 20/3 3/4 Troisime trimestre 4/4 30/6 Exercice 11 Ecrire l'algorithme permettant de lire la valeur de la variable DEVINETTE et dafficher parmi les messages suivants celui qui correspond la valeur trouve : ROUGE si la couleur vaut R ou r VERT si la couleur vaut V ou v BLEU si la couleur vaut B ou b NOIR pour tout autre caractre. Exercice 12 Ecrire l'algorithme permettant de lire la valeur de la temprature de leau et dafficher son tat : GLACE Si la temprature infrieure 0, EAU Si la temprature est strictement suprieure 0 et infrieure 100, VAPEUR Si la temprature suprieure 100. Exercice 13 Ecrire l'algorithme qui lit un entier positif infrieur 999 (compos de trois chiffres au maximum) et d'afficher le nombre de centaines, de dizaines et d'units.

I7 de Gabs 2010-2011

18

Cours Algorithmique et Programmation JAVA

CHAPITRE IV. LES STRUCTURES REPETITIVES IV.1. Introduction


Dans les problmes quotidiens, on ne traite pas uniquement des squences d'actions, sous ou sans conditions, mais il peut tre frquent d'tre oblig d'excuter un traitement (squence d'actions), plusieurs fois. En effet, pour saisir les N notes d'un tudiant et calculer sa moyenne, on est amen saisir N variables, puis faire la somme et ensuite diviser la somme par N. Cette solution ncessite la rservation de l'espace par la dclaration des variables, et une srie de squences d'criture/lecture. Ce problme est rsolu l'aide des structures rptitives. Celles ci permettent de donner un ordre de rptition d'une action ou d'une squence d'actions une ou plusieurs fois.

IV.2. La boucle POUR


Cette structure exprime la rptition d'un traitement un nombre de fois. Syntaxe POUR Vc DE Vi A Vf [PAS Vp] FAIRE <Traitement> FINFAIRE O Vc est une variable entire, qui compte le nombre de rptition du <Traitement>, Vi la valeur initiale laquelle Vc est initialis, Vf la valeur finale laquelle se termine Vc, Vp la valeur du pas, c'est la valeur qu'on rajoute Vc chaque fin de traitement.

Remarque 1. La boucle POUR est utilise lorsqu'on connat le nombre de rptition du <Traitement> d'avance. 2. La valeur du pas peut tre positive ou ngative et par consquent, il faut; au dpart de la boucle; que Vi <= Vf ou Vi >= Vf selon la positivit ou la ngativit de cette valeur. 3. La valeur du pas est gale 1 par dfaut. Les tapes d'excution de la boucle POUR 1) Initialisation de Vc par la valeur de Vi (comme si on avait VcVi) 2) Test si Vi dpasse () Vf (du ct suprieur ou infrieur, selon la positivit ou la ngativit du pas). Si oui, alors la boucle s'arrte et l'excution se poursuit aprs le FINFAIRE Sinon, Excution du <Traitement>, Incrmentation ou dcrmentation de Vc par la valeur du pas, Retour l'tape 2. Application Ecrire l'algorithme qui permet de saisir les moyennes des N tudiants de la classe Informatique et de calculer la moyenne gnrale de la classe.

I7 de Gabs 2010-2011

19

Cours Algorithmique et Programmation JAVA

Rsolution Sans les boucles, on est oblig de dclarer N variables, et d'crire N actions LIRE. LIRE(note) S S + MOY LIRE(MOY) N S S + MOY fois .. LIRE(MOY) S S + MOY La boucle POUR donne l'ordre la machine d'itrer les deux actions Donc le compteur varie de 1 jusqu' N avec un pas de 1.

LIRE(MOY) SS+ MOY N fois.

ALGORITHME MOYENNE VARIABLES i, N : entier MOY, MC : rel DEBUT ECRIRE("Donner le nombre d'tudiants") LIRE(N) SI (N > 0) ALORS S 0 {Initialisation de S} POUR i DE 1 A N FAIRE {Le pas gale 1 par dfaut} ECRIRE("Donner la moyenne de l'tudiant n", i) LIRE(MOY) S S + MOY {on rajoute la moyenne du iime tudiant la somme} FIN FAIRE MC S / N ECRIRE("La moyenne de la classe est : ", MC) SINON ECRIRE("Erreur dans le nombre d'tudiants") FINSI FIN Remarque Juste Avant le FIN FAIRE, le changement de la valeur de i se fait automatiquement. Application 1 Ecrire l'algorithme qui permet d'afficher tous les nombres pairs qui existent entre 1 et 10. 1ire solution POUR i de 2 10 pas 2 Faire ECRIRE(i) FINFAIRE 2ime solution POUR i de 2 10 Faire SI (i mod 2 = 0) ALORS ECRIRE(i) FINSI FINFAIRE 3ime solution POUR i de 1 5 Faire ECRIRE(2*i) FINFAIRE

Application 2 Ecrire l'algorithme qui permet d'afficher tous les nombres impairs entre 50 et 100 dans l'ordre dcroissant.

I7 de Gabs 2010-2011

20

Cours Algorithmique et Programmation JAVA

POUR i de 99 50 PAS (-2) FAIRE ECRIRE(i) FIN FAIRE La valeur finale peut tre 50 ou 51 car le test de sortie est i < Vf (49 < 50 ou 51)

IV.3. La boucle Rpter Jusqu'


Syntaxe Rpter <Traitement> Jusqu' (condition d'arrt) Cet ordre d'itration permet de rpter le <Traitement> une ou plusieurs fois et de s'arrter sur une condition. En effet, lorsque la condition est vrifie, la boucle s'arrte, si non elle rexcute le <Traitement>. Remarques 1. Dans cette boucle, le traitement est excut au moins une fois avant l'valuation de la condition d'arrt. 2. Il doit y avoir une action dans le <Traitement> qui modifie la valeur de la condition. Les tapes d'excution de la boucle Rpter 1) Excution du <Traitement> 2) Test de la valeur de la <condition d'arrt> Si elle est vrifie Alors la boucle s'arrte Sinon Retour l'tape 1. Application Ecrire un algorithme qui saisit un nombre pair et qui dtermine combien de fois il est divisible par 2. Exemple 8 est divisible 3 fois par 2 (2*2*2). ALGORITHME PAIR-NBDIV2 VARIABLES N, N2 : entier DEBUT {Saisie d'un entier qui doit tre pair} Rpter ECRIRE("Donner un entier pair") LIRE(N) Jusqu' (N MOD 2 = 0) {condition pour que N soit pair} {Dtermination du nombre de division par 2} N2 0 NB N Rpter NB NB div 2 N2 N2 +1 Jusqu' (NB MOD 2 <> 0) {On s'arrte lorsque NB n'est plus divisible par 2} ECRIRE(N, "est divisible par 2", N2,"fois") FIN

I7 de Gabs 2010-2011

21

Cours Algorithmique et Programmation JAVA

IV.4. La boucle TANT QUE


Syntaxe TANT QUE (condition d'excution) FAIRE <Traitement> FIN FAIRE Cet ordre d'itration permet de rpter le <Traitement> zro ou plusieurs fois et de s'arrter lorsque la condition d'excution n'est plus vrifie. En effet, lorsque la condition d'excution est vrifie, le <Traitement> est excut, si non elle s'arrte. Les tapes d'excution de la boucle Rpter 1) Test de la valeur de la <condition d'excution> 2) Si elle est vrifie Alors Excution du <Traitement> Retour l'tape 1. Sinon Arrt de la boucle. Remarques 1. Dans cette boucle, le traitement peut ne pas tre excut aucune fois, c'est lorsque la condition d'excution est faux ds le dpart. 2. Les paramtres de la condition doivent tre initialiss par lecture ou par affectation avant la boucle. 3. Il doit y avoir une action dans le <Traitement> qui modifie la valeur de la condition. Application Ecrire un algorithme qui saisit un nombre pair et qui dtermine combien de fois il est divisible par 2. Exemple 8 est divisible 3 fois par 2 (2*2*2). ALGORITHME PAIR-NBDIV2 VAR N, N2 : entier DEBUT {Saisie d'un entier qui doit tre pair} Rpter ECRIRE("Donner un entier pair") LIRE(N) Jusqu' (N MOD 2 = 0) {condition pour que N soit pair} {Dtermination du nombre de division par 2} N2 0 NB N TANT QUE (NB MOD 2 = 0) FAIRE NB NB div 2 N2 N2 +1 FIN FAIRE {On s'arrte lorsque NB n'est plus divisible par 2} ECRIRE(N, "est divisible par 2", N2,"fois") FIN

I7 de Gabs 2010-2011

22

Cours Algorithmique et Programmation JAVA

La condition d'arrt avec la boucle Rpter est l'inverse de la condition d'excution de la boucle TANTQUE. Remarque Le Traitement d'une boucle peut contenir lui aussi une autre boucle. On l'appelle dans ce cas des boucles imbriques.

I7 de Gabs 2010-2011

23

Cours Algorithmique et Programmation JAVA

TD 3 : Les structures rptitives


Exercice 1 Ecrire l'algorithme qui permet d'afficher les N premiers entiers impairs dans l'ordre dcroissant. Exercice 2 Ecrire l'algorithme qui permet d'afficher les diviseurs d'un entiers N. Exercice 3 Ecrire l'algorithme qui dtermine si une entier N est parfait ou non. Un entier est dit parfait s'il est gal la somme de ses diviseurs. Exemple 6 = 3 + 2 +1 Exercice 4 Ecrire l'algorithme qui permet de calculer le produit de deux entiers en utilisant des additions successives. Exercice 5 Ecrire l'algorithme qui permet de calculer la division de deux entiers en utilisant des soustractions successives Exercice 6 Ecrire l'algorithme qui permet de saisir un entier N et d'afficher s'il est premier ou non. Un nombre est dit premier s'il est divisible uniquement par 1 et par lui-mme. Exercice 7 Ecrire l'algorithme qui dtermine le 20ime terme d'une suite dfinie par : S0 = 2, S1 = 3 et Sn = Sn-2 + (-1)n * Sn-1 Exercice 8 Ecrire l'algorithme qui dtermine le Nime terme d'une suite dfinie par : S0 = 2, S1 = 3, S2 = -2 et Sn = Sn-3 + (-1)n * Sn-1 Exercice 9 On dmontre en mathmatique que le cosinus d'un angle exprim en radian est donn par la somme infinie suivante : COS(x) = 1 X2 / 2! + X4/4! X6/6! + On dcide d'arrter la somme un certain rang n (n>3) donn. Ecrire l'algorithme qui permet d'valuer le cosinus d'une valeur x donne. Exercice 10 Ecrire l'algorithme qui permet de saisir autant de nombres que l'utilisateur le veuille, et de dterminer le nombre de rels strictement positifs et celui des ngatifs. On s'arrte lorsque la valeur est 999. Exercice 11 Ecrire l'algorithme qui permet de saisir autant de nombres que l'utilisateur le veuille, pourvu qu'ils soient dans l'ordre croissant. On s'arrte lorsque la valeur est 999.

I7 de Gabs 2010-2011

24

Cours Algorithmique et Programmation JAVA

Exercice 12 Ecrire l'algorithme qui permet de saisir un entier positif en dcimal et de le transformer en binaire. Exemple (7)10 = (111)2 Exercice 13 Ecrire un algorithme qui permet de saisir un entier et une base infrieure ou gale 10 et de vrifier si ce nombre appartient la base ou non. Exercice 14 Ecrire un algorithme qui permet de saisir deux entiers et de vrifier si les chiffres du premier appartiennent ceux du second nombre ou non. Exercice 15 Ecrire un algorithme qui permet de saisir deux entiers positifs et de dterminer leur plus grand commun diviseur (PGCD). Le PGCD(A,B) = PGCD(A-B, B) si A est le plus grand et PGCD(A,B) = PGCD(A, B-A) si B est le plus grand. Si A=B le PGCD(A,B) est A ou B. Exercice 16 Ecrire un algorithme qui permet de calculer la factorielle d'un entier N donn. Exercice 17 Ecrire un algorithme qui permet de saisir des entiers alternatifs (si l'un est positif sont suivant doit tre ngatif et vice versa). Exercice 18 Ecrire l'algorithme qui permet de saisir deux entiers et de dterminer leur plus petit commun multiple (PPCM).

I7 de Gabs 2010-2011

25

Cours Algorithmique et Programmation JAVA

CHAPITRE V. TRAITEMENT DES TABLEAUX


Pourquoi les tableaux ? 1) Calculer la moyenne de 30 lves 2) Effectuer leur classement Rponse pour i de 1 30 faire Ecrire (" Donner la moyenne de l'tudiant N",i) Lire (moyenne) Fin faire Conclusion : On ne peut pas effectuer le classement Pourquoi ? Parce qu'on ne garde pas les moyennes prcdentes et la variable moyenne contient uniquement la dernire valeur.

V.1.

Utilisation des tableaux

Intrt Gain de temps, rtrcissement du volume de l'algorithme et possibilit de rutilisation de toutes les valeurs ultrieurement dans l'algorithme. Il est plus convenable, alors, de dfinir un espace mmoire quon appelle MOY qui sera divis en 30 parties quitables, indices de 1 30. MOY Contenu Indice

15 1

12 2

5 3

10 4

4 5

50 . 6 7 8 9 10 11 12 13

On dfinit un tableau de 30 cases une seule dimension quon appelle VECTEUR. ALGORITHME MOYENNE CONSTANTES Bi=1 Bs=30 VARIABLES T : Tableau [bi..bs] de rel i : entier

V.2.

Les vecteurs

Un vecteur est une partie de mmoire contenant n zones variables rfrences par le mme nom de variable pour accder un lment particulier de ce vecteur. On indice le nom de variable. Lindice peut tre une constante, une variable ou une expression arithmtique. MOY[i] indice dun lment du vecteur variable qui indique le nom du vecteur

I7 de Gabs 2010-2011

26

Cours Algorithmique et Programmation JAVA

MOY[i] : reprsente llment du vecteur MOY occupant le rang " i ". Lindice peut tre : Une constante MOY[5] Une variable MOY[i] Une expression MOY[i*2] ATTENTION Avant dutiliser un tableau, il faut dclarer sa taille pour que le systme rserve la place en mmoire, ncessaire pour stocker tous les lments de ce tableau. Les lments dun mme tableau doivent tre de mme type.

V.2.1

Rappel de Dclaration dun vecteur

Dans la partie CONST, on peut dfinir la taille du tableau. Ensuite, on peut dclarer le nombre dlments saisir dans le tableau. Remarque : Le nombre dlments saisir ne doit pas dpasser la taille du tableau pour ne pas dborder sa capacit. On appelle dimension dun vecteur le nombre dlments qui constituent ce vecteur.

V.2.2

Chargement dun Vecteur

Le chargement dun vecteur consiste saisir les donnes des lments du vecteur. (Remplir des cases successives du tableau). On doit utiliser une boucle qui permet de saisir chaque entre dans la boucle la iime case. ALGORITHME Vecteur CONSTANTES N = 30 VARIABLES MOY : Tableau[1..N] de rels Dbut {Chargement du tableau} Pour i de 1 N Faire Ecrire (" donner la moyenne de ltudiant N " , i ) Lire ( MOY [i]) Fin Faire { fin chargement } {Calcul de la somme des moyennes} SMOY 0 Pour i de 1 N Faire SMOY SMOY+MOY[i] Fin Faire SMOY SMOY / 30 Ecrire (" la moyenne du groupe est ", SMOY ) { calcul de la diffrence entre la moyenne de groupe et celle de ltudiant } Pour i de 1 N I7 de Gabs 2010-2011 27

Cours Algorithmique et Programmation JAVA

Faire Ecrire (" la diffrence de la moyenne du groupe et celle de ltudiant ",i , " est= ", SMOY-MOY[i]) Fin Faire Fin On peut crire les deux premires boucles en une seule. Simplifier alors cet algorithme. Remarque La taille dun tableau est fixe et ne peut tre donc change dans un programme : il en rsulte deux dfauts : Si on limite trop la taille dun tableau on risque le dpassement de capacit. La place mmoire rserve est insuffisante pour recevoir toutes les donnes. Application 1) Charger un vecteur de 10 lments par les 10 premiers entiers naturels positifs. 2) Charger un vecteur de 10 lments par les 10 premiers multiples de 7.

V.2.3

Recherche dans un vecteur

Recherche squentielle On peut chercher le nombre d'apparition d'un lment dans un vecteur, sa ou bien ses positions. Pour cela, on doit parcourir tout le vecteur lment par lment et le comparer avec la valeur de l'lment chercher. Applications 1. Chercher la position de la premire occurrence d'un lment e dans un vecteur V contenant N lments. (On suppose que le vecteur est dfinit) 2. Chercher le nombre d'apparition d'un lment e dans un vecteur V contenant N lments, ainsi que les positions des occurrences de cet lment. Rponse 1 i 1 Trouv vrai Tant que ((i <= N) et (Trouv = vrai)) Faire Si V[i] = e Alors Trouv Faux Sinon i i +1 Fin Si Fin Faire Si (Trouv = vrai) Alors Ecrire(e, "se trouve la position" , i) Sinon Ecrire(e, "ne se trouve pas dans V") Fin Si Recherche dichotomique Ce type de recherche s'effectue dans un tableau ordonn. Principe 1. On divise le tableau en deux parties sensiblement gales, I7 de Gabs 2010-2011 28

Cours Algorithmique et Programmation JAVA

2. On compare la valeur chercher avec l'lment du milieu, 3. Si elles ne sont pas gales, on s'intresse uniquement la partie contenant les lments voulus et on dlaisse l'autre partie. 4. On recommence ces 3 tapes jusqu' avoir un seul lment comparer. Application On suppose qu'on dispose d'un vecteur V de N lments. On veut chercher la valeur Val. ALGORITHME DICHOTHOMIE ... Inf 1 N Sup Trouv vrai Tant que ((Inf <= Sup) et (Trouv = vrai)) Faire Mil (Inf+Sup)DIV 2 Si (V[Mil] = Val) Alors faux Trouv Sinon Si (V[Mil] < Val) Alors Inf Mil + 1 Sinon Sup Mil -1 Fin Si Fin Si Fin Faire Si (Trouv = faux) Alors Ecrire(Val, "existe la position" , Mil) Sinon Ecrire(Val, "n'existe pas dans V) Fin Si

V.3.

2. Les matrices

Les matrices sont les tableaux deux dimensions. 4 COLONNES


1 1 2 3 4

2 4 7 5 8

5 -5 -6 -2 4

3 -1 -3 2 10

6 3 0 2 -9

2 3 4 5

L'lment d'indice [i,j] est celui du croisement de la ligne i avec la colonne j M[3,2] est -6

5 LIGNES

I7 de Gabs 2010-2011

29

Cours Algorithmique et Programmation JAVA

TD 4 : Les tableaux
Exercice 1 Ecrire un algorithme qui lit 4 notes et les met dans un tableau, puis affiche la moyenne. Exercice 2 Ecrire un algorithme qui lit une chane de caractres et affiche le nombre de voyelle dans cette chane. Exercice 3 Ecrire un algorithme qui lit 20 valeurs relles et qui dtermine la moyenne des valeurs strictement positives et la moyenne des valeurs strictement ngatives. Exercice 4 Ecrire un algorithme qui lit 35 notes relles et affiche la note maximale. On n'utilise pas de tableau. Exercice 5 Ecrire un algorithme qui lit 35 notes relles et affiche le nombre de notes qui sont au-dessous de la moyenne (<10) Exercice 6 Ecrire un algorithme qui lit une chane de caractres et qui affiche son inverse. Par exemple : STOP devient POTS FRUIT devient TIURF En utilisant une seule chane de caractres Exercice 7 Ecrire un algorithme qui lit deux chanes de caractres et qui affiche les caractres en commun. Exercice 8 Ecrire un algorithme qui met dans un tableau 2 dimensions la table de multiplication de 1 9. Exercice 9 Ecrire un algorithme qui lit un tableau de 10 entiers et met les entiers ngatifs droite et les entiers positifs gauche. Exercice 10 Ecrire un algorithme qui affiche le rsultat de la conversion d'un nombre entier strictement positive dans une base quelconque (comprise entre 2 et 10). Le nombre convertir ainsi que la valeur de la base sont fournis par clavier. Exercice 11 Ecrire un algorithme qui lit une chane de caractres contenant des parenthses ouvrantes et fermantes et doit affich si le nombre de parenthses est cohrent ou non. Exercice 12 Ecrire un algorithme qui permet de saisir des chanes de caractres et de les afficher et ne s'arrte que si on saisit la chane "fin". Exercice 13 Ecrire un algorithme qui permet de lire une chane de caractres et d'afficher si elle est palindrome ou non. Une chane est palindrome si elle se lit de gauche droite comme elle se lit de droite gauche. Exemple : aziza, radar, elle. Exercice 14 Ecrire un algorithme qui lit une chane de caractres et affiche le pourcentage des lettres voyelles. Exercice 15

I7 de Gabs 2010-2011

30

Cours Algorithmique et Programmation JAVA

La crible d'Eratosthne permet de dterminer les nombres premiers infrieurs une valeur n. Le programme C crire consiste pour chaque entier n rechercher parmi les suivants qui en sont des multiples et les liminer. Seul les nombres premiers vont rester. Ecrire un algorithme qui lit un entier positif et affiche les nombres premiers qui lui sont infrieurs pour n <30 et utiliser un tableau. Exercice 16 Ecrire un algorithme qui lit une matrice de rels de dimension 5 et 6. Exercice 17 Ecrire un algorithme qui met dans une matrice la table d'addition de 1 9. Exercice 18 Ecrire un algorithme qui lit une matrice de rel et calcule la somme de ses lments. La matrice est de dimension 7 et 12. Exercice 19 Ecrire un algorithme qui lit une matrice de dimension 50 et 20 et affiche le nombre de rels strictement positifs Exercice 20 Ecrire un algorithme qui lit une matrice de rels positifs de dimension 50 et 20 et affiche le plus grand lment. Exercice 21 Ecrire un algorithme qui lit une matrice de dimension 12 et 10 et affiche la position du plus petit lment. Exercice 22 Ecrire un algorithme qui lit une matrice de dimensions 10 et 8 et qui gnre une matrice transpose. Exercice 23 Ecrire un algorithme qui lit un rel et une matrice de dimension 3 et 4 et multiplie cette dernire par ce rel. Exercice 24 Ecrire un algorithme qui lit deux matrices de dimension 5 et 6 et effectue leur addition dans une nouvelle matrice. Exercice 25 Ecrire un algorithme qui lit une matrice M de dimension 10 et 10 et un rel x et affiche le nombre d'occurrence de x dans M.

I7 de Gabs 2010-2011

31

Cours Algorithmique et Programmation JAVA

CHAPITRE VI. LES ALGORITHMES DE TRI


Dans ce chapitre on prsente quelques algorithmes utiles, qui permettent d'ordonner les lments d'un tableau dans un ordre croissant ou dcroissant. L'ordre est par dfaut croissant. Un vecteur est dit tri si V[i] <= V[i+1], i [1..n-1]

VI.1 Tri par slection


Principe Utiliser un vecteur VT (vecteur tri) comme vecteur rsultat. Celui ci contiendra les lments du vecteur initial dans l'ordre croissant. Le principe est de : 0- Chercher le plus grand lment dans le vecteur initial V 1- Slectionner le plus petit lment dans V 2- Le mettre dans son ordre dans le vecteur VT 3- Le remplacer par le plus grand lment dans le vecteur initial (pour qu'il ne sera plus le minimum) 4- Si le nombre d'lments dans le vecteur rsultat n'est pas identique celui dans le vecteur initial Retourner l'tape 1 Sinon on s'arrte. Exemple Soit le vecteur V contenant 4 lments. V -1 15 15 15 15 VT 7 7 15 15 15 -1 -1 -1 -1

Au dpart Phase 1 Phase 2 Phase 3 Phase 4

10 10 10 15 15

15 15 15 15 15

7 7 7

10 10

15

Schma de l'algorithme ALGORITHME TRI_SELECTION CONSTANTES Bi = 1 Bs = 10 VARIABLES V, VT : Tableau[Bi..Bs] de rel N, i, j, indmin : entier MIN, MAX : rel DEBUT {Chargement du vecteur V} {Recherche du maximum} MAXV[1] Pour i de 2 N FAIRE Si MAX < V[i] Alors MAXV[i] FINSI FINFAIRE

I7 de Gabs 2010-2011

32

Cours Algorithmique et Programmation JAVA POUR i de 1 N-1 FAIRE {Recherche du minimum} MIN V[1] indmin 1 Pour j de 2 N faire Si MIN > V[j] ALORS MINV[j] Indmin j Fin si Fin Faire {Mettre le minimum trouv sa place dans le vecteur rsultat} VT[i] MIN V[indmin] MAX Fin Faire VT[N] MAX FIN Peut-on amliorer cet algorithme ?

VI.2 Algorithme de tri par slection et permutation


Il s'agit ici d'viter la construction d'un second vecteur et d'utiliser un seul vecteur initial qui sera tri. Supposons traits n-i (1 <= i < N) lments du vecteur. V[1..i] non trait V[i+1..N] Tri

1 i N On peut considrer le vecteur V comme la concatnation de deux sous-vecteurs : le sousvecteur V[1..i] dont les lments n'ont pas encore t tris, et le sous vecteur V[i+1..N] dont les lments sont tris. D'autre part tous les lments du sous-vecteur V[1..i] sont infrieurs ou gaux l'lment V[i+1]. On a donc : V[1..i] non trait, V[1..i] <= V[i+1], V[i+1..N] Tri On a deux cas : I=1 (V[1] non trait, V[1]<= V[2], V[2..N] tri) donc V[1..N] tri L'algorithme est termin. I>1 Pour augmenter le sous-vecteur V[i+1..n] d'un lment, il suffit de chercher le plus grand lment contenu dans le sous-vecteur V[1..i] et de placer cet lment en position i. Schma de l'algorithme ALGORITHME SLECTION_PERMUTATION

I7 de Gabs 2010-2011

33

Cours Algorithmique et Programmation JAVA CONST Bi = 1 Bs = 10 VAR V : Tableau[Bi..Bs] d'entier N, i, j : entier DEBUT {Chargement du vecteur V} Pour i de N 2 Faire {Recherche de l'indice du maximum dans V[1..i]} indmax 1 Pour j de 2 i FAIRE Si V[indmax] < V[j] Alors indmax i FIN SI FIN FAIRE {Mettre le maximum relatif trouv sa place} Si indmax <> i Alors Aux V[indmax] V[indmax] V[i] V[i] Aux Fin Si Fin Faire

VI.1 Tri par la mthode des bulles


Mme principe que le prcdent. Aprs avoir trait n-i (1 <= i < N) lments du vecteur. V[1..i] non trait V[i+1..N] Tri

1 i N On peut donc considrer le vecteur V comme la concatnation de deux sous-vecteurs : le sous-vecteur V[1..i] dont les lments n'ont pas encore t tris, et le sous vecteur V[i+1..N] dont les lments sont tris. D'autre part tous les lments du sous-vecteur V[1..i] sont infrieurs ou gaux l'lment V[i+1]. On a donc : V[1..i] non trait, V[1..i] <= V[i+1], V[i+1..N] Tri On a deux cas : I=1 (V[1] non trait, V[1]<= V[2], V[2..N] tri) donc V[1..N] tri L'algorithme est termin. I>1 Pour augmenter le sous-vecteur V[i+1..n] d'un lment, il suffit de chercher le plus grand lment contenu dans le sous-vecteur V[1..i] et de placer cet lment en position i.

I7 de Gabs 2010-2011

34

Cours Algorithmique et Programmation JAVA On parcourt le sous-vecteur V[1..i] de gauche droite et, chaque fois qu'il y a deux lments conscutifs qui ne sont pas dans l'ordre, on les permute. Cette opration permet d'obtenir en fin du iime parcours le plus grand lment plac en position i, et les lments aprs cette position sont ordonns. Schma de l'algorithme ALGORITHME TRI_BULLE1 CONST N= 10 VAR V : tableau[1..N] de rel N, i, j : entier AUX : rel DEBUT {Chargement du vecteur} POUR i de N 2 pas 1 FAIRE POUR j de 1 i FAIRE SI V[j]>V[j+1] ALORS AUX V[j] V[j] V[j+1] V[j+1] AUX FIN SI FIN FAIRE FIN FAIRE FIN Application Excuter la main cet algorithme avec les vecteurs suivants : 2 2 -1 3 0 1 1 Que remarquez-vous ? 3. Schma de l'algorithme bulle optimis ALGORITHME TRI_BULLE1 CONST N= 10 VAR V : tableau[1..N] de rel N, i, j : entier AUX : rel DEBUT {Chargement du vecteur} i N atonpermut vrai TANT QUE (atonpermut) FAIRE j1 atonpermut faux TANT QUE (j < i) FAIRE DEBUT SI (V[J+1] < V[j]) ALORS I7 de Gabs 2010-2011 35 -1 2 5 13 15

Cours Algorithmique et Programmation JAVA AUXV[J+1] V[J+1] V[J] V[J] AUX FIN SI atonpermutvrai FIN jj+1 FIN ii-1 FIN FIN POUR i de N 2 pas 1 FAIRE POUR j de 1 i FAIRE SI V[j]>V[j+1] ALORS AUX V[j] V[j] V[j+1] V[j+1] AUX FIN SI FIN FAIRE FIN FAIRE FIN

I7 de Gabs 2010-2011

36

Cours Algorithmique et Programmation JAVA

CHAPITRE VII. LA PROGRAMMATION PROCEDURALE VII.1.Introduction


Informatiser une application, facturation de la consommation d'eau, par exemple, c'est faire raliser par ordinateur, une tche qui tait ralise par l'homme. Les tapes de rsolution d'un problme: 1. comprendre l'nonc du problme. 2. dcomposer le problme en sous problmes plus simple rsoudre. 3. associer chaque sous problme, une spcification (une description). Les donnes ncessaires Les donnes rsultantes La dmarche suivre pour arriver aux rsultats en partant d'un ensemble de donnes.

VII.2.L'analyse modulaire
"Diviser les difficults en autant de parcelles qu'il se peut afin de les mieux rsoudre" Descartes La conception d'un algorithme procde en gnral par des affinements successifs: on dcompose le problme rsoudre en sous problmes, puis ces derniers leur tour, jusqu' obtenir des problmes "facile rsoudre", pour chaque sous problme on crira un sous programme. Ainsi la rsolution du problme sera compose d'un algorithme principal et d'un certain nombre de sous programmes. L'algorithme principal a pour but d'organiser l'enchanement des sous programmes. Problme

Sous problme 1

Sous problme 2

Sous problme n

L'intrt de l'analyse modulaire est Rpartir les difficults Faciliter la rsolution d'un problme complexe Pouvoir poursuivre l'analyse comme si les sous problmes taient rsolus Faciliter l'criture de l'algorithme en vitant les duplications Exemple 1
Lecture et calcul de la consommation d'eau

Facturation d'eau

Impression de la facture

Calcul du montant payer I7 de Gabs 2010-2011 37

Cours Algorithmique et Programmation JAVA Exemple 2 Ecrire un algorithme qui dtermine le maximum de 3 valeurs numriques en utilisant les formules suivantes: Max (x,y,z) = max(max(x,y),z) Max(x,y)=(x+y+|x-y|)/2
Trouver le maximum de 3 rels

Trouver le maximum de 2 rels

Trouver la valeur absolue d'un rel

VII.3.Les sous programmes


C'est une unit fonctionnelle forme d'un bloc d'instructions, nomme et ventuellement paramtre. Que l'on dclare afin de pouvoir l'appeler par son nom en affectant s'il y a lieu des valeurs ses paramtres. Les donnes fournies au sous programme et les rsultats produits par ce dernier sont appels des arguments ou des paramtres. Un sous programme peut tre une procdure ou une fonction. 1. Procdure: c'est un sous programme contenant un certain nombre d'instructions et admettant zro ou plusieurs rsultats. 2. Fonction: c'est un sous programme contenant un certain nombre d'instructions et qui retourne un rsultat unique affect son nom.

VII.4.Les fonctions
Dfinition d'une fonction
Fonction nom_fact (parmtres):type_resultat Dclaration des variables Dbut Instructions Fin Exemple 1 Fonction valeur_absolue (x : rel):rel

I7 de Gabs 2010-2011

38

Cours Algorithmique et Programmation JAVA Variables a rel Dbut si x > 0 alors ax sinon a -x fin si valeur_absolue a Fin Exemple 2 Fonction moyenne (x : rel, y: rel):rel Dbut moyenne (x + y ) / 2 Fin

Appel de fonction
L'appel de fonction est une expression, dont la valeur est le rsultat retourn par cette fonction, son appel s'effectue donc comme si on va valuer une expression. Var nom_fact(paramtre effectifs) Ou Ecrire (nom_fact(paramtre effectifs) Exemple a valeur_absolue(-31.) d -7.5 c valeur_absolue(d) - d * a Remarque Une fonction peut ne pas avoir de paramtre, par exemple Fonction pi(): rel Dbut pi 22/7 Fin Appel de pi: air pi() * r * r

VII.5.Les procdures
C'est un sous programme qui est appel avec zro ou plusieurs paramtres et peut donner zro ou plusieurs rsultats.

Dfinition d'une procdure


Procdure nom_proc (paramtres) Remarque A la diffrence de la fonction, la procdure ne retourne pas de rsultat.

I7 de Gabs 2010-2011

39

Cours Algorithmique et Programmation JAVA Exemple Procdure Affiche_somme ( a: entier, b:entier) S entier Dbut Sa+b Ecrire (S) Fin

Appel de procdure
nom_proc(paramtres effectifs) Exemple Algorithme affiche Variables x entier y entier Dbut crire ("donnez un entier") lire (x) crire ("donnez un autre entier") lire (y) Affiche_somme(x,y) Fin

Passage de paramtres
Paramtre fourni en donne (transmission par copie de valeur) : Ce paramtre est fournie par le programme ou le sous programme appelant, sa valeur reste inchange aprs l'excution du sous programme appel. Un paramtre "donne" est prcd par DON lors de la dclaration de la procdure. Procdure essai1 ( DON p1: rel) Paramtre fourni en rsultat (transmission par rfrence) : Ce paramtre est retourn par la procdure appele, l'excution de la procdure appele calcule une valeur qui lui sera affecte en fin de traitement. Un paramtre "rsultat" est prcd par RES. Procdure essai2 (RES p2 : rel) Paramtre fourni en donne_rsultat (transmission par rfrence) : Ce paramtre est fourni par le sous programme ou le programme appelant, est modifi par la procdure appele. Un paramtre donne_rsultat est prcd par DONRES. Procdure essai3 (DONRES p3: rel)

Remarque Par dfaut un paramtre est fourni en donn. Procdure essai (p: rel) p est pass en donn

I7 de Gabs 2010-2011

40

Cours Algorithmique et Programmation JAVA Exemple Algorithme appelant Variables a rel b rel c rel Dbut a 45. essai1 (33.) essai1 (a) essai1 (35. * a -2.) essai1 (b) C'est incorrecte parce que b ne contient aucune valeur alors que le paramtre est fourni en donne la procdure essai1 essai2 (a) essai2 (b) essai2 (a*4.) C'est incorrecte parce que a*4 est une expression numrique (donc une valeur) alors que le paramtre est fourni en rsultat la procdure essai2 essai2 (35.) C'est incorrecte parce que 35 est une valeur alors que le paramtre est fourni en rsultat la procdure essai2 essai3 (a) essai3 (c) C'est incorrecte parce que c ne contient pas de valeur alors que le paramtre est fourni en donne rsultat la procdure essai3 essai3 (45.) C'est incorrecte parce que 45 est une valeur alors que le paramtre est fourni en donne rsultat la procdure essai3 essai3 (a*2.) C'est incorrecte parce que a*2 est une expression numrique (donc une valeur) alors que le paramtre est fourni en donne rsultat la procdure essai3 Fin

VII.6.Conclusion
La possibilit pour un programmeur de dfinir ses propres fonctions et procdures, permet de dcomposer un programme important en un certain nombre d'lments plus petits. Tout programme peut tre simplifi grce un usage intelligent des sous programmes. L'approche cartsienne dans le dveloppement des programmes prsente plusieurs avantages. Nombreux sont par exemple les programmes dans les quels certaines squences d'instructions sont appeles plusieurs fois depuis divers points d'appel. Il est intressant de les isoler dans un sous programme qui puisse tre appel tout moment si ncessaire. En plus, utiliser un sous programme permet de lui associer chaque fois un jeu de donnes diffrent et, par consquent, d'viter de programmer des instructions redondantes. Un autre apport important de l'approche cartsienne, est la clart qu'elle confre aux programmes lorsque ceux ci sont dcoups en sous programmes. Ce type de programme est plus facile concevoir, mettre au point et maintenir. Ceci est particulirement vrai dans le cas de problmes longs et complexes.

I7 de Gabs 2010-2011

41

Cours Algorithmique et Programmation JAVA

TD 5 : Les fonctions
Exercice 1 Crer une fonction qui calcule le carr d'un nombre rel. Exercice 2 Crer une fonction min2 qui donne le minimum de deux rels en utilisant la formule suivante: Min(x,y)=(x+y-|x-y|)/2 Utiliser la fonction valeur_absolue dj dfinie. Exercice 3 Ecrire une fonction min3 qui retourne le minimum de 3 rels en utilisant la formule suivante: Min(x,y,z)=Min(Min(x,y),z) Utiliser la fonction min2 Exercice 4 Ecrire un programme C qui lit 3 rels au clavier et qui affiche le minimum, utiliser la fonction min3. Exercice 5 Crer une fonction qui retourne le cube d'un rel. Utiliser la fonction carre sachant que x3 = x2 x Exercice 6 Ecrire un programme C qui lit une valeur relle au clavier et affiche x2, x3, x5 et x6 . Utiliser les fonctions carre et cube sachant que: x5 = x2 x3 x6= x3 x3 = (x2 ) 3= (x3 )2 Exercice 7 Crer une fonction moyenne3 qui calcul la moyenne de 3 rels. Exercice 8 Crer une fonction factorielle. 0!=1 n!=nx(n-1)x.x1 Exercice 9 Crer une fonction qui calcul le cardinale n p C np = n! p!(n p )!

Exercice 10 Ecrire une fonction qui permet de retourner f(x)=4x3+2x+9, x tant un rel. Exercice 11 Ecrire une fonction qui permet de retourner f(x,y)= xy+5x2-2y avec x et y deux rels. Exercice 12 Ecrire une fonction qui calcul le PGCD de 2 entiers strictement positifs en appliquant l'algorithme d'Euclide. PGCD(a,b)=b si b divise a PGCD(a,b)=PGCD(b,r) avec r le reste de la division de a par b Exercice 13 Ecrire une fonction qui retourne le PGCD de 3 entiers strictement positifs, en utilisant la formule suivante: PGCD(a,b,c)=PGCD(PGCD(a,b),c) Exercice 14 Ecrire une fonction qui retourne le PPCM de deux entiers strictement positifs, sachant que : I7 de Gabs 2010-2011 42

Cours Algorithmique et Programmation JAVA PPCM (a, b) = ab PGCD(a, b)

Exercice 15 Ecrire une fonction qui retourne le PPCM de 3 entiers strictement positifs, en utilisant la formule suivante: PPCM(a,b,c)=PPCM(PPCM(a,b),c) Exercice 16 Ecrire une fonction qui dtermine si oui ou non deux entiers strictement positifs sont premiers entre eux. x et y sont premiers entre eux si et seulement si PGCD(x,y)=1 Exercice 17 Ecrire un programme C qui lit 2 entiers strictement positifs au clavier et qui affiche: 1. Le PGCD 2. Le PPCM 3. Si les 2 entiers sont premiers entre eux ou non Exercice 18 Ecrire un programme C qui affiche les entiers parfaits se trouvant entre 2 valeurs m et n entiers lus au clavier telle que 2 < m < n Exercice 19 On se propose d'crire une fonction qui calcule (exponentiel) base des logarithmes npriens Telle que log(e) = 1. On pourra choisir n assez grande et approcher la valeur de e.
e = k = 0
n

1 k!

Exercice 20 Ecrire une fonction qui calcul ex pour x un entier strictement positif. Exercice 21 Ecrire une fonction qui retourne la position du minimum dans un tableau de rels de borne inf et de borne sup. Exercice 22 Rcrire lalgorithme du tri par slection en utilisant la fonction prcdente. Algorithme tri_slection Variables min entier ind entier i entier temp entier Dbut T tableau [1..14] de entier Pour ind de 1 13 faire min ind pour i ind + 1 14 faire si T[i] < T[min] alors min i fin si fin pour temp T[ind]

I7 de Gabs 2010-2011

43

Cours Algorithmique et Programmation JAVA T[ind] T[min] T[min] temp Fin pour Fin Exercice 23 Ecrire une fonction qui vrifie si un tableau de rel de borne inf et sup est tri. Exercice 24 Ecrire une fonction qui vrifie si une valeur relle se trouve dans un tableau de rels de borne inf et sup. Exercice 25 Ecrire une fonction qui retourne si oui ou non une chane de caractres est compos de caractres autres que les lettres. Exercice 26 Ecrire une fonction qui retourne la dernire position d'un caractre dans une chane, il retourne 0 si ce caractre n'existe pas dans la chane. Exercice 27 Ecrire un programme C qui lit une chane de caractres et affiche le nombre d'occurrence de chaque caractre dans cette chane. Exercice 28 Ecrire une procdure qui calcule la somme et le produit de deux rels. Exercice 29 Excuter cet algorithme: Algorithme p_essai Variables z rel n rel x rel p rel Dbut z 0. n 5.2 x -3. som_prod(n,x,z,p) crire (n,x,z,p) som_prod(p,z,n,x) crire (n,x,z,p) Fin Avec som_prod la procdure de l'exercice prcdent Exercice 30 Ecrire une procdure qui simplifie une quation dans 92 ax + by=c Si PGCD(a,b) divise c a b c x+ y= PGCD(a, b) PGCD(a, b) PGCD(a, b) Exercice 31 Ecrire une procdure qui permute le contenu de deux variables rels. Exercice 32 Ecrire un programme C qui lit deux valeurs relles au clavier et les affiche puis permute ces deux rels et raffiche les deux valeurs. Exercice 33

I7 de Gabs 2010-2011

44

Cours Algorithmique et Programmation JAVA Soit une procdure son qui gnre un son de frquence f: Procdure son (DON f: entier) Ecrire un programme C qui permet de simuler le fonctionnement d'un instrument de musique : l'appui sur les touches A, Z, E, R, T, Y, U, I devant produire un son correspondant l'une des notes musicales Do, R, Mi, Fa, Sol, La, Si, Do les frquences correspondants aux notes sont: 500, 561, 630, 667, 749, 841, 944 et 1000. L'algorithme s'arrte si l'utilisateur appui sur une autre touche. Exercice 34 Ecrire une procdure qui permet d'afficher les lments d'un tableau de rels de borne inf et sup. Exercice 35 Ecrire une fonction frquence qui dtermine le nombre d'apparition d'une valeur dans un tableau de rels de borne inf et sup. Exercice 36 Ecrire une fonction qui renvoie la somme des lments d'un tableau de rels de borne inf et sup. Exercice 37 Ecrire une procdure qui copie les valeurs d'un tableau d'entiers de taille n dans un autre tableau. Exercice 38 Ecrire une procdure qui clate un tableau de n rels en deux tableaux de rels positifs et ngatifs.

I7 de Gabs 2010-2011

45

Cours Algorithmique et Programmation JAVA

CHAPITRE VIII. LA PROGRAMMATION ORIENTE OBJET


VIII.1.Introduction La POO correspond une mthodologie qui permet d'aborder autrement les problmes, cela ds la phase de l'analyse. Avec cette mthode, le problme n'est pas pos en termes de fonctionnalits abstraites devant tre ensuite successivement raffines. Ici, on part des entits manipules dans la ralit. Ces entits, les objets ont des proprits bien prcises , lesquelles devront tre dfinies aussi soigneusement que possible lors de l'analyse puis implmentes dans un langage de programmation orient objet. VIII.2.L'objet Chaque objet possde sa propre identit. C'est dire deux objets sont distincts mme si tous les attributs ont des valeurs identiques.

Tlvision Sony grise Trinitron Multi systme

Cl jaune de la porte principale de la maison de Mr Ben Fedhil

Horloge marron

Un objet a une structure de donnes, attributs et un comportement, oprations Exercice Tous les objets possdent une identit et se distinguent les uns des autres. Dcrivez comment on pourrait distinguer les uns des autres les objets suivants: Les objets Critres de distinction Tous les habitants du monde pour leur adresser du courrier Tous les habitants du monde pour les besoins d'une enqute criminelle Tous les clients ayant un coffre dans une banque donne Tous les tlphones du monde pour passer des appels tlphoniques Toutes les adresses des courriers lectroniques dans le monde VIII.3.Les classes Les objets ayant mme attributs et mme oprations appartient une classe. Chaque objet est dit comme tant une instance d'une classe. Une classe est donc, une dfinition, une moule qui permet de crer de nouveaux objets.

I7 de Gabs 2010-2011

46

Cours Algorithmique et Programmation JAVA

Personne Nom Prnom Adresse Age Emploi Adresse de travail Changer_d'adresse Changer_de_travail Ben salih Omor 5, rue des oliviers, Tunis 35 ans Comptable 60, rue des entrepreneur, Charguia

Zaouali Chedia 16, Av de la libert, Nafta 27 ans Secrtaire Htel Yasmine Zone Touristique Nafta

Automobile Modle Couleur Anne

Chevrolet Bleu 1971

Rolls Royce Phontom Noire 1957

I7 de Gabs 2010-2011

47

Cours Algorithmique et Programmation JAVA VIII.4.L'encapsulation Ou masquage d'information, elle consiste sparer les aspects externes d'un objet accessibles pour les autres objets qu'on dsigne par publique, des dtails d'implmentation interne, rendues invisibles aux autres objets qu'on dsigne par priv. Ainsi l'implmentation d'un objet peut tre modifie sans affecter les applications qui emploient cet objet. Exemple

Classe Cpersonne Publique Nom chane[40] Publique Prnom chane[40] Priv Adresse chane[60] Publique Age entier Publique procdure Changer_adresse (nouv_adresse: chane) Dbut Adresse nouv_adresse Fin Fin Cpersonne Nous supposons qu'un programme P utilise des objets de la classe Cpersonne il ne peut utiliser que les attributs: Nom, Prnom, Age et l'opration Changer_adresse soit: Algorithme P Dbut Cpersonne Per Per.Nom "Ben Abdallah" Per.Prnom"Mohamed" Per.Age25 Per.Changer_Adresse("5, rue des fleures Tunis") Fin
VIII.5.L'hritage C'est le partage des attributs et des oprations entre des classes s'appuyant sur une relation hirarchique. Une classe peut tre dfinie grands traits et ensuite raffine dans des sous classes de plus en plus fins. Chaque sous classe hrite toutes les proprits de sa super classe et y ajoute ses propres et uniques proprits.

I7 de Gabs 2010-2011

48

Cours Algorithmique et Programmation JAVA


Equipement Nom Fabricant Poids Cot

Pompe Pression d'aspiration Pression de dbit Taux d'coulement

Echangeur de chaleur Superficie Diamtre de tube Longueur de tube Pression de tube Pression de coque

Rservoir Volume Pression

Rservoir sphrique Diamtre Pompe centrifuge Diamtre d'hlice Nombre de pales Axe de rotation Pompe diaphragme Matriel de diaphragme

Rservoir toit flottant Diamtre Hauteur

Pompe diaphragme P101 Simplex 100kg 5000DT 1.1atm 3.3atm 300l/hr Telfon

Echangeur de chaleur E302 Brown 5000kg 20000DT 300m2 2 cm 6m 15 atm 1.7 atm

Rservoir toit flottant T111 Simplex 10000 kg 50000DT 400000 l 1.1 atm 8m 9m

I7 de Gabs 2010-2011

49

Cours Algorithmique et Programmation JAVA VIII.6.Le polymorphisme Signifie que la mme opration peut se comporter diffremment sur diffrents classes. L'opration dplacer, par exemple, peut se comporter diffremment sur les classes fentre et pice de jeu d'checs. Dans le monde rel, chaque objet "sait comment" effectuer ses propres oprations. Cependant, dans un langage de programmation orient objet, le langage slectionne automatiquement l'opration correcte en se basant sur le nom de l'opration et sur la classe de l'objet sur lequel elle opre.
Figure Couleur Dplacer Slectionner Tourner Afficher

Point Coordonnes Afficher

1 Dimension Mettre l'chelle

2 Dimension Type de remplissage Mettre l'chelle Remplir

I7 de Gabs 2010-2011

50

Cours Algorithmique et Programmation JAVA

CHAPITRE IX. INITIATION AU LANGAGE JAVA


IX.1 Historique

Java est un langage objet ressemblant au langage C++. Il a t mis au point en 1991par la firme Sun Microsystem. Le but de Java l'poque tait de constituer un langage de programmation pouvant tre intgr des appareils lectromnagers, afin de pouvoir les contrler, de les rendre interactifs, et surtout de permettre une communication entre les appareils. Ce programme dveloppement se situait dans un projet appel Green, visant crer une tlcommande universelle (Star 7) comprenant un OS capable de grer l'ensemble des appareils lectromnagers de la maison. Etant donn que le langage C++ comportait trop de difficult, James Gosling, un des acteurs du projet (considr comme le pre du Java) dcida de crer un langage orient objet reprenant des caractristiques principales du C++, en liminant ses points difficiles, et en le rendant moins encombrant et plus portable (il devait pouvoir intgr n'importe quel appareil..) Ainsi ce langage fut baptis dans un premier temps Oak (Oak signifiant chne). Toutefois, puisque ce nom tait dj utilis, il fut rebaptis Java en l'honneur de la boisson prfre des dveloppeurs, c..d. le caf, dans la production provient de l'le de Java. IX.2 Fonctionnement de JAVA

Un programme Java doit tre : Compil: le rsultat est un nouveau fichier au format "ByteCode" Interprt: grce une JVM (Java Virtual Machine) Remarques : Le fichier source d'un programme crit en Java est un fichier simple texte dont l'extension est par convention ".java" Ce fichier source doit tre un fichier texte non format, c..d. un fichier texte dans sa plus simple expression, sans mise en forme particulire ou caractres spciaux, c..d. qu'il contient uniquement les caractres ASCII ou EBCDIC de base. Lorsque le programme est prt tre essay, il s'agit de "compiler" (le traduire en langage machine) l'aide d'un compilateur). Toutefois, contrairement aux langages compils traditionnels, pour lesquels le compilateur crer un fichier binaire directement excutable par un processeur donnes), le langage Java est compil en un langage intermdiaire (appel bytecode) dans un fichier portant le mme nom que le fichier source l'exception de son extension ".class" Cette caractristique est majeure, car c'est elle qui fait qu'un programme crit en Java est portable, c..d. qu'il ne dpend pas d'une plate-forme donne. En ralit le code intermdiaire n'est excutable sur aucune plate-forme sans la prsence d'une machine virtuelle, un interprteur (la machine virtuelle est d'ailleurs parfois appele interprteur Java) tournant sur une plate-forme donne, et capable d'interprter le code intermdiaire. JVM : Pour peu qu'une plate-forme (Win, Unix, Linux,..) possde une JVM fonctionnant sur son systme, celle-ci est capable d'excuter n'importe quelle application Java! JRE/JDK : Le JRE (Java Runtime Environment) est: o Un fichier permettant d'interprter des applications Java. o Plusieurs centaines de classes (API) IX.3 Syntaxe de dfinition de classe

I7 de Gabs 2010-2011

51

Cours Algorithmique et Programmation JAVA Tout code java doit se trouver dans une classe. Hormis les dfinitions de classe, de mthode, et de boucle, toute instruction se finit par ";". Le corps d'une classe est dlimit par un bloc (les accolades {} ) Le fichier Java (.java): - doit porter le nom (majuscule/minuscule) de l'unique classe (publique) qu'il contient. - peut contenir d'autres classes non-publiques. Remarque: - Ce sont les accolades qui dlimitent la porte de la classe. - Il est possible de crer des classes publiques, et non publiques: la diffrence est importante, nous l'a verrons dans l'unit lie aux packages. - Si on cre une classe dans un fichier, ce fichier doit porter exactement le mme nom que la classe: le cas chant, le compilateur refusera de compiler le fichier, en apportant bien sur un justificatif de son refus. - Si on cre plusieurs classes dans un mme fichier, c'est lunique classe dfinie avec le mot rserv "public" qui donnera le nom du fichier. IX.4 Dclaration, initialisation d'attributs, de variables locales, de constantes

Le bloc dlimit par les accolades dfinit la porte des variables. Remarque: - Ce sont les accolades qui dlimitent la porte de la classe. - Un attribut sera "accessible" durant toute la dure de vie de l'objet dans lequel il se trouve. - Un attribut PEUT tre initialis avant d'tre utilis. - On indiquera un critre de visibilit pour les attributs: on slectionnera en gnral "private" - Une variable locale n'a d'existence que durant, l'excution de la mthode/bloc dans laquelle elle se trouve. - Une variable locale ne peut recevoir de critres de visibilit (private,public,...): elle est de toute faon accessible uniquement dans le bloc dans laquelle elle est dfinie. - Une variable locale DOIT tre initialise avant d'tre utilise, un attribut reoit une initialisation par dfaut. IX.5 Type de bases

Chaque variable DOIT tre d'un type donn. Un type de donne dtermine l'intervalle de valeur susceptible d'tre contenue. Dans les entiers, le type "int" est le type par dfaut, pour les dcimaux c'est le type "double". ATTENTION!! Les types de base sont en minuscule. A ne pas confondre avec les "Wrappers" (classe ayant le mme nom que les types de base): Ex: byte vs Byte Entier: byte: 8 bits signs short: 16 bits signs int: 32 bits signs long: 64 bits signs Decimal: float: 32 bits signs double: 64 bits signs Autre:

I7 de Gabs 2010-2011

52

Cours Algorithmique et Programmation JAVA char: 16 bits UNICODE2 boolean: 1 bit, 2 valeurs possibles true or false IX.6 Impressions sur console

System.out.println("Bonjour\nVous") System.out.print("Bonjour\nToi") IX.7 Conversion/initialisation des variables numriques

- Les constantes Pour dfinir une constante, il vous suffit de rajouter "final" la dclaration de l'attribut. On n'oubliera pas d'utiliser la convention de nommage! public final int MAX = 10; int variable = MAX; // ok MAX = 5; //erreur - Initialisation des attributs Les attributs reoivent une initialisation par dfaut Types numriques : 0 char: "\u0000" boolean: false Objet: null Les variables locales ncessitent une initialisation explicite avant usage. IX.8 Oprateurs d'assignements

op1 += op2 op1 = op1 + op2 Addition op1 -= op2 op1 = op1 - op2 Soustraction op1 *= op2 op1 = op1 * op2 Multiplication op1 /= op2 op1 = op1 / op2 Division op1 %= op2 op1 = op1 % op2 Modulo Incrmentation/Dcrmentation en prfixe/suffixe: int i = 3, j=4; ++i; i++; // gal i = i + 1, soit 4 --i; i--; // gal i = i -1, soit 3 j=i++; // (i=4,j=3: on copie le contenu de i dans j, puis on incrmente i j=++i; //(i=5,j=5: on incrmente i, puis on copie le contenu de i dans j. Exemple : i = 3 ; j=4 ; int k = --j * i ++ <-----> i = 4 , j=3 , k=9 IX.9 Oprateurs conditionnels > op1 > op2 op1 est strictement suprieur op2 >= op1 >= op2 op1 est suprieur ou gal op2 < op1 < op2 op1 est strictement infrieur op2 <= op1 <= op2 op1 est infrieur ou gal op2 == op1 == op2 op1 est gal op2 != op1 != op2 op1 est diffrent de op2 && op1 && op2 op1 et op2 sont gal true. Evaluation de op2 ventuel. || op1 || op2 op1 et op2 sont gal true. Evaluation de op2 ventuel.

I7 de Gabs 2010-2011

53

Cours Algorithmique et Programmation JAVA ! !op1 op1 est false IX.10 Structures alternatives

- if...else... ; l'lment conditionnel doit ramener true ou false boolean b=false; if (b=true) System.out.println("bonjour"); else System.out.println("au revoir"); - L'instruction switch int i=3; switch (i) // Uniquement int, char, byte, short { case 1: System.out.println("un"); break; case 2: case 3: System.out.println("deux ou trois"); break; case MAX: System.out.println("maximum"); default: System.out.println("les autres cas"); } IX.11 Boucles

- while et do...while La principale diffrence est que dans un do...while il passe les instructions une fois au moins avant la condition. - For for (int i=0 ; i<10 ; i++) // (index ; tant que la condition retourne true; incrmentation) - continue et break IX.12 Commentaires

Il y a 3 types de commentaires: simple ligne, bloc, Javadoc Simple : // Simple ligne Bloc : /* */ Javadoc: destin gnrer automatiquement une documentation sur votre code sous DOS : javadoc.exe Test.java Commentaire javadoc: avant une mthode c'est un commentaire de mthode, avant un attribut c'est un commentaire d'attribut, avant une classe c'est un commentaire de classe.

I7 de Gabs 2010-2011

54

Cours Algorithmique et Programmation JAVA

Rfrences
1. M. Baccouche, Cours Algorithmique, Iset de Rads, 2000. 2. S. Hriz, Cours Algorithmique, Iset de Sfax, 2000 3. J. Hubbard, Programmation Java, EdiScience, 2004 4. C. Ben Othman Zribi, Initiation la programmation oriente objet en Java, CPU Tunis, 2003 5. P. Cgielski, Initiation au langage Java, Universit Paris Est Crteil, Mai 2010 6. S.Tah , Apprentissage du langage JAVA, - ISTIA - Universit d'Angers, juin 2002 7. D. Lapoire, Initiation lalgorithmique, Enseirb, France,octobre 2006 8. C. Cormen, Introduction lalgorithmique, Dunod

I7 de Gabs 2010-2011

55

Das könnte Ihnen auch gefallen