Algorithmique. A.BATTOU Département informatique 2014-2015



Documents pareils
Cours d Informatique

Algorithme. Table des matières

Algorithmique et Programmation, IMA

Initiation à la programmation en Python

Algorithmique avec Algobox

Rappels sur les suites - Algorithme

CORRECTION EXERCICES ALGORITHME 1

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation


UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Programmation Objet - Cours II

Programmation C++ (débutant)/instructions for, while et do...while

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Architecture des Systèmes d Information Architecture des Systèmes d Information

Cours d algorithmique pour la classe de 2nde

Recherche dans un tableau

Algorithmique avec Algobox

V- Manipulations de nombres en binaire

Les différents types de données et leurs opérations de base

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

STAGE IREM 0- Premiers pas en Python

I. Introduction aux fonctions : les fonctions standards

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

1. Introduction Création d'une requête...2

4. Les structures de données statiques

Organigramme / Algorigramme Dossier élève 1 SI

La Clé informatique. Formation Excel XP Aide-mémoire

Chap III : Les tableaux

EXCEL TUTORIEL 2012/2013

Série TD 3. Exercice 4.1. Exercice 4.2 Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible! Exercice 4.3. Exercice 4.

Raisonnement par récurrence Suites numériques

Logiciel de Base. I. Représentation des nombres

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

ALGORITHMIQUE ET PROGRAMMATION En C

1 Recherche en table par balayage

Cours Informatique Master STEP

TP 1. Prise en main du langage Python

Définitions. Numéro à préciser. (Durée : )

Programmation Classique en langage C

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

1. Structure d'un programme FORTRAN 95

Cours Modélisation et Programmation avec tableur

Licence Sciences et Technologies Examen janvier 2010

Initiation à la Programmation en Logique avec SISCtus Prolog

Cours d initiation à la programmation en C++ Johann Cuenin

Limites finies en un point

6. Les différents types de démonstrations

Programmation linéaire

Excel 2007 Niveau 3 Page 1

LE PROBLEME DU PLUS COURT CHEMIN

Initiation à LabView : Les exemples d applications :

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Représentation d un entier en base b

Représentation des Nombres

Université Paris-Dauphine DUMI2E 1ère année, Applications

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

Feuille TD n 1 Exercices d algorithmique éléments de correction

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Chapitre 2 Devine mon nombre!

Chapitre 2. Classes et objets

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Algorithmes de recherche

Partie 1. Fonctions plus complexes dans Excel. Fonctions Si(), Et(), Ou() et fonctions imbriquées. Opérateurs logiques. I.1.

Note de cours. Introduction à Excel 2007

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

Cours 1 : Qu est-ce que la programmation?

Algorithmes récursifs

EXCEL PERFECTIONNEMENT CALCULS AVANCES

Solutions du chapitre 4

Adama MBODJI MBODJ.SYSTEM

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Algorithmique et programmation : les bases (VBA) Corrigé

Système binaire. Algèbre booléenne

Codage d information. Codage d information : -Définition-

Microsoft Excel. Tableur

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

1 I ) Une première approche de l algorithme en seconde, saison 2010 _ Antoine ROMBALDI

Bases de programmation. Cours 5. Structurer les données

Conversion d un entier. Méthode par soustraction

1.6- Génération de nombres aléatoires

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

Structures algébriques

Initiation à Excel. Frédéric Gava (MCF)

avec des nombres entiers

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Chapitre 1 I:\ Soyez courageux!

Chapitre 2. Eléments pour comprendre un énoncé

Module 16 : Les fonctions de recherche et de référence

Une version javascript sera disponible directement dans le cours prochainement.

Transcription:

Algorithmique A.BATTOU Département informatique 2014-2015

Objectifs Apprendre et maitriser les concepts de base de l'algorithmique et de la programmation. Etre capable de mettre en œuvre ces concepts pour analyser des problèmes simples et écrire les algorithmes correspondants. 2 SMI2-SM2

Plan Introduction à l algorithmique Instructions élémentaires Structures de contrôle conditionnelles Structures de contrôles répétitives Les tableaux 3 SMI2-SM2

Introduction Ordinateur : machine électronique traitant l information sous forme binaire (0-1) simple calculateur évolué dépourvu de toute intelligence Pour résoudre un problème donné à l aide d un ordinateur, il faut lui indiquer la suite d instructions à exécuter. Cette suite d actions est rassemblé dans un programme qui est exprimé dans un langage de programmation plus ou moins évolué (code machine, C, C++, Java, Caml, 4 SMI2-SM2 Prolog,...).

L algorithmique vs la programmation Lebut d un programme: Utiliser l ordinateur pour traiter des données afin d obtenir des résultats. Abstraction par rapport au matériel (indépendance application / plate forme matérielle). Intermédiaire entre le langage machine (binaire) et le langage humain Pour écrire un programme (la suite d actions), il faut donc d abord savoir comment faire pour résoudre le problème. Un programme est la traduction d un algorithme dans un certain langage de programmation. 5 SMI2-SM2

L algoet vie quotidienne Avez-vous déjà exécuté, mis en place un algorithme? Faire une bonne omelette aux tomates Indiquer le chemin à un passager Configurer un téléphone Acheter de la boutique du coin Mode d emploi d un robot mélangeur Etc. L algorithmique est pratiqué tout les jours et depuis longtemps 6 SMI2-SM2

Algorithme Un algorithme est une suite finie et non-ambigûe d'opérations ou d'instructions permettant de résoudre un problème Le terme «algorithme» vient du nom de l auteur persan Al- Khuwarizmi (780-850 après J.C.) qui a ecrit en langue arabe le plus ancien traite d algèbre «abrege de calcul par la completion et la simplification» dans lequel il décrivait des procedés de calcul a suivre étape par étape pour résoudre des problèmes ramènes a des équations. L algorithmique : la discipline qui étudie les algorithmes et leurs applications en Informatique 7 SMI2-SM2

