Chapitre 3: Enoncés de programme Présentation pour Java Software Solutions Foundations of Program Design Deuxième Edition par John Lewis et William Loftus.

Slides:



Advertisements
Présentations similaires
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Advertisements

GEF 243B Programmation informatique appliquée Boucles §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
GEF 243B Programmation informatique appliquée
(Classes prédéfinies – API Java)
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Section VI Structures répétitives (suite)
Les bases de l’Algorithmique
Principes de programmation (suite)
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Récursivité.
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Algorithmique et Programmation
Expressions et assignations
Algorithmique et structure de données
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Algorithmique et Programmation
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Programmation multimédia 3
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Semaine #1 INF130 par Frédérick Henri.
Semaine #1 INF135 par Frédérick Henri.
Points importants de la semaine Les constantes. Les boucles. Les opérateurs relationnels Les opérateurs logiques.
Instruction sélective switch-case Instruction répétitive do-while For
Principes de programmation
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
CSI3525: Concepts des Langages de Programmation
Chapitre 3: Les équations et les inéquations
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 8 Structure de contrôle.
Expressions et affectations
Partie II Sémantique.
CSI 1502 Principes fondamentaux de conception de logiciels
Instructions de contrôle
Plan troisième cours Instruction sélective Instruction répétitive
Modélisation des opérations Spécifier les transformations détat que lon attend des services de la machine Létat dune machine entièrement déterminée par.
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Structures alternative et répétitive
L’essentiel du langage C
Algorithmique Les structures Rappel L'enchaînement séquentiel
3 Les instructions. Cours 32 Plan du cours 3 Instruction Bloc Portée L’alternative Affectations =, +=, *=… Comment comparer –Comparer des réels –Comparer.
Un survol du language C.
Programmation linéaire en nombres entiers
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
 Syntaxe du langage PHP
Le langage Racket (Lisp)
Cours n° 3 Traitements en Java
Tutorat en bio-informatique Le 10 octobre Au programme… Rappel sur les variables Constantes Conditions Comparaisons Tables de vérité Switch.
Tutorat en bio-informatique Le 12 octobre Exercices 3 et 4 (MAT1400) - solutions La série du binôme (chap. 8.8) –Trouver la série entière et le.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Introduction à la programmation (420-PK2-SL) cours 8
Scripts et fonctions Instructions de contrôle
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 6 octobre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Chapitre 4: Classes Présentation pour Java Software Solutions Foundations of Program Design Deuxième Edition par John Lewis et William Loftus Java Software.
Introduction au langage C
Philippe Gandy – 13 octobre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Transcription de la présentation:

Chapitre 3: Enoncés de programme Présentation pour Java Software Solutions Foundations of Program Design Deuxième Edition par John Lewis et William Loftus Java Software Solutions est publié par Addison-Wesley Presentation slides are copyright 2000 by John Lewis and William Loftus. All rights reserved. Instructors using the textbook may use and modify these slides for pedagogical purposes.

2 Enoncés de programme b On examinera maintenant d’autres énoncés de programme b Chapitre 3 se concentre sur : Contrôle de flux dans une méthodeContrôle de flux dans une méthode Enoncés de prise de décisionEnoncés de prise de décision Opérateurs pour prendre des décisions complexesOpérateurs pour prendre des décisions complexes Enoncés de répétitionEnoncés de répétition Etapes de développement de softwareEtapes de développement de software D’autres techniques de dessinD’autres techniques de dessin

Contrôle de flux Contrôle de flux b En général, l’ordre d’exécution des énoncés dans une méthode est linéaire : un énoncé après l’autre dans l’ordre d’écriture b Quelques énoncés de programmation modifient cet ordre, permettant de : Décider d’exécuter ou non un énoncé, ouDécider d’exécuter ou non un énoncé, ou Exécuter répétitivement un énoncéExécuter répétitivement un énoncé b L’ordre d’exécution des énoncés est appelé le contrôle de flux

Enoncés conditionnels b Un énoncé conditionnel permet de choisir quel énoncé sera exécuté après b Ils sont parfois aussi appelés des énoncés de sélection b Les énoncés conditionnels donnent la possibilité de prendre des décisions de base b Les énoncés conditionnels en Java sont le if, le if-else, et le switch

