8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Introduction a L’algorithme
Initiation à la programmation et algorithmique cours 2
Algorithmique (suite)
Calculs de complexité d'algorithmes
Algorithmique et évaluation
Algorithmique Résume.
Les Structures. Introduction : Imaginons que lon veuille afficher les notes dune classe délèves par ordre croissant avec les noms et prénoms de chaque.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
5. Les structures répétitives
4. Les structures de tests
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Les bases de l’Algorithmique
Semaine #1 INF155 par Frédérick Henri.
Langage C Révision.
Python La structure alternative
La structure conditionnelle simple
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.
Algorithmique et Programmation
Algorithmique et structure de données
Structures de contrôle de l’exécution
Les structures de contrôle conditionnelles
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Sémantique axiomatique
Python La structure itérative
Introduction à la programmation (Java)
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
Expression littérale  1) Définition
Introduction à l’algorithmique
Semaine #1 INF130 par Frédérick Henri.
Instruction sélective switch-case Instruction répétitive do-while For
8PRO107 Éléments de programmation
8PRO107 Éléments de programmation
1 La récursion. Nous avons vu qu'un programme est constitué d'un ensemble de fonctions. Il est possible pour une fonction donnée d'appeler une autre fonction.
Plan troisième cours Instruction sélective Instruction répétitive
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
Animateur : Med HAIJOUBI
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Le Bloc Case Cours LCS N°3 Présenté par Mr: LALLALI.
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.
8PRO100 Éléments de programmation Comment répéter plusieurs fois une séquence d’instructions.
Un survol du language C.
Les tests.
La programmation.
Cours n° 3 Traitements en Java
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Les structures de contrôle
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Pour les boucles FOR on a fait intervenir la boucles TANT QUE équivalentes dont on connaît calculer le temps d’exécution. Toutes le procédures de comptage.
Module algorithmique et programmation
Introduction à la programmation (420-PK2-SL) cours 8
Cours 5 - Trois algorithmes de tri d'un tableau
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Scripts et fonctions Instructions de contrôle
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Algorithmique Conditions et Itérations Cours de BTS/CPI 1ère année Algo – Prog CPI/BTS1 – M. Dravet – 17/09/2003 Dernière modification: 17/09/2003.
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.
Algorithmique Boucles et Itérations
Algorithmique et programmation
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
BASE DE L’ALGORITHMIE.  Un système d’instructions.  Pour résoudre d’un problème ou d’une classe de problèmes  Recette de cuisine pour faire un gâteau.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?

Étude de cas 5.1 Trouver le maximum entre deux valeurs Description du problème: Étant donné deux entiers, trouver et afficher la plus grande des deux valeurs. Entrée: Deux entiers. Sortie: Un entier représentant le maximum entre les deux valeurs données en entrée.

Étude de cas 5.1 Ce que lon sait: Si a et b sont deux entiers, on sait comment comparer a et b: Lordinateur peut en effet évaluer lexpression a > b La valeur à afficher est b si cette expression est vrai sinon on doit afficher a.

Étude de cas 5.1 On peut faire: lire a b afficher (a>b)*a + (a<=b)*b Problème 1: Difficile de comprendre lintention du programmeur. Problème 2: Peu de langages permettent cela.

Étude de cas 5.1 Instruction conditionnelle: Il est possible de demander à lordinateur dexécuter une instruction (ou une série dinstructions) seulement si une certaine condition est satisfaite. Forme générale: si (condition) alors {instructions exécutées si la condition est vrai} sinon {instructions exécutées si la condition est fausse}

Étude de cas 5.1 Fonction principale Deux entiers: a b lire a b afficher max(a,b) où max est une fonction satisfaisant le prototype suivant: max(entier, entier) retourne un entier

Étude de cas 5.1 Fonction max En-tête: max(entier a, entier b) retourne un entier Corps: si (a > b) alors retourner a sinon retourner b

Étude de cas 5.1 Fonction max En-tête: max(entier a, entier b) retourne un entier Corps: si (a > b) alors retourner a sinon retourner b Ex. Lorsque a=5 et b=15 alors (a > b) est faux et la fonction retourne b.

Étude de cas 5.1 Fonction max En-tête: max(entier a, entier b) retourne un entier Corps: si (a > b) alors retourner a sinon retourner b Ex. Lorsque a=5 et b=5 alors (a > b) est faux et la fonction retourne b.

Étude de cas 5.2 Trouver le maximum entre 3 valeurs Description du problème: Étant donné trois entiers donnés en entrée, trouver et afficher la plus grande des trois valeurs. Entrée: Trois entiers. Sortie: Le maximum des trois entiers

Étude de cas 5.2 Fonction principale Trois entiers: a b c lire a b c afficher max3(a,b,c) où max3 est une fonction satisfaisant le prototype suivant: max3(entier, entier, entier) retourne un entier

Étude de cas 5.2 Fonction max3 En-tête: max3(entier a, entier b, entier c) retourne un entier Corps: si (a est la plus grande des trois valeurs) alors retourner a sinon Traiter le cas où a nest pas la plus grande valeur