Structure d un algorithme Entête Déclaration Corps de l algorithme 8 SMI2-SM2 Algorithme NomAlgorithme Variable Identificateur : type Constante Identificateur = valeur Début Instruction 1 Instruction 2.. Instruction 3 Fin

Caractéristique d un algorithme Lisible: l'algorithme doit être compréhensible même par un non-informaticien. Se termine toujours: l'algorithme doit avoir une fin. Précis et non ambigüe: chaque élément de l'algorithme ne doit pas porter à confusion. Concis: un algorithme ne doit pas dépasser une page. Si c'est le cas, il faut décomposer le problème en plusieurs sous-problèmes. Structuré: un algorithme doit être composé de différentes parties facilement identifiables. 9 Résous SMI2-SM2 le problème.

Représentation d un algorithme Algorigramme/Organigramme: Le pseudo-code: représentation graphique avec des symboles (carrés, losanges, etc.) offre une vue d ensemble de l algorithme représentation quasiment abandonnée aujourd hui représentation textuelle avec une série de conventions ressemblant à un langage de programmation plus pratique pour écrire un algorithme représentation largement utilisée 10 SMI2-SM2

Représentation d un algorithme Algorigramme/Organigramme: Le pseudo-code: Algorithme longueur_nom Variable nom: chaine de caractère taille: entier Début Ecrire "Veuillez entrer votre nom:" Lire nom taille<- nombre de lettre nom si(taille< 10) alors Ecrire"Votre nom est court" sinon Ecrire"Votrenomestlong" Fin 11 SMI2-SM2

Premier Algorithme Ecrire un algorithme qui permet de calculer le carré d un nombre Algorithme Carré_d_un_nombre {Cet algorithme calcule le carré du nombre que lui fournit l'utilisateur} Var/Variables unnombre, soncarré: entiers {déclarations: réservation d'espace-mémoire} Début {préparation du traitement} afficher/ecrire("quel nombre voulez-vous élever au carré?") saisir/lire (unnombre) {traitement: calcul du carré} soncarré unnombre unnombre {présentation du résultat} afficher ("Le carré de ", unnombre) afficher ("c'est", soncarré) fin 12 SMI2-SM2

Les trois étapes d un algorithme 1.Définir clairement le problème 2.Rechercher une méthode de résolution (formules...) 3.Réaliser l'algorithme en étant explicite. 13 SMI2-SM2

1.Définir clairement le problème Spécification d'un ensemble de données à partir de l'énoncé du problème, d'hypothèses, ou de source d'informations externes,... Spécification d'un ensemble de buts à atteindre à partir des résultats attendus, des suites d'opérations à effectuer,... Spécification des contraintes à partir de l'énoncé, du contexte,... 14 SMI2-SM2

2.Rechercher une méthode de résolution (formules...) Dansunpremiertemps ilfaut: Clarifierl'énoncé Simplifier le problème Ne pas chercher à le traiter directement dans sa globalité S'assurer que le problème puisse être traité Ensuite il faut rechercher une stratégie de construction de l'algorithme: Décomposer le problème en sous problèmes partiels plus simples Effectuer des raffinements successifs Le niveau de raffinement le plus élémentaire est celui des instructions. Il n'existe pas de stratégie automatique pour mettre au point une méthode de résolution. 15 SMI2-SM2

Exemple d application Concevoir un algorithme qui calcule la superficie d un rectangle 1) Analyse: - Quel est le résultat recherché? (Sortie). - Comment s obtient ce résultat?(traitement) - Quelles sont les informations nécessaires? (Entrées) 2) Structure de la solution : la solution de l énoncé implique la structuration suivante : 16 SMI2-SM2 - Donner la Longueur (L) - Donner la largeur (l) - Calculer la surface (S) en effectuant: S= L*l - Afficher la surface (S).

Algorithmique Notions et instructions de base

Structure d un algorithme Entête Déclaration Corps de l algorithme 18 SMI2-SM2 Algorithme NomAlgorithme Variable Identificateur : type Constante Identificateur = valeur Début Instruction 1 Instruction 2.. Instruction 3 Fin

Notion de variable Dans les langages de programmation une variable sert à stocker la valeur d une donnée Une variable désigne en fait un emplacement ou adresses mémoire et permet ainsi de manipuler des valeurs sans connaître l emplacement exact le contenu peut changer au cours d un programme (d où le nom variable) Règle : Les variables doivent être déclarées avant d être utilisées, elle doivent être caractérisées par : un nom (Identificateur) un type(entier, réel, caractère, chaîne de caractères, ) 19 SMI2-SM2

Choix des identificateurs Le choix des noms de variables est soumis à quelques règles qui varient selon le langage, mais en général: Un nom doit commencer par une lettre alphabétique doit être constitué uniquement de lettres, de chiffres et du soulignement Identificateur variable 20 SMI2-SM2 doit être différent des mots réservés du langage La longueur du nom doit être inférieure à la taille maximale spécifiée par le langage utilisé

Choix des identificateurs (suite) NB: pour la lisibilité du code choisir des noms significatifs qui décrivent les données manipulées exemples: Etudiant_FSA, Prix_TTC, Prix_HT, TVA En pseudo-code algorithmique, on va respecter les règles citées, même si on est libre dans la syntaxe 21 SMI2-SM2