5 L’énoncé if b L’énoncé if suit la syntaxe : if ( condition ) statement; if est un mot réservé en Java La condition doit être une expression booléenne. Elle doit être évaluée en true ou false. Si est true, l’énoncé est exécuté. Si condition est true, l’énoncé statement est exécuté. Si elle est false, l’énoncé est évité. Si elle est false, l’énoncé statement est évité.

L’énoncé if  Un exemple d’énoncé :  Un exemple d’énoncé if : if (sum > MAX) delta = sum - MAX; System.out.println ("The sum is " + sum); En premier, la condition est évaluée. La valeur de sum est soit plus grande que la valeur de, ou elle ne l’est pas. est soit plus grande que la valeur de MAX, ou elle ne l’est pas. Si la condition est true, l’énoncé d’assignation est exécuté. Si elle ne l’est pas, l’énoncé d’assignation n’est pas exécuté. Dans les deux cas, l’appel à est exécuté après. Dans les deux cas, l’appel à println est exécuté après. b Voir Age.java (page 112) Age.java

Logique d’un énoncé if condition évaluée false énoncé true

8 Expressions booléennes b Une condition souvent utilise un des opérateurs d’égalité ou de relation de Java, qui retournent tous un boolean en résultat : == égal à != différent de < plus petit que > plus grand que <= plus petit ou égal à >= plus grand ou égal à  Remarque la différence entre l’opérateur d’égalité ( == ) et l’opérateur d’assignation ( = )

9 L’énoncé if-else  Une clause else peut être ajoutée à un énoncé pour en faire un énoncé if-else :  Une clause else peut être ajoutée à un énoncé if pour en faire un énoncé if-else : if ( condition ) statement1; else statement2; b Voir Wages.java (page 116) Wages.java b Si la condition est true, statement1 est exécuté; si la condition est false, statement2 est exécuté b Un ou l’autre est exécuté, mais pas les deux

Logique d’un énoncé if-else condition évaluée statement1 true false statement2

11 Bloc d’énoncés b Plusieurs énoncés peuvent être groupés ensemble dans un bloc d’énoncés b Un bloc est délimité par des accolades ( { … } ) b Un bloc d’énoncés peut être utilisé partout où un énoncé est valide selon la syntaxe de Java  Par exemple, dans un énoncé, la section, la section, ou les deux, peuvent être des blocs d’énoncés  Par exemple, dans un énoncé if-else, la section if, la section else, ou les deux, peuvent être des blocs d’énoncés b Voir Guessing.java (page 117) Guessing.java

12 Enoncés if imbriqués  L’énoncé exécuté en résultat de la condition ou pourrait être une autre condition  L’énoncé exécuté en résultat de la condition if ou else pourrait être une autre condition if b On les appelle des énoncés if imbriqués b Voir MinOfThree.java (page 118) MinOfThree.java b Une clause else est reliée au dernier if non-relié (peu importe l’indentation)  Il faut bien s’assurer de l’agencement d’un avec le bon  Il faut bien s’assurer de l’agencement d’un else avec le bon if

Comparer des caractères b On peut utiliser les opérateurs relationnels sur les données de type caractère b Les résultats sont basés sur l’ensemble de caractères Unicode b La condition suivante est true parce que le caractère '+' précède le caractère 'J' dans Unicode: if ('+' < 'J') System.out.println ("+ is less than J"); b Les lettres majuscules de l’alphabet (A-Z) et les lettres minuscules (a-z) apparaissent toutes deux dans l’ordre alphabétique dans Unicode

Comparer des Strings b Notez qu’une chaîne de caractères en Java est un objet  On ne peut pas utiliser les opérateurs relationnels pour comparer des s  On ne peut pas utiliser les opérateurs relationnels pour comparer des string s  La méthode equals peut être appelée sur une pour déterminer si deux contiennent exactement les mêmes caractères dans le même ordre  La méthode equals peut être appelée sur une string pour déterminer si deux strings contiennent exactement les mêmes caractères dans le même ordre  La classe contient aussi une méthode compareTo pour déterminer si une précède une autre alphabétiquement (tel que déterminé dans Unicode)  La classe String contient aussi une méthode compareTo pour déterminer si une string précède une autre alphabétiquement (tel que déterminé dans Unicode)

