Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf ·...

138
Info1A - Licence 1 - Ann´ ee 2019/2020 Initiation ` a la programmation JAVA Jean-Luc Baril Universit ´ e de Bourgogne Labo. LIB http://jl.baril.u-bourgogne.fr September 9, 2019 Jean-Luc Baril Initiation ` a la programmation JAVA

Transcript of Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf ·...

Page 1: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Info1A - Licence 1 - Annee 20192020

Initiation a la programmation JAVA

Jean-Luc Baril

Universite de BourgogneLabo LIB

httpjlbarilu-bourgognefr

September 9 2019

Jean-Luc Baril Initiation a la programmation JAVA

Informations eventuellement utiles

Site web Module Info1Ahttpjlbarilu-bourgognefrLicence1html

CM=14 TD=18 TP=18

Jean-Luc Baril Initiation a la programmation JAVA

Informations eventuellement utiles

Modalites de controle- Partiel ecrit (en amphi) en milieu de semestre (coeff 1)- Examen ecrit (en amphi) en fin de semestre (coeff 2)Planning

Jean-Luc Baril Initiation a la programmation JAVA

Informations eventuellement utiles

Plages de TD et TPS selon groupes

Jean-Luc Baril Initiation a la programmation JAVA

Informations eventuellement utiles

Bibliographie

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique

Informatique - Computing science - InformaticsLrsquoinformatique est la science du traitement automatique delrsquoinformation (1957 - Informatik - Karl Steinbuch)

Ordinateur - ComputerLrsquoordinateur est un ensemble de dispositifs physiques utilisespour traiter automatiquement des informations(Microprocesseur memoire ecran clavier disques durs )

LogicielLe logiciel est un ensemble structure drsquoinstructions decrivant untraitement drsquoinformations a faire realiser par un ordinateur(contraction de logique et materiel - 1972 - software )

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les bouliers sont les plus anciennes machines a calculerLe principe du boulier est deja en germe chez lesBabyloniens vers 2000 avant J-C a cette epoque onutilise des cailloux pour compter Puis au cours du Iermillenaire avant J-C naıt en Chine lrsquoidee de fabriquer uninstrument qui faciliterait le calcul le boulier

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les batons de John Napier (1614) Systeme de baquettescoulissantes permettant de faire des multiplications

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1642 Blaise Pascal construit la Pascaline

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1694 le mathematicien Gottfried Wilhelm Leibnizconstruit la premiere machine a calculer utilisant descylindres canneles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1800 le Francais Joseph-Marie Jacquard met au pointun metier a tisser qui utilise des cartons perfores pourcommander les mouvements des aiguilles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 2: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Informations eventuellement utiles

Site web Module Info1Ahttpjlbarilu-bourgognefrLicence1html

CM=14 TD=18 TP=18

Jean-Luc Baril Initiation a la programmation JAVA

Informations eventuellement utiles

Modalites de controle- Partiel ecrit (en amphi) en milieu de semestre (coeff 1)- Examen ecrit (en amphi) en fin de semestre (coeff 2)Planning

Jean-Luc Baril Initiation a la programmation JAVA

Informations eventuellement utiles

Plages de TD et TPS selon groupes

Jean-Luc Baril Initiation a la programmation JAVA

Informations eventuellement utiles

Bibliographie

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique

Informatique - Computing science - InformaticsLrsquoinformatique est la science du traitement automatique delrsquoinformation (1957 - Informatik - Karl Steinbuch)

Ordinateur - ComputerLrsquoordinateur est un ensemble de dispositifs physiques utilisespour traiter automatiquement des informations(Microprocesseur memoire ecran clavier disques durs )

LogicielLe logiciel est un ensemble structure drsquoinstructions decrivant untraitement drsquoinformations a faire realiser par un ordinateur(contraction de logique et materiel - 1972 - software )

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les bouliers sont les plus anciennes machines a calculerLe principe du boulier est deja en germe chez lesBabyloniens vers 2000 avant J-C a cette epoque onutilise des cailloux pour compter Puis au cours du Iermillenaire avant J-C naıt en Chine lrsquoidee de fabriquer uninstrument qui faciliterait le calcul le boulier

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les batons de John Napier (1614) Systeme de baquettescoulissantes permettant de faire des multiplications

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1642 Blaise Pascal construit la Pascaline

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1694 le mathematicien Gottfried Wilhelm Leibnizconstruit la premiere machine a calculer utilisant descylindres canneles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1800 le Francais Joseph-Marie Jacquard met au pointun metier a tisser qui utilise des cartons perfores pourcommander les mouvements des aiguilles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 3: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Informations eventuellement utiles

Modalites de controle- Partiel ecrit (en amphi) en milieu de semestre (coeff 1)- Examen ecrit (en amphi) en fin de semestre (coeff 2)Planning

Jean-Luc Baril Initiation a la programmation JAVA

Informations eventuellement utiles

Plages de TD et TPS selon groupes

Jean-Luc Baril Initiation a la programmation JAVA

Informations eventuellement utiles

Bibliographie

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique

Informatique - Computing science - InformaticsLrsquoinformatique est la science du traitement automatique delrsquoinformation (1957 - Informatik - Karl Steinbuch)

Ordinateur - ComputerLrsquoordinateur est un ensemble de dispositifs physiques utilisespour traiter automatiquement des informations(Microprocesseur memoire ecran clavier disques durs )

LogicielLe logiciel est un ensemble structure drsquoinstructions decrivant untraitement drsquoinformations a faire realiser par un ordinateur(contraction de logique et materiel - 1972 - software )

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les bouliers sont les plus anciennes machines a calculerLe principe du boulier est deja en germe chez lesBabyloniens vers 2000 avant J-C a cette epoque onutilise des cailloux pour compter Puis au cours du Iermillenaire avant J-C naıt en Chine lrsquoidee de fabriquer uninstrument qui faciliterait le calcul le boulier

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les batons de John Napier (1614) Systeme de baquettescoulissantes permettant de faire des multiplications

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1642 Blaise Pascal construit la Pascaline

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1694 le mathematicien Gottfried Wilhelm Leibnizconstruit la premiere machine a calculer utilisant descylindres canneles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1800 le Francais Joseph-Marie Jacquard met au pointun metier a tisser qui utilise des cartons perfores pourcommander les mouvements des aiguilles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 4: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Informations eventuellement utiles

Plages de TD et TPS selon groupes

Jean-Luc Baril Initiation a la programmation JAVA

Informations eventuellement utiles

Bibliographie

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique

Informatique - Computing science - InformaticsLrsquoinformatique est la science du traitement automatique delrsquoinformation (1957 - Informatik - Karl Steinbuch)