Types des variables Le type d une variable détermine permet de savoir: Quel est l espace mémoire occupé par cette variables Quelles sont les opérations autorisées sur la variable Type numérique: Entier, Réel Type logique ou booléen :deux valeursvrai ou FAUX Type caractère: lettres majuscules, minuscules, chiffres, symboles, exemples: A, A, a, 1,?, Type chaîne de caractère: suite de caractères, exemples: " Nom, Prénom", "faculté des sciences", 22 SMI2-SM2

Déclaration des variables Rappel: toute variable utilisée dans un programme doit faire l objet d une déclaration préalable En pseudo-code, deux façon pour la déclaration de variables Var ou Variables liste d'identificateurs : type Exemple: Variables i, j,k: entier x, y : réel OK: booléen ch1, ch2 : chaîne de caractères 23 SMI2-SM2

Constante Une constante est une donnée fixe qui ne varie pas durant l exécution d un algorithme. Une constante est caractérisée par son nom et sa valeur (fixe) Déclaration : Constante nom_de_la_constante (type) = valeur Exemple: Constante pi (réel) = 3.14 24 SMI2-SM2

L instruction d affectation l affectation consiste à attribuer une valeur à une variable (ça consiste en fait à remplir où à modifier le contenu d'une zone mémoire) En pseudo-code, l'affectation se note avec le signe NomVariable Expression Expression peut être une valeur, une autre variable ou une expression Exemples - A,B (entier): A 4; A B; A B*2+5 25 SMI2-SM2

L instruction d affectation - NomVariable et Expression doivent être de même type ou de types compatibles Exemple: A(chaine decaractère) :A " Bonjour " correcte A 4 faux - l affectation ne modifie que ce qui est à gauche de la flèche Exemple: A, B (entier) A 2; B 5 ; A B 26 SMI2-SM2

Exemple Donnez les valeurs des variables A, B et C après exécution des instructions suivantes? 27 SMI2-SM2 Algorithme affectation Variables A, B, C: Entier Début A 3 B 7 A B B A+5 C A + B Fin

Explication 1- Déclaration A? B? C? 2-1 ère affectation A 3 B 7 C? 3-2 ème affectation A 7 B 12 C 19 28 SMI2-SM2

Exercices (1) -Donnez les valeurs des variables A et B après exécution des instructions suivantes? VariablesA, B :Entier Début A 1 B 2 A B B A Fin -Les deux dernières instructions permettent-elles d échanger les valeurs de A et B? 29 SMI2-SM2

Exercices (2) Ecrire un algorithme permettant d échanger les valeurs de deux variables A et B 30 SMI2-SM2

Expressions Une expression est une combinaison d opérateur(s) et donnée(s), elle est évaluée durant l exécution de l algorithme, et possède une valeur (son interprétation) et un type Exemples: a*2, a+ 3*b-c, non(x <= 0) L'évaluation de l'expression retourne une valeur unique Exemple : 4+6 retourne? 10 % 4 retourne? x >=0retourne? abc & de retourne? 31 SMI2-SM2

Opérateurs Un opérateur est un symbole d opération qui permet d agir sur des variables ou de faire des calculs Un opérateur peut être unaire ou binaire : Unaire s il n admet qu une seule donnée, Exemple : non A Binaire s il admet deux données Exemple : a+b 32 SMI2-SM2

Opérateurs Un opérateur est associé à un type de donnée et ne peut être utilisé qu avec des variables, des constantes, ou des expressions de ce type Exemple : l opérateur «-» ne peut être utilisé qu avec les types arithmétiques (naturel, entier et réel) On ne peut pas additionner un entier et un caractère Toutefois exceptionnellement dans certains cas on accepte d utiliser un opérateur avec deux opérandes de types différents Exemple : Cas avec les types arithmétiques 2 + 3.5 33 SMI2-SM2

Lesopérateurssurlesnumériques On retrouve 34 SMI2-SM2 + Addition - Soustraction * Multiplication / Division % Modulo (reste de la division euclidienne ^ Exemple : 11 / 2 = 5 11.0/2.0= 5,5 11 % 2 = 1 Puissance

Lesopérateurssurlesnumériques L opérateur d égalité : C est l opérateur que l on retrouve chez tous les types simples qui permet de savoir si les deux opérandes sont égales Il est représenté par le caractère «=» On a aussi l opérateur d inégalité : Et pour les types possédant un ordre les opérateurs de comparaison <,, >, Le résultat d'une expression contenant ces opérateurs est un booléen 35 SMI2-SM2

Prioritédesopérateurssurlesnumériques Les opérateurs algébriques sont classés par ordre de priorité décroissante: La négation unaire (-)(priorité la plus élevée) L'opérateur d'exponentiation (^) Les opérateurs multiplicatifs (*,/, %) Les opérateurs additifs (+, -) (priorité la plus basse) exemple: que vaut 2 + 3 *-7? 2 +6/2+3? En cas de besoin (ou de doute), on utilise les parenthèses pour indiquer les opérations à effectuer en priorité 36 SMI2-SM2 Exemple: (2 + 3) *-7 (2+6)/(2+3)

Cohérence de type numérique Pour qu'une opération numérique binaire de base (+, -, *, /) puisse s'effectuer, il faut que ses deux opérandes soient du même type. Si ce n'est pas le cas, il y a, préalablement à l'opération, conversion de l'opérande entier (type le plus faible) en réel. Exemple: R :réel ; J:entier R 5.0 ; J 2, Pour calculer R/J, il faut : (i) conversion de l'entier 2 en réel 2.0 (ii) L évaluation de l opération de 5.0/2.0 donne le réel 2.5. 37 SMI2-SM2

Les opérateurs booléens Pour les booléens nous avons les opérateurs suivants: C1 VRAI FAUX NON C1 FAUX VRAI C1 C2 C1 OU C2 VRAI VRAI VRAI VRAI FAUX VRAI FAUX VRAI VRAI FAUX FAUX FAUX C1 C2 C1 ET C2 VRAI VRAI VRAI VRAI FAUX FAUX FAUX VRAI FAUX FAUX FAUX FAUX SMI2-SM2 C1 C2 C1 ouexclusif C2 VRAI VRAI Faux VRAI FAUX VRAI FAUX VRAI VRAI FAUX FAUX FAUX 38

Les opérateurs booléens (Rappel) Valeurs possibles : Vrai ou Faux Associativité des opérateurs «et» et «ou» a et (b et c) = (a et b) et c Commutativité des opérateurs «et» et «ou» a et b = b et a a ou b = b ou a Distributivité des opérateurs et et ou a ou (b et c) = (a ou b) et (a ou c) a et (b ou c) = (a et b) ou (a et c) Involution : non non a = a Loi de Morgan : non (a ou b) = non a et non b non (a et b) = non a ou non b 39 SMI2-SM2

Les instructions d'entrées-sorties: lecture et écriture (1) Les instructions de lecture et d'écriture permettent à la machine de communiquer avec l'utilisateur La lecture permet d'entrer des donnés à partir du clavier En pseudo-code, on note: lire (var) la machine met la valeur entrée dans la zone mémoire nommée var Remarque:Le programme s'arrête lorsqu'il rencontre une instruction Lire et ne se poursuit qu'après la frappe d une valeur au clavier et de la touche Entrée 40 SMI2-SM2

Les instructions d'entrées-sorties: lecture et écriture (2) L'écriturepermet d'afficher des résultatsà l'écran (ou de les écrire dans un fichier) En pseudo-code, on note: écrire (var) la machine affiche le contenu de la zone mémoire var Conseil:Avant de lire une variable, il est fortement conseillé d écrire des messages à l écran, afin de prévenir l utilisateur de ce qu il doit frapper 41 SMI2-SM2

Exemple (lecture et écriture) Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui calcule et affiche le double de ce nombre Algorithme Calcul_double variables A, B : entier Début écrire("entrer le nombre ") lire(a) B 2*A écrire("le double de ", A, "est :", B) Fin 42 SMI2-SM2

Exercice (lecture et écriture) Ecrire un algorithme qui vous demande de saisir votre nom puis votre prénom et qui affiche ensuite votre nom complet Algorithme AffichageNomComplet variables Nom, Prenom, Nom_Complet : chaîne de caractères Début écrire("entrez votre nom") lire(nom) écrire("entrez votre prénom") lire(prenom) Nom_Complet Nom & Prenom écrire("votre nom complet est : ", Nom_Complet) Fin 43 SMI2-SM2

Algorithmique Structures de contrôle conditionnelles

instructions conditionnelles (1) Les instructions conditionnelles permettent de choisir une instruction ou une séquence d'instructions que si une condition est vérifiée. 45 SMI2-SM2

instructions conditionnelles (1) Syntaxe : Si condition alors instruction ou suite d'instructions1 Sinon instruction ou suite d'instructions2 Finsi lacondition ne peutêtreque vraie ou fausse si la condition est vraie, se sont les instructions1 qui seront exécutées si la condition est fausse,se sont les instructions2 qui seront 46 SMI2-SM2 exécutées

instructions conditionnelles (2) la condition peut être une condition simple ou une condition composée de plusieurs conditions La partie Sinon n'est pas obligatoire, quand elle n'existe pas et que la condition est fausse, aucun traitement n'est réalisé On utilisera dans ce cas la forme simplifiée suivante: Si condition alors instruction ou suite d'instructions1 Finsi Que le traitement soit exécuté ou non, le programme continue normalement son exécution après l instruction Finsi 47 SMI2-SM2

Exemple (Si Alors Sinon) Ecrire algorithme permettant d afficher la valeur absolu d une variable Algorithme AffichageValeurAbsolue (version1) Variable x : réel Début Ecrire(" Entrez un réel : ) Lire (x) Si (x < 0)alors Ecrire ("la valeur absolue de ", x, "est:",-x) Sinon Ecrire ("la valeur absolue de ", x, "est:",x) Finsi Fin 48 SMI2-SM2

Exemple (Si Alors) Algorithme AffichageValeurAbsolue (version2) Variable x,y: réel Début Ecrire("Entrez un réel: ) Fin Lire (x) y x Si (x < 0)alors y -x Finsi Ecrire ("la valeur absolue de ", x, "est:",y) 49 SMI2-SM2

Exercice (tests) Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui teste et affiche s'il est divisible par 3 Algorithme Divsible_par3 Variable n : entier Début Ecrire " Entrez un entier : " Fin Lire (n) Si (n%3=0) alors Ecrire (n," est divisible par 3") Sinon Ecrire (n," n'est pas divisible par 3") Finsi 50 SMI2-SM2

Conditions composées Une condition composée est une condition formée de plusieurs conditions simples reliées par des opérateurs logiques: Exemples: ET,OU,OUexclusif(XOR)etNON xcomprisentre 2et6:(x>2)ET(x<6) ndivisiblepar3oupar2:(n%3=0)ou(n%2=0) deuxvaleurset deuxseulementsontidentiquesparmia,bet c : (a=b) XOR(a=c) XOR(b=c) L'évaluation d'une condition composée se fait selon des règles présentées généralement dans les tables de vérité (voir chapitre précédant) 51 SMI2-SM2

Tests imbriqués Les tests peuvent avoir un degré quelconque d'imbrications Si condition1 alors Sinon Finsi 52 SMI2-SM2 Si condition2 alors instructionsa Sinon instructionsb Finsi Si condition3 alors instructionsc Finsi

Tests imbriqués: exemple (version 1) Ecrire un algorithme permettant de déterminer si un entier est positif ou négatif Algorithme signedunentierv1 Variable n : entier Début Ecrire ("entrez un nombre : ") Fin Lire (n) Si (n < 0)alors Ecrire("Ce nombre est négatif") Sinon Finsi Si (n = 0)alors Ecrire ("Ce nombre est nul") Sinon Ecrire ("Ce nombre est positif") Finsi 53 SMI2-SM2

Tests imbriqués: exemple (version 2) Algorithme signedunentierv2 Variable n : entier Début Ecrire ("entrez un nombre : ") Lire (n) Fin Si (n < 0)alors Ecrire ("Ce nombre est négatif") Finsi Si (n = 0)alors Ecrire ("Ce nombre est nul") Finsi Si (n > 0)alors Ecrire ("Ce nombre est positif") Finsi Remarque : dans la version 2 on fait trois tests systématiquement alors que dans la version 1, si le nombre est négatif on ne fait qu'un seul test Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer d'abord les conditions les plus probables 54 SMI2-SM2

Tests imbriqués: exercice Le prix de photocopies dans une reprographie varie selon le nombre demandé: -0,5 DH la copie pour un nombre de copies inférieur à 10, -0,4DH pour un nombre compris entre 10 et 20-0,3DH au-delà. Ecrivez un algorithme qui demande à l utilisateur le nombre de photocopies effectuées, qui calcule et affiche le prix à payer 55 SMI2-SM2

Tests imbriqués: corrigé de l'exercice Variables copies : entier prix : réel Début Ecrire ("Nombre de photocopies :") Lire (copies) Si (copies < 10)Alors prix copies*0.5 Sinon Si (copies) < 20 prix copies*0.4 Sinon prix copies*0.3 Finsi Finsi Ecrire ( Le prix à payer est :, prix) Fin 56 SMI2-SM2

Structure conditionnelle SELON 57 Utilisée lorsqu on doit comparer une même variable avec plusieurs valeurs. Exemple : SMI2-SM2 si a=1 alors instruction1 sinon si a=2 alors instruction2 finsi sinon finsi si a=4 alors instruction3 sinon... finsi On peut remplacer cette suite de si par l instruction selon que

Structure conditionnelle SELON Syntaxe Selon que variable faire cas val1 : instructions_1 cas val2 : instructions_2 cas vali : instructions_i cas valn : instructions_n Autres :instructions_autres FinSelon L instruction_i est exécutée si variable = vali (on quitte ensuite l instruction cas) L instruction autre est exécutée si quelque soit i, variable vali 58 SMI2-SM2

Structure conditionnelle SELON Cette structure conditionnelle est appelée aussi à choix multiple ousélective car elle sélectionne entre plusieurs choixàla fois,et non entre deuxchoix alternatifs. Dès qu une valeur est vérifiée, le traitement associé est exécuté puis le programme continue normalement son exécution juste après l instruction FinSelon sans envisager la cas suivant. 59 SMI2-SM2

Exemple : Ecrire un algorithme demandant à l'utilisateur le jour de la semaine et affichera ensuite le jour correspondant au lendemain. 60 SMI2-SM2

Algorithmique Structures de contrôles répétitives

Intérêt Si on veut répéter une même instruction plusieurs fois: Exemple : calculer le carré d un ensemble de chiffre Algorithme calcul_carré Variable x, x_carré : réel Début Ecrire("donner un chiffre") Lire(x) x_carré<- x*x Ecrire("le carré de", x, "est":,x_carré) Ecrire("donner un chiffre") etc. fin 62 SMI2-SM2

Intérêt Solution : les boucles qui servent à répéter l'exécution d'un groupe d'instructions un certain nombre de fois. Deux formes Nombre de répétitions connu Nombre de répétitions non connu 63 SMI2-SM2

Instructions itératives: les boucles on y répète des instructions tant qu'une certaine condition est réalisée Tant que Répéter.. Jusqu à on y répète des instructions jusqu'à ce qu'une certaine condition soit réalisée 64 on y répète des instructions en faisant évoluer un compteur (variable particulière) entre une valeur initiale et une valeur finale SMI2-SM2 Pour

Boucle inconditionnelle : Le boucle Pour Si le nombre de répétitions des instructions est connu à l'avance. Le mécanisme permettant cela est la boucle Pour. Forme de la boucle Pour : Pour var de valeur_initiale à valeur_finale(par pas) faire liste d'instructions fpour La variable «var» va prendre successivement toutes les valeurs entières entre valeur_initiale et valeur_finale. Pour chaque valeur prise par var, la liste des instructions est exécutée. La variable «var» (dite compteur) est incrémentée par 1 implicitement. 65 SMI2-SM2

Boucle inconditionnelle : Le boucle Pour Le nombre d'itérations dans une boucle Pour est connu avant ledébutde la boucle En général, le compteur est une variable de type entier Elle doit être déclarée au début de l algorithme. Lepasestun entierqui peutêtre positif ou négatif La Valeur Initiale et la valeur finale peuvent être des valeurs, des variables définies avant le début de la boucle ou des expressions de même type que compteur. 66 SMI2-SM2

Déroulement de la boucle Pour 1) La valeur initiale est affectée à la variable compteur 2) Oncomparela valeurdu compteuretla valeurde finale: a) Si la valeur du compteur est > à la valeur finale dans le cas d'un pas positif (ou si compteur est < à finale pour un pas négatif),on sortde laboucleet oncontinueavec l'instructionquisuitfpour b) Si compteur est <= à finale dans le cas d'un pas positif (ou si compteur est >= à finale pour un pas négatif), instructions seront exécutées i. Ensuite, la valeur de compteur est incrémentée de la valeur dupas sipasestpositif(oudécrémenté sipasestnégatif) ii. On recommence l'étape 2 : La comparaison entre compteur etfinale estdenouveaueffectuée,etainsidesuite 67 SMI2-SM2

