Cours n◦ 1- Algorithmes et premiers pas en C [email protected] Polytech’ UPMC 19 Septembre 2016 http://australe.upmc.fr (onglet EPU-C5-IGE Info Gen) (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 1 / 28 Plan du cours n◦ 1 1 Les algorithmes 2 La machine de Turing (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 2 / 28 1 2 Les algorithmes Introduction Construction d’un algorithme Structures de base d’un algorithme Tester un algorithme Exemples La machine de Turing (Polytech’ UPMC) “I believe I’ve isolated the algorithm for making friends.” Sheldon Cooper, in The Big Band Theory, Season 2, Episode 13 Cours n◦ 1 19 Septembre 2016 3 / 28 Pourquoi faire appel à des algorithmes ? Pour automatiser des tâches Exemples : Métier à tisser Méthode de calcul à la main d’une division Recette de cuisine ... (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 4 / 28 Qu’est-ce qu’un algorithme ? Définition Un algorithme est un ensemble ordonné d’instructions simples permettant de résoudre un problème. (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 5 / 28 Remarques Un algorithme nécessite : Des objets sur lesquels travailler, Un langage non ambigu, Des spécifications (description de l’algorithme). Il n’existe généralement pas un unique algorithme pour traiter un problème. (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 6 / 28 Historique 3ème siècle avant JC Livre VII des Eléments d’Euclide Détermination du plus grand diviseur commun entre deux nombres : PGCD(12,8)=4 8ème siècle après JC Al-Khawarizmi : Méthodes de résolution d’équations. Son nom est à l’origine du mot "algorithme". (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 7 / 28 1 2 Les algorithmes Introduction Construction d’un algorithme Structures de base d’un algorithme Tester un algorithme Exemples La machine de Turing (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 8 / 28 Construction d’un algorithme Pour chaque problème, il vous est demandé de définir clairement : Les éventuelles données d’entrée du problème en précisant leurs types et leur rôle, les éventuelles données de sortie du problème en précisant leurs types, les différentes instructions permettant d’obtenir les données de sorties à partir des données d’entrée. (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 9 / 28 Exemple Algorithme qui détermine le prix d’entrée dans un musée (les mineurs payent moitié prix) (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 10 / 28 Exemple Algorithme qui détermine le prix d’entrée dans un musée (les mineurs payent moitié prix) Données Données d’entrée : age (entier) {age du client} Données de sortie : tarif (décimal) {prix de l’entrée} (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 10 / 28 Exemple Algorithme qui détermine le prix d’entrée dans un musée (les mineurs payent moitié prix) Données Instructions Données d’entrée : age (entier) {age du client} Données de sortie : tarif (décimal) {prix de l’entrée} (Polytech’ UPMC) Cours n◦ 1 Si age < 18 Alors tarif ← 4 Sinon tarif ← 8 Fin Si Renvoyer tarif 19 Septembre 2016 10 / 28 1 2 Les algorithmes Introduction Construction d’un algorithme Structures de base d’un algorithme Tester un algorithme Exemples La machine de Turing (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 11 / 28 Instructions élémentaires Opérations arithmétiques de base (+, −, ×, /, mod, ...) Affectation de valeurs (ex : x ← 2) Afficher, lire Structures conditionnelles Structures répétitives (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 12 / 28 Structures conditionnelles 1/2 fausse condition Action F Si condition Alors Action V Sinon Action F Fin Si vraie Action V Un exemple Si age < 18 Alors tarif ← 4 Sinon tarif ← 8 Fin Si (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 13 / 28 Structures conditionnelles 2/2 condition Si condition Alors Action V Fin Si vraie Un exemple fausse Si age < 18 Alors Afficher "Réduction de 50%" Fin Si Action V (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 14 / 28 Structures à choix multiple Selon le cas Cas 1 : Action 1 Cas 2 : Action 2 ... Cas n : Action n Défaut : Action par défaut Fin Selon Selon le cas Cas 1 Action 1 Cas 2 Action 2 Un exemple Cas n Action n défaut Action par défaut (Polytech’ UPMC) Selon valeur de age 0..6 : tarif ← 0 7..18 : tarif ← 4 Défaut : tarif ← 8 Fin Selon Cours n◦ 1 19 Septembre 2016 15 / 28 Structures répétitives 1/2 Tant que condition Faire Actions Fin Tant que Répéter tant que condition fausse vraie Un exemple Actions (Polytech’ UPMC) Les actions peuvent ne pas être exécutées si la condition est fausse au départ. Tant que tickets>0 Faire vendre un ticket Fin Tant que Cours n◦ 1 19 Septembre 2016 16 / 28 Structures répétitives 2/2 Répéter Actions Tant que condition Actions vraie Les actions sont exécutées au moins une fois. Répéter tant que condition Un exemple Répéter vendre un ticket Tant que ticket>0 fausse (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 17 / 28 Structures itératives Pour i = 1 à n Faire Actions Fin Pour Répéter n fois Actions (Polytech’ UPMC) compteur>n On connaît le nombre d’itérations à l’avance. Un exemple Pour i = 1 à nbre_guide Faire Si place pour guide i>0 Alors Afficher "Il reste des places pour le guide i" Fin Si Fin Pour Cours n◦ 1 19 Septembre 2016 18 / 28 1 2 Les algorithmes Introduction Construction d’un algorithme Structures de base d’un algorithme Tester un algorithme Exemples La machine de Turing (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 19 / 28 Jeu d’essais Faire fonctionner l’algorithme avec des valeurs. Traiter tous les cas possibles. En particulier les cas pouvant nécessaiter à traitement spécifique. (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 20 / 28 Un exemple : Calcul de la valeur absolue d’un nombre Données Données d’entrée : X (entier) {nombre dont on veut calculer la valeur absolue} Données de sortie : Val_abs (entier) {valeur absolue de X} Instructions Si X ≥ 0 Alors Val_abs ← X Sinon Val_abs ← -X Fin Si Renvoyer Val_abs (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 21 / 28 Un exemple : Calcul de la valeur absolue d’un nombre Données Données d’entrée : X (entier) {nombre dont on veut calculer la valeur absolue} Données de sortie : Val_abs (entier) {valeur absolue de X} Instructions Si X ≥ 0 Alors Val_abs ← X Sinon Val_abs ← -X Fin Si Renvoyer Val_abs (Polytech’ UPMC) Jeu d’essais X ← un entier négatif X ← un entier positif X←0 Cours n◦ 1 19 Septembre 2016 21 / 28 1 2 Les algorithmes Introduction Construction d’un algorithme Structures de base d’un algorithme Tester un algorithme Exemples La machine de Turing (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 22 / 28 Exemple 1 Un colis est conforme si ses trois dimensions (L × l × h avec h ≤ l ≤ L) vérifient les conditions suivantes : Un rectangle de 10cm × 7cm doit pouvoir s’inscrire dans une face du colis, L + l + h ≤ 100 cm, L ≤ 60cm. Exercice Ecrire l’algorithme permettant de savoir si un colis est conforme ou non. (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 23 / 28 Exemple 2 Que fait cet algo ? Données d’entrée : X, tableau à 2 dimension de n×n réels, v, vecteur de n réels Données de sortie : s, vecteur de n réels Pour i variant de 1 à n Faire s(i) ← 0 Pour j variant de 1 à n Faire s(i) ← s(i) + X(i,j).v(j) Fin Pour Fin Pour Renvoyer s (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 24 / 28 1 Les algorithmes 2 La machine de Turing “A computer would deserve to be called intelligent if it could deceive a human into believing that it was human.” Alan Turing (1912-1954) (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 25 / 28 Un peu d’histoire... 1900 : Problèmes d’Hilbert (2ème problème : Est-ce que l’arithmétique est cohérente ?) 1931 : Gödel démontre que l’arithmétique est incomplète. Cela est lié au problème de la décision. 1936 : Introduction de la machine de Turing par Alan Turing à l’âge de 24 ans pour montrer que certais problèmes ne peuvent pas être résolus par un algorithme (c’est à dire par la machine de Turing). 1942 : Participation au décodage d’Enigma. 1946 : Création de l’ENIAC (Electronic Numerical Integrator and Computer). 1954 : Mort de Turing. (Polytech’ UPMC) Cours n◦ 1 19 Septembre 2016 26 / 28 Définition de la machine de Turing 1 Un ruban infini contenant des symboles. ... 0 1 1 0 0 0 0 0 ... e1 Ancien état (Polytech’ UPMC) Symbole lu Symbole écrit Cours n◦ 1 Mouvement Nouvel état 19 Septembre 2016 27 / 28 Définition de la machine de Turing 1 Un ruban infini contenant des symboles. 2 Un tête de lecture/écriture. ... 0 1 1 0 0 0 0 0 ... e1 Ancien état (Polytech’ UPMC) Symbole lu Symbole écrit Cours n◦ 1 Mouvement Nouvel état 19 Septembre 2016 27 / 28 Définition de la machine de Turing 1 Un ruban infini contenant des symboles. 2 Un tête de lecture/écriture. 3 Un registre d’état. ... 0 1 1 0 0 0 0 0 ... e1 Ancien état (Polytech’ UPMC) Symbole lu Symbole écrit Cours n◦ 1 Mouvement Nouvel état 19 Septembre 2016 27 / 28 Définition de la machine de Turing 1 Un ruban infini contenant des symboles. 2 Un tête de lecture/écriture. 3 Un registre d’état. 4 Une table d’actions. Ancien état (Polytech’ UPMC) Symbole lu ... 0 1 1 0 0 0 0 0 ... e1 Symbole écrit Cours n◦ 1 Mouvement Nouvel état 19 Septembre 2016 27 / 28 Définition de la machine de Turing 1 Un ruban infini contenant des symboles. 2 Un tête de lecture/écriture. 3 Un registre d’état. 4 Une table d’actions. 5 Un état et une position de départ sur le ruban. Ancien état (Polytech’ UPMC) Symbole lu ... 0 1 1 0 0 0 0 0 ... e1 Symbole écrit Cours n◦ 1 Mouvement Nouvel état 19 Septembre 2016 27 / 28 Fonctionnement d’une machine de Turing 1 La tête de lecture lit un symbole s. ... 0 0 0 0 0 0 0 0 ... e1 Ancien état e1 e2 e3 e4 e5 e1 e2 e3 e4 e5 (Polytech’ UPMC) Symbole lu 0 0 0 0 0 1 1 1 1 1 Symbole écrit 1 1 1 1 1 0 1 0 0 0 Cours n◦ 1 Mouvement D D D D G G G G G D Nouvel état e2 e3 e4 e5 e4 ARRET e1 e2 e3 e4 19 Septembre 2016 28 / 28 Fonctionnement d’une machine de Turing 1 La tête de lecture lit un symbole s. 2 En fonction de s et de son état, la tête écrit un symbole s0 ... 0 0 0 0 1 0 0 0 ... e1 Ancien état e1 e2 e3 e4 e5 e1 e2 e3 e4 e5 (Polytech’ UPMC) Symbole lu 0 0 0 0 0 1 1 1 1 1 Symbole écrit 1 1 1 1 1 0 1 0 0 0 Cours n◦ 1 Mouvement D D D D G G G G G D Nouvel état e2 e3 e4 e5 e4 ARRET e1 e2 e3 e4 19 Septembre 2016 28 / 28 Fonctionnement d’une machine de Turing 1 La tête de lecture lit un symbole s. 2 En fonction de s et de son état, la tête écrit un symbole s0 3 ... 0 0 0 0 1 (Polytech’ UPMC) Symbole lu 0 0 0 0 0 1 1 1 1 1 0 0 ... e1 En fonction de son état la tête se déplace d’un cran. Ancien état e1 e2 e3 e4 e5 e1 e2 e3 e4 e5 0 Symbole écrit 1 1 1 1 1 0 1 0 0 0 Cours n◦ 1 Mouvement D D D D G G G G G D Nouvel état e2 e3 e4 e5 e4 ARRET e1 e2 e3 e4 19 Septembre 2016 28 / 28 Fonctionnement d’une machine de Turing 1 La tête de lecture lit un symbole s. 2 En fonction de s et de son état, la tête écrit un symbole s0 3 En fonction de son état la tête se déplace d’un cran. 4 La machine change d’état. Ancien état e1 e2 e3 e4 e5 e1 e2 e3 e4 e5 (Polytech’ UPMC) Symbole lu 0 0 0 0 0 1 1 1 1 1 ... 0 0 0 0 1 0 0 0 ... e2 Symbole écrit 1 1 1 1 1 0 1 0 0 0 Cours n◦ 1 Mouvement D D D D G G G G G D Nouvel état e2 e3 e4 e5 e4 ARRET e1 e2 e3 e4 19 Septembre 2016 28 / 28