Ordinateur - ComputerLrsquoordinateur est un ensemble de dispositifs physiques utilisespour traiter automatiquement des informations(Microprocesseur memoire ecran clavier disques durs )

LogicielLe logiciel est un ensemble structure drsquoinstructions decrivant untraitement drsquoinformations a faire realiser par un ordinateur(contraction de logique et materiel - 1972 - software )

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les bouliers sont les plus anciennes machines a calculerLe principe du boulier est deja en germe chez lesBabyloniens vers 2000 avant J-C a cette epoque onutilise des cailloux pour compter Puis au cours du Iermillenaire avant J-C naıt en Chine lrsquoidee de fabriquer uninstrument qui faciliterait le calcul le boulier

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les batons de John Napier (1614) Systeme de baquettescoulissantes permettant de faire des multiplications

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1642 Blaise Pascal construit la Pascaline

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1694 le mathematicien Gottfried Wilhelm Leibnizconstruit la premiere machine a calculer utilisant descylindres canneles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1800 le Francais Joseph-Marie Jacquard met au pointun metier a tisser qui utilise des cartons perfores pourcommander les mouvements des aiguilles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 5: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Informations eventuellement utiles

Bibliographie

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique

Informatique - Computing science - InformaticsLrsquoinformatique est la science du traitement automatique delrsquoinformation (1957 - Informatik - Karl Steinbuch)

Ordinateur - ComputerLrsquoordinateur est un ensemble de dispositifs physiques utilisespour traiter automatiquement des informations(Microprocesseur memoire ecran clavier disques durs )

LogicielLe logiciel est un ensemble structure drsquoinstructions decrivant untraitement drsquoinformations a faire realiser par un ordinateur(contraction de logique et materiel - 1972 - software )

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les bouliers sont les plus anciennes machines a calculerLe principe du boulier est deja en germe chez lesBabyloniens vers 2000 avant J-C a cette epoque onutilise des cailloux pour compter Puis au cours du Iermillenaire avant J-C naıt en Chine lrsquoidee de fabriquer uninstrument qui faciliterait le calcul le boulier

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les batons de John Napier (1614) Systeme de baquettescoulissantes permettant de faire des multiplications

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1642 Blaise Pascal construit la Pascaline

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1694 le mathematicien Gottfried Wilhelm Leibnizconstruit la premiere machine a calculer utilisant descylindres canneles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1800 le Francais Joseph-Marie Jacquard met au pointun metier a tisser qui utilise des cartons perfores pourcommander les mouvements des aiguilles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 6: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique

Informatique - Computing science - InformaticsLrsquoinformatique est la science du traitement automatique delrsquoinformation (1957 - Informatik - Karl Steinbuch)

Ordinateur - ComputerLrsquoordinateur est un ensemble de dispositifs physiques utilisespour traiter automatiquement des informations(Microprocesseur memoire ecran clavier disques durs )

LogicielLe logiciel est un ensemble structure drsquoinstructions decrivant untraitement drsquoinformations a faire realiser par un ordinateur(contraction de logique et materiel - 1972 - software )

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les bouliers sont les plus anciennes machines a calculerLe principe du boulier est deja en germe chez lesBabyloniens vers 2000 avant J-C a cette epoque onutilise des cailloux pour compter Puis au cours du Iermillenaire avant J-C naıt en Chine lrsquoidee de fabriquer uninstrument qui faciliterait le calcul le boulier

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les batons de John Napier (1614) Systeme de baquettescoulissantes permettant de faire des multiplications

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1642 Blaise Pascal construit la Pascaline

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1694 le mathematicien Gottfried Wilhelm Leibnizconstruit la premiere machine a calculer utilisant descylindres canneles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1800 le Francais Joseph-Marie Jacquard met au pointun metier a tisser qui utilise des cartons perfores pourcommander les mouvements des aiguilles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 7: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Rapide historique

Les bouliers sont les plus anciennes machines a calculerLe principe du boulier est deja en germe chez lesBabyloniens vers 2000 avant J-C a cette epoque onutilise des cailloux pour compter Puis au cours du Iermillenaire avant J-C naıt en Chine lrsquoidee de fabriquer uninstrument qui faciliterait le calcul le boulier

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Les batons de John Napier (1614) Systeme de baquettescoulissantes permettant de faire des multiplications

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1642 Blaise Pascal construit la Pascaline

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1694 le mathematicien Gottfried Wilhelm Leibnizconstruit la premiere machine a calculer utilisant descylindres canneles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1800 le Francais Joseph-Marie Jacquard met au pointun metier a tisser qui utilise des cartons perfores pourcommander les mouvements des aiguilles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 8: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Rapide historique

Les batons de John Napier (1614) Systeme de baquettescoulissantes permettant de faire des multiplications

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1642 Blaise Pascal construit la Pascaline

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1694 le mathematicien Gottfried Wilhelm Leibnizconstruit la premiere machine a calculer utilisant descylindres canneles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1800 le Francais Joseph-Marie Jacquard met au pointun metier a tisser qui utilise des cartons perfores pourcommander les mouvements des aiguilles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 9: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Rapide historique

En 1642 Blaise Pascal construit la Pascaline

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1694 le mathematicien Gottfried Wilhelm Leibnizconstruit la premiere machine a calculer utilisant descylindres canneles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1800 le Francais Joseph-Marie Jacquard met au pointun metier a tisser qui utilise des cartons perfores pourcommander les mouvements des aiguilles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 10: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Rapide historique

En 1694 le mathematicien Gottfried Wilhelm Leibnizconstruit la premiere machine a calculer utilisant descylindres canneles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1800 le Francais Joseph-Marie Jacquard met au pointun metier a tisser qui utilise des cartons perfores pourcommander les mouvements des aiguilles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 11: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Rapide historique

Vers 1800 le Francais Joseph-Marie Jacquard met au pointun metier a tisser qui utilise des cartons perfores pourcommander les mouvements des aiguilles

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 12: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Rapide historique

Vers 1849 Charles babbage donne les plans de la machineanalytique mais nrsquoarrive pas a la construire

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 13: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Rapide historique

De 1939 a 1942 Alan Turing concoit la rsquoBombersquo qui permetde decrypter EnigmaEn 1945 il concoit les plans du premier ordinateurmoderne mais nrsquoa pas les moyens de le realiser

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 14: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Rapide historique