Boucle Pour : exemple1 Algorithme calcul_puissance Variables x, puiss : réel n, i : entier Début Ecrire (" Entrez la valeur de x ") Donner l algorithme permettant de calculer x à la puissance n où x est un réel non nul et n un entier positif ou nul Fin Lire (x) Ecrire (" Entrez la valeur de n ") Lire (n) puiss 1 Pouri allant de 1 à n faire puiss puiss*x FinPour Ecrire (x," à la puissance ", n, " est égal à ", puiss) 68 SMI2-SM2

Boucle Pour : remarque Il faut éviter de modifier la valeur du compteur à l'intérieur de la boucle. En effet, une telle action peut : perturber le nombre d'itérations prévu par la boucle Pour rendre difficile la lecture de l'algorithme présenter le risque d'aboutir à une boucle infinie 69 SMI2-SM2 Exemple : Pour i allant de1 à5 i i -1 écrire(" i = ", i) Finpour

Boucles Pour imbriquées Les instructions d'une boucle peuvent être des instructions itératives. Dans ce cas, on aboutit à des boucles imbriquées Exemple: Exécution Pouri allant de 1 à 5 *\ FinPour Pourj allant de 1 à i **\ écrire("*") ***\ FinPour ****\ écrire(«\") *****\ 70 SMI2-SM2

