Introduction et Généralités sur l’Algorithmique 13-Apr-17 [Title of the course] Introduction et Généralités sur l’Algorithmique Eléments d'Algorithmique Campus-Booster ID : 287 www.supinfo.com Copyright © SUPINFO. All rights reserved Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Votre formateur… Arnaud CUEILLE 13-Apr-17 Introduction et Généralités sur l’Algorithmique [Title of the course] Votre formateur… Titre: Professeur référent en Algorithmique, Théorie des Graphes et Intelligence Artificielle. Distinction: Mastère en Recherche Opérationnelle et Intelligence Artificielle. Formation: Ingénieur en Informatique, Conception et Développement, (modélisation, optimisation, simulation, complexité et algorithmique). Qualifié en Gestion des Risques (spécialisé en modélisation et Systèmes d'Information) Publication: « La simulation des flux de transports de marchandises en agglomération » (2002). Contact: Arnaud.CUEILLE@supinfo.com SUPINFONE: 1 50087 Arnaud CUEILLE Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Objectifs de ce module En suivant ce module vous allez: 13-Apr-17 Introduction et Généralités sur l’Algorithmique [Title of the course] Objectifs de ce module En suivant ce module vous allez: Aborder la programmation. Présentation d'un langage universel. Organiser un programme. Utiliser des données élémentaires. Structurer les étapes de résolution d'un problème. Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Plan du module Voici les parties que nous allons aborder: 13-Apr-17 Introduction et Généralités sur l’Algorithmique [Title of the course] Plan du module Voici les parties que nous allons aborder: Présentation, historique des langages. Structure de données. Structure algorithmique. Structure de programme. Euclide : mathématicien (-300 av JC), à l'origine d'un des premiers algorithme connu : le calcul du Plus Grand Commun Diviseur Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Présentation, historique des langages 13-Apr-17 [Title of the course] Introduction et Généralités sur l’Algorithmique Présentation, historique des langages Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Plan de la partie Voici les chapitres que nous allons aborder: 13-Apr-17 Présentation, historique des langages [Title of the course] Plan de la partie Voici les chapitres que nous allons aborder: Définitions Objectifs Historique Processus de réalisation d’un programme Notion d’instruction Notion de séquences Notion de ruptures de séquences Les trois structures Conventions d’écriture Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
(sources : E. Universalis). 13-Apr-17 Présentation, historique des langages [Title of the course] Définitions Algorithmique Suite finie de règles à appliquer dans un ordre déterminé à un nombre fini de données pour arriver, en un nombre fini d’étapes, à un certain résultat, et cela indépendamment des données (sources : E. Universalis). Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Définitions Algorithmique 13-Apr-17 Présentation, historique des langages [Title of the course] Définitions Algorithmique Suite d’opérations nécessaires et suffisantes à l’accomplissement d’une tâche. Algorithme d’assemblage d’un produit fini Algorithme d’Euclide (calcul du PGCD) Algorithme de résolution d’une équation … Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Objectifs Les objectifs d'une écriture algorithmique 13-Apr-17 Présentation, historique des langages [Title of the course] Objectifs Les objectifs d'une écriture algorithmique Faire réaliser une tâche particulière par une machine Disposer d'une écriture simplifiée proche d'un langage informatique (bas niveau, haut niveau) Disposer d'un langage intermédiaire entre le langage naturel et un langage informatique évolué Disposer d'un langage universel, commun à toutes les publications dans le domaine Modéliser un problème sous une forme écrite combinant des séquences d'opérations à réaliser, ainsi que des ruptures de séquences, voire des imbrications complexes de ces opérations Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Objectifs Une écriture algorithmique : Pourquoi ? 13-Apr-17 Présentation, historique des langages [Title of the course] Objectifs Une écriture algorithmique : Pourquoi ? Les langages de haut niveau évoluent très vite, et nous ne connaissons pas la syntaxe et les particularités des futurs langages, l'algorithmique a traversé 40 ans de langages de haut niveau tout en s'adaptant aux nouveautés L'écriture algorithmique permet de prendre de la distance face aux spécificités des langages évolués pour lesquels la compréhension ainsi que la construction de nouveaux programmes se sont considérablement alourdis Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Objectifs Une écriture algorithmique : Pourquoi ? (Suite) 13-Apr-17 Présentation, historique des langages [Title of the course] Objectifs Une écriture algorithmique : Pourquoi ? (Suite) La validation des structures algorithmiques est bien plus aisée que la validation de langages évolués Le travail en équipe nécessite un langage commun, puis une répartition suivant le langage évolué approprié aux spécificités du moment Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
13-Apr-17 Présentation, historique des langages [Title of the course] Historique Science très ancienne visant à transmettre des moyens efficaces pour obtenir des résultats en partant d’éléments donnés Désigne, par la suite, tout procédé de calcul systématique En informatique moderne : procédé automatique et effectif, comportant une description (finie) des entrées, des sorties, et des tâches élémentaires à effectuer Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Processus de réalisation d’un programme 13-Apr-17 Présentation, historique des langages [Title of the course] Processus de réalisation d’un programme Identification d'un besoin spécifique PROCEDURE de REALISATION d'un PROGRAMME INFORMATIQUE : L'écriture algorithmique est une phase intermédiaire et indispensable pour réaliser un programme. La qualité du développement final dépend aussi de cette phase cruciale. La suppression de cette phase, contrairement à une idée courante de "gain de temps" qui en découlerait, est généralement la cause de retard de livraison finale du produit logiciel, et parfois à l'origine de l'accroissement de la difficulté de résolution d'un programme complexe. Formalisation du besoin Ecriture algorithmique Traduction en langage informatique Compilation / Liaison PROCESSUS Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Notion d’instruction Notion d'instruction et notion de donnée 13-Apr-17 Présentation, historique des langages [Title of the course] Notion d’instruction Notion d'instruction et notion de donnée Une instruction est un ordre élémentaire - au sens algorithmique, que peut exécuter un programme. Les données manipulées par les instructions sont : des variables proprement dites des variables constantes des valeurs littérales ("bonjour", 45, VRAI) des expressions complexes (combinaisons de variables, constantes et valeurs littérales avec des opérateurs) Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Notion d’instruction Quelques éléments supplémentaires pour démarrer : 13-Apr-17 Présentation, historique des langages [Title of the course] Notion d’instruction Quelques éléments supplémentaires pour démarrer : Deux PRIMITIVES d'entrée-sortie : LIRE() : lecture de la frappe au clavier ECRIRE() : affichage à l'écran L'AFFECTATION, une "mise en mémoire" : le symbole d'affectation : <-- Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
produit <-- valeur * valeur 13-Apr-17 Présentation, historique des langages [Title of the course] Notion de séquences DEBUT NOTION de SEQUENCE : Suite d'opérations élémentaires (ou ACTIONS) dont l'exécution est séquentielle. La lecture d'un algorithme s'effectue de haut en bas. ACTION 1 : LIRE(valeur) ACTION 2 : produit <-- valeur * valeur ACTION 3 : ECRIRE(produit) FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
produit <-- valeur * valeur 13-Apr-17 Présentation, historique des langages [Title of the course] Notion de séquences CORRESPONDANCE : Organigramme <--> Algorithmique DEBUT ACTION 1 : LIRE(valeur) ALGORITHME: carre //BUT : calcul le carré d’un nombre //ENTREE : entier saisi par l’utilisateur //SORTIE : valeur de l’entier au carré VAR : valeur, produit : ENTIER DEBUT LIRE( valeur ) //ACTION 1 produit <-- valeur * valeur //ACTION 2 ECRIRE( produit ) //ACTION 3 FIN ACTION 2 : produit <-- valeur * valeur ACTION 3 : ECRIRE(produit) FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Notion de ruptures de séquences 13-Apr-17 Présentation, historique des langages [Title of the course] Notion de ruptures de séquences DEBUT NOTION de RUPTURE de SEQUENCE : L'exécution des opérations élémentaires (ou ACTIONS 2a et 2b) n'est pas systématique. Elle dépend d'une "condition". La lecture des ruptures de séquences s'effectue en fonction des éléments transmis "à titre de condition". ACTION 1 : LIRE(valeur) RUPTURE de SEQUENCE ACTION 2a : ECRIRE("choix a") ACTION 2b : ECRIRE("choix b") FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les trois structures Les trois structures Structure algorithmique : 13-Apr-17 Présentation, historique des langages [Title of the course] Les trois structures Les trois structures Structure algorithmique : Séquences Ruptures de séquences à suivre [Partie 3 et Module 2] Structure de données : Structures élémentaires Structures avancées à suivre [Partie 2, Module 3 et Module 5] Structure de programmes à suivre [Partie 4 et Module 4] Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Conventions d’écriture 13-Apr-17 Présentation, historique des langages [Title of the course] Conventions d’écriture Exemple de syntaxe algorithmique Nom de l’algorithme ALGORITHME : nom_algorithme //BUT : cet algorithme effectue ... //ENTREE : une liste de M noms //SORTIE : une liste triée par ordre alphabétique Spécifications de l’algorithme // CONSTANTES : les constantes // l’initialisation est obligatoire // au moment de leur déclaration CONST : pi <-- 3,1416 : REEL nom <-- "Bonjour" : CHAINE // VARIABLES : les variables (au sens strict) // l’initialisation est facultative VAR : prix, quantite : REEL prenom <-- "Bruno" : CHAINE Déclarations DEBUT // instructions : suite de séquences // et ruptures de séquences FIN Corps de l’algorithme Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Conventions d’écriture 13-Apr-17 Présentation, historique des langages [Title of the course] Conventions d’écriture Convention d'écriture de la syntaxe algorithmique Les commentaires : sont précédés de : // Les mots clés et Primitives : sont écrits en majuscule : VAR: Les chaînes de caractères sont encadrés par :" Les caractères uniques sont encadrés par : ' Les accents sont seulement autorisés : dans les lignes de commentaire dans les chaînes de caractères : "élève" pour les caractères uniques : 'à' Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Pause-réflexion sur cette 1ère partie 13-Apr-17 Présentation, historique des langages [Title of the course] Pause-réflexion sur cette 1ère partie Avez-vous des questions ? Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Structure de données Introduction et Généralités sur l’Algorithmique 13-Apr-17 [Title of the course] Introduction et Généralités sur l’Algorithmique Structure de données Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Plan de la partie Voici les chapitres que nous allons aborder: 13-Apr-17 Structure de données [Title of the course] Plan de la partie Voici les chapitres que nous allons aborder: Présentation Les 5 structures de données élémentaires Opérateurs et symboles associés : Mots clés, syntaxe Opérations élémentaires : déclaration, initialisation, affectation et réaffectation Les structures de données avancées Exercice résolu Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Présentation Les structures de données Structures élémentaires ENTIER 13-Apr-17 Structure de données [Title of the course] Présentation Les structures de données Structures élémentaires ENTIER REEL CARACTERE CHAINE BOULEEN Structures avancées à suivre [Module 3 et Module 5] Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les 5 structures de données élémentaires 13-Apr-17 Structure de données [Title of the course] Les 5 structures de données élémentaires Les structures élémentaires de données ENTIER nombres entiers négatifs positifs nuls Exemples : 33 - 13 [pas de limite de taille] Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les 5 structures de données élémentaires 13-Apr-17 Structure de données [Title of the course] Les 5 structures de données élémentaires Les structures élémentaires de données REEL nombres entiers fractionnés négatifs positifs nuls Exemples : 3,26 -10,5 [pas de limite de taille] Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les 5 structures de données élémentaires 13-Apr-17 Structure de données [Title of the course] Les 5 structures de données élémentaires En écriture algorithmique (française), c'est la virgule qui est utilisée pour le type REEL ! Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les 5 structures de données élémentaires 13-Apr-17 Structure de données [Title of the course] Les 5 structures de données élémentaires Les structures élémentaires de données CARACTERE (ou CAR) caractère unique Exemples : ‘F’ ‘j’ ‘!’ [référence : table des codes ASCII] apostrophe simple Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les 5 structures de données élémentaires 13-Apr-17 Structure de données [Title of the course] Les 5 structures de données élémentaires Les structures élémentaires de données CHAINE caractère unique suite de caractères Exemples : "Bonjour" "586" "SUPINFO" [référence : table des codes ASCII] apostrophe double Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les 5 structures de données élémentaires 13-Apr-17 Structure de données [Title of the course] Les 5 structures de données élémentaires Les structures élémentaires de données BOOLEEN VRAI FAUX Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérateurs et symboles associés 13-Apr-17 Structure de données [Title of the course] Opérateurs et symboles associés Les structures élémentaires de données Type Opérations possibles Opérateurs associés, symboles, mot clés correspondants ENTIER Addition Soustraction Multiplication Division Exposant Modulo Comparaisons + - * DIV (Pour la division entière) ^ MOD (Pour le reste d’une division) < <= > >= = <> Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérateurs et symboles associés 13-Apr-17 Structure de données [Title of the course] Opérateurs et symboles associés Les structures élémentaires de données Type Opérations possibles Opérateurs associés, symboles, mot clés correspondants REEL Addition Soustraction Multiplication Division Exposant Comparaisons + - * / ^ < <= > >= = <> Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérateurs et symboles associés 13-Apr-17 Structure de données [Title of the course] Opérateurs et symboles associés Les structures élémentaires de données Type Opérations possibles Opérateurs associés, symboles, mot clés correspondants CARACTERE Comparaison Extraction < <= > >= = <> CARACTERE <-- EXTRACTION (chaine, position) Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérateurs et symboles associés 13-Apr-17 Structure de données [Title of the course] Opérateurs et symboles associés Les structures élémentaires de données Type Opérations possibles Opérateurs associés, symboles, mot clés correspondants CHAINE Concaténation Longueur Extraction CHAINE <-- CONCATENER (ch1, ch2) ENTIER <-- LONGUEUR (chaine) CHAINE <-- EXTRACTION (chaine, début, longueur) Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérateurs et symboles associés 13-Apr-17 Structure de données [Title of the course] Opérateurs et symboles associés Les structures élémentaires de données Type Opérations possibles Opérateurs associés, symboles, mot clés correspondants BOOLEEN Comparaison Négation Conjonction Disjonction = <> NON ET OU Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérations élémentaires 13-Apr-17 Structure de données [Title of the course] Opérations élémentaires Structures de données élémentaires Opérations élémentaires : Déclaration Initialisation (avec déclaration) Affectation (hors déclaration) Utilisation Ré-affectation Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérations élémentaires 13-Apr-17 Structure de données [Title of the course] Opérations élémentaires Déclaration Nom attribué à la donnée déclarée. nom de la donnée nom_de_la_donnee :ENTIER type élémentaire Le type est toujours précédé du signe : Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérations élémentaires 13-Apr-17 Structure de données [Title of the course] Opérations élémentaires Initialisation (avec déclaration) Nom attribué à la donnée initialisée. Valeur initiale affectée à la donnée nom de la donnée valeur d'initialisation nom_de_la_donnee <-- valeur :ENTIER affectation type élémentaire Symbole d'affectation Le type est toujours précédé du signe : Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérations élémentaires 13-Apr-17 Structure de données [Title of the course] Opérations élémentaires Affectation (hors déclaration) Nom de la donnée affectée. Valeur affectée à la donnée nom de la donnée valeur nom_de_la_donnee <-- valeur affectation Symbole d'affectation Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérations élémentaires 13-Apr-17 Structure de données [Title of the course] Opérations élémentaires Utilisation Nom d'une autre donnée affectée à l'aide d'une donnée. Nom d'une donnée nom d'une donnée nom d'une donnée autre_donnee <-- nom_de_la_donnee affectation Symbole d'affectation Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérations élémentaires 13-Apr-17 Structure de données [Title of the course] Opérations élémentaires Ré-affectation Nom de la donnée ré-affectée. Nom de la donnée ré-affectée. nom de la donnée nom de la même donnée nom_de_la_donnee <-- nom_de_la_donnee + 1 affectation opération Symbole d'affectation Opération lors de l'affectation Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Opérations élémentaires 13-Apr-17 Structure de données [Title of the course] Opérations élémentaires Catégories de données et opérations associées Les Constantes : CONST Initialisation (avec déclaration) Utilisation Les Variables : VAR Déclaration Affectation (hors déclaration) Ré-affectation Dans le cas de déclarations de données de type CONSTANTES, celles-ci ne pourront être qu'initialisées lors de la déclaration et utilisées au cours du programme. Dans le cas d'une déclaration de type VARIABLE, celles-ci peuvent être modifiées qu cours du programme, d'où un plus grand nombre d'opérations réalisables. Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les structures de données avancées 13-Apr-17 Structure de données [Title of the course] Les structures de données avancées Les structures de données avancées (présentation) Structures linéaires : Tableaux Piles Files Listes Structures non linéaires : Enregistrements Graphes Arbres Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Exercice résolu "Validez" ENTIER FAUX CHAINE BOOLEEN 1024 REEL 'o' 13-Apr-17 Structure de données [Title of the course] Exercice résolu Quelle structure de données pour … "Validez" ENTIER FAUX CHAINE 1024 BOOLEEN 'o' REEL 9,81 CARACTERE Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Exercice résolu "Validez" ENTIER FAUX CHAINE BOOLEEN 1024 REEL 'o' 13-Apr-17 Structure de données [Title of the course] Exercice résolu Quelle structure de données pour … "Validez" ENTIER FAUX CHAINE 1024 BOOLEEN 'o' REEL 9,81 CARACTERE Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Pause-réflexion sur cette 2ème partie 13-Apr-17 Structure de données [Title of the course] Pause-réflexion sur cette 2ème partie Avez-vous des questions ? Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Structure algorithmique 13-Apr-17 [Title of the course] Introduction et Généralités sur l’Algorithmique Structure algorithmique Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Plan de la partie Voici les chapitres que nous allons aborder: 13-Apr-17 Structure algorithmique [Title of the course] Plan de la partie Voici les chapitres que nous allons aborder: Présentation Structures répétitives et conditionnelles Les instructions conditionnelles Instruction conditionnelle « Si » Instruction conditionnelle « Cas parmi » (et variantes) Les instructions répétitives Instruction répétitive « Tantque » Instruction répétitive « Répéter » Instruction répétitive « Pour » Exercice(s) résolu(s) Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Présentation Structure algorithmique 13-Apr-17 Structure algorithmique [Title of the course] Présentation Structure algorithmique La structure algorithmique concerne la concaténation et les imbrications de séquences et ruptures de séquences. Elle forme ainsi une partie d'un programme. Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Structures répétitives et conditionnelles 13-Apr-17 Structure algorithmique [Title of the course] Structures répétitives et conditionnelles Les catégories et sous-catégories de structures algorithmiques Séquences Ruptures de séquences : Rupture conditionnelle (et non répétitive): SI CAS Rupture répétitive : TANTQUE REPETER POUR Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les instructions conditionnelles 13-Apr-17 Structure algorithmique [Title of the course] Les instructions conditionnelles Les ruptures de séquences Ruptures de séquences : Rupture conditionnelle (et non répétitive): SI..ALORS..FINSI SI..ALORS..SINON..FINSI CAS..PARMI.. CAS..PARMI..PARDEFAUT Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Instruction conditionnelle « Si » 13-Apr-17 Structure algorithmique [Title of the course] Instruction conditionnelle « Si » Instruction conditionnelle : SI..ALORS..FINSI ALGORITHME: valeur_absolue //BUT :calcule la val.abs. d’un entier saisi par l’util. //ENTREE :un entier relatif saisi par l’utilisateur //SORTIE :la valeur absolue de l’entier saisi VAR: x :ENTIER DEBUT LIRE( x ) //affectation d’une valeur par l’util. SI( x < 0 ) //si cette valeur est négative ALORS //alors cette condition est vraie x <-- -x //et la variable se trouve réaffectée FINSI ECRIRE( "La val.abs. du nombre saisi vaut : ", x ) FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Instruction conditionnelle « Si » 13-Apr-17 Structure algorithmique [Title of the course] Instruction conditionnelle « Si » Instruction conditionnelle : SI..ALORS..SINON..FINSI ALGORITHME: max_deux_nombres //BUT : cherche la valeur max. parmi 2 valeurs saisies //ENTREE : deux réels saisis par l’utilisateur //SORTIE : le maximum des deux valeurs VAR: a, b, max :REEL DEBUT LIRE( a, b) SI( a >= b ) ALORS max <-- a SINON max <-- b FINSI ECRIRE ("Le Max entre", a, " et ", b," est:", max ) FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Instruction conditionnelle « Cas parmi » (et variantes) 13-Apr-17 Structure algorithmique [Title of the course] Instruction conditionnelle « Cas parmi » (et variantes) Instruction conditionnelle : CAS..PARMI..FINCASPARMI ALGORITHME: nom_mois //BUT : affiche le nom du mois en fonction du numéro //ENTREE : un entier saisi par l’utilisateur //SORTIE : le nom du mois correspondant au chiffre saisi VAR: mois :ENTIER DEBUT LIRE( mois ) CAS( mois )PARMI: CAS1: 1 ECRIRE( " Janvier" ) CAS2: 2 ECRIRE( " Février" ) ... CAS12: 12 ECRIRE( " Décembre" ) FINCASPARMI FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Instruction conditionnelle « Cas parmi » (et variantes) 13-Apr-17 Structure algorithmique [Title of the course] Instruction conditionnelle « Cas parmi » (et variantes) Instruction conditionnelle : CAS..PARMI..PARDEFAUT..FINCASPARMI ALGORITHME: nom_mois2 //BUT : affiche le nom du mois en fonction du numéro //ENTREE : un entier saisi par l’utilisateur //SORTIE : le nom du mois correspondant au chiffre saisi VAR: mois :ENTIER DEBUT LIRE( mois ) CAS( mois )PARMI: CAS1: 1 ECRIRE( " Janvier " ) CAS2: 2 ECRIRE( " Février " ) ... CAS12: 12 ECRIRE( " Décembre " ) PARDEFAUT: ECRIRE( " Erreur de saisie ! " ) FINCASPARMI FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les instructions répétitives 13-Apr-17 Structure algorithmique [Title of the course] Les instructions répétitives Les ruptures de séquences Ruptures de séquences : Rupture répétitive : TANTQUE..FAIRE..FINTANTQUE REPETER..JUSQU'A.. REPETER..TANTQUE.. POUR..FAIRE..FINPOUR Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Instruction répétitive « Tantque » 13-Apr-17 Structure algorithmique [Title of the course] Instruction répétitive « Tantque » Instruction répétitive : TANTQUE..FAIRE..FINTANTQUE ALGORITHME: compteur_rebours //BUT : affiche la valeur d'un compteur à rebours //ENTREE : un entier saisi par l’utilisateur //SORTIE : la valeur du compteur à rebours VAR: nombre :ENTIER DEBUT LIRE( nombre ) TANTQUE( nombre > 0 ) FAIRE ECRIRE( "Valeur du compteur à rebours: ", nombre ) nombre <-- nombre - 1 FINTANTQUE FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Instruction répétitive « Répéter » 13-Apr-17 Structure algorithmique [Title of the course] Instruction répétitive « Répéter » Instruction répétitive : REPETER..JUSQU'A.. ALGORITHME: compteur_rebours2 //BUT : affiche la valeur d'un compteur à rebours //ENTREE : un entier saisi par l’utilisateur //SORTIE : la valeur du compteur à rebours VAR: nombre :ENTIER DEBUT LIRE( nombre ) REPETER ECRIRE( "Valeur du compteur à rebours: ", nombre ) nombre <-- nombre - 1 JUSQU'A( nombre < 0 ) FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Instruction répétitive « Répéter » 13-Apr-17 Structure algorithmique [Title of the course] Instruction répétitive « Répéter » Instruction répétitive : REPETER..TANTQUE.. ALGORITHME: compteur_rebours3 //BUT : affiche la valeur d'un compteur à rebours //ENTREE : un entier saisi par l’utilisateur //SORTIE : la valeur du compteur à rebours VAR: nombre :ENTIER DEBUT LIRE( nombre ) REPETER ECRIRE( "Valeur du compteur à rebours: ", nombre ) nombre <-- nombre - 1 TANTQUE( nombre > 0 ) FIN Cette structure se retrouve dans certains algorithmes, dans quelques livres d'algorithmique. Cependant, afin d'éviter des erreurs, elle peut être abordée qu'en fin de cours sur l'algorithmique. Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Instruction répétitive « Pour » 13-Apr-17 Structure algorithmique [Title of the course] Instruction répétitive « Pour » Instruction répétitive : POUR..FAIRE..FINPOUR ALGORITHME: compteur_rebours4 //BUT : affiche la valeur d'un compteur à rebours //ENTREE : un entier saisi par l’utilisateur //SORTIE : la valeur du compteur à rebours VAR: nombre :ENTIER DEBUT LIRE( nombre ) POUR( compteur <-- nombre :ENTIER a 0 au pas de -1 ) FAIRE ECRIRE("Valeur du compteur à rebours: ", compteur) FINPOUR FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Exercice(s) résolu(s) 13-Apr-17 Structure algorithmique [Title of the course] Exercice(s) résolu(s) SI..ALORS..FINSI Enoncé : Un élève entre la valeur d'une moyenne pour un examen, le programme indique la réussite s'il obtient une note supérieure ou égale à 12. ALGORITHME: examen //BUT :détermine l'obtention d'un examen //ENTREE :un entier saisi par l’utilisateur //SORTIE :la valeur booléenne indiquant le résultat VAR: moyenne :REEL examen <-- FAUX :BOOLEEN DEBUT LIRE( moyenne )//affectation d’une valeur par l’util. SI( moyenne >= 12 ) //si moyenne est sup.ou ég.à 12 ALORS //alors cette condition est vraie examen <-- VRAI //et examen se trouve réaffectée FINSI ECRIRE( "Cet élève a réussi son examen : ", examen ) FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Exercice(s) résolu(s) 13-Apr-17 Structure algorithmique [Title of the course] Exercice(s) résolu(s) SI..ALORS..SINON..FINSI Enoncé : En fonction du prix d'un produit HT et de la catégorie de celui-ci (luxe: TVA=19,6 % ; autre: TVA=5,5 %), le programme calcule sa valeur TTC. ALGORITHME: prix_ttc CONST: tva_luxe <-- 1,196 :REEL tva_reduite <-- 1,055 :REEL VAR: prix_ht, prix_ttc :REEL produit_luxe :BOOLEEN DEBUT LIRE( prix_ht, produit_luxe) SI( produit_luxe ) ALORS prix_ttc <-- prix_ht * tva_luxe SINON prix_ttc <-- prix_ht * tva_reduite FINSI ECRIRE ("Le prix TTC du produit est : ", prix_ttc) FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Exercice(s) résolu(s) 13-Apr-17 Structure algorithmique [Title of the course] Exercice(s) résolu(s) CAS..PARMI..FINCASPARMI Enoncé: Lorsque que l'utilisateur entre le choix d'un menu, pour 1, il affiche : "Nom du fichier : Algo1.txt"; pour 2 : "Nom du répertoire : C:"; pour 3 : "Nom complet : C:\Algo1.txt". ALGORITHME: menu_fichier VAR: choix_menu :ENTIER DEBUT LIRE( choix_menu ) CAS( choix_menu )PARMI: CAS1: 1 ECRIRE("Nom du fichier : Algo1.txt") CAS2: 2 ECRIRE("Nom du répertoire : C:") CAS3: 3 ECRIRE("Nom complet : C:\Algo1.txt") FINCASPARMI FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Exercice(s) résolu(s) 13-Apr-17 Structure algorithmique [Title of the course] Exercice(s) résolu(s) CAS..PARMI..PARDEFAUT..FINCASPARMI Enoncé: En fonction du numéro du mois choisi par l'utilisateur, le programme affiche le nombre de jours correspondant (les années bissextiles ne sont pas prises en compte). ALGORITHME: nombre_jours VAR: mois :CHAINE nbre_jours :ENTIER DEBUT LIRE( mois ) CAS( mois )PARMI: CAS1: "Février" nbre_jours <-- 28 CAS2: "Avril" nbre_jours <-- 30 CAS3: "Juin" nbre_jours <-- 30 CAS4: "Septembre" nbre_jours <-- 30 CAS5: "Novembre" nbre_jours <-- 30 PARDEFAUT: nbre_jours <-- 31 FINCASPARMI ECRIRE ("Il y a ", nbre_jours," jours en ", mois) FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Exercice(s) résolu(s) 13-Apr-17 Structure algorithmique [Title of the course] Exercice(s) résolu(s) TANTQUE..FAIRE..FINTANTQUE Enoncé: Le programme affiche systématiquement chaque touche que l'utilisateur frappe jusqu'à ce que la touche 'q' soit entrée ('q' correspond à QUITTER). ALGORITHME: touche_appuyee //affichage de la touche choisi dés lors que celle-ci //n'est pas un 'q' qui correspond au menu "Quitter" VAR: touche :CARACTERE DEBUT LIRE( touche ) TANTQUE( touche <> 'q' ) //'q' pour Quitter FAIRE ECRIRE( "La touche est : ", touche ) FINTANTQUE FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Exercice(s) résolu(s) 13-Apr-17 Structure algorithmique [Title of the course] Exercice(s) résolu(s) REPETER..JUSQU'A.. Enoncé: Le programme affiche systématiquement chaque mot que l'utilisateur frappe jusqu'à ce que le mot "fin" soit saisi. Le programme s'arrête à ce moment-là, le mot “fin” étant le dernier à apparaître sur l’écran. ALGORITHME: mots_tapes //affichage du mot tapé dés lors que celui-ci //n'est pas le mot "fin" VAR: mot :CHAINE DEBUT REPETER LIRE( mot ) ECRIRE( mot ) JUSQU'A( mot = "fin" ) FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Exercice(s) résolu(s) 13-Apr-17 Structure algorithmique [Title of the course] Exercice(s) résolu(s) REPETER..TANTQUE.. Enoncé: Le programme affiche systématiquement chaque mot que l'utilisateur frappe jusqu'à ce que le mot "fin" soit saisi. Le programme s'arrête à ce moment-là, le mot “fin” étant le dernier à apparaître sur l’écran. ALGORITHME: mots_tapes2 //affichage du mot tapé dés lors que celui-ci //n'est pas le mot "fin" VAR: mot :CHAINE DEBUT REPETER LIRE( mot ) ECRIRE( mot ) TANTQUE( mot <> "fin" ) FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Exercice(s) résolu(s) 13-Apr-17 Structure algorithmique [Title of the course] Exercice(s) résolu(s) POUR..FAIRE..FINPOUR Enoncé: Le programme affiche un compteur à rebours pour indiquer le nombre de photocopies restantes, avant d'avoir lancé l'impression d'un fichier: "C:\Rapport.txt". (L'impression est réalisée aprés l'affichage. Noter seulement en commentaire la fonction d'impression). ALGORITHME: compteur_copies VAR: nombre :ENTIER DEBUT LIRE( nombre ) //nombre de copie à photocopier POUR( compteur <-- nombre :ENTIER a 1 au pas de -1) FAIRE ECRIRE( "Photocopies restantes :", compteur ) // IMPRIMER LE FICHIER "C:\Rapport.txt" FINPOUR FIN Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Pause-réflexion sur cette 3ème partie 13-Apr-17 Structure algorithmique [Title of the course] Pause-réflexion sur cette 3ème partie Avez-vous des questions ? Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Structure de programme 13-Apr-17 [Title of the course] Introduction et Généralités sur l’Algorithmique Structure de programme Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Plan de la partie Voici les chapitres que nous allons aborder: 13-Apr-17 Structure de programme [Title of the course] Plan de la partie Voici les chapitres que nous allons aborder: Présentation Programme principal Modularité d’un programme Procédure et fonction Les qualités d’un programme informatique Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Structure de programme 13-Apr-17 Structure de programme [Title of the course] Présentation Structure de programme Organisation des modules à l'intérieur même d'un programme. Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Programme principal Notion de Structure de programme 13-Apr-17 Structure de programme [Title of the course] Programme principal Notion de Structure de programme Programme principal Module(s) d'un programme : Procédure Fonction Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Modularité d'un programme 13-Apr-17 Structure de programme [Title of the course] Modularité d'un programme Structure de programme : approche graphique Programme Principal LIRE() ECRIRE() SAUTER_LIGNE() Le Programme Principal, peut faire appel à des procédures ou fonctions diverses, ce qui a pour effet de structurer le programme, de réduire sa place en mémoire ainsi que son écriture, et surtout, de faciliter sa maintenance. Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Procédure et fonction Programmation modulaire : 13-Apr-17 Structure de programme [Title of the course] Procédure et fonction Programmation modulaire : Un programme modulaire est composé d'un (et un seul) programme principal. A l'intérieur de ce programme principal, se trouvent des appels aux modules appartenant au programme. Les modules d'un programme : Un module peut appelé un autre module. Un module peut s'appeler lui-même, cette particularité se nomme : la récursivité. Différence entre Procédure et Fonction : Procédure : ne retourne pas de donnée Fonction : au terme de son appel, retourne une donnée unique, possède ses propres données inconnues du reste du programme Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les qualités d’un programme informatique 13-Apr-17 Structure de programme [Title of the course] Les qualités d’un programme informatique Qualité d'un programme La qualité d'un programme commence dés la réalisation de son cahier des charges (formalisation du besoin), ... … pour se poursuivre durant l'écriture algorithmique … .. et les différentes phases qui suivent ! Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Les qualités d’un programme informatique 13-Apr-17 Structure de programme [Title of the course] Les qualités d’un programme informatique Les principales qualités d'un programme Validité Convivialité Transportabilité Maintenance aisée Modularité Sécurité Sûreté Immunité Lisibilité Optimalité mono ou multi-objectif (facultatif) Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Pause-réflexion sur cette 4ème partie 13-Apr-17 Structure de programme [Title of the course] Pause-réflexion sur cette 4ème partie Avez-vous des questions ? Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Pause-réflexion sur cette 4ème partie 13-Apr-17 Structure de programme [Title of the course] Pause-réflexion sur cette 4ème partie D'après vous, à quelle âge, dans quelle classe, dans quelle matière ou dans quelle circonstance avez-vous pris contact pour la première fois, de façon assez soutenue ou non, aux techniques algorithmiques ? Dans votre environnement de tous les jours, existe-t-il des choses, matérielles ou immatérielles, qui vous font penser à l'algorithmique ? Lesquelles ? Pouvez-vous décrire, maintenant, ces algorithmes ? Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Résumé du module … Qualité : Maintenance aisée Qualité : Validité 13-Apr-17 Introduction et Généralités sur l’Algorithmique [Title of the course] Résumé du module … Qualité : Maintenance aisée Modularité Immunité Lisibilité Qualité : Validité Convivialité Transportabilité Sécurité Sûreté, … Ecrire un programme est une tâche qui nécessite de la rigueur Structure de bouclage ou de sélection (avec ou sans alternative) Les 3 structures : Programme Algorithmique Données Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Pour aller plus loin… Si vous voulez approfondir vos connaissances: 13-Apr-17 Introduction et Généralités sur l’Algorithmique [Title of the course] Pour aller plus loin… Si vous voulez approfondir vos connaissances: Publications Introduction à l'algorithmique : Cours et exercices (Broché) de Cormen, Leiserson, Rivest L'algorithmique : Votre passeport informatique pour la programmation (Broché) de Bruno Warin Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
Introduction et Généralités sur l’Algorithmique 13-Apr-17 [Title of the course] Félicitations Vous avez suivi avec succès le module de cours n°1 Introduction et Généralités sur l’Algorithmique Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.
13-Apr-17 Introduction et Généralités sur l’Algorithmique [Title of the course] Fin Relisez attentivement ce cours et à l'aide des éléments abordés, essayez de décomposer vos actions de la vie courante, comme si vous deviez les transmettre à une machine. Copyright © 2004-2005 NameOfTheOrganization. All rights reserved.