En 1945 aux Etats-Unis naıt lrsquoENIAC (ElectronicNumerator Integrator and Computer) le premier veritableordinateur de lrsquohistoire- il srsquoagit drsquoune machine electronique Il nrsquoy a plus derouages mecaniques lrsquoinformation est transportee pardes electrons des particules chargees drsquoelectricite qui sedeplacent tres vite- crsquoest une machine programmable Cela signifie qursquoonpeut enregistrer des instructions qui srsquoexecuteront sansintervention de lrsquohomme

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 15: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Rapide historique

30 tonnes 100m2 17000 tubes a vides des cafardssrsquointroduisent dans les tubes faussant les resultats drsquoou leterme rsquobug informatiquersquo

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 16: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Rapide historique

1953 IBM lance son premier ordinateur commercial enserie lrsquoIBM 650 lrsquoere numerique commence

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 17: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Rapide historique

Ordinateur quantique

1 qbit α PILE + β FACE

Billet de loterie- Avant le tirage billet de loterie = α GAIN + β PERTE- Apres le tirage billet de loterie = GAIN ou PERTE

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 18: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique et les mathematiques

+ Calculateur puissant (simulation meteo (equationsdifferentielles) traitement du signal (image-video) transformeede Fourier bioinformatique (theorie des mots combinatoire))+ Cryptographie (paiement securise sur internet cartebancaire systeme RSA issu de lrsquoarithmetique)+ Animation et reconstruction 3D (geometrie)+ Quantique (matrice )+

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 19: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Algorithme

Algorithme (M al-Khwarizmi - 780850)Un algorithme est une suite ordonnee drsquoinstructions qui indiquela demarche a suivre pour resoudre un probleme

Exemple Faire cuire un oeuf sur le platAcheter un oeuf mettre de lrsquohuile dans la poele faire chauffercasser lrsquooeuf dans la poele attendre 2 minutes

AlgorithmiqueLrsquoalgorithmique est la science des algorithmes (constructiondrsquoalgorithme verification de la validite la robustesse leurreutilisabilite la complexite et leur efficacite)

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 20: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Programme

ProgrammeIl srsquoagit de la traduction drsquoun algorithme dans un langageparticulier Un programme depend donc du langage etegalement de la plateforme drsquoexecution

ProgrammationCrsquoest lrsquoaction qui consiste a rediger un programme dans unlangage donne

Jean-Luc Baril Initiation a la programmation JAVA

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 21: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Lrsquoinformatique Compilation et Execution

CompilationCrsquoest lrsquoaction qui consiste a traduire le programme en langagecomprehensible par lrsquoordinateur

Interpreteur (en JAVA)Un outil ayant pour tache drsquoexecuter un programme qui a etecompile

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 22: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Installation de Javahttpwwworaclecom

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 23: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

La structure drsquoun programme java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principaldeclaration de variablesinstructions commentaires

Comment Faire- Dans un fichier texte taper le code ci-dessus- Sauvegarder le fichier texte dans un fichiermonpremierprogrammejava- Compiler le fichier javac monpremierprogrammejava(creation du fichier monpremierprogrammeclass)- Executer le programme java monpremierprogramme

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 24: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Bit (binary digit)

0 ou 1 il srsquoagit de la plus petite unite drsquoinformation manipulablepar une machine

Octet (Byte en anglais)

Unite drsquoinformation composee de 8 bits

Unites standardisees- 1 kilooctet (ko) = 1000 octets- 1 megaoctet (Mo) = 106 octets- 1 gigaoctet (Go) = 109 octets- 1 tetraoctet (To) = 1012 octets- 1 petaoctet (Po) = 1015 octets

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 25: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Representation des entiers en binaire (division entiere par2)

1001101

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 26: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Du binaire au decimal

Code binaire 1001101

77 = 120 + 021 + 122 + 123 + 024 + 025 + 126

Avec 1 2 ou 3 bits- Avec un bit on code les entiers 0 et 1- Avec deux bits on code les entiers 0 1 2 et 3- Avec 3 bits on code les entiers 01234567- Avec n bits on code les entiers compris entre 0 et 2n minus 1

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 27: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Comment coder un reels Exemple de 773

- Codage partie entiere 77larrrarr 1001101- Codage partie non entiere 03larrrarr

03 lowast 2 = 0606 lowast 2 = 1202 lowast 2 = 0404 lowast 2 = 0808 lowast 2 = 1606 lowast 2 = 12 =

03larrrarr 00 1001 1001 1001

Codage de 773

773larrrarr 10011010 1001 1001 1001

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 28: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Les types de donnees simples en Java

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 29: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Les variablesUne variable est un contenant ayant un nom (identificateur) etpouvant contenir une information des types precedents (intdouble char )

- Crsquoest une boite ayant un nom et pouvant contenir une valeurdrsquoun seul type de donnees- Toute variable drsquoun programme doit etre declaree avant sonutilisation (en debut de programme par exemple)

Declaration drsquoune variableType de donnees Identificateur

Declaration de la variable toto pouvant contenir un entierint toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 30: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Les operateursLrsquoaddition la soustraction la multiplication la division +minus lowast La division entiere et le reste de la division entiere Les comparaisons ltgt== lt= gt= =

Affectation =Le Non Le ET logique ampamp

Le Ou (exclusif) andLe Ou (Inclusif) ||

Jean-Luc Baril Initiation a la programmation JAVA

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 31: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les operations classiques

Une expression mathematique

2x + 3yminus15x+1

4xENJAVA=rArr (2 lowast x + (3 lowast y minus 1)(5 lowast x + 1))(4 lowast x)

Reste de la division entiere

x mod 10 ENJAVA=rArr x10

Division entiere drsquoune variable entiere aa2

ENJAVA=rArr a2

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 32: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

AffectationCrsquoest placer une valeur dans une variable

Comment faireIndiquer la valeur exacte a placer dans la variable toto de lafacon suivantetoto = valeur a placer

Examplestiti= 8 place 8 dans la variable tititoto= titi place le contenu de titi dans la variable totototo= titi+5 place la somme du contenu de titi avec 5 danstotototo= toto+4 place la somme du contenu de toto avec 4dans toto

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 33: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Les operateurs booleensNon Ou exclusif and (Correspond au OU BIEN )

Ou inclusif ||

Et ampamp

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 34: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Le type booleanLe type boolean permet uniquement deux valeurs true false

Exercice Donner une expression java

a = b ENJAVA=rArr a == b

a ge b ENJAVA=rArr a gt= b

x isin [ab] ENJAVA=rArr x gt= a ampamp x lt= b

x isin]ab] ENJAVA=rArr x gt a ampamp x lt= b