Les boucles conditionnelles Lorsqu on souhaite répéter une instruction tant qu'une certaine condition est remplie, alors qu'il est à priori impossible de savoir à l'avance au bout de combien d'itérations cette condition cessera d'être satisfaite. Dans ce cas, on a deux possibilités: TantQue (condition) instructions FinTantQue Répéter instructions Jusqu à(condition) 71 SMI2-SM2

La boucle Tant que la condition (dite condition de contrôle de la boucle) est évaluée avant chaque itération si la condition est vraie, on exécute instructions (corps de la boucle), puis, on retourne tester la condition. Si elle est encore vraie, on répète l'exécution, si la condition est fausse, on sort de la boucle et on exécute l'instruction qui est après FinTantQue 72 SMI2-SM2

La boucle Tant que : remarques Le nombre d'itérations dans une boucle TantQuen'est pas connu au moment d'entrée dans la boucle. Il dépend de l'évolution de la valeur de condition Une des instructions du corps de la boucle doit absolument changer la valeur de condition de vrai à faux (après un certain nombre d'itérations), sinon le programme tourne indéfiniment Exemple de boucle infinie : i 2 TantQue (i > 0) i i+1 FinTantQue 73 SMI2-SM2

Exemple Boucle Tant que Algorithme saisir_nombre Ecrire un algorithme qui demande à l'utilisateur de taper le nombre Variable 10. Tant nombre qu'il n'a : entier pas tapé le nombre 10, on lui redemande Début de taper le nombre nombre Nombre <-1 Tant que (nombre # 10) ecrire( donner un nombre ) lire (nombre) fintantque fin 74 SMI2-SM2

La boucle Répéter jusqu à Syntaxe : Répéter instructions Jusqu'à (condition) /* tant que faire très attention*/ Condition est évaluée après chaque itération les instructions entre Répéter et jusqu à sont exécutées au moins une fois et leur exécution est répétée jusqu à ce que condition soit vrai (tant qu'elle est fausse) 75 SMI2-SM2