Comparer des valeurs en point flottant  On doit faire attention en comparant l’égalité entre deux valeurs en point flottant ( float ou double )  On devrait rarement utiliser l’opérateur égalité ( == ) pour comparer deux valeurs en point flottant b Dans plusieurs situations, on peut considérer que deux valeurs en point flottant sont “suffisamment proches” même si leurs valeurs ne sont pas exactement les mêmes b Ainsi pour déterminer si deux valeurs en point flottant sont égales, on peut préférer utiliser la technique suivante : if (Math.abs (f1 - f2) < ) System.out.println ("Essentially equal.");

16 L’énoncé switch b L’énoncé switch donne une autre façon de décider quel énoncé exécuter  L’énoncé évalue une expression, et essaie de relier le résultat avec un des plusieurs cases possibles  L’énoncé switch évalue une expression, et essaie de relier le résultat avec un des plusieurs cases possibles b Chaque case contient une valeur et une liste d’énoncés b Le contrôle de flux continue à la liste d’énoncés associée avec la première valeur égale à l’évaluation de l’expression

L’énoncé switch  La syntaxe générale d’un énoncé est :  La syntaxe générale d’un énoncé switch est : switch ( expression ) { case value1 : statement-list1 case value2 : statement-list2 case value3 : statement-list3 case... }switchetcase sont des motsréservés Si expression est égale à value2, le contrôle continue ici

L’énoncé switch  Souvent un énoncé est utilisé comme le dernier énoncé dans chacune des listes d’énoncés des  Souvent un énoncé break est utilisé comme le dernier énoncé dans chacune des listes d’énoncés des case b Un énoncé break transfert le contrôle à l’énoncé qui suit l’énoncé switch  Si un énoncé break n’est pas utilisé, le contrôle de flux continue dans le suivant  Si un énoncé break n’est pas utilisé, le contrôle de flux continue dans le case suivant  Ceci est parfois utile, mais souvent il s’agit d’une erreur parce qu’on veut normalement seulement exécuter les énoncés d’un seul  Ceci est parfois utile, mais souvent il s’agit d’une erreur parce qu’on veut normalement seulement exécuter les énoncés d’un seul case

L’énoncé switch  Un énoncé peut avoir optionnellement un default case  Un énoncé switch peut avoir optionnellement un default case  Le default case n’a pas de valeur associée et utilise simplement le mot réservé default  Si le default case est utilisé, le contrôle continue dans sa liste d’énoncés si la valeur de l’expression n’égale aucun autre  Si le default case est utilisé, le contrôle continue dans sa liste d’énoncés si la valeur de l’expression n’égale aucun autre case  Même si le default case peut apparaître n’importe où à l’intérieur du, il est habituellement placé à la fin  Même si le default case peut apparaître n’importe où à l’intérieur du switch, il est habituellement placé à la fin  S’il n’y a pas de default case et aucune valeur n’est égale, le contrôle continue à l’énoncé suivant le  S’il n’y a pas de default case et aucune valeur n’est égale, le contrôle continue à l’énoncé suivant le switch

L’énoncé switch  L’expression d’un énoncé doit retourner un type de données entière, un tel entier ou un caractère ; ce ne peut pas être une valeur en point flottant  L’expression d’un énoncé switch doit retourner un type de données entière, un tel entier ou un caractère ; ce ne peut pas être une valeur en point flottant  Remarquez que la condition implicite booléenne dans un énoncé est l’égalité – il doit trouver la valeur qui égale l’expression  Remarquez que la condition implicite booléenne dans un énoncé switch est l’égalité – il doit trouver la valeur qui égale l’expression  On ne peut pas utiliser des relations (ex: >=) dans un énoncé  On ne peut pas utiliser des relations (ex: >=) dans un énoncé switch b Voir GradeReport.java (page 121) GradeReport.java