x isin]ab]cap [cd [ENJAVA=rArr (x gt aampampx lt= b) ampamp (x gt= campampx lt d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 35: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Exercice Donner une expression java

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

[ab] sub [cd ] ENJAVA=rArr a gt= c ampamp b lt= d

x est une annee bissextile lorsque x est un multiple de 4mais pas de 100 OU BIEN x est un multiple de 400

ENJAVA=rArr (x4 == 0 ampamp x100 = 0) and (x400 == 0)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 36: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

La negation drsquoune expression negation (Je fais un CM ET il fait beau)harr (je ne fais pas unCM OU il ne fait pas beau) (A ampamp B)harr A || B negation (Je fais un CM OU je suis dans mon bureau)harr (jene fais pas un CM ET je ne suis pas dans mon bureau) (A || B)harr A ampamp B

Donner lrsquoexpression de la negationOn a vu que

x isin]ab] cup [cd [ENJAVA=rArr (x gt aampampx lt= b) || (x gt= campampx lt d)

x isin]ab] cup [cd [ENJAVA=rArr (x le a || x gt b)ampamp(x lt c || x gt= d)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 37: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

public class monpremierprogramme Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint toto titi tutu Declare trois variablesboolean tyty Declare une variable booleenne

Instructionstoto= 4 Met la valeur 4 dans totototo= toto+1 Ajoute 1 au contenu de tototiti= toto4 Met 45 dans titi

tutu= titi3 Met 203 dans tutututu= titi 3 Met 20 3 dans tutu

tyty= false Met false dans tytytyty= tutugt=2 ampamp tutu lt 4 Met true dans tyty

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 38: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 39: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Echange du contenu de deux variables

=rArr

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 40: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 41: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 42: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Echange du contenu de deux variables

=rArr

Etape 1 V = N Etape 2 N = G Etape 3 G = V

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 43: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

public class echange Nom du programmepublic static void main (String[] args) Programme principal Declaration des variablesint Nuits Gevrey Temp Declare trois variables

Remplissage des verresNuits=4 Remplit le verre de NuitsGevrey=8 Remplit le verre de Gevrey Echange le contenu des deux verresTemp=Nuits Verse le contenu de Nuits dans TempNuits=Gevrey Verse le contenu de Gevrey dans NuitsGevrey=Temp Verse le contenu de Temp dans Gevrey

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 44: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java

Communiquer avec lrsquoordinateur pendant lrsquoexecution duprogramme

Affichage des resultats a lrsquoecran (sortie)Saisie drsquoinformations au clavier (entree)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 45: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte

Systemoutprint(texte a afficher) Affiche le texte

Systemoutprintln(texte a afficher) Affiche le texte puis revient a la ligne

Affichage a lrsquoecran du contenu drsquoune variable

Systemoutprint(variable) Affiche le contenu de la variable

Systemoutprintln(variable) Affiche le contenu de la variable puis revient a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 46: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java - Les sorties

Affichage a lrsquoecran drsquoun texte et du contenu drsquoune variable

Systemoutprint(texte a afficher+variable) Affiche le texte puis le contenu de la variable

Systemoutprintln(texte a afficher+variable) Affiche le texte puis le contenu de la variable et revient a la ligne

Systemoutprintln(toto= +toto)Affiche toto= 8

Systemoutprintln(toto= +toto+ et titi= +titi) Affiche toto= 8 et titi= 4

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 47: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java - Les sorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Bonjour)Nuits=4Gevrey=8Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 48: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java - Les sorties

Un joli dessin

public class jolidessin Nom du programmepublic static void main (String[] args) Programme principalSystemoutprintln()Systemoutprintln( )Systemoutprintln( )Systemoutprintln( )

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 49: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java - Les entrees

La saisie drsquoun entier dans la variable toto

int totototo=Lirei() attend que lrsquoutilisateur saisisse un entier

La saisie drsquoun reel dans la variable titi

double titititi=Lired() attend que lrsquoutilisateur saisisse un reel

La saisie drsquoun texte dans une variable tutu

String tutututu=LireS() attend que lrsquoutilisateur saisisse un texte

Jean-Luc Baril Initiation a la programmation JAVA

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 50: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La programmation en Java - Les EntreesSorties

public class echange Nom du programmepublic static void main (String[] args) Programme principalint Nuits Gevrey Temp Systemoutprintln(Saisir le contenu de Nuits)Nuits=Lirei()Systemoutprintln(Saisir le contenu de Gevrey)Gevrey=Lirei()Temp=NuitsNuits=GevreyGevrey=TempSystemoutprintln(Le contenu de Nuits est+Nuits)Systemoutprintln(Le contenu de Gevrey est+Gevrey)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 51: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Exercice - Les EntreesSorties

Moyenne de deux reelsEcrire un programme Java permettant de faire la moyenne dedeux reels saisis par lrsquoutilisateur

public class moyenne Nom du programmepublic static void main (String[] args) Programme principaldouble x y moyenneSystemoutprintln(Saisir x)x=Lired()Systemoutprintln(Saisir y)y=Lired()moyenne=(x+y)2Systemoutprintln(La moyenne est+moyenne)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 52: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Fiche Memo CM1- Les EntreesSorties

Le minimum a savoir

public class nomprog Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Le minimum a savoir1 a la fin de chaque instruction2 Affectation x=33 Operateurs booleen ampamp || ==

xgt= 1 ampamp xlt= 5 x==7 || y==84 Affichage a lrsquoecran Systemoutprintln(rdquoBonjourrdquo+variable)5 Saisie au clavier x=Lirei() y=Lired()

Jean-Luc Baril Initiation a la programmation JAVA

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 53: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Exercice - Les EntreesSorties

Resolution de a lowast x = b lorsque a 6= 0Ecrire un programme Java permettant la saisie de a et b parlrsquoutilisateur puis drsquoafficher la solution de lrsquoequation

public class moyenne Nom du programmepublic static void main (String[] args) Programme principal Declaration des variables utiles

Saisie de a et b

Calcul de la solution

Affichage de la solution

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 54: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

Structures permettant de realiser des aiguillages

if

if(condition) Bloc drsquoinstructions

- Si la condition est vraie le programme execute lesinstructions situees entre accolades- Si la condition est fausse le programme ne considere pas lesinstructions et passe a la suite

Es-tu adulte

Declaration et saisie drsquoun ageif(agegt=18)Systemoutprintln(Vous etes adultes)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 55: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)x=x+1

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 56: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

if else

if(condition) Bloc drsquoinstructions 1else Bloc drsquoinstructions 2

- Si la condition est vraie le programme execute lesinstructions du bloc 1- Si la condition est fausse le programme execute lesinstructions du bloc 2

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 57: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

x isin [1100]

Declaration et saisie de $x$if(xgt=1 ampamp xlt=100)Systemoutprintln( x est entre 1 et 100)

elseSystemoutprintln( x n est pas entre 1 et 100)

Si le bloc drsquoinstructions dans le IF contient une seule instructionalors les accolades sont facultatives

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 58: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

Maximum de deux entiers

public class maximumpublic static void main (String[] args)int x y maxiSystemoutprintln(Saisir x)x=Lirei()Systemoutprintln(Saisir y)y=Lirei() Declaration et saisie de x et yif(xgty)maxi=x

elsemaxi=y

Systemoutprintln(Le maximum est+maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 59: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

Resolution equation ax+b=0

double a b xSystemoutprintln(Saisir a)a=Lired()Systemoutprintln(Saisir b)b=Lired()if(a=0) x=-baSystemoutprintln(La solution est +x)

elseif(b==0)

Systemoutprintln(Il y a une infinite de solutions)else

Systemoutprintln(Il nrsquoy a pas de solution)

Le if else est consideree comme une seule instructionJean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 60: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b ampamp blt=c)Systemoutprintln(a+lt=+b+lt=+c)

if(alt=c ampamp clt=b)Systemoutprintln(a+lt=+c+lt=+b)

if(blt=a ampamp alt=c)Systemoutprintln(b+lt=+a+lt=+c)

if(blt=c ampamp clt=a)Systemoutprintln(b+lt=+c+lt=+a)

if(clt=a ampamp alt=b)Systemoutprintln(c+lt=+a+lt=+b)

if(clt=b ampamp blt=a)Systemoutprintln(c+lt=+b+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 61: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

Classement par ordre croissant de trois entiers

Declaration et saisie de a b et c

if(alt=b)if(blt=c)

Systemoutprintln(a+lt=+b+lt=+c)elseif(clt=a)Systemoutprintln(c+lt=+a+lt=+b)

elseSystemoutprintln(a+lt=+c+lt=+b)

elseif(alt=c)

Systemoutprintln(b+lt=+a+lt=+c)elseif(clt=b)Systemoutprintln(c+lt=+b+lt=+a)

elseSystemoutprintln(b+lt=+c+lt=+a)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 62: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

switch

switch(valeur)case val1 Bloc drsquoinstructions B1 case val2 Bloc drsquoinstructions B2 case valn Bloc drsquoinstructions Bn

- Si valeur vaut val1 le programme execute B1 B2 Bn- Si valeur vaut val2 le programme execute B2 Bn- - Si valeur vaut valn le programme execute Bn

AttentionLa variable valeur du switch doit etre de type int ou char (pourlrsquoinstant)

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 63: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

Affichage des derniers jours de la semaine

int jourSystemoutprintln(Numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) case 2 Systemoutprintln(Mardi) case 3 Systemoutprintln(Mercredi) case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) case 7 Systemoutprintln(Dimanche)

Si jour=5 alors le programme affiche Vendredi Samedi etDimanche

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 64: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

switch

switch(valeur)case val1 Instructions B1 breakcase val2 Instructions B2 breakcase valn Instructions Bn break

- Si valeur vaut val1 le programme execute seulement B1- Si valeur vaut val2 le programme execute seulement B2- - Si valeur vaut valn le programme execute seulement Bn

Lrsquoinstruction break permet drsquoarreter lrsquoexecution dans unestructure Cette instruction sera permise UNIQUEMENT dansun switch

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 65: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

Affichage du jour de la semaine

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) break case 5 Systemoutprintln(Vendredi) break case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=5 le programme affiche uniquement Vendredi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 66: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

