L3 EG & SEGE 2015-2016 - Déroulement réel des cours

La « pensée » du lundi 20 novembre 2017, 23h55m02s :
Quand j'écoute trop Wagner, j'ai envie d'envahir la Pologne.
  -- Woody Allen

Semaine du lendi 18 janbier 2016 : TD n°1 (Cumul=3h)

Avant-propos HTML5
  • En-tête d'une page HTML5
    Pour passer les tests du W3C une page doit avoir la structure suivante :
    <!DOCTYPE html>
    <html>
      <head lang="fr">
        <meta charset="utf-8">
        <title>Un titre si possible intelligent...</title>
      </head>
      <body>
        ....
        ....
      </body>
    </html>
    
    À comparer avec celui nécessaire pour xHTML visible dans la section 2.5 du poly.
    Contrairement à xHTML, l'utilisation des majuscules & minuscules n'est pas différenciée en HTML5.
  • Quelques balises de base (dans leur version la plus simple) valables dans toutes les versions de (x)HTML(5): <h1>, <h2>, etc., <p>, <ul>, <ol>, <li>, <span>, <div> (section 2.6 du poly).
  • Application directe
    Réalisez les trois pages site01x.html, site02x.html et site03x.html, en adaptant à votre situation. Vos pages doivent absolument passer avec succès les tests du W3C. Vous ne vous occuperez bien entendu pas du tout de la présentation : ce sera fait avec l'étude des CSS.
    Remarque : Si vous voulez les modifier en y intégrant vos propres loisirs, réels ou inventés, vous pourrez trouver les noms d'un grand nombre de collections sur les pages http://www.vignobletiquette.com/collec/nom_coll.htm, http://capsules.musa.free.fr/Collections05.html, ou http://christophe.giordani.free.fr/collections.htm.
    Sur les machines des salles pédagogiques, vous enregistrez vos pages sous votre répertoire www et vous les visualisez dans le navigateur à l'adresse
    http://hebergement-peda.univ-lille3.fr/~votreLogin/chemin
    chemin est le chemin relatif vers votre page depuis www
  • Suite...
    Sur la première page, les mots « Licence MIASHS » (ou ce par quoi vous les aurez remplacés) devront être un lien vers une page institutionnelle de votre choix, en rapport avec votre licence (la page de l'université, cette page-ci, la page de l'UFR MIME, etc.), tandis que les mots « Machin Chose » (ou ce que vous aurez mis à la place) devront être un lien vers la page d'accueil que votre voisin est en train de réaliser en même temps que vous.
Dernière modification : 25/8/2016

Semaine du lendi 25 janbier 2016 : TD n°2 (Cumul=6h)

Le contrôle n°1 aura lieu le lundi 7 mars, dans les conditions suivantes :
  • sur feuille,
  • tous documents PAPIER autorisés,
  • aucun document électronique (liseuse, tablette, ordinateur, téléphone, etc.).
Fin de l'exercice précédent
  • Sur la première page, les mots « Licence MIASHS » (ou ce par quoi vous les aurez remplacés) devront être un lien vers une page institutionnelle de votre choix, en rapport avec votre licence (la page de l'université, cette page-ci, la page de l'UFR MIME, etc.), tandis que les mots « Machin Chose » (ou ce que vous aurez mis à la place) devront être un lien vers la page d'accueil que votre voisin est en train de réaliser en même temps que vous.
Acid Test :
Si vous ne comprenez pas pourquoi les informaticiens vous cassent la tête en essayant de vous expliquer qu'Internet Explorer c'est vraiment pas bon, utilisez l'Acid Test, pour tester la compatibilité de votre navigateur avec les standards du W3C (l'organisme mondial chargé d'élaborer et de gérer les standards du web) : Gestion des couleurs en HTML et CSS CSS Exercice
Dernière modification : 25/8/2016

Semaine du lendi 1 fébrier 2016 : TD n°3 (Cumul=9h)

Rappel : le contrôle n°1 aura lieu le lundi 7 mars, dans les conditions suivantes :
  • sur feuille,
  • tous documents PAPIER autorisés,
  • aucun document électronique (liseuse, tablette, ordinateur, téléphone, etc.).