Boucle Répéter jusqu à : exemple Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N dépasse strictement 100 (version avec répéter jusqu'à) Variables som, i : entier Debut som 0 76 FinSMI2-SM2 i 0 Répéter i i+1 som som+i Jusqu'à ( som> 100) Ecrire (" La valeur cherchée est N= ", i)

Remarque Faire tantque vsrépéter jusqu à:attentionàla condition Exemple: 77 Variables som, i : entier Debut som 0 i 0 Répéter i i+1 som som+i Jusqu'à ( som > 100) Ecrire (" La valeur cherchée est N= ", i) Fin SMI2-SM2 Variables som, i : entier Debut som 0 i 0 faire i i+1 som som+i tant que ( som < 100) Ecrire (" La valeur cherchée est N= ", i) Fin

Pour vs TantQue La boucle Pour est un cas particulier de Tant Que (cas où le nombre d'itérations est connu et fixé). Tout ce qu'on peut écrire avec Pour peut être remplacé avec TantQue(la réciproque est fausse) Pour cptde val_initialeà à val_finalepar pas val_pas instructions FinPour compteur initiale TantQue compteur <= finale instructions compteur compteur+pas FinTantQue 78 SMI2-SM2

Pour vs TantQue: exemple Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul (version avec TantQue) Variables x, puiss : réel n, i : entier Debut Ecrire (" Entrez la valeur de x ") Fin 79 SMI2-SM2 Lire (x) Ecrire (" Entrez la valeur de n ") Lire (n) puiss 1 i 1 TantQue(i<=n) puiss puiss*x i i+1 FinTantQue Ecrire (x," à la puissance ", n, " est égal à ", puiss)

POUR vs TANT QUE 80 SMI2-SM2 Pour: Implicitement, l instruction pour: initialise un compteur incrémente le compteur à chaque pas vérifie que le compteur ne dépasse pas la borne supérieure Nombre d itération connu à l avance (parcours tableaux, test sur un nombre donné de valeurs Tant que : Explicitement, l instruction tant que : initialise un compteur Incrémente le compteur à chaque pas vérifie que le compteur ne dépasse pas la borne supérieure Boucle s arrête sur événement particulier décidé par saisi de l utilisateur

RÉPÉTER vs TANT QUE Répéter afficher("donnez une valeur positive paire :") saisir(valeur) tant que(valeur < 0 ou(valeur % 2) 0) afficher("donnez une valeur positive paire :") saisir(valeur) tant que(valeur < 0 ou(valeur % 2) 0) faire afficher("donnez une valeur positive paire:") saisir(valeur) ftq 81 SMI2-SM2

RÉPÉTER vs TANT QUE 82 Répéter jusqu à condition vérifiée après chaque exécution du traitement le traitement est exécuté aumoinsunefois la condition porte sur le résultat du traitement la boucle répéter est typique pour les saisies avec vérification SMI2-SM2 Tant que : condition vérifiée avant chaque exécution du traitement le traitement peut donc ne pas être exécuté la condition porte sur la saisie de nouvelles variables (relance)

Récapitulatif: Choix d'un type de boucle Oui Pour Nombre d itération connu 83 SMI2-SM2 Non Traitement exécuté au moins une fois Non Oui Tant que Répéter

Choix de la boucle Cet algorithme fait la somme d une suite de nombres tant que l utilisateur ne saisit pas une valeur donnée Algorithme Somme une addition de Constante STOP (entier) =10 trop pour Variables val, somme : entiers l enlever on teste 84 Début fin SMI2-SM2 avant somme 0 répéter afficher(«entrez un nombre, ", STOP, " pour finir.") saisir(val) somme somme + val Jusqu à (val =STOP) afficher( "La somme atteinte est", somme )

Choix de la boucle 85 Algorithme Somme Constante STOP: (entier) =10 variables val, somme : entiers début somme 0 afficher("entrez un nombre, ", STOP, " pour terminer : ") saisir(val) tant que (val STOP) faire somme somme + val afficher("entrez un autre nombre : ") saisir(val) ftq afficher(" La somme atteinte est ", somme) fin SMI2-SM2

ALGORITHMIQUE Les tableaux

Exemple introductif Comment conserver les notes d'une classe de 40 étudiants pour extraire quelques informations. Par exemple : calcul du nombre d'étudiants ayant une note inférieur10 Solution possible : déclarer 40 variables, par exemple N1,, N40. Après 40 instructions lire, on doit écrire 40 instructions Si pour faire le calcul nbre 0 Si (N1 <10) alors nbre nbre+1 FinSi. Si (N40<10) alors nbre nbre+1 FinSi Une seule structure de donnée appelée tableau 87 SMI2-SM2

Tableaux Untableau est un ensemble d'éléments de même type désignés par un identificateur unique Une variable entière nommée indice permet d'indiquer la position d'un élémentdonnéauseindutableau etde déterminersavaleur La déclaration d'un tableau s'effectue en précisant le type de ses éléments et sa dimension (le nombre de ses éléments) Enpseudocode: variable tableau identificateur[dimension] [dimension]: type Exemple: variable tableau notes[30]:réel On peut définir des tableaux de tous types : tableaux d'entiers, de réels, de caractères, de booléens, etc. 88 SMI2-SM2

Tableaux : remarques L'accès à un élément du tableau se fait au moyen de l'indice. Par exemple, notes[i] donne la valeur de l'élément i du tableau. Selon les langages,le premier indice du tableau est soit 0, soit 1.Le plus souvent c'est 0. Dans ce cas, notes[i] désigne l'élément i+1 du tableau. Il est possible de déclarer un tableau sans préciser au départ sa dimension. Cette précision est faite ultérieurement. Par exemple, quand on déclare un tableau comme paramètre d'une procédure, on peut ne préciser sa dimension qu'au moment de l'appel En tous cas, un tableau est inutilisable tant qu on n a pas précisé le nombre de ses éléments Un grand avantage des tableaux est qu'on peut traiter les données qui y sont stockées de façon simple en utilisant des boucles 89 SMI2-SM2

Tableaux : exemples (1) Que produit l algorithme suivant? Variables i,k:entier tableau N[6] : Entier Début N[0]<-1 ; Pour k allant de 1 à 5 faire N(k) <-N(k-1) +2 ; fpour Pour i allant de 0 à 5 faire Ecrire N[i]; fpour Fin

Tableaux : exemples (2) 91 Pour le calcul du nombre d'étudiants ayant une note supérieure à 10 avec les tableaux, on peut écrire : Algorithme note_etudiants Variables Début nbre 0 Fin SMI2-SM2 i,nbre : entier tableaunotes[30] ] : réel Pouriallant de 0 à 29 Si(notes[i] >10) alors FinPour FinSi nbre nbre+1 écrire ("le nombre de notes supérieures à 10 est : ", nbre)

Tableaux : saisie et affichage Pour saisir Pouri allant de 0 à n-1 écrire ("Saisie de l'élément ", i + 1) lire (T[i]) FinPour Pour afficher Pouri allant de 0 à n-1 écrire ("T[",i,"] =", T[i]) FinPour

Tableaux : exemple Ecrire un algorithme qui permet à l utilisateur de saisir dix nombres entiers, de les afficher et de calculer leurs moyen. Algorithme Tableaux variable som, moy: entier tableau A[10] : entier Début som<-0 pour i allant de 0 à 9 faire Ecrire(" donner l élément d indice", i, " du tableau") lire (A[i]) Finpour Pour i allant de 0 à 9 faire Ecrire ("A[",i,"] = ",A[i] ) som <-som+a[i] Finpour moy <-som/10 Ecrire (" la moyenne des dix entiers est ", moy) Fin 93 SMI2-SM2

Tableaux à deux dimensions Les langages de programmation permettent de déclarer des tableaux dans lesquels les valeurs sont repérées par deux indices. Ceci est utile par exemple pour représenter des matrices En pseudo code, un tableau à deux dimensions se déclare ainsi : variabletableau identificateur[dimension1] [dimension2] : type Exemple : une matrice A de 3 lignes et 4 colonnes dont les éléments sont réels variabletableau A[3][4] : réel A[i][j]permet d'accéder à l élément de la matrice qui se trouve à l intersection de la ligne i et de la colonne j 94 SMI2-SM2

Exemples : saisir les éléments d'une matrice Algorithme qui permet de saisir les éléments d'une matrice : Algorithme Saisi_matrice variables i,j,n,m: entier Début tableau A[n][m]: réel Pour i allant de 0 à n-1 écrire ("saisie de la ligne ", i + 1) FinPour Fin Pourj allant de 0 à m-1 écrire ("Entrez l'élément de la ligne ", i + 1, " et de la colonne ", j+1) lire (A[i][j]) FinPour 95 SMI2-SM2

Exemples : afficher les éléments d'une matrice Algorithme qui permet d'afficher les éléments d'une matrice : Algorithme Afficher_Matrice variables i,j,n,m : entier Début tableau A[n][m] Pouri allant de 0 à n-1 Pourj allant de 0 à m-1 FinPour Fin écrire ("A[",i, "] [",j,"]=", A[i][j]) FinPour 96 SMI2-SM2

Exemples : somme de deux matrices Algorithme qui calcule la somme de deux matrices : Algorithme somme_matrice Variables i,j,n,m : entier tableau A[n][m], B[n][m], C[n][m]: réel Début Pouri allant de 0 à n-1 Pourj allant de 0 à m-1 FinPour C[i][j] A[i][j]+B[i][j] FinPour Fin Procédure 97 SMI2-SM2

Exercice Que produit l algorithme suivant? Variables i, j, val : Entier; Tableau X[2][3] : Entier; Début val <-1 ; Pour i allant de 0 à 1 faire Pour j allant de 0 à 2 faire X[i][j] <-val ; val <-val + 1 ; fpour fpour Pour i allant de 0 à 1 faire Pour j allant de 0 à 2 faire Ecrire (X[i][j]) fpour fpour Fin

Tableaux : 2 problèmes classiques Recherche d un élément dans un tableau Recherche séquentielle Recherche dichotomique Tri d'un tableau Tri par sélection Tri rapide 99 SMI2-SM2

100 Recherche séquentielle Recherche de la valeur x dans un tableau T de N éléments : Variables i,emp: entier Trouvé : booléen i 0, Trouvé Faux TantQue((i < N) ET (Trouvé=Faux)) Si(T[i]=x) alors Trouvé Vrai SMI2-SM2 emp i+1 Sinon FinSi FinTantQue i i+1 SiTrouvé alors écrire("x appartient au tableau et se trouve à l emplacement", emp) Sinon écrire("x n'appartient pas au tableau") FinSi

Recherche dichotomique Dans le cas où le tableau est ordonné, on peut améliorer l'efficacité de la recherche en utilisant la méthode de recherche dichotomique Principe : diviser par 2 le nombre d'éléments dans lesquels on cherche la valeur x à chaque étape de la recherche. Pour cela on compare x avec T[milieu] : Si x < T[milieu], il suffit de chercher x dans la 1ère moitié du tableau entre (T[0] et T[milieu-1]) Si x > T[milieu], il suffit de chercher x dans la 2ème moitié du tableau entre (T[milieu+1] et T[N-1]) 101 SMI2-SM2

Recherche dichotomique : algorithme 102 inf 0, sup N-1, Trouvé Faux TantQue((inf <=sup) ET (Trouvé=Faux)) milieu (inf+sup)/2 Si(x=T[milieu]) alors FinSi FinTantQue SiTrouvé alors SMI2-SM2 Trouvé Vrai Sinon Si(x>T[milieu]) alors inf milieu+1 Sinon sup milieu-1 FinSi écrire("x appartient au tableau") Sinon FinSi écrire("x n'appartient pas au tableau")

Tri d'un tableau Le tri consiste à ordonner les éléments du tableau dans l ordre croissant ou décroissant Il existe plusieurs algorithmes connus pour trier les éléments d un tableau : Le tri par sélection Le tri par insertion Le tri rapide Nous verrons dans la suite l'algorithme de tri par sélection. Le tri sera effectué dans l'ordre croissant. (Les autres méthodes de tri voir TD) 103 SMI2-SM2

Tri par sélection Principe: à l'étape i, on sélectionne le plus petit élément parmi les (n- i +1) éléments du tableau les plus à droite. On l'échange ensuite avec l'élément i du tableau Exemple : soit le tableau suivant : 10 4 1 6 3 Étape 1: on cherche le plus petit parmi les 5 éléments du tableau. On l identifie en troisième position, et on l échange alors avec l élément 1 : 2 4 10 6 3 Étape 2: on cherche le plus petit élément, mais cette fois à partir du deuxième élément. On le trouve en dernière position, on l'échange avec le deuxième: 104 Étape 3: SMI2-SM2 2 3 10 6 4 2 3 4 7 10

Tri par sélection : algorithme Supposons que le tableau est noté T et sa taille N Pour i allant de 0 à N-2 FinPour indice_pluspetit i Pourj allant de i + 1 à N-1 Si T[j] <T[indice_pluspetit] alors indice_pluspetit j Finsi FinPour temp T[indice_pluspetit] T[indice_pluspetit] T[i] T[i] temp 105 SMI2-SM2

Algorigramme: Symbole et désignation 106 SMI2-SM2

Exemples