Un melange des deux syntaxes

int jourSystemoutprintln(Saisir le numero de jour de la semaine)jour=Lirei()switch(jour)case 1 Systemoutprintln(Lundi) break case 2 Systemoutprintln(Mardi) break case 3 Systemoutprintln(Mercredi) break case 4 Systemoutprintln(Jeudi) case 5 Systemoutprintln(Vendredi) case 6 Systemoutprintln(Samedi) break case 7 Systemoutprintln(Dimanche) break

Si jour=4 le programme affiche Jeudi Vendredi et Samedi

Jean-Luc Baril Initiation a la programmation JAVA

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 67: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les conditionnelles

Deux exercices

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 68: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Fiche Memo CM2- Les conditionnelles

Le minimum a savoir

if(condition)

if(condition)

else

switch(variable)case val1 breakcase val2 breakcase valn break

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 69: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

Structures permettant de repeter des instructions

La boucle for()

for(initialisation condition incrementation) Instructions

- Lrsquoinitialisation permet de donner une valeur de depart a lavariable de boucle Crsquoest la premiere instruction executee- Condition est le test a verifier pour pouvoir executer lesinstructions de la boucle- Lrsquoincrementation est une instruction qui permet de modifier leresultat de la condition ( i ++ ou i minusminus)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 70: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

Exemple Afficher les 100 premiers entiers

for(i=1 ilt=100 i++) Systemoutprintln(i)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 71: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

somme=somme+iSystemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 72: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

La boucle while()

while(condition) Instructions

- Tant que la condition est vraie (true) le programme executeles instructions de la boucle La condition est verifiee avant drsquoexecuter les instructions Il est necessaire de modifier la condition a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 73: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

Afficher les 100 premiers entiers

i=1while(ilt=100) Systemoutprintln(i)

i=i+1

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 74: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)somme=somme+ii=i+1

Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 75: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

La boucle do while

do Instructions

while(conditions)

- Le programme execute les instructions de la boucle puisverifie ensuite la condition pour eventuellement continuer La condition est verifiee apres avoir execute les instructions Il est necessaire de modifier la conditions a lrsquointerieur de laboucle pour que la boucle puisse srsquoarreter

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 76: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

Afficher les 100 premiers entiers

i=1do Systemoutprintln(i)

i=i+1 while(ilt=100)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 77: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

Affichage de la somme des n premiers entiers

public class sommepublic static void main (String[] args)int i n somme=0Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1dosomme=somme+ii=i+1