Étude de cas 5.2 Fonction max3 En-tête: max3(entier a, entier b, entier c) retourne un entier Corps: si (a est la plus grande des trois valeurs) alors retourner a sinon si (b est la plus grande des trois valeurs) alors retourner b sinon retourner c

Étude de cas 5.2 Fonction max3: forme courante En-tête: max3(entier a, entier b, entier c) retourne un entier Corps: si (a est la plus grande des trois valeurs) alors retourner a sinon si (b est la plus grande des trois valeurs) alors retourner b sinon retourner c

Étude de cas 5.2 Fonction max3 En-tête: max3(entier a, entier b, entier c) retourne un entier Corps: si ((a >b) et (a > c)) alors retourner a sinon si (b est la plus grande des trois valeurs) alors retourner b sinon retourner c

Étude de cas 5.2 Fonction max3 En-tête: max3(entier a, entier b, entier c) retourne un entier Corps: si ((a >b) et (a > c)) alors retourner a sinon si ((b > a) et (b > c)) alors retourner b sinon retourner c

Étude de cas 5.2 Fonction max3 En-tête: max3(entier a, entier b, entier c) retourne un entier Corps: si ((a >b) et (a > c)) alors retourner a sinon si ((b > a) et (b > c)) alors retourner b sinon retourner c Que se passe-t-il si a=3, b=3 et c=0 ???

Étude de cas 5.2 Fonction max3: première solution En-tête: max3(entier a, entier b, entier c) retourne un entier Corps: si ((a b) et (a c)) alors retourner a sinon si ((b a) et (b c)) alors retourner b sinon retourner c

Étude de cas 5.2 Fonction max3: seconde solution En-tête: max3(entier a, entier b, entier c) retourne un entier Corps: entier maximum maximum = a si (b > maximum) alors maximum = b si (c > maximum) alors maximum = c retourner maximum Remarquez labsence de sinon

Étude de cas 5.2 Fonction max3: troisième solution En-tête: max3(entier a, entier b, entier c) retourne un entier Corps: entiers: maximum maximum = max(a,b) maximum = max(maximum, c) retourner maximum où max est la fonction définie dans létude de cas 5.1

Étude de cas 5.2 Fonction max3: quatrième solution En-tête: max3(entier a, entier b, entier c) retourne un entier Corps: retourner max(max(a, b), c) où max est la fonction définie dans létude de cas 5.1

Étude de cas 5.3 Trier trois entiers Description du problème: Afficher en ordre croissant trois entiers donnés en entrée. Entrée: Une ligne dentrée contenant trois entiers. Sortie: Une ligne contenant les trois entiers en ordre croissant.

Étude de cas 5.3 Fonction principale Trois entiers: a b c lire a b c trier3(a, b, c) afficher a b c où trier3 est une fonction satisfaisant le prototype suivant: trier3(entier référence, entier référence, entier référence) ne retourne rien.

Étude de cas 5.3 Fonction trier3 En-tête: trier3(entier référence a, entier référence b, entier référence c) Corps: si (a > b) alors echanger(a, b) si (a > c) alors echanger(a, c) si (b > c) alors echanger(b, c) où echanger est une fonction satisfaisant le prototype echanger(entier référence, entier référence) (Voir étude de cas 4.3)

Étude de cas 5.3 Fonction trier3 En-tête: trier3(entier référence a, entier référence b, entier référence c) Corps: si (a > b) alors echanger(a, b) si (a > c) alors echanger(a, c) si (b > c) alors echanger(b, c) où echanger est une fonction satisfaisant le prototype echanger(entier référence, entier référence) (Voir étude de cas 4.3) Après cette ligne, a contient la plus petite valeur des 3

Étude de cas 5.3 Fonction trier3 En-tête: trier3(entier référence a, entier référence b, entier référence c) Corps: si (a > b) alors echanger(a, b) si (a > c) alors echanger(a, c) si (b > c) alors echanger(b, c) où echanger est une fonction satisfaisant le prototype echanger(entier référence, entier référence) (Voir étude de cas 4.3) Après cette ligne, a contient la plus petite valeur des 3 Remarquez labsence de sinon

Étude de cas 5.4 Transformer des notes en lettres Description du problème: On donne en entrée 4 nombres représentant respectivement la plus petite note possibles pour obtenir un A, B, C, D ou E. Ces 4 nombres sont suivies de la note dun étudiant. Le problème consiste à afficher la lettre correspondant à la note de létudiant. Entrée: Dabord, 4 nombres réels représentant les bornes inférieures pour obtenir A, B, C ou D, suivit dun nombre réel représentant la note de létudiant. Sortie: Une des quatres lettre A,B,C,D ou E.

Étude de cas 5.4 Fonction principale Six entiers: borneA borneB borneC borneD note tempo lire borneA borneB borneC borneD note afficher_note(borneA, borneB, borneC, borneD, note) où afficher_note est une fonction qui calcule et affiche la note alphabétique et qui satisfait le prototype suivant: afficher_note(réel, réel, réel, réel, réel) ne retourne rien