CSS Exercice Compléments CSS
  • Signature
    http://mammouthland.free.fr/cours/css/cours5.php
  • Feuilles de style différentes pour l'écran et l'impression
    Deux solutions :
    • Deux fichiers (ou plus) différents, et mettre dans l'en-tête de la page :
      <link rel="stylesheet" href="fichierCSSgénérale" media="all" />
      <link rel="stylesheet" href="fichierCSSécran" media="screen" />
      <link rel="stylesheet" href="fichierCSSimprimante" media="print" />
    • Un seul fichier et le structurer ainsi :
      @media all {
      /* Ce qui concerne tous les medias */
      }
      @media print {
      /* Ce qui concerne uniquement l'impression */
      }
      @media screen {
      /* Ce qui concerne uniquement l'écran */
      }
  • Propriétés des liens
    a:link { /* pour les liens sans particularités */ }
    a:visited { /* pour les liens déjà visités */ }
    a:hover { /* pour les liens survolés par le pointeur de la souris */ }
    a:visited:hover { /* pour les liens déjà visités, survolés par le pointeur de la souris */ }
    a:active { /* au moment du clic */ }
    Rappel : hover existe pour n'importe quelle balise.)
  • La propriété display
    Trois valeurs particulières (mais il y en a d'autres) : none, block, et inline.
    Vous pouvez tester ici.
Bonus
  • Les bugs d'Internet Explorer, les contourner, les utiliser : voir le chapitre 14 du poly.
Dernière modification : 25/8/2016

Semaine du lendi 8 fébrier 2016 : TD n°4 (Cumul=12h)

HTML5
  • Nouveautés en HTML5 : nous nous concentrerons sur les nouvelles balises qui apportent de la sémantique au texte. Vous pourrez comprendre la philosophie derrière HTML5 en vous polongeant dans le livre Dive into HTML5 : http://diveintohtml5.info/. (Voir la page https://fr.wikipedia.org/wiki/HTML5 pour une simple liste de toutes les nouveautés.)
    • main : Définit le contenu principal de la page, il doit être unique dans la page.
    • section : Section générique regroupant un même sujet, une même fonctionnalité, de préférence avec un en-tête, ou bien section d'application web.
    • nav : Section possédant des liens de navigation principaux (au sein du document ou vers d'autres pages).
    • article : Section de contenu indépendante, pouvant être extraite individuellement du document ou syndiquée (flux RSS ou équivalent), sans pénaliser sa compréhension.
    • aside : Section dont le contenu est un complément par rapport à ce qui l'entoure, qui n'est pas forcément en lien direct avec le contenu mais qui peut apporter des informations supplémentaires.
    • hgroup : La balise <hgroup> n'existe plus en HTML5 (février 2013). Eh oui, ce sont des choses qui arrivent quand on travaille sur un truc pas entièrement finalisé.
    • mark : Définit un texte marqué. Surligneur de texte.
    • header : Section d'introduction d'un article, d'une autre section ou du document entier (en-tête de page).
    • footer : Section de conclusion d'une section ou d'un article, voire du document entier (pied de page).

    Vous trouverez sur le web de nombreuses images illustrant l'utilisation de ces balises, comme par exemple celle-ci qui provient de Alsacréation :

    Imbrication des balises de base en HTML5

    Inconvénients : Ces balises ne sont pas forcément compatibles avec tous les navigateurs... En particulier les anciens, et en particulier toutes les anciennes versions de IE jusqu'à IE8 compris. Visitez http://html5test.com/ pour connaître le niveau de compatibilité de votre navigateur.

  • Compatibilité : comme dit précédemment, les balises HTML5 ne sont pas forcément compatibles avec tous les navigateurs, et en particulier toutes les anciennes versions de IE.

    Les navigateurs autres que IE se contentent d'ignorer les balises qu'ils ne connaissent pas. Votre page ne sera pas présentée selon vos souhaits, mais le contenu sera là quand même.
    IE, lui, ignore le texte qui se trouvent dans de telles balises... Votre page risque d'être intégralement vide... Gênant...

    Pour vous protéger, vous pouvez placer les fichiers html5shiv.js et html5shiv-printshiv.js dans votre répertoire, et ajouter le code suivant dans vos pages web, juste avant </head> :

          <!--[if lt IE 9]>
             <script src="html5shiv.js"></script>
             <script src="html5shiv-printshiv.js"></script>
          <![endif]-->        
      
Réglages de Web Developer
  • Vérifiez que votre version de Web Developer est bien réglée : dans le menu Outils cliquez sur réglez les outils, et vérifier que le standard choisi est bien CSS3 (voir capture d'écran ci-dessous).
    Si ce n'est pas le cas, Web Developer trouvera des « fausses » erreurs dans les exemples de l'exercice suivant, ainsi que dans votre travail.... régler Web Developer pour CSS3
Exercice d'application
  • Réalisez ce site: Les girafes.
    Ce n'est pas forcément un modèle à essayer de reproduire aveuglément, mais plutôt un exemple destiné à vous donner des idées et vous montrer quelques possibilités des CSS. Vous pouvez utiliser vos propres idées.
  • Vous pouvez ensuite améliorer votre travail grâce à un menu déroulant, comme dans cette version-ci.
  • Ajoutez une feuille de style pour l'impression, de façon à ce que les articles (les pages) s'impriment correctement et sobrement, sans les menus et autres décorations.
Dernière modification : 25/8/2016

Semaine du lendi 22 fébrier 2016 : TD n°5 (Cumul=15h)

Rappel : Le contrôle n°1 aura lieu le lundi 7 mars, dans les conditions suivantes :
  • sur feuille,
  • tous documents PAPIER autorisés,
  • aucun document électronique (liseuse, tablette, ordinateur, téléphone, etc.).
Finir l'exercice
  • Réalisez ce site: Les girafes.
    Ce n'est pas forcément un modèle à essayer de reproduire aveuglément, mais plutôt un exemple destiné à vous donner des idées et vous montrer quelques possibilités des CSS. Vous pouvez utiliser vos propres idées.
  • Vous pouvez ensuite améliorer votre travail grâce à un menu déroulant, comme dans cette version-ci.
  • Ajoutez une feuille de style pour l'impression, de façon à ce que les articles (les pages) s'impriment correctement et sobrement, sans les menus et autres décorations.
PHP :
Dernière modification : 25/8/2016

Semaine du lendi 29 fébrier 2016 : TD n°6 (Cumul=18h)

PHP, généralités

Introduction à l'écriture de vos premiers programmes PHP

Une grande part de ce qui suit est librement inspirée de l'excellent cours « Apprendre à programmer avec Python 3 » de Gérard Swinnen.

Sauvegarder et éditer un programme.

Vous écrirez vos programmes avec l'éditeur de texte de votre choix. Vous les enregistrerez dans votre répertoire www (ce n'est pas complétement nécessaire pour les premiers essais, mais ce sera indispensable très vite : alors autant prendre tout de suite de bonnes habitudes). L'extension à utiliser est « .php ».

La première ligne du fichier sera « <?php ». La dernière ligne du fichier sera « ?> ».

Exécuter un programme

Pour l'instant nous ferons tourner nos programmes en ligne de commande : se rendre dans le répertoire www et lancer la commande « php fichier ».

Calculs de base

Recopier les programmes suivants et comprendre les résultats obtenus :

Signalons au passage la disponibilité de l’opérateur modulo, représenté par le caractère « % ». Cet opérateur fournit le reste de la division entière d’un nombre par un autre. Essayez par exemple un programme qui contienne echo 10 % 3 ; ou echo 10 % 5 ;.

Cet opérateur vous sera très utile plus loin, notamment pour tester si un nombre a est divisible par un nombre b. Il suffira en effet de vérifier que a % b donne un résultat égal à zéro.

Chaînes ou nombres ?

Variables, affectation, utilisation

L’essentiel du travail effectué par un programme d’ordinateur consiste à manipuler des données. Ces données peuvent être très diverses (tout ce qui est numérisable, en fait), mais dans la mémoire de l’ordinateur elles se ramènent toujours en définitive à une suite finie de nombres binaires.

Pour pouvoir accéder aux données, le programme d’ordinateur (quel que soit le langage dans lequel il est écrit) fait abondamment usage d’un grand nombre de variables de différents types.

Une variable apparaît dans un langage de programmation sous un nom de variable à peu près quelconque (voir ci-après), mais pour l’ordinateur il s’agit d’une référence désignant une adresse mémoire, c’est-à-dire un emplacement précis dans la mémoire vive.

À cet emplacement est stockée une valeur bien déterminée. C’est la donnée proprement dite, qui est donc stockée sous la forme d’une suite de nombres binaires, mais qui n’est pas nécessairement un nombre aux yeux du langage de programmation utilisé. Cela peut être en fait à peu près n’importe quel « objet » susceptible d’être placé dans la mémoire d’un ordinateur, par exemple : un nombre entier, un nombre réel, un nombre complexe, un vecteur, une chaîne de caractères typographiques, un tableau, une fonction, etc.

En PHP les noms des variables doivent obligatoirement commencer par le symbole « $ », suivi d'une lettre ou du symbole « _ », puis d'une suite de lettres, de chiffres ou du symbole « _ ».

Nous pouvons définir une variable et lui affecter une valeur. Les termes « affecter une valeur » ou « assigner une valeur » à une variable sont équivalents. Ils désignent l’opération par laquelle on établit un lien entre le nom de la variable et sa valeur (son contenu).

En PHP comme dans de nombreux autres langages, l’opération d’affectation est représentée par le signe « = ».

Pour utiliser la valeur d'une variable il suffit de l'appeler par son nom.

Exemple :

algo11.php
[cacher les numéros de lignes]
  1. <?php
  2.    $a = 9 ;
  3.    $marcel = 18 + 9 ;
  4.    echo $marcel ;
  5.    echo " ";
  6.    $xyz = $a * 6 ;
  7.    echo $xyz ;
  8. ?>
  9.  

Informations supplémentaires sur les chaînes de caractères

Voir le chapitre 8 du polycopié.

Introduction à l'algorithmique : la séquence

Sauf mention explicite, les instructions d’un programme s’exécutent les unes après les autres, dans l’ordre où elles ont été écrites à l’intérieur du script.

Cette affirmation peut vous paraître banale et évidente à première vue. L’expérience montre cependant qu’un grand nombre d’erreurs sémantiques dans les programmes d’ordinateur sont la conséquence d’une mauvaise disposition des instructions. Plus vous progresserez dans l’art de la programmation, plus vous vous rendrez compte qu’il faut être extrêmement attentif à l’ordre dans lequel vous placez vos instructions les unes derrière les autres. Par exemple, les deux programmes suivants, qui ne différent que par l'ordre des 4e et 5e lignes, produisent des résultats différents :

algo12.php
[cacher les numéros de lignes]
  1. <?php
  2. $a = 3 ;
  3. $b = 7 ;
  4. $a = $b ;
  5. $b = $a ;
  6. echo $a, " ", $b, "\n" ;
  7. ?>
  8.  
algo13.php
[cacher les numéros de lignes]
  1. <?php
  2. $a = 3 ;
  3. $b = 7 ;
  4. $b = $a ;
  5. $a = $b ;
  6. echo $a, " ", $b, "\n" ;
  7. ?>
  8.  

PHP exécute normalement les instructions de la première à la dernière, sauf lorsqu’il rencontre une instruction conditionnelle comme l’instruction if décrite ci-après (ainsi que les instructions while ou for que nous verrons plus loin). Une telle instruction va permettre au programme de suivre différents chemins suivant les circonstances.

Contrôle du flux d'instruction : l'alternative (if)

Si nous voulons pouvoir écrire des applications véritablement utiles, il nous faut des techniques permettant d’aiguiller le déroulement du programme dans différentes directions, en fonction des circonstances rencontrées. Pour ce faire, nous devons disposer d’instructions capables de tester une certaine condition et de modifier le comportement du programme en conséquence.

La plus simple de ces instructions conditionnelles est l’instruction if. Pour expérimenter son fonctionnement, essayez les deux programmes suivants :

algo14.php
[cacher les numéros de lignes]
  1. <?php
  2.    $a = 150 ;
  3.    if ($a > 100) {
  4.      echo "a dépasse la centaine" ;
  5.    }
  6. ?>
  7.  
algo15.php
[cacher les numéros de lignes]
  1. <?php
  2.    $a = 20 ;
  3.    if ($a > 100) {
  4.      echo "a dépasse la centaine" ;
  5.    }
  6. ?>
  7.  

L’expression que vous avez placée entre parenthèses après if est ce que nous appellerons désormais une condition. L’instruction if permet de tester la validité de cette condition. Si la condition est vraie, alors l’instruction qui se trouve entre les accolades est exécutée. Si la condition est fausse, rien ne se passe. Notez que les parenthèses utilisées ici avec l’instruction if sont obligatoires.

Essayez maintenant ce programme :

algo16.php
[cacher les numéros de lignes]
  1. <?php
  2.    $a = 20 ;
  3.    if ($a > 100) {
  4.      echo "a dépasse la centaine" ;
  5.    } else {
  6.      echo "a ne dépasse pas cent" ;
  7.    }
  8. ?>
  9.  

Comme vous l’aurez certainement déjà compris, l’instruction else (« sinon », en anglais) permet de programmer une exécution alternative, dans laquelle le programme doit choisir entre deux possibilités. On peut faire mieux encore en utilisant aussi l’instruction elseif :

algo17.php
[cacher les numéros de lignes]
  1. <?php
  2.   $a = 0 ;
  3.   if ($a > 0) {
  4.     echo "a est positif" ;
  5.   } elseif ($a < 0) {
  6.     echo "a est négatif" ;
  7.   } else {
  8.     echo "a est nul" ;
  9.   }
  10. ?>

Opérateurs de comparaison

La condition évaluée après l’instruction if peut contenir les opérateurs de comparaison suivants :
x == y x est égal à y
x != y x est différent de y
x > y x est plus grand que y
x < y x est plus petit que y
x >= y x est plus grand que, ou égal à y
x <= y x est plus petit que, ou égal à y

Exemple :

algo18.php
[cacher les numéros de lignes]
  1. <?php
  2.    $a = 7 ;
  3.    if ($a % 2 == 0) {
  4.      echo "a est pair\n" ;
  5.      echo "parce que le reste de sa division par 2 est nul" ;
  6.    } else {
  7.      echo "a est impair" ;
  8.    }
  9. ?>
  10.  

Notez bien que l’opérateur de comparaison pour l’égalité de deux valeurs est constitué de deux signes « égale » et non d’un seul. Le signe « égale » utilisé seul est un opérateur d’affectation, et non un opérateur de comparaison. Vous retrouverez le même symbolisme en C, C++, Python, Java, Javascript, etc.

Exercices

  1. Écrivez un programme qui calcule le volume d’un parallélépipède rectangle dont sont fournis au départ la largeur, la hauteur et la profondeur.
    algo19.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     Volume d’un parallélépipède rectangle dont sont fournis au départ
    4.     la largeur, la hauteur et la profondeur.
    5.   */
    6.   $largeur = 7 ;
    7.   $hauteur = 10 ;
    8.   $profondeur = 5 ;
    9.   $volume = $largeur * $hauteur * $profondeur ;
    10.   echo "Le volume du parallélépidède est ", $volume ;
    11. ?>
    12.  
  2. Écrivez un programme qui convertisse en degrés Celsius une température exprimée au départ en degrés Fahrenheit, ou l’inverse.
    La formule de conversion est : TF = TC × 1,8 + 32.
    algo20.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     Convertir en degrés Fahrenheit une température exprimée au départ
    4.     en degrés Celsius.
    5.     La formule de conversion est : TF = TC*1,8+32
    6.   */
    7.   $celsius = 100 ;
    8.   $fahrenheit = $celsius*1.8 + 32 ;
    9.   echo $celsius,"°C = ",$fahrenheit,"°F" ;
    10. ?>
    11.  
  3. Un permis de chasse à points remplace désormais le permis de chasse traditionnel.
    Chaque chasseur possède au départ un capital de 100 points. S'il tue une poule il perd 1 point, 3 points pour un chien, 5 points pour une vache et 10 points s'il tue son meilleur ami.
    Le permis coûte 150 euros.
    Écrire un programe dans lequel sont données les nombres de victimes du chasseur, et qui calcule le prix à payer pour les permis supplémentaires nécessaires.
    algo21.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     Le permis de chasse a au départ un capital de 12 points. Une
    4.     poule coûte 1 point, 3 points pour un chien, 5 points pour une
    5.     vache et 10 points pour son meilleur ami. Le permis coûte 150
    6.     euros. Les nombres de victimes sont donnés, calculer le prix à
    7.     payer.
    8.   */
    9.   $poules = 3 ;
    10.   $chiens = 2 ;
    11.   $vaches = 1 ;
    12.   $amis = 2 ;
    13.   $pointsperdus = $poules*1 + $chiens*3 + $vaches*5 + $amis*10 ;
    14.   $nbpermis = floor($pointsperdus/12) ;
    15.   echo "\nEn ayant tué ", $poules, " poules, ", $chiens ;
    16.   echo " chiens, ",$vaches," vaches et ",$amis, " amis, " ;
    17.   echo "vous avez perdu ", $pointsperdus, " points.\n" ;
    18.   echo "Vous devez racheter ", $nbpermis, " permis, " ;
    19.   echo "ce qui va vous coûter ", $nbpermis*150, " euros.\n\n" ;
    20. ?>
    21.  
Dernière modification : 25/8/2016

Semaine du lendi 7 môrs 2016 : TD n°7 (Cumul=21h)

Contrôle n°1

La correction est .

Exercices

  1. Écrivez un programme qui calcule le volume d’un parallélépipède rectangle dont sont fournis au départ la largeur, la hauteur et la profondeur.
    algo19.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     Volume d’un parallélépipède rectangle dont sont fournis au départ
    4.     la largeur, la hauteur et la profondeur.
    5.   */
    6.   $largeur = 7 ;
    7.   $hauteur = 10 ;
    8.   $profondeur = 5 ;
    9.   $volume = $largeur * $hauteur * $profondeur ;
    10.   echo "Le volume du parallélépidède est ", $volume ;
    11. ?>
    12.  
  2. Écrivez un programme qui convertisse en degrés Celsius une température exprimée au départ en degrés Fahrenheit, ou l’inverse.
    La formule de conversion est : TF = TC × 1,8 + 32.
    algo20.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     Convertir en degrés Fahrenheit une température exprimée au départ
    4.     en degrés Celsius.
    5.     La formule de conversion est : TF = TC*1,8+32
    6.   */
    7.   $celsius = 100 ;
    8.   $fahrenheit = $celsius*1.8 + 32 ;
    9.   echo $celsius,"°C = ",$fahrenheit,"°F" ;
    10. ?>
    11.  
  3. Un permis de chasse à points remplace désormais le permis de chasse traditionnel.
    Chaque chasseur possède au départ un capital de 100 points. S'il tue une poule il perd 1 point, 3 points pour un chien, 5 points pour une vache et 10 points s'il tue son meilleur ami.
    Le permis coûte 150 euros.
    Écrire un programe dans lequel sont données les nombres de victimes du chasseur, et qui calcule le prix à payer pour les permis supplémentaires nécessaires.
    algo21.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     Le permis de chasse a au départ un capital de 12 points. Une
    4.     poule coûte 1 point, 3 points pour un chien, 5 points pour une
    5.     vache et 10 points pour son meilleur ami. Le permis coûte 150
    6.     euros. Les nombres de victimes sont donnés, calculer le prix à
    7.     payer.
    8.   */
    9.   $poules = 3 ;
    10.   $chiens = 2 ;
    11.   $vaches = 1 ;
    12.   $amis = 2 ;
    13.   $pointsperdus = $poules*1 + $chiens*3 + $vaches*5 + $amis*10 ;
    14.   $nbpermis = floor($pointsperdus/12) ;
    15.   echo "\nEn ayant tué ", $poules, " poules, ", $chiens ;
    16.   echo " chiens, ",$vaches," vaches et ",$amis, " amis, " ;
    17.   echo "vous avez perdu ", $pointsperdus, " points.\n" ;
    18.   echo "Vous devez racheter ", $nbpermis, " permis, " ;
    19.   echo "ce qui va vous coûter ", $nbpermis*150, " euros.\n\n" ;
    20. ?>
    21.  

Contrôle du flux d'instruction : l'alternative (if)

Si nous voulons pouvoir écrire des applications véritablement utiles, il nous faut des techniques permettant d’aiguiller le déroulement du programme dans différentes directions, en fonction des circonstances rencontrées. Pour ce faire, nous devons disposer d’instructions capables de tester une certaine condition et de modifier le comportement du programme en conséquence.

La plus simple de ces instructions conditionnelles est l’instruction if. Pour expérimenter son fonctionnement, essayez les deux programmes suivants :

algo14.php
[cacher les numéros de lignes]
  1. <?php
  2.    $a = 150 ;
  3.    if ($a > 100) {
  4.      echo "a dépasse la centaine" ;
  5.    }
  6. ?>
  7.  
algo15.php
[cacher les numéros de lignes]
  1. <?php
  2.    $a = 20 ;
  3.    if ($a > 100) {
  4.      echo "a dépasse la centaine" ;
  5.    }
  6. ?>
  7.  

L’expression que vous avez placée entre parenthèses après if est ce que nous appellerons désormais une condition. L’instruction if permet de tester la validité de cette condition. Si la condition est vraie, alors l’instruction qui se trouve entre les accolades est exécutée. Si la condition est fausse, rien ne se passe. Notez que les parenthèses utilisées ici avec l’instruction if sont obligatoires.

Essayez maintenant ce programme :

algo16.php
[cacher les numéros de lignes]
  1. <?php
  2.    $a = 20 ;
  3.    if ($a > 100) {
  4.      echo "a dépasse la centaine" ;
  5.    } else {
  6.      echo "a ne dépasse pas cent" ;
  7.    }
  8. ?>
  9.  

Comme vous l’aurez certainement déjà compris, l’instruction else (« sinon », en anglais) permet de programmer une exécution alternative, dans laquelle le programme doit choisir entre deux possibilités. On peut faire mieux encore en utilisant aussi l’instruction elseif :

algo17.php
[cacher les numéros de lignes]
  1. <?php
  2.   $a = 0 ;
  3.   if ($a > 0) {
  4.     echo "a est positif" ;
  5.   } elseif ($a < 0) {
  6.     echo "a est négatif" ;
  7.   } else {
  8.     echo "a est nul" ;
  9.   }
  10. ?>

Opérateurs de comparaison

La condition évaluée après l’instruction if peut contenir les opérateurs de comparaison suivants :
x == y x est égal à y
x != y x est différent de y
x > y x est plus grand que y
x < y x est plus petit que y
x >= y x est plus grand que, ou égal à y
x <= y x est plus petit que, ou égal à y

Exemple :

algo18.php
[cacher les numéros de lignes]
  1. <?php
  2.    $a = 7 ;
  3.    if ($a % 2 == 0) {
  4.      echo "a est pair\n" ;
  5.      echo "parce que le reste de sa division par 2 est nul" ;
  6.    } else {
  7.      echo "a est impair" ;
  8.    }
  9. ?>
  10.  

Notez bien que l’opérateur de comparaison pour l’égalité de deux valeurs est constitué de deux signes « égale » et non d’un seul. Le signe « égale » utilisé seul est un opérateur d’affectation, et non un opérateur de comparaison. Vous retrouverez le même symbolisme en C, C++, Python, Java, Javascript, etc.

Instructions répétitives

L’une des tâches que les machines font le mieux est la répétition sans erreur de tâches identiques. Il existe bien des méthodes pour programmer ces tâches répétitives. Nous allons commencer par l’une des plus fondamentales : la boucle de répétition construite autour de l’instruction while.

Réaffectation

Nous ne l’avions pas encore signalé explicitement : il est permis de ré-affecter une nouvelle valeur à une même variable, autant de fois qu’on le souhaite. L’effet d’une ré-affectation est de remplacer l’ancienne valeur d’une variable par une nouvelle.

algo22.php
[cacher les numéros de lignes]
  1. <?php
  2.   $altitude = 320 ;
  3.   echo $altitude, "\n" ;
  4.   $altitude = 375 ;
  5.   echo $altitude, "\n" ;
  6. ?>
  7.  

Exercice

Écrire un programme qui échange le contenu de deux variables.
algo23.php
[cacher les numéros de lignes]
  1. <?php
  2.   $a = 3 ;
  3.   $b = 7 ;
  4.   echo "Avant : a=",$a," b=",$b,"\n";
  5.   $c = $a ;
  6.   $a = $b ;
  7.   $b = $c ;
  8.   echo "Après : a=",$a," b=",$b,"\n";
  9. ?>
  10.  

Répétitions en boucle – L’instruction while

En programmation, on appelle boucle un système d’instructions qui permet de répéter un certain nombre de fois (voire indéfiniment) toute une série d’opérations.

Testez le programme suivant. Que se passe-t-il ?

algo24.php
[cacher les numéros de lignes]
  1. <?php
  2.   $a = 0 ;
  3.   while ($a < 7) {
  4.     $a = $a + 1 ;
  5.     echo $a, "\n" ;
  6.   }
  7. ?>
  8.  

Le mot while signifie « tant que » en anglais. Cette instruction utilisée à la seconde ligne indique à Python qu’il lui faut répéter continuellement le bloc d’instructions qui suit, tant que le contenu de la variable a reste inférieur à 7.

Nous avons ainsi construit notre première boucle de programmation, laquelle répète un certain nombre de fois le bloc d’instructions entre accolades. Voici comment cela fonctionne :

  • Avec l’instruction while, PHP commence par évaluer la validité de la condition fournie entre parenthèses (elles sont obigatoires).
  • Si la condition se révèle fausse, alors tout le bloc qui suit est ignoré et l’exécution du programme se termine.
  • Si la condition est vraie, alors PHP exécute tout le bloc d’instructions constituant le corps de la boucle, c’est-à-dire :
    • l’instruction $a = $a + 1 ; qui incrémente d’une unité le contenu de la variable $a (ce qui signifie que l’on affecte à la variable a une nouvelle valeur, qui est égale à la valeur précédente augmentée d’une unité).
    • l’appel de la fonction echo pour afficher la valeur courante de la variable $a.
  • lorsque ces deux instructions ont été exécutées, nous avons assisté à une première itération, et le programme boucle, c’est-à-dire que l’exécution reprend à la ligne contenant l’instruction while.
    La condition qui s’y trouve est à nouveau évaluée, et ainsi de suite.
    Dans notre exemple, si la condition $a < 7 encore vraie, le corps de la boucle est exécuté une nouvelle fois et le bouclage se poursuit.

Remarques :

  • La variable évaluée dans la condition doit exister au préalable (il faut qu’on lui ait déjà affecté au moins une valeur).
  • Si la condition est fausse au départ, le corps de la boucle n’est jamais exécuté.
  • Si la condition reste toujours vraie, alors le corps de la boucle est répété indéfiniment (tout au moins tant que Python lui-même continue à fonctionner). Il faut donc veiller à ce que le corps de la boucle contienne au moins une instruction qui change la valeur d’une variable intervenant dans la condition évaluée par while, de manière à ce que cette condition puisse devenir fausse et la boucle se terminer.
    Exemple de boucle sans fin (à éviter !) :
    algo25.php
    [cacher les numéros de lignes]
    1. <?php
    2.   $a = 3 ;
    3.   while ($a < 7) {
    4.     echo  "Bonjour.\n" ;
    5.   }
    6. ?>
    7.  

Exemples de programmes avec boucle

  • Tableau de la liste des doubles et des triples des nombres de 1 à 12.
    algo26.php
    [cacher les numéros de lignes]
    1. <?php
    2.   $a = 0 ;
    3.   while ($a < 12) {
    4.     $a = $a +1 ;
    5.     echo $a , "\t", $a*2 , "\t", $a*3, "\n" ;
    6.   }
    7. ?>
    8.  
  • Construction d’une suite mathématique : la suite de Fibonacci. Il s’agit d’une suite de nombres dont chaque terme est égal à la somme des deux termes qui le précèdent.
    algo27.php
    [cacher les numéros de lignes]
    1. <?php
    2.   $a = 1 ;
    3.   $b = 1 ;
    4.   $c = 1 ;
    5.   while ($c < 20) {
    6.     echo $b, " " ;
    7.     $d = $a ;
    8.     $a = $b ;
    9.     $b = $d+$b ;
    10.     $c = $c+1 ;
    11.   }
    12.   echo "\n";
    13. ?>
    14.  

Exercices

  1. Écrivez un programme qui affiche les 20 premiers termes de la table de multiplication par 7.
    algo28.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     Les 20 premiers termes de la table de multiplication par 7
    4.   */
    5.   $n = 1 ;
    6.   while ($n <= 20) {
    7.     echo 7*$n, "\n" ;
    8.     $n = $n+1 ;
    9.   }
    10. ?>
    11.  
  2. Écrivez un programme qui affiche une suite de 12 nombres dont chaque terme soit égal au triple du terme précédent.
    algo29.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     12 termes, chacun est égal au triple du précédent
    4.   */
    5.   $n = 1 ;
    6.   $terme = 7 ;
    7.   while ($n <= 12) {
    8.     echo $n," : ",$terme, "\n" ;
    9.     $terme = $terme*3 ;
    10.     $n = $n+1 ;
    11.   }
    12. ?>
    13.  
  3. Écrivez un programme qui affiche une table de conversion de sommes d’argent exprimées en euros, en dollars canadiens. La progression des sommes de la table sera « géométrique », comme dans l’exemple ci-dessous :
    1 euro(s) = 1.65 dollar(s)
    2 euro(s) = 3.3 dollar(s)
    4 euro(s) = 6.6 dollar(s)
    8 euro(s) = 13.2 dollar(s)

    etc. (S’arrêter à 16384 euros.)
    algo30.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     Les 20 premiers termes de la table de multiplication par 7
    4.   */
    5.   $euro = 1 ;
    6.   while ($euro <= 16384) {
    7.     echo $euro, " euro(s) = ", $euro*1.65, " dollar(s)\n" ;
    8.     $euro = $euro*2 ;
    9.   }
    10. ?>
    11.  
Dernière modification : 25/8/2016

Semaine du lendi 14 môrs 2016 : TD n°8 (Cumul=24h)

Exercices

  1. Écrivez un programme qui affiche les 20 premiers termes de la table de multiplication par 7.
    algo28.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     Les 20 premiers termes de la table de multiplication par 7
    4.   */
    5.   $n = 1 ;
    6.   while ($n <= 20) {
    7.     echo 7*$n, "\n" ;
    8.     $n = $n+1 ;
    9.   }
    10. ?>
    11.  
  2. Écrivez un programme qui affiche une suite de 12 nombres dont chaque terme soit égal au triple du terme précédent.
    algo29.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     12 termes, chacun est égal au triple du précédent
    4.   */
    5.   $n = 1 ;
    6.   $terme = 7 ;
    7.   while ($n <= 12) {
    8.     echo $n," : ",$terme, "\n" ;
    9.     $terme = $terme*3 ;
    10.     $n = $n+1 ;
    11.   }
    12. ?>
    13.  
  3. Écrivez un programme qui affiche une table de conversion de sommes d’argent exprimées en euros, en dollars canadiens. La progression des sommes de la table sera « géométrique », comme dans l’exemple ci-dessous :
    1 euro(s) = 1.65 dollar(s)
    2 euro(s) = 3.3 dollar(s)
    4 euro(s) = 6.6 dollar(s)
    8 euro(s) = 13.2 dollar(s)

    etc. (S’arrêter à 16384 euros.)
    algo30.php
    [cacher les numéros de lignes]
    1. <?php
    2.   /*
    3.     Les 20 premiers termes de la table de multiplication par 7
    4.   */
    5.   $euro = 1 ;
    6.   while ($euro <= 16384) {
    7.     echo $euro, " euro(s) = ", $euro*1.65, " dollar(s)\n" ;
    8.     $euro = $euro*2 ;
    9.   }
    10. ?>
    11.  
  4. Écrivez un programme qui affiche les 20 premiers termes de la table de multiplication par 7, en signalant au passage (à l’aide d’une astérisque) ceux qui sont des multiples de 3.
    Exemple : 7 14 21* 28 35 42* 49 56 63*.
  5. Écrivez un programme qui affiche la suite de symboles suivante :
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
  6. Écrivez un programme qui calcule les intérêts accumulés chaque année pendant 20 ans, par capitalisation d’une somme de 100€ placée en banque au taux fixe de 4,3%.
    Année 1 :
        -intérêts sur l'année : 4.3
        -intérêts cumulés : 4.29
        -capital : 104.3
    Année 2 :
        -intérêts sur l'année : 4.48
        -intérêts cumulés : 8.78
        -capital : 108.78

      . . .

    Année 19 :
        -intérêts sur l'année : 9.17
        -intérêts cumulés : 122.53
        -capital : 222.53
    Année 20 :
        -intérêts sur l'année : 9.56
        -intérêts cumulés : 132.1
        -capital : 232.1

Et HTML dans tout ça ?

Voir le « Que se passe-t-il à l'affichage d'une page PHP ? » et « Comment intégrer du PHP dans du HTML ? », dans le Chapitre 4 du polycopié.

Un premier exemple :

helloworld.php
[cacher les numéros de lignes]
  1. <!DOCTYPE html>
  2. <html>
  3.   <head lang="fr">
  4.     <meta charset="utf-8">
  5.     <title>Une page PHP...</title>
  6.   </head>
  7.   <body>
  8. <?php
  9. echo "Hello world!\n";
  10. ?>
  11.   </body>
  12. </html>
  13.  

Pour continuer, les exercices du chapitre 5 du polycopié.

Dernière modification : 25/8/2016

Semaine du lendi 21 môrs 2016 : TD n°9 (Cumul=27h)

Formulaires

Dernière modification : 25/8/2016

Semaine du lendi 28 môrs 2016 : TD n°10 (Cumul=30h)

Et si je veux faire du PHP chez moi ?

Faire du PHP sur le web

Il existe de nombreux sites qui vous permettent de faire du PHP sur le web. Choisissez celui qui plaît le plus. Par exemple :
  • phptester (résultat tel que vu dans le navigateur)
  • codepad (résultat sous la forme du code HTML produit)
  • syframework (résultat sous la forme du code HTML produit)

Installer PHP sous Windows

Si vous voulez développer un site web complet, il faut en passer par là...
Deux solutions plutôt faciles à utiliser WampServer et EasyPHP .
Si vous êtes plus technique, vous pouvez aussi lire cette page.

Formulaires

  • Exercice 3 du Chapitre 7.
    La solution la plus naturelle est la suivante :
    • Formulaire :
      ex3ch7.html
      [cacher les numéros de lignes]
      1. <!DOCTYPE html>
      2. <html>
      3.   <head lang="fr">
      4.     <meta charset="utf-8">
      5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
      6.     <title>Bonjour monsieur, bonjour madame - Formulaire</title>
      7.   </head>
      8.   <body>
      9.     <form  action="ex3ch7.php">
      10.       Sexe&nbsp;:
      11.       <input name="sexe" type="radio" value="M" checked="checked" />masculin
      12.       <input name="sexe" type="radio" value="F" />féminin<br/>
      13.       Nom&nbsp;: <input name="nom" /><br/>
      14.       <input type="submit" value="Envoyer" />
      15.     </form>
      16.   </body>
      17. </html>
      18.  
    • Traitement :
      [cacher les numéros de lignes]
      1. <!DOCTYPE html>
      2. <html>
      3.   <head lang="fr">
      4.     <meta charset="utf-8">
      5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
      6.     <title>Bonjour monsieur, bonjour madame - Traitement</title>
      7.   </head>
      8.   <body>
      9.   <?php
      10.     $sexe = $_GET["sexe"] ;
      11.     $nom = $_GET["nom"] ;
      12.     if ($sexe=="M") {
      13.       echo "Bonjour monsieur $nom.";
      14.     } else {
      15.       echo "Bonjour madame $nom.";
      16.     }
      17.   ?>
      18. </body>
      19. </html>
      20.  
    Mais on pouvait « économiser » un if :
    • Formulaire :
      ex3ch7bis.html
      [cacher les numéros de lignes]
      1. <!DOCTYPE html>
      2. <html>
      3.   <head lang="fr">
      4.     <meta charset="utf-8">
      5.     <title>Bonjour monsieur, bonjour madame - Formulaire</title>
      6.   </head>
      7.   <body>
      8.     <form  action="ex3ch7bis.php">
      9.       Sexe&nbsp;:
      10.       <input name="sexe" type="radio" value="monsieur" checked="checked" />masculin
      11.       <input name="sexe" type="radio" value="madame" />féminin<br/>
      12.       Nom&nbsp;: <input name="nom" /><br/>
      13.       <input type="submit" value="Envoyer" />
      14.     </form>
      15.   </body>
      16. </html>
      17.  
    • Traitement :
      [cacher les numéros de lignes]
      1. <!DOCTYPE html>
      2. <html>
      3.   <head lang="fr">
      4.     <meta charset="utf-8">
      5.     <title>Bonjour monsieur, bonjour madame - Traitement</title>
      6.   </head>
      7.   <body>
      8.   <?php
      9.     $sexe = $_GET["sexe"] ;
      10.     $nom = $_GET["nom"] ;
      11.     echo "Bonjour $sexe $nom.";
      12.   ?>
      13. </body>
      14. </html>
      15.  
  • Exercice du Chapitre 8.
  • Suite des exercices du Chapitre 7.
Dernière modification : 25/8/2016

Semaine du lendi 18 averil 2016 : TD n°11 (Cumul=33h)

Formulaires

  • Exercice 4 du Chapitre 7.
    • Formulaire :
      ex4ch7.html
      [cacher les numéros de lignes]
      1. <!DOCTYPE html>
      2. <html>
      3.   <head lang="fr">
      4.     <meta charset="utf-8">
      5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
      6.     <title>Permis de chasse - Formulaire</title>
      7.   </head>
      8.   <body>
      9.     Nombre de victimes du chasseur :
      10.     <form  action="ex4ch7.php">
      11.       Poules : <input name="poules"><br/>
      12.       Chiens : <input name="chiens"><br/>
      13.       Vaches : <input name="vaches"><br/>
      14.       Amis : <input name="amis"><br/>
      15.       <input type="submit" value="Envoyer">
      16.     </form>
      17.   </body>
      18. </html>
      19.  
    • Traitement :
      [cacher les numéros de lignes]
      1. <!DOCTYPE html>
      2. <html>
      3.   <head lang="fr">
      4.     <meta charset="utf-8">
      5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
      6.     <title>Permis de chasse - Traitement</title>
      7.   </head>
      8.   <body>
      9.     <?php
      10.        $poules = $_GET["poules"] ;
      11.        $chiens = $_GET["chiens"] ;
      12.        $vaches = $_GET["vaches"] ;
      13.        $amis = $_GET["amis"] ;
      14.        $pointsperdus = $poules*1 + $chiens*3 + $vaches*5 + $amis*10 ;
      15.        $nbpermis = floor($pointsperdus/12) ;
      16.        echo "\nEn ayant tué ", $poules, " poules, ", $chiens ;
      17.        echo " chiens, ",$vaches," vaches et ",$amis, " amis, " ;
      18.        echo "vous avez perdu ", $pointsperdus, " points.\n" ;
      19.        echo "Vous devez racheter ", $nbpermis, " permis, " ;
      20.        echo "ce qui va vous coûter ", $nbpermis*150, " euros.\n\n" ;
      21.    ?>
      22.   </body>
      23. </html>
      24.  
  • Suite des exercices du Chapitre 7 : exercices n°5 & 6.
Dernière modification : 25/8/2016

Semaine du lendi 25 averil 2016 : TD n°12 (Cumul=36h)

Le contrôle n°2 aura lieu le mardi 3 mai, de 8h30 à 10h30, dans les conditions suivantes :
  • sur feuille,
  • tous documents PAPIER autorisés,
  • aucun document électronique (liseuse, tablette, ordinateur, téléphone, etc.).

Formulaires

  • Exercice 6 du Chapitre 7.
    • Formulaire :
      ex6ch7a.php
      [cacher les numéros de lignes]
      1. <!DOCTYPE html>
      2. <html>
      3.   <head lang="fr">
      4.     <meta charset="utf-8">
      5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
      6.     <title>Table de multiplication - Formulaire</title>
      7.   </head>
      8.   <body>
      9.     <form  action="ex6ch7b.php">
      10.       Choisissez votre table :
      11.       <select name="table">
      12. <?php
      13.    $i = 1 ;  // initialisation du compteur
      14.    while ($i <= 20) {  //  tant qu'on n'a pas atteint la limite
      15.       echo "\t<option>$i</option>\n";  // affiche le compteur dans la liste
      16.       $i = $i + 1 ;  // on passe au suivant
      17.    }
      18. ?>
      19.       </select>
      20.       <br/>
      21.       Choisissez le nombre de lignes :
      22.       <select name="lignes">
      23. <?php
      24.    $i = 10 ;  // initialisation du compteur
      25.    while ($i <= 25) {  //  tant qu'on n'a pas atteint la limite
      26.       echo "\t<option>$i</option>\n";  // affiche le compteur dans la liste
      27.       $i = $i + 1 ;  // on passe au suivant
      28.    }
      29. ?>
      30.       </select>
      31.       <br/>
      32.       <input type="submit" value="Afficher la table demandée">
      33.     </form>
      34.   </body>
      35. </html>
      36.  
    • Traitement :
      [cacher les numéros de lignes]
      1. <!DOCTYPE html>
      2. <html>
      3.   <head lang="fr">
      4.     <meta charset="utf-8">
      5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
      6.     <title>Table de multiplication - Traitement</title>
      7.   </head>
      8.   <body>
      9. <?php
      10.    $table = $_GET["table"] ;
      11.    $lignes = $_GET["lignes"] ;
      12.    echo "Vous avez demandé $lignes lignes de la table "
      13.        ."de multiplication par $table. Les voilà...<blockquote>";
      14.    $i = 1 ;   // initialisation du compteur
      15.    while ($i <= $lignes) {  //  tant qu'on n'a pas atteint la limite
      16.       echo "$i &times; $table = ",$i*$table,"<br/>" ;  // affiche une ligne
      17.       $i = $i + 1 ;  // on passe au suivant
      18.    }
      19. ?>
      20.    </blockquote>
      21.   </body>
      22. </html>
      23.  
  • Suite des exercices :
    Exercice 7 du Chapitre 7 :
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <title>Mot de passe - Formulaire</title>
    7.   </head>
    8.   <body>
    9.     <form  action="ex7ch7.php" method="post">
    10.       Tapez votre mot de passe :
    11.       <input name="passe" type="password">
    12.       <input type="submit">
    13.     </form>
    14.     <span style="font-size:80%;font-style:oblique;color:rgb(40%,40%,40%);">
    15.       Le programme n'accepte que deux mots de passe, «azerty» et
    16.       «wxcvbn». <b>(Dans une vraie page web, on n'écrirait bien
    17.       entendu pas cela...)</b>
    18.     </span>
    19.   </body>
    20. </html>
    21.  
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <title>Mot de passe - Traitement</title>
    7.   </head>
    8.   <body>
    9.   <?php
    10.     $passe=$_POST["passe"];
    11.     if ($passe=="azerty") {
    12.       echo "Bonjour Henri.";
    13.     } elseif ($passe=="wxcvbn") {
    14.       echo "Bonjour Marcel.";
    15.     } else {
    16.       echo "Vous n'avez pas été identifé, <a href=\"ex7ch7.html\">retournez à l'accueil</a>." ;
    17.     }
    18.   ?>
    19.   </body>
    20. </html>
    21.  

    Saisir deux entiers dans un formulaire, puis afficher le plus grand des deux.
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <title>Le plus grand des deux - Formulaire</title>
    7.   </head>
    8.   <body>
    9.     <form  action="plusgrand.php">
    10.       Premier nombre : <input name="a"><br/>
    11.       Deuxième nombre : <input name="b"><br/>
    12.       <input type="submit">
    13.     </form>
    14.   </body>
    15. </html>
    16.  
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <title>Le plus grand des deux - Traitement</title>
    7.   </head>
    8.   <body>
    9.   <?php
    10.     $a=$_GET["a"] ;
    11.     $b=$_GET["b"] ;
    12.     echo "Le plus grand de $a et $b est : " ;
    13.     if ($a > $b) {
    14.        echo $a ;
    15.     } else {
    16.        echo $b ;
    17.     }
    18.   ?>
    19.   </body>
    20. </html>
    21.  

    Saisir trois nombres, puis dire si le premier nombre est égal à la somme des deux autres.
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <title>Somme - Formulaire</title>
    7.   </head>
    8.   <body>
    9.     <form  action="somme.php">
    10.       Premier nombre : <input name="a"><br/>
    11.       Deuxième nombre : <input name="b"><br/>
    12.       Troisième nombre : <input name="c"><br/>
    13.       <input type="submit">
    14.     </form>
    15.   </body>
    16. </html>
    17.  
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <title>Somme - Traitement</title>
    7.   </head>
    8.   <body>
    9.   <?php
    10.     $a=$_GET["a"] ;
    11.     $b=$_GET["b"] ;
    12.     $c=$_GET["c"] ;
    13.     echo "Le premier nombre ($a) " ;
    14.     if ($a == $b+$c) {
    15.        echo "est bien " ;
    16.     } else {
    17.        echo "n'est pas " ;
    18.     }
    19.     echo "la somme des deux autres ($b et $c)." ;
    20.   ?>
    21.   </body>
    22. </html>
    23.  

    Saisir deux entiers a et b, puis afficher en liste HTML (<ul>) leur somme (a+b), leur produit (a×b), leur différence (ab) et leur quotient (a÷b). Chaque calcul devra être bien présenté (par exemple : 5*12=60), un par ligne. En cas de division par zéro le calcul ne se fera pas, mais on affichera en gras le message « Division par zéro impossible ».
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <title>Opérations - Formulaire</title>
    7.   </head>
    8.   <body>
    9.     <form  action="operations.php">
    10.       Premier nombre : <input name="a"><br/>
    11.       Deuxième nombre : <input name="b"><br/>
    12.       <input type="submit">
    13.     </form>
    14.   </body>
    15. </html>
    16.  
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <title>Opérations - Traitement</title>
    7.   </head>
    8.   <body>
    9.     <ul>
    10.   <?php
    11.     $a=$_GET["a"] ;
    12.     $b=$_GET["b"] ;
    13.    
    14.     echo "<li>$a + $b = ", $a+$b, "</li>\n" ;
    15.     echo "<li>$a &minus; $b = ", $a-$b, "</li>\n" ;
    16.     echo "<li>$a &times; $b = ", $a*$b, "</li>\n" ;
    17.     if ($b == 0) {
    18.        echo "<li>$a &divide; $b : <b>division par zéro impossible</b></li>\n" ;
    19.     } else {
    20.        echo "<li>$a &divide; $b = ", $a/$b, "</li>\n" ;
    21.     }
    22.   ?>
    23.     </ul>
    24.   </body>
    25. </html>
    26.  

    Saisir deux entiers dans un formulaire, puis afficher la suite des entiers qui vont du premier au deuxième, que le premier soit plus petit ou plus grand que le deuxième. Tout cela sera écrit en rouge sur fond jaune, et chaque nombre sera entouré par un bord fin et noir.
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <link rel="stylesheet" href="lesentiers.css" />
    7.     <title>Suite d'entiers - Formulaire</title>
    8.   </head>
    9.   <body>
    10.     <form  action="lesentiers.php">
    11.       Premier nombre : <input name="a"><br/>
    12.       Deuxième nombre : <input name="b"><br/>
    13.       <input type="submit">
    14.     </form>
    15.   </body>
    16. </html>
    17.  
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <link rel="stylesheet" href="lesentiers.css" />
    7.     <title>Suite d'entiers - Traitement</title>
    8.   </head>
    9.   <body>
    10.   <?php
    11.     $a=$_GET["a"] ;
    12.     $b=$_GET["b"] ;
    13.     echo "Afficher tous les entiers de $a à $b : " ;
    14.     if ($a < $b) {
    15.        $i = $a ;
    16.        while ($i <= $b) {
    17.          echo "<span class=\"nb\">$i</span> ";
    18.          $i = $i+1 ;
    19.        }
    20.     } else {
    21.        $i = $a ;
    22.        while ($i >= $b) {
    23.          echo "<span class=\"nb\">$i</span> ";
    24.          $i = $i-1 ;
    25.        }
    26.     }
    27.   ?>
    28.   </body>
    29. </html>
    30.  
    1. /* == Feuille de style pour la suite des entiers == */
    2. body {
    3.   background : yellow ;
    4.   color : red ;
    5. }
    6. span.nb {  
    7.   border : thin solid black ;
    8. }

    Saisir deux entiers a et b, puis calculer la somme des entiers de a à b (par exemple 3+4+5+6+7+8 si les deux nombres sont 3 et 8). On affichera l'opération ainsi que son résultat. On supposera que ab.
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <title>Sommes - Formulaire</title>
    7.   </head>
    8.   <body>
    9.     <form  action="sommes.php">
    10.       Premier nombre : <input name="a"><br/>
    11.       Deuxième nombre : <input name="b"><br/>
    12.       <input type="submit">
    13.     </form>
    14.   </body>
    15. </html>
    16.  
    1. <!DOCTYPE html>
    2. <html>
    3.   <head lang="fr">
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" href="dg.ico" type="image/ico" />
    6.     <title>Sommes - Traitement</title>
    7.   </head>
    8.   <body>
    9.   <?php
    10.     $a=$_GET["a"] ;
    11.     $b=$_GET["b"] ;
    12.    
    13.     $somme = 0 ;
    14.     $plus = "" ;
    15.     $i = $a ;
    16.     while ($i <= $b) {
    17.       echo "$plus $i " ;
    18.       $somme = $somme + $i ;
    19.       $plus = "&plus;" ;
    20.       $i = $i + 1 ;
    21.     }
    22.     echo "= $somme";
    23.   ?>
    24.   </body>
    25. </html>
    26.  

Dernière modification : 25/8/2016
Dernière modification : 25/8/2016