while(ilt=n)Systemoutprintln(La somme est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 78: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

Saisie drsquoun entier positif ou nul

public class saisiepublic static void main (String[] args)int ndoSystemoutprintln(Saisir un entier positif ou nul)n=Lirei()

while(nlt0)

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 79: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Fiche Memo CM3- Les repetitions

Le minimum a savoir

for(i=1ilt=100i++) Pour i allant de 1 jusqursquoa 100 faire

for(i=100igt=1i--) Pour i allant de 100 jusqursquoa 1 faire

while(condition) Tant que la condition est vraie faire

do Faire jusqursquoa ce que la condition soit fausse

while(condition)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 80: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()for(i=1 ilt=n i++)

produit=produitiSystemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 81: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1while(ilt=n)produit=produitii=i+1

Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 82: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions

Affichage du produit des n premiers entiers positifs

public class produitpublic static void main (String[] args)int i n produit=1Systemoutprintln(Saisir lrsquoentier n)n=Lirei()i=1doproduit=produitii=i+1while(ilt=n)Systemoutprintln(Le produit est +produit)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 83: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Somme drsquoune suite de notesProgramme qui calcule la somme drsquoune suite de notes saisiesau clavier jusqursquoa ce que la note -1 soit entree

public class moyennepublic static void main (String[] args)int note somme=0doSystemoutprintln(Saisir une note ou -1)note=Lirei()if(note=-1)somme=somme+note

while(note=-1)Systemoutprintln(La somme des notes est +somme)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 84: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSystemoutprintln(Saisir la taille du dessin)taille=Lirei() Saisie de la taillefor(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=ij++) Boucle decrivant les colonnes

Systemoutprint() Affichage Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 85: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Un joli dessinAfficher le motif suivant dont la taille est saisie par lrsquoutilisateur

Pour taile=3 Pour taille=4 Pour taille=5

int ijtailleSaisie de la taille

for(i=1ilt=taillei++) Boucle decrivant les lignes for(j=1jlt=taillej++) Boucle decrivant les colonnes

if(jlti)Systemoutprint( ) Affichage espaceselseSystemoutprint() Affichage etoiles

Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 86: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Exemple de menu

int xyzchoixchar opdoSystemoutprintln(1 Saisir x)Systemoutprintln(2 Saisir y)Systemoutprintln(3 Calculer la somme)Systemoutprintln(4 Quitter)Systemoutprintln(Quel est votre choix)choix=Lirei()switch(choix)case 1 x=Lirei() breakcase 2 y=Lirei() breakcase 3 z=x+y break

while(choix=4)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 87: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

MethodeSi a ge b alors PGCD(ab) =- b si b divise a (ab == 0)- PGCD(b r) ou r est le reste de la division de a par b(r = ab)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 88: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

while(bgt0)

r=a ba=bb=r

Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 89: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Lrsquoalgorithme drsquoEuclide - Calcul du PGCD

Declaration et saisie de a et b Echange de a et b si bgta

do

r=a ba=bb=r

while(bgt0)Systemoutprintln(Le PGCD est +a)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 90: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Ecrire un prog permettant de rechercher un nombre aleatoireentre 1 et 100 genere par lrsquoordinateurReel aleatoire entre 0 inclu et 1 exclu Mathrandom()Reel aleatoire entre 0 inclu et b exclu bMathrandom()Reel aleatoire entre a inclu et b exclua+(b-a)Mathrandom()Entier aleatoire entre a inclu et b-1 inclu(int)(a+(b-a)Mathrandom())

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 91: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Idee Saisir un nombre tant que le nombre saisi nrsquoest pas celuide lrsquoordinateur

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 92: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Une amelioration du jeu A chaque etape lrsquoordinateur devradire si votre nombre est trop grand ou trop petit

int ordi joueur

ordi=(int)(1+100Mathrandom())doSystemoutprintln(Proposer votre nombre)joueur=Lirei()if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 93: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Indiquer le nbre de coups utilisespour gagner

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi)

Systemoutprintln(Bravo vous avez trouve en +coups+coups)

Jean-Luc Baril Initiation a la programmation JAVA

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 94: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les repetitions - Exercice

Recherche drsquoun entier entre 1 et 100Encore une amelioration Limiter le nbre de coups a 7 coups

int ordi joueur coupsordi=(int)(1+100Mathrandom())coups=0doSystemoutprintln(Proposer votre nombre)joueur=Lirei()coups=coups+1if(joueurgtordi)Systemoutprintln(Votre nbre est trop grand)

if(joueurltordi)Systemoutprintln(Votre nbre est trop petit)

while(joueur=ordi ampamp coupslt7)

if(joueur==ordi)Systemoutprintln(Bravo vous avez trouve en +coups+coups)

elseSystemoutprintln(Perdu)

Jean-Luc Baril Initiation a la programmation JAVA

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 95: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Exercice

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 96: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Un tableau est une structure qui peut contenir plusieurselements du meme typeLe nombre drsquoelements du tableau est la taille du tableauLes elements sont reperes par un ou plusieurs indices detype int (ou char)Le nombre drsquoindices est la dimension du tableau

Tableau a 1 dimension de taille 10 contenant des entiers

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices du tableau

Tableau a 2 dimensions a 2 lignes et 10 colonnes

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 97: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Declaration drsquoun tableauReserve une adresse memoire

Tableau 1D Type des elements tab[]Tableau 2D Type des elements tab[][]

Creation drsquoun tableauDefinit la taille du tableau

Tableau 1D tab=new Type des elements[Nbre cases]Tableau 2D tab=new Type des elements[nblig][nbcol]

Declaration et allocation de tableaux

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaudouble tab[][] Declaration tableau 2Dtab= new double[2][10] Definition de la taille

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 98: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Acces a la i-ieme case drsquoun tableau 1D tab[i-1]

1 3 5 7 9 0 2 4 6 80 1 2 3 4 5 6 7 8 9 Indices i

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableautab[0]=1tab[1]=3tab[2]=5tab[9]=8

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 99: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Remplissage drsquoun tableau 1D

int tab[] Declaration tableau 1D drsquoentierstab= new int[10] Definition de la taille du tableaufor(i=0ilt=9i++) Boucle pour parcourir les cases Systemoutprintln(Saisir la case +i)tab[i]=Lirei()

Affichage drsquoun tableau 1D

for(i=0ilt=9i++)Systemoutprint(tab[i]+ )

Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 100: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Acces a la case drsquoun tableau 2D sur la i-ieme ligne et j-iemecolonne tab[i-1][j-1]

1 3 5 7 9 0 2 4 6 80 2 4 6 8 1 3 5 7 9

01

0 1 2 3 4 5 6 7 8 9 Indices du tableau

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 2D drsquoentierstab= new int[2][10] Definition de la taille du tableautab[0][0]=1 tab[1][0]=0tab[0][1]=3 tab[1][1]=2tab[0][2]=5 tab[1][2]=4 tab[0][9]=8 tab[1][9]=9

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 101: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Remplissage drsquoun tableau 2D

