M1202 - Algorithmique et programmation Les bases du langage PHP J. Landré URCA 2016–2017 J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 1 / 34 Table des matières 1 2 3 Introduction Organisation Objectifs Quelques règles bien utiles Notion d’algorithme Algorithmes célèbres Un peu de cuisine J. Landré (URCA) 4 5 6 Algorithme du gâteau au yaourt Données Actions/instructions Structures de contrôle Un petit historique... Deux algorithmes simples avec Algobox PHP M1202 - Algorithmique et programmation 2016–2017 2 / 34 M1202 Algorithmique et programmation Organisation 4 cours magistraux (CM 1h30), 5 travaux dirigés (TD 1h30), 5 travaux pratiques (TP 1h30). Trois intervenants : J. Landré, A. Haraoubia, D. Thiroine. Deux (ou plus) évaluations : Une évaluation de TP (40% de la note finale), une évaluation écrite (60% de la note finale). J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 3 / 34 M1202 Algorithmique et programmation Organisation 4 cours magistraux (CM 1h30), 5 travaux dirigés (TD 1h30), 5 travaux pratiques (TP 1h30). Trois intervenants : J. Landré, A. Haraoubia, D. Thiroine. Deux (ou plus) évaluations : Une évaluation de TP (40% de la note finale), une évaluation écrite (60% de la note finale). J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 3 / 34 M1202 Algorithmique et programmation Organisation 4 cours magistraux (CM 1h30), 5 travaux dirigés (TD 1h30), 5 travaux pratiques (TP 1h30). Trois intervenants : J. Landré, A. Haraoubia, D. Thiroine. Deux (ou plus) évaluations : Une évaluation de TP (40% de la note finale), une évaluation écrite (60% de la note finale). J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 3 / 34 Objectifs Connaître : Les techniques de base de l’algorithmique, la notion de variable, la notion de type de donnée, le séquencement des instructions, les structures de contrôle. Être capable de : Lire un algorithme simple, comprendre son fonctionnement, donner son résultat, concevoir des algorithmes simples, écrire et traduire des algorithmes simples en PHP. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 4 / 34 Objectifs Connaître : Les techniques de base de l’algorithmique, la notion de variable, la notion de type de donnée, le séquencement des instructions, les structures de contrôle. Être capable de : Lire un algorithme simple, comprendre son fonctionnement, donner son résultat, concevoir des algorithmes simples, écrire et traduire des algorithmes simples en PHP. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 4 / 34 Pour en savoir plus Sources d’information : Wikipedia http://fr.wikipedia.org Comment ça marche ? - http://www.commentcamarche.net Tout sur PHP : http://www.php.net J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 5 / 34 Quelques règles bien utiles Travail attendu Lire le CM avant d’arriver en TD/TP Préparer les exercices de TD à l’avance Apprendre par coeur la syntaxe des instructions PHP En CM, TD et TP : Pas de téléphone, pas de musique (donc pas d’écouteurs) On ne parle pas, on chuchote – On fait le travail demandé J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 6 / 34 Algorithmes célèbres : Maths : Algorithme d’Euclide d’Alexandrie (325–265 av. J.-C.) : calcul du plus grand commun diviseur (P.G.C.D.) de deux nombres. Algorithme de Madhava de Sangamagrama (1350–1425) : calcul du nombre π par une série mathématique : π = 4. ∞ X (−1)k 2k + 1 k=0 Algorithme du simplexe de Georges Dantzig (1914–2005) : résolution de problèmes d’optimisation avec contraintes. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 7 / 34 Algorithmes célèbres : Informatique : Algorithme de tracé de segment de Bresenham : dessiner une ligne sur un espace discret à partir de coordonnées continues (dessin d’une ligne sur un écran d’ordinateur). Algorithme Lempel-Ziv-Welch (LZW) : compression de données utilisé dans le format zip. Algorithmes de tri (tri à bulle, tri fusion, tri rapide, …) : trier les éléments d’un tableau dans l’ordre croissant ou décroissant. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 8 / 34 Notion d’algorithme Définition (dictionnaire Larousse) : Algorithme : nom masculin (latin médiéval algorithmus, latinisation du nom d’un mathématicien de langue arabe, avec influence du grec arithmos, nombre) Ensemble de règles opératoires dont l’application permet de résoudre un problème énoncé au moyen d’un nombre fini d’opérations. Un algorithme peut être traduit, grâce à un langage de programmation, en un programme exécutable par un ordinateur. Problème : définition un peu ”lourde” et pas forcément claire. On va chercher à trouver des exemples d’algorithmes de la vie courante. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 9 / 34 Notion d’algorithme Définition (dictionnaire Larousse) : Algorithme : nom masculin (latin médiéval algorithmus, latinisation du nom d’un mathématicien de langue arabe, avec influence du grec arithmos, nombre) Ensemble de règles opératoires dont l’application permet de résoudre un problème énoncé au moyen d’un nombre fini d’opérations. Un algorithme peut être traduit, grâce à un langage de programmation, en un programme exécutable par un ordinateur. Problème : définition un peu ”lourde” et pas forcément claire. On va chercher à trouver des exemples d’algorithmes de la vie courante. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 9 / 34 Notion d’algorithme Définition (dictionnaire Larousse) : Algorithme : nom masculin (latin médiéval algorithmus, latinisation du nom d’un mathématicien de langue arabe, avec influence du grec arithmos, nombre) Ensemble de règles opératoires dont l’application permet de résoudre un problème énoncé au moyen d’un nombre fini d’opérations. Un algorithme peut être traduit, grâce à un langage de programmation, en un programme exécutable par un ordinateur. Problème : définition un peu ”lourde” et pas forcément claire. On va chercher à trouver des exemples d’algorithmes de la vie courante. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 9 / 34 Notion d’algorithme Définition (dictionnaire Larousse) : Algorithme : nom masculin (latin médiéval algorithmus, latinisation du nom d’un mathématicien de langue arabe, avec influence du grec arithmos, nombre) Ensemble de règles opératoires dont l’application permet de résoudre un problème énoncé au moyen d’un nombre fini d’opérations. Un algorithme peut être traduit, grâce à un langage de programmation, en un programme exécutable par un ordinateur. Problème : définition un peu ”lourde” et pas forcément claire. On va chercher à trouver des exemples d’algorithmes de la vie courante. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 9 / 34 Gâteau au yaourt (d’après marmiton.org) 15 min. de préparation et 30 min. de cuisson Ingrédients (pour 4 personnes) : 1/2 paquet de levure, 1 pot de yaourt (= 20 cl), 1/2 pot d’huile (= 10 cl), 2 pots de sucre, 3 pots de farine, 2 œufs, 1 zeste de citron Préparation de la recette : Mélanger tout simplement les ingrédients un à un, dans l’ordre ci-dessus. Verser la pâte dans un moule à gâteau. Puis, faire cuire à 180 degrés (thermostat 6) pendant 30 min. environ. Vérifier la cuisson avec la pointe d’un couteau, qui doit ressortir sèche. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 10 / 34 Gâteau au yaourt (d’après marmiton.org) 15 min. de préparation et 30 min. de cuisson Ingrédients (pour 4 personnes) : 1/2 paquet de levure, 1 pot de yaourt (= 20 cl), 1/2 pot d’huile (= 10 cl), 2 pots de sucre, 3 pots de farine, 2 œufs, 1 zeste de citron Préparation de la recette : Mélanger tout simplement les ingrédients un à un, dans l’ordre ci-dessus. Verser la pâte dans un moule à gâteau. Puis, faire cuire à 180 degrés (thermostat 6) pendant 30 min. environ jusqu’à ce que la pointe d’un couteau ressorte sèche du gâteau. LES DONNÉES J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 11 / 34 Gâteau au yaourt (d’après marmiton.org) 15 min. de préparation et 30 min. de cuisson Ingrédients (pour 4 personnes) : 1/2 paquet de levure, 1 pot de yaourt (= 20 cl), 1/2 pot d’huile (= 10 cl), 2 pots de sucre, 3 pots de farine, 2 œufs, 1 zeste de citron Préparation de la recette : Mélanger tout simplement les ingrédients un à un, dans l’ordre ci-dessus. Verser la pâte dans un moule à gâteau. Puis, faire cuire à 180 degrés (thermostat 6) pendant 30 min. environ jusqu’à ce que la pointe d’un couteau ressorte sèche du gâteau. LES ACTIONS J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 12 / 34 Gâteau au yaourt (d’après marmiton.org) 15 min. de préparation et 30 min. de cuisson Ingrédients (pour 4 personnes) : 1/2 paquet de levure, 1 pot de yaourt (= 20 cl), 1/2 pot d’huile (= 10 cl), 2 pots de sucre, 3 pots de farine, 2 œufs, 1 zeste de citron Préparation de la recette : Mélanger tout simplement les ingrédients un à un, dans l’ordre ci-dessus. Verser la pâte dans un moule à gâteau. Puis, faire cuire à 180 degrés (thermostat 6) pendant 30 min. environ jusqu’à ce que la pointe d’un couteau ressorte sèche du gâteau. LES STRUCTURES DE CONTRÔLE J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 13 / 34 Algorithme de cuisine Un algorithme est une recette de cuisine sur un ordinateur. Il contient : des données, des actions, des structures de contrôle. Il donne des résultats. Le but de l’algorithme est d’arriver au résultat en effectuant des actions sur les données soumises à des structures de contrôle. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 14 / 34 Algorithme de cuisine Un algorithme est une recette de cuisine sur un ordinateur. Il contient : des données, des actions, des structures de contrôle. Il donne des résultats. Le but de l’algorithme est d’arriver au résultat en effectuant des actions sur les données soumises à des structures de contrôle. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 14 / 34 Algorithme de cuisine Un algorithme est une recette de cuisine sur un ordinateur. Il contient : des données, des actions, des structures de contrôle. Il donne des résultats. Le but de l’algorithme est d’arriver au résultat en effectuant des actions sur les données soumises à des structures de contrôle. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 14 / 34 Algorithme de cuisine Un algorithme est une recette de cuisine sur un ordinateur. Il contient : des données, des actions, des structures de contrôle. Il donne des résultats. Le but de l’algorithme est d’arriver au résultat en effectuant des actions sur les données soumises à des structures de contrôle. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 14 / 34 Algorithme de cuisine Un algorithme est une recette de cuisine sur un ordinateur. Il contient : des données, des actions, des structures de contrôle. Il donne des résultats. Le but de l’algorithme est d’arriver au résultat en effectuant des actions sur les données soumises à des structures de contrôle. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 14 / 34 Algorithme de cuisine Un algorithme est une recette de cuisine sur un ordinateur. Il contient : des données, des actions, des structures de contrôle. Il donne des résultats. Le but de l’algorithme est d’arriver au résultat en effectuant des actions sur les données soumises à des structures de contrôle. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 14 / 34 Un autre exemple d’algorithme On peut suivre une notice de montage qui précise les actions à faire pour monter un meuble (correctement normalement). C’est un algorithme visuel, plus simple à lire que trois pages d’explications sans schéma. Figure 1 – Notice de montage d’une célèbre marque d’oeufs en chocolat pour les enfants. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 15 / 34 Un autre exemple d’algorithme On peut suivre une notice de montage qui précise les actions à faire pour monter un meuble (correctement normalement). C’est un algorithme visuel, plus simple à lire que trois pages d’explications sans schéma. Figure 2 – Notice de montage d’un meuble, c’est un algorithme visuel. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 16 / 34 Un autre exemple d’algorithme On peut suivre une notice de montage qui précise les actions à faire pour monter un meuble (correctement normalement). C’est un algorithme visuel, plus simple à lire que trois pages d’explications sans schéma. Figure 3 – Ce qui arrive quand on ne suit pas la notice (donc l’algorithme). J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 17 / 34 Historique Vers -250 : Le livre “Les éléments” d’Euclide d’Alexandrie pose les bases de l’arithmétique et de la géométrie Vers 820 : Travaux du mathématicien perse Al-Khuwarizmi (né vers 780 – mort vers 850) en mathématiques J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 18 / 34 Historique En 1833, Charles Babbage (1791–1871) et Ada Lovelace (1815–1852) inventent la machine analytique composée d’un moulin (unité de calcul), d’un magasin (mémoire) et d’un dispositif de contrôle. Cet ensemble était utilisé avec des cartes opérations, des cartes variables et des cartes nombres. mathématicien Al-Khuwarizmi, elle appelle algorithme le processus logique permettant l’exécution d’un programme. L’histoire retiendra que Ada Lovelace (née Augusta Ada King) fut l’inventeur de la programmation. En l’honneur du J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 19 / 34 Historique En 1854, Georges Boole introduit le calcul binaire qui structure la logique avec deux états 1/0, oui/non, vrai/faux. En 1934, Johannes Von Neumann définit l’architecture qui porte son nom et qui est à l’origine de l’ordinateur actuel. En 1936, Alan Türing définit la notion formelle d’algorithme et de complexité. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 20 / 34 Algobox 1 J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 21 / 34 Algobox 1 J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 22 / 34 Algobox 1 J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 23 / 34 Algobox 2 J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 24 / 34 Algobox 2 J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 25 / 34 Algobox 2 J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 26 / 34 C’est quoi PHP ? Langage de programmation Orienté web Côté serveur Créé en 1994 par Rasmus Lerdorf Personal HomePage / Hypertext PreProcessor Site officiel : http://www.php.net J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 27 / 34 Site officiel de PHP J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 28 / 34 Pourquoi apprendre PHP ? PHP est le langage de développement des CMS (Content Management System) les plus connus : J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 29 / 34 Pour quoi faire ? PHP permet : De générer des pages web dynamiques sur le serveur avant de les envoyer au client De traiter des formulaires HTML dynamiquement D’accéder aux bases de données d’un serveur De générer des documents HTML, PDF, Office, zip, images… J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 30 / 34 Comment ça marche PHP ? On va injecter un fichier source PHP dans le moteur PHP et on va récupérer un fichier à la sortie du moteur. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 31 / 34 Utiliser PHP Il existe trois manières d’utiliser PHP : En ligne de commandes (en local sur son ordinateur), pour tester un algorithme ou une fonctionnalité En local avec un serveur Web local (EasyPHP, WAMP, MAMP, LAMP...) A distance sur un serveur (pour accéder à une base de données...) J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 32 / 34 Logiciels nécessaires pour PHP Pour programmer avec PHP, il faut : Un éditeur de textes (notepad++, atom, SublimeText...), ne pas oublier d’encoder ses fichiers en utf-8 ! Un moteur PHP local (php.exe, php) ou distant (serveur web avec moteur PHP installé) Un client ftp (filezilla) J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 33 / 34 Premier programme en PHP Traditionnellement, on commence l’apprentissage d’un langage de programmation par le programme ’Hello World !’. Ce premier programme affiche simplement la chaîne de caractères ’Hello World !’ à l’écran. J. Landré (URCA) M1202 - Algorithmique et programmation 2016–2017 34 / 34