21 Opérateurs logiques b Les expressions booléennes peuvent aussi utiliser les opérateurs logiques suivants : ! NON logique && ET logique || OU logique b Ils prennent des opérandes booléens et produisent des résultats booléens b Le NON logique est un opérateur unaire (il n’a qu’un opérande) b Le ET logique et le OU logique sont des opérateurs binaires (ils ont deux opérandes)

22 NON logique b L’opération NON logique est aussi appelée la négation logique ou le complément logique  Si une condition booléenne a est true, alors !a est false; si a est false, alors !a est true b Les expression logiques peuvent être analysées avec des tables de vérité a true false !a false true

23 ET logique ; OU logique b L’expression ET logique a && b est true si les deux a et b sont true, et false sinon b L’expression OU logique a || b est true si ou ou les deux sont true, et false sinon est true si a ou b ou les deux sont true, et false sinon

Tables de vérité b Une table de vérité montre les combinaisons true/false possibles de ses termes  Puisque && et || ont chacun deux opérandes, il y a quatre combinaisons possibles de true et false a true false b true false true false a && b true false a || b true false

25 Opérateurs logiques b Les conditions dans les énoncés de sélection et les boucles peuvent utiliser des opérateurs logiques pour composer des expressions complexes if (total < MAX && !found) System.out.println ("Processing…"); b Les opérateurs logiques ont des relations de précédence entre eux et avec les autres opérateurs

26 Tables de vérité b Des expressions spécifiques peuvent être évaluées avec les tables de vérité total < MAX false true found false true false true !found true false true false total < MAX && !found false true false

27 D’autres opérateurs b Il existe d’autres opérateurs en Java b En particulier, on examinera : Opérateurs incrément et décrémentOpérateurs incrément et décrément Opérateurs d’assignationOpérateurs d’assignation Opérateur conditionnelOpérateur conditionnel

28 Opérateurs incrément et décrément b Les opérateurs incrément et décrément sont des opérateurs arithmétiques et opèrent sur un opérande  L’opérateur incrément ( ++ ) ajoute un à son opérande  L’opérateur décrément ( -- ) soustrait un de son opérande b L’énoncé count++; est essentiellement équivalent à count = count + 1;

29 Opérateurs incrément et décrément b Les opérateurs incrément et décrément peuvent être appliqués en forme préfix (avant la variable) ou en forme postfix (après la variable) b Lorsqu’utilisé seul dans un énoncé, les formes préfix et postfix sont essentiellement les mêmes. C’est-à-dire, count++; est équivalent à ++count;

30 Opérateurs incrément et décrément b Dans des expressions plus complexes, les formes préfix et postfix ont des effets différents b Dans les deux cas, la variable est incrémentée (décrémentée) b Mais la valeur utilisée dans l’expression plus complexe dépend de la forme : Expression count++ ++count count-- --count Opération ajoute 1 soustrait 1 Valeur de l’expression ancienne valeur nouvelle valeur ancienne valeur nouvelle valeur

31 Opérateurs incrément et décrément  Si count contient 45, alors total = count++; assigne 45 à total et 46 à count  Si count contient 45, alors total = ++count; assigne la valeur 46 aux deux total et count

32 Opérateurs d’assignation b On effectue souvent une opération sur une variable et ensuite stocke le résultat dans cette même variable b Java possède des opérateurs d’assignation pour simplifier ce processus b Par exemple, l’énoncé num += count; est équivalent à num = num + count;

33 Opérateurs d’assignation b Il existe plusieurs opérateurs d’assignation, incluant les suivants : Opérateur += -= *= /= %= Exemple x += y x -= y x *= y x /= y x %= y Equivalent à x = x + y x = x - y x = x * y x = x / y x = x % y

34 Opérateurs d’assignation b Le côté droit d’un opérateur d’assignation peut être une expression complexe b L’expression à droite de l’opérateur est d’abord évaluée, et le résultat est combiné avec la variable du côté gauche b Ainsi result /= (total-MIN) % num; est équivalent à result = result / ((total-MIN) % num);