int tab[][] Declaration tableau 1D drsquoentierstab= new int[2][10] Definition de la taille du tableaufor(i=0ilt=1i++) Boucle pour decrire les 2 lignesfor(j=0jlt=9j++) Boucle pour decrire les 10 colonnes Systemoutprintln(Saisir ligne +i+ et colonne +j)

tab[i][j]=Lirei()

Affichage drsquoun tableau 2D

for(i=0ilt=1i++) Boucle pour decrire les 2 lignes for(j=0jlt=9j++) Boucle pour decrire les 10 colonnes

Systemoutprint(tab[i][j]+ )Systemoutprintln() Retour a la ligne

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 102: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche drsquoun element dans un tableau 1D

int ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()for(i=0ilt=99i++) Boucle pour decrire les 100 casesif(tab[i]==element)Systemoutprintln(Trouve)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 103: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Recherche drsquoun element dans un tableau 1D

boolean trouveint ielementtab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableauSystemoutprintln(Entrer lrsquoelement a rechercher)element=Lirei()trouve=falsei=0while(ilt=99 ampamp trouve==false) if(tab[i]==element)

trouve=trueelsei=i+1

if(trouve==true)

Systemoutprintln(element+ est trouve en position +i)else

Systemoutprintln(element+ n est pas dans le tableau)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 104: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche du maximum drsquoun tableau 1D

int imaxitab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i]