Étude de cas 5.4 Fonction afficher_note En-tête: afficher_note(réel a, réel b, réel c, réel d, réel note) Corps: si (note a) alors afficher A sinon si (note b) alors afficher B sinon si (note c) alors afficher C sinon si (note d) alors afficher D sinon afficher E

Étude de cas 5.5 Calculer le prix des billets de hockey Description du problème: Concevoir un programme pour le comptoir de vente dun aréna. Le programme doit lire en entrée un code représentant le type de billets ($25, $20 ou $15) ainsi que le nombre de billets achetés. Le programme doit finalement afficher la phrase "Montant total: " suivit du coût total des billets. Entrée: Deux entiers. Le premier est le code des billets: 1 pour les billets à $25, 2 pour ceux à $20 et 3 pour ceux à $15. Le second entier représente le nombre de billets achetés. Ce dernier nombre doit être strictement plus grand que 0. Sortie: La phrase "Montant total: " suivit d'un entier.

Étude de cas 5.5 Fonction principale Deux entiers: code nb lire code nb Afficher "Montant total: " prix(code, nb) où prix est une fonction qui calcule le montant total et qui satisfait le prototype suivant: prix(entier, entier) retourne un entier

Étude de cas 5.5 Fonction prix En-tête: entier prix(entier code, entier n) Corps: si (code =1) alors retourner 25 * n si (code = 2) alors retourner 20 * n si (code = 3) alors retourner 15 * n retourner -1 Indique une erreur

Étude de cas 5.5 Fonction prix: seconde solution En-tête: entier prix(entier code, entier n) Corps: Choix multiple pour code: si 1: retourner 25 * n si 2: retourner 20 * n si 3: retourner 15 * n autre: retourner -1

Étude de cas 5.5 Fonction principale Trois entiers: code nb temp lire code nb temp prix(code, nb) si (temp > 0) afficher Montant total: prix(code, nb) sinon afficher Erreur dans lentrée des données où prix est une fonction qui calcule le montant total et qui satisfait le prototype suivant: prix(entier, entier) retourne un entier

En résumé Instructions conditionnelles: forme 1 si (condition) alors instructions

En résumé Instructions conditionnelles: forme 2 si (condition) alors instructions sinon instructions

En résumé Instructions conditionnelles: forme 3 si (condition) alors instructions sinon si (condition) alors instructions sinon instructions

En résumé Instructions conditionnelles: forme 4 dans le cas où (expression) est: valeur: instructions. valeur: instructions autre: instructions Lexpression est dabord évaluée puis le résultat est comparé aux différentes valeurs (qui doivent être distinctes). Finalement, le bloc dinstruction correspondant à la valeur de lexpression est exécuté.

Comment le faire en C Les instructions En C, une instruction est simple ou composée (dans ce dernier cas on parle aussi dun bloc dinstructions). Instructions simples: Ex. x = x + 1; y = cos(x); x = cos(x / y - 8) * 2; Blocs dinstructions: Ex. { x = x + 1; y = cos(x); x = cos(x / y - 8) * 2; } 1 bloc dinstructions 3 instructions simples

Comment le faire en C Forme 1 if (expression) instruction Linstruction est évaluée si et seulement si la valeur de lexpression est différente de 0.

Comment le faire en C Forme 2 if (expression) instruction else instruction La première instruction (simple ou composée) est évaluée si la valeur de lexpression est différente de 0, sinon, la seconde instruction est évaluée.

Comment le faire en C Forme 3 if (expression) instruction else if (expression) instruction else instruction

Comment le faire en C Forme 4 switch (expression) { case expression-constante: instruction default: instructions } Lexpression doit être de type entier. Elle est dabord évaluée puis linstruction correspondante est évaluée ainsi que les instructions suivantes.

Comment le faire en C Exemple switch (n) { case 0: cout << 0; case 1: cout << 1; case 2: cout << 2; default: cout << 3; } Si n vaut 1 alors le programme affichera: 123

Comment le faire en C Linstruction break Pour sortir dun switch sans exécuter toutes les instructions, on peut utiliser linstruction break. Nous verrons plus tard les autres usages que nous pouvons faire de cette instruction.

Comment le faire en C Exemple switch (n) { case 0: {cout << 0;break;} case 1: {cout << 1;break;} case 2: {cout << 2;break;} default: cout << 3; } Si n vaut 1 alors le programme affichera simplement: 1

Comment le faire en C Lopérateur conditionnel ?: expression1 ? expression2 : expresion3 expression1 est dabord évaluée. Si sa valeur est différente de 0 alors expression2 est évaluéee. Sinon, expression3 est évaluée. La valeur dune expression conditionnelle est égale à la valeur de lexpression qui est évaluée (expression2 ou expression3). Le type dune expression conditionnelle est le type le plus général entre celui de expression2 et expression3. Donc le type est double si une des deux expression est de type double.

Exercices Faites un pas-à-pas pour chacune des cinq études de cas que nous avons discutées. Traduisez les algorithmes en C Utilisez linstruction switch à lintérieur dun petit programme. Étudiez le comportement de votre programme dans différentes situations: avec ou sans break, aucune instruction, utilisation dune variable au lieu dune instruction constante, etc.