35 L’opérateur conditionnel b Java a un opérateur conditionnel qui évalue une condition booléenne qui détermine laquelle des deux expressions est évaluée b Le résultat de l’expression choisie est le résultat de l’opérateur conditionnel au complet b Sa syntaxe est : condition ? expression1 : expression2 b Si la condition est true, expression1 est évaluée; si elle est false, expression2 est évaluée

36 L’opérateur conditionnel b L’opérateur conditionnel est similaire à un énoncé if-else, excepté qu’il s’agit d’une expression qui retourne une valeur b Par exemple: larger = (num1 > num2) ? num1 : num2;  Si num1 est plus grand que, alors est assigné à ; sinon, est assigné à  Si num1 est plus grand que num2, alors num1 est assigné à larger ; sinon, num2 est assigné à larger b L’opérateur conditionnel est ternaire, i.e. il requiert trois opérandes

37 L’opérateur conditionnel b Un autre exemple: System.out.println ("Your change is " + count + (count == 1) ? "Dime" : "Dimes");  Si count égale 1, alors "Dime" est imprimé  Si count est toute valeur différente de 1, alors "Dimes" est imprimé

Enoncés de répétition b Les énoncés de répétition permettent d’exécuter un énoncé à plusieurs reprises b On les appelle souvent des boucles (loops) b Comme les énoncés conditionnels, ils sont contrôlés par des expressions booléennes b Java a trois sortes d’énoncés de répétition : la boucle while, la boucle do, et la boucle for b Le programmeur doit choisir le type de boucle mieux appropriée à la situation

39 L’énoncé while b L’énoncé while a la syntaxe suivante : while ( condition ) statement; while est un mot réservé Si la condition est true, le statement est exécuté Ensuite la condition est évaluée à nouveau statement est exécuté à répétition jusqu’à ce que condition devienne false

Logique de la boucle while statement true condition évaluée false

41 L’énoncé while  Si la condition de l’énoncé est false au début, n’est jamais exécuté  Si la condition de l’énoncé while est false au début, statement n’est jamais exécuté  Ainsi, le corps de la boucle peut être exécuté zéro fois ou plus  Ainsi, le corps de la boucle while peut être exécuté zéro fois ou plus b Voir Counter.java (page 133) Counter.java b Voir Average.java (page 134) Average.java b Voir WinPercentage.java (page 136) WinPercentage.java

42 Boucles infinies  Le corps d’une boucle doit rendre la condition false à un moment donné  Le corps d’une boucle while doit rendre la condition false à un moment donné b Sinon, on est en présence d’une boucle infinie, qui s’exécutera jusqu’à ce que l’usager interrompe le programme b Voir Forever.java (page 138) Forever.java b C’est un type commun d’erreur logique b On doit toujours bien vérifier que les boucles se termineront normalement

Boucles imbriquées  Similairement aux énoncés imbriqués, les boucles peuvent aussi être imbriquées  Similairement aux énoncés if imbriqués, les boucles peuvent aussi être imbriquées b Ainsi le corps d’une boucle peut contenir une autre boucle b A chaque itération de la boucle externe, la boucle interne passera au travers de toutes ses itérations b Voir PalindromeTester.java (page 137) PalindromeTester.java

L’énoncé do b L’énoncé do a la syntaxe suivante : do { statement; } while ( condition ) Utilise les mots réservés do et while statement est exécuté une fois au début, et ensuite la conditon est évaluée statement est exécuté répétitivement jusqu’à ce que condition devienne false

Logique de la boucle do true condition évaluée statement false

L’énoncé do  La boucle est similaire à la boucle, excepté que la condition est évaluée après que le corps de soit exécuté  La boucle do est similaire à la boucle while, excepté que la condition est évaluée après que le corps de soit exécuté b Ainsi le corps d’une boucle do sera exécuté au moins une fois b Voir Counter2.java (page 143) Counter2.java b Voir ReverseNumber.java (page 144) ReverseNumber.java

Comparer les boucles while et do statement true condition évaluée false boucle while true condition évaluée statement false boucle do

L’énoncé for  L’énoncé a la syntaxe suivante :  L’énoncé for a la syntaxe suivante : for ( initialization ; condition ; increment ) statement;motréservé La portion initialisation est exécutée une fois avant que la boucle débute est exécuté statement est exécuté jusqu’à ce que devienne false condition devienne false La portion incrément est exécutée à la fin de chaque itération

L’énoncé for  Une boucle est équivalente à la boucle suivante :  Une boucle for est équivalente à la boucle while suivante : initialization; while ( condition ) { statement; increment; }

Logic of a for loop statement true condition évaluée false increment initialization

L’énoncé for  Similairement à une boucle, la condition d’une boucle est testée avant d’exécuter le corps de la boucle  Similairement à une boucle while, la condition d’une boucle for est testée avant d’exécuter le corps de la boucle  Ainsi le corps d’une boucle sera exécuté zéro fois ou plus  Ainsi le corps d’une boucle for sera exécuté zéro fois ou plus b Cette boucle est appropriée pour exécuter un corps un nombre spécifique de fois, qui peut être pré-déterminé b Voir Counter3.java (page 146) Counter3.java b Voir Multiples.java (page 147) Multiples.java b Voir Stars.java (page 150) Stars.java

L’énoncé for  Chaque expression dans l’entête d’une boucle est optionnelle  Chaque expression dans l’entête d’une boucle for est optionnelle Sans énoncé d’initialisation, aucune initialisation n’est exécutéeSans énoncé d’initialisation, aucune initialisation n’est exécutée Sans condition, elle est considérée comme true et forme ainsi une boucle infinieSans condition, elle est considérée comme true et forme ainsi une boucle infinie Sans incrément, aucune opération d’incrément n’est faiteSans incrément, aucune opération d’incrément n’est faite  Les deux points-virgules sont toujours requis dans l’entête d’une boucle  Les deux points-virgules sont toujours requis dans l’entête d’une boucle for

53 Développement de programmes b La création de software se divise en quatre tâches de base : Comprendre les besoinsComprendre les besoins Créer un designCréer un design Implanter le codeImplanter le code Tester l’implantationTester l’implantation b Le processus de développement est en réalité beaucoup plus complexe que ces quelques étapes de base, mais c’est un bon point de départ

54 Besoins b Les besoins spécifient les tâches qu’un programme doit accomplir (quoi faire plutôt que comment le faire) b Ils incluent souvent une description des interfaces usager b Un ensemble de besoins est souvent fourni, mais habituellement ils sont critiqués, modifiés et étendus b Il est souvent difficile d’établir les besoins de façon détaillée, non-ambiguë et complète b Une attention particulière aux besoins peut souvent réduire de façon significative les investissements en temps et en argent sur la durée du projet

55 Design b Un algorithme est un processus étape par étape pour résoudre un problème b Un programme suit un ou plusieurs algorithmes pour réaliser son but b Le design d’un programme détermine les algorithmes et les données requises b En développement orienté-objet, le design détermine les classes, objets et méthodes qui sont requises b Les détails d’une méthode peuvent s’exprimer en pseudocode, qui ressemble à du code, mais qui ne requiert pas de suivre une syntaxe spécifique

56 Implantation b L’implantation est le processus de traduire un design en code b La plupart des programmeurs inexpérimentés pensent qu’écrire le code est le coeur du développement de software, mais en réalité il devrait être l’étape la moins créative b Presque toutes les décisions importantes sont prises durant l’analyse des besoins et le design b L’implantation devrait se concentrer sur les détails du code, incluant les règles de style et la documentation b Voir ExamGrades.java (page 155) ExamGrades.java

57 Tester b Un programme devrait être exécuté de nombreuses fois avec diverses entrées pour essayer d’identifier des erreurs b Le debugging est le processus d’identifier la cause d’un problème et de la corriger b Les programmeurs pensent souvent à tords qu’il ne reste plus “qu’un seul bug” à corriger b Les tests devraient se concentrer sur les détails de design aussi bien que les besoins généraux

D’autres techniques de dessin b Les énoncés conditionnels et les boucles peuvent grandement améliorer notre capacité de contrôler le graphique b Voir Bullseye.java (page 157) Bullseye.java b Voir Boxes.java (page 159) Boxes.java b Voir BarHeights.java (page 162) BarHeights.java