Systemoutprintln(Le maximum du tableau est +maxi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 105: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

1 3 5 7 9 2 4 6 8

Recherche de la position du maximum drsquoun tableau 1D

int imaxipositab[] Declaration tableau 1D drsquoentierstab= new int[100] Definition de la taille du tableau Remplissage du tableaumaxi=tab[0]posi=0for(i=1ilt=99i++) Boucle pour decrire le tableauif(tab[i]gtmaxi)maxi=tab[i] posi=i

Systemoutprintln(La position du maximum du tableau est +posi)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 106: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Tri a bulles drsquoun tableau 1D

( VideoTriabullesmp4

Jean-Luc Baril Initiation a la programmation JAVA

triabullesmp4
Media File (videomp4)

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 107: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordre = falseint taille = tablength donne le nbre de cases du tableauwhile(tab_en_ordre)

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 108: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Tri a bulles drsquoun tableau 1D

bool tab_en_ordreint taille = tablengthdo

tab_en_ordre = truefor(int i=0 i lt taille-1 i++)

if(tab[i] gt tab[i+1]) echange de tab[i] et tab[i+1]

tab_en_ordre = false

taille--while(tab_en_ordre)

Jean-Luc Baril Initiation a la programmation JAVA

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 109: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Tri par insertion drsquoun tableau 1D

( VideoTriparinsertionmp4

Jean-Luc Baril Initiation a la programmation JAVA

triparinsertionmp4
Media File (videomp4)

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 110: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les tableaux

Tri par insertion drsquoun tableau 1D

int taille = tablength donne le nbre de cases du tableaufor(int i=0 i lt taille-1 i++) k=i

while(kgt=0 ampamp tab[k]gttab[k+1])echanger tab[k] et tab[k+1]k=k-1

Jean-Luc Baril Initiation a la programmation JAVA

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 111: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Fiche Memo CM5- Les tableaux

Le minimum a savoir

int tab[]itab=new int[100] Declaration tableau 1D drsquoentiersfor(i=0ilt=99i++) AffichageSystemoutprint(tab[i]+ )

Systemoutprintln()

int tab[][]ijtab=new int[100][50] Declaration tableau 2D drsquoentiersfor(i=0ilt=99i++) Affichage for(j=0jlt=49j++)

Systemoutprint(tab[i][j]+ )Systemoutprintln()

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 112: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)Rappel- Un caractere est stocke dans une variable de type charExemple char car=rsquoersquo (entoure de rsquorsquo) - les caracteres sontclasses par le code ASCII

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Jean-Luc Baril Initiation a la programmation JAVA

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 113: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

La table ASCII

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 114: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les chaınes de caracteres

Une chaıne de caracteres (de type String) est une suiteordonnee de caracteres (de type char) Exemplerdquoabcdefghijk000lmnopqrst123uvwxyzrdquo est une chaıne decaracteres (entouree de guillemets rdquordquo)

Declaration drsquoune chaıne de caracteresString nom variable

Declaration

String chaine

Declaration drsquoune chaıne vide

String chaine= Deux guillements consecutifs (sans espace)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 115: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les chaınes de caracteres

Affectationvariable=rdquotexterdquo

Affectation

String chaine1chaine2chaine3chaine1=Bonjourchaine2= Chaine videchaine3=chaine1

Affichage drsquoune chaıne

String chaine1chaine1=BonjourSystemoutprintl(chaine1)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 116: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les chaınes de caracteres

nombre de caracteres drsquoune chaıne (ou longueur)variablelength()

Longueur drsquoune chaine

int longueurString chainechaine=Bonjourlongueur=chainelength() Nombre de caracteresSystemoutprintln(Il y a +longueur+ caracteres dans la chaine)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 117: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les chaınes de caracteres

i-ieme caractere drsquoune chaınevariablecharAt(i-1) (de type char)

variablecharAt(0) est le premier caractere de la chaıne variablevariablecharAt(1) est le second caractere de la chaıne variable

i-ieme caractere drsquoune chaıne

char cString chainechaine=Bonjourc=chainecharAt(3)Systemoutprintln(le 4-ieme caractere est+c)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 118: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les chaınes de caracteres

Juxtaposition de deux chaınes (concatenation)chaine1+chaine2

Juxtaposition de deux chaınes

String chaine1chaine2chaine3chaine4chaine1=Bonjourchaine2= jourBonchaine3=chaine1+chaine2Systemoutprintln(chaine3) Affiche Bonjour jourBonchaine4=chaine2+chaine1Systemoutprintln(chaine4) Affiche jourBonBonjour

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 119: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les chaınes de caracteres

Test drsquoegalite de deux chaıneschaine1equals(chaine2) renvoie true si les contenus sontegaux et false sinon

Test drsquoegalite de deux chaınes

String chaine1chaine2chaine1=Bonjourchaine2=Bonjour A NE PAS FAIREif(chaine1==chaine2)Systemoutprintln(les adresses sont egales)

A FAIREif(chaine1equals(chaine2))Systemoutprintln(les contenus des chaines sont egaux)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 120: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les chaınes de caracteres

Les methodes

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 121: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les chaınes de caracteres

Suppression des rsquoarsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 122: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les chaınes de caracteres

Remplacement des rsquoarsquo par des rsquoorsquo dans une chaıne

String chaine1chaine2int i longueurlongueur=chaine1length()chaine2=for(i=0ilt=longueur-1i++)if(chaine1charAt(i)=rsquoarsquo)chaine2=chaine2+chaine1charAt(i)

elsechaine2=chaine2+rsquoorsquo

Systemoutprintln(chaine2)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 123: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions

Une fonction est un bout de code qui a un nom et qui peutetre appelee depuis le reste du programmeExemples de fonctions predefinies Mathpow(ab)Mathabs(a) Mathrandom() Mathsqrt(a)

Interets des fonctionsMeilleure lisibilite et concision (evite drsquoecrire plusieurs foisle meme codeNiveau drsquoabstraction plus eleve (un nom remplace unepartie complexe du programme)Gain de place memoireModification plus aiseePartage de fonctions (biibliotheque de fonction)Recursivite

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 124: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Declaration drsquoune fonctionOn declare une fonction a lrsquoexterieur du main mais a lrsquointerieurde class Je conseille de les declarer juste apres le programmeprincipal

public class programmepublic static void main(String args[])

Programme principal

Declaration des fonctions

Jean-Luc Baril Initiation a la programmation JAVA

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 125: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Deux types de fonctionFonction qui renvoie une valeur (Mathsqrt()Mathrandom() perimetre() moyenne())Fonction qui ne renvoie pas une valeur (affichage drsquountableau )

Jean-Luc Baril Initiation a la programmation JAVA

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 126: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Declaration drsquoune fonction qui renvoie une valeur

public static type Nomfonction(parametres formels) instructions de la fonction

return valeurrenvoyee

type est le type de la valeur renvoyee Nomfonction est le nom de la fonction Parametres formels sont les donnees necessaires pour ladeclaration de la fonction (ils restent donc sans valeur)

Appel de la fonction

variable=Nomfonction(parametres effectifs)renvoie la valeur de la fonction

Les parameres effectifs sont les parametres sur lesquels lafonction est executee Lors de lrsquoexecution les parametres formels sontremplaces par les parametres effectifs

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 127: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions

Fonction qui renvoie le maximum de deux entiers

public static int maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

return maxi Renvoie le maximum de a et b

Les variables locales sont connues seulement dans lafonctionAppel de la fonction qui renvoie le maximum de deux entiers

int x=1y=2maxmax=maximum(xy) Appel de la fonction sur x et ySystemoutprintln(max) affichage de 2

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 128: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions

Fonction qui renvoie la moyenne de 2 reels

public static double moyenne(double a double b)double moy Variable localemoy=(a+b)2

return moy Renvoie la moyenne de a et b

Appel de la fonction qui renvoie la moyenne

double x=15y=25moymoy=moyenne(xy) Appel de la fonction sur x et ySystemoutprintln(moy) affichage la moyenne

Il y a ici deux variables moy

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 129: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions

Declaration drsquoune fonction qui ne renvoie pas de valeur

public static void Nomfonction(parametres formels)instructions de la fonctionil nrsquoy a pas le return

Appel de la fonction

Nomfonction(parametres effectifs) Crsquoest une instruction qui ne renvoie pas de valeur Elle se contente drsquoexecuter les instructions de la fonction

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 130: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions

Fonction qui affiche le maximum de deux entiers (sans lerenvoyer)

public static void maximum(int a int b)int maxi Variable localeif(agtb)maxi=a

elsemaxi=b

Systemoutprintln(Le max de +a+ et +b+ est +maxi) Affiche le maximum de a et b

Appel de la fonction qui affiche le maximum de deux entiers

int xyx=1y=2maximum(xy) Appel de la fonction sur x et y

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 131: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions

Peut-on modifier un parametre de fonction

-Les parametres de types int char double boolean Stringne peuvent pas etre modifies au cours de lrsquoexecution drsquounefonctionOn dit que les parametres sont passes par valeur

-Les parametres de types tableaux 1D ou 2D peuvent etremodifiesOn dit que les parametres sont passes par references (ouvariable)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 132: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1y=ajoutun(x) Appel de la fonction sur x

A la fin y=2 et x=1

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 133: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions

Tentative de modification drsquoun parametre passe par valeur

public static int ajoutun(int a) a=a+1return a

Appel de la fonction

int xx=1x=ajoutun(x) Appel de la fonction sur x

A la fin x=2 Ici la modification est realisee (mais crsquoest en trichant)

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 134: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions

Modification drsquoun parametre passe par reference

public static void modif(int tab[]) tab[0]=1

tab[1]=2tab[2]=3

Appel de la fonction

int T[]T=new int[3]T[0]=0T[1]=1T[2]=2modif(T) Appel de la fonction sur T

A la fin T[0]=1 et T[1]=2 et T[2]=3

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 135: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions - La recursivite

Une fonction est recursive si elle srsquoappelle elle memeIl y a toujours un cas de base sans appel recursif et le casgeneral ou intervient la recursivite

Fonction recursive pour calculer n = (n-1) n

public static int facto(int n)if(n==0)return 1 Cas de base

elsereturn nfacto(n-1) Cas general de la recursivite

Appel de facto

int nresun=10resu=facto(n) Appel de la fonction recursive facto

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 136: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions - La recursivite

Partant drsquoun couple de lapins combien de couples obtiendrons-nous apres un nombre donne de mois sachant que

chaque couple produit chaque mois un nouveau couple lequel ne devient productif qursquoapres deux mois

Fonction recursive pour calculer les nombres de Fibonacci

f0 = 1 f1 = 1 fn = fnminus1 + fnminus2

public static int fibo(int n)if(n==0 || n==1)return 1 Cas de base

elsereturn fibo(n-1)+fibo(n-2) Cas general

Appel de fibo

int nresun=10resu=fibo(n) Appel de la fonction recursive fibo

Jean-Luc Baril Initiation a la programmation JAVA

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 137: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Les fonctions - La recursivite

Fonction recursive pour calculer les coefficients binomiaux

Ckn = Ckminus1

nminus1 + Cknminus1

public static int coeff(int nint k)if(k==0 || k==n)return 1 Cas de base

elsereturn coeff(n-1k-1)+coeff(n-1k) Cas general

Appel de coeff

int nkresun=10k=3resu=fibo(nk) Appel de la fonction recursive coeff

Jean-Luc Baril Initiation a la programmation JAVA

Jean-Luc Baril Initiation a la programmation JAVA

Page 138: Initiation à la programmation JAVA - u-bourgogne.frjl.baril.u-bourgogne.fr/coursinfo.pdf · 2019-09-09 · Informations eventuellement utiles´ Modalites de contr´ ole:ˆ - Partiel

Jean-Luc Baril Initiation a la programmation JAVA