Title: Introduction la programmation I
1Introduction à la programmation I
- Fonctions
- Structures de contrôle
- Structures de données (arrays simples et
indexés) - Variables locales et globales
2Les Fonctions
3Définir une fonction
- Sections de code indépendantes que lon peut
appeler à nimporte quel moment et dans nimporte
quel ordre. - Bout de code que lon peut insérer comme sil
sagissait de petit programme indépendant - Moins de code à écrire, moins à vérifier
- Mieux penser la structure du programme
- Définir une fonctionÂ
- lui donner un nom mot clé  function suivi du
nom que lon veut donner à la fonction - les paramètres sont listés entre parenthèses
- function nomfonction (paramètres)
-
- Le code de la fonction est inséré ici.
-
4Définir une fonction (suite)
- La fonction peut contenir autant de ligne de code
que lon souhaite - Pour renvoyer une valeur, placer  return sur
la dernière ligne de la fonction - ? montre que lon a fini et que la fonction
sarrête là . - Pour afficher la valeur renvoyée par la fonction,
on utilise linstruction  echo .  ReturnÂ
naffiche pas la valeur, mais transmet le
résultat à la fonction - Une fonction peut être appelée aussi souvent
quon le souhaite. - ExÂ
- Prix 1600Â
- echo (reduction(Prix))Â
- si on veut donner plusieurs paramètres à une
fonction, les séparer par une virgule - ExÂ
- function reduction (Prix, Reduction)
-
Cf. Ex1
5Ordre des éléments au sein dune fonction
- La position de la définition de la fonction, de
son exécution et de son appel peut varier. - Cependant, la fonction nest pas utilisée tant
quelle nest pas appelée dans la dernière ligne
avec  echo . - Ex
- lt?php
- Salaire1600 ? Lexécution commence ici
- TauxCharges25
- echo (charges(Salaire, TauxCharges)) ? La
fonction est appelée ici - function charges(Salaire, TauxCharges) ? La
fonction est définie ici -
- Salaire Salaire ((Salaire/100)TauxCharge
s) - return
-
- ?gt
- --------------------------------------------------
--------------------------------------------------
-------------- - lt?php
6Noms des variables
- On est pas obligé de donner aux variables hors de
la fonction le même nom que celui des paramètres. - ExÂ
- Blabla 1600Â
- Lalala 500Â
- echo (reduction(blabla, Lalala)
- function reduction (Prix, Reduction)
-
- Prix Prix ReductionÂ
- return PrixÂ
-
- Dans ce cas-ci, la variable utilisée comme
paramètre Prix prend la valeur de Blabla et la
variable - Reduction, celle de la variable Lalala.
- Faire des essais
7Autres applications ou méthodes
- Hormis la méthode de transmission de valeur qui
vient de vous être présentée, il existe également
une - méthode qui permet de passer les arguments de
fonctions par référence , cest-à -dire qui
implique - que la valeur passée soit modifiée à lintérieur
de la fonction. - Mais nous ne la verrons pas ici.
8Structures de contrôle
9Introduction
- Les structures de contrôle (boucles) permettent
deffectuer des tâches répétitives. - Cependant, ce ne sont pas des structures
conditionnelles dans la mesure où elles peuvent
être - exécutées indéfiniment.
- Pour résumer en deux mots le fonctionnement dune
boucle, nous dirons quelle fonctionne ainsi - Une condition est testée et le code de la boucle
est exécuté, si la condition est satisfaite. - Ensuite, la condition est retestée et si elle est
toujours  true , elle est re-exécutée. - Et ainsi de suite.
- Chaque passage de la boucle est appelée une
itération. - Il existe plusieurs types de boucles, chacun
adapté à une situation différente. Nous allons
les passer - en revue ici
- La boucle while
- La boucle do while
- La boucle for
- La boucle foreach (que nous verrons dans le
chapitre des tableaux)
10La boucle while
- La boucle while est la plus simple des boucles.
- Elle présente des ressemblances avec
linstruction  if - La boucle while vérifie le résultat dune
condition. Selon que la condition est  true ou
 false , la - portion de code placée entre accolades (après
linstruction conditionnelle) est exécutée. -
- while (la condition est  true )
-
- Exécuter le contenu des accolades
-
- Une fois le contenu entre accolades exécuté, la
condition située juste au dessus est revérifiée. - Dans le cas où cest à nouveau  true , le
contenu de laccolade est ré-exécuté. - Dans le cas où la condition est  false , le
code entre accolades est ignoré et lon passe
directement à la première ligne de code qui suit
les accolades.
11La boucle do while
- La boucle do while est environ similaire à la
boucle  while si ce nest que linstruction
conditionnelle - est testée à la fin de la boucle et non au début.
- Cela implique donc que le contenu des accolades
sera appliqué au moins une fois, même si la - condition est  falseÂ
- ExÂ
- do
-
- Exécuter le contenu des accolades
-
- while (la condition est  true ) ? retourner
et recommencer - ou
- do
-
- Exécuter le contenu des accolades
-
- while (la condition est  false ) ? sortir de
la boucle et passer à la ligne de code suivante
Cf. Ex verifier_do_while.php
12La boucle for
- La boucle for est idéale pour répéter une section
de code un certain nombre de fois. - Elle offre la possibilité de spécifier le nombre
de fois que lon souhaite parcourir la boucle. - Cette boucle est plus complexe que la boucle
 while - ExÂ
- for (définir le compteur de boucles tester le
compteur de boucles ajouter ou soustraire au
compteur) -
- exécuter le contenu des accolades
-
- Le concept de compteur de boucles est introduit
ici. - ExÂ
- for (compteur1Â compteurlt10Â compteur)
-
- echo  Mon nom est Bob ! Â
-
Cf. Ex for.php
13Structures de données
14Introduction
- Les tableaux sont constitués de variables
dindice qui, surtout si elles sont associées Ã
une boucle, - peuvent être très efficace.
- Un tableau est composé dune série de valeurs qui
ont toutes le même nom - Chacune de ces valeurs ayant un indice différent
- Chaque constituant dun tableau est appelé
 élément - On peut créer des tableaux de la même façon quon
crée des variables, tant que lon oublie pas de
mettre des crochets pour signaler lindice. - ExÂ
- PaysEurope1 "France" Â
- PaysEurope2 "Espagne" Â
- Lordre des n nest pas important et lon peut
même utiliser des caractères - ExÂ
- PaysEurope"F" "France" Â
15Initialisation
- Linitialisation est la définition des valeurs
initiales des variables des tableaux -
- Pays FranceÂ
- Pays  SuisseÂ
- Sans les crochets, la valeur de la première
variable serait automatiquement remplacée par la
seconde dans la suite du programme. - Labsence de valeur dindice fait que PHP va
décider lui-même de stocker les valeurs dans
Pays0 et Pays1. - Pas besoin de prédéfinir les types de données du
tableau en indiquant sil sagit de données
textuelles ou numériques. - Pas besoin de spécifier la taille du tableau
avant de le créer
16La construction array
- Pays array (" France ", " Espagne ", " Suisse
") - PHP génère automatiquement les valeurs dindice.
Elles commencent à zéro. Les nouvelles valeurs - sont insérées dans un élément vide avec la
valeur dindice la plus petite. - ExÂ
- echo Pays2 ? afficherait  " Suisse "
-
- Ex
- PaysEurope array (1 gt " France ", " Espagne
", " Suisse ", "Hollande", "Belgique",
"Portugal", - "Angleterre", "Danemark", "Allemagne", "Italie")
Cf. Ex pays.php
17Les itérations dans un tableau
- Les boucles sont utilisées dans les tableaux,
afin déviter un travail laborieux qui
consisterait à - récupérer individuellement chaque élément du
tableau afin de lafficher par exemple. - La boucle for
- Exemple afficher tous les pays recensés dans
notre tableau - for (compteur1 compteurlt11 compteur)
- echo " ltBRgtPayscompteur " Â
-
- ? Commencer à 1 et aller jusquà 10, en
augmentant à chaque fois le compteur de 1. Cela
donnerait - echo " ltBRgtPays1Â " Â
- echo " ltBRgtPays2Â " Â
- echo " ltBRgtPays3Â " Â
- echo " ltBRgtPays4Â " Â
- echo " ltBRgtPays5Â " Â
Cf. Ex pays.php
18Les itérations dans un tableau (suite)
- Les boucles while ou do while
- Ces boucles nous obligent à définir un compteur
nous-mêmes - compteur1
- while (compteurlt11)
- echo  ltBRgtPayscompteur Â
- compteurcompteur1Â
-
- Le résultat sera semblable à lexemple précédent.
Cf. Ex pays_while.php
19La boucle foreach
- Cette boucle est utilisée lorsque nous avons un
tableau avec un nombre déléments inconnu. - Elle effectue des itérations jusquà la fin du
tableau - Pour chaque élément du tableau, on effectue une
itération à travers la boucle foreach. - foreach (PaysEurope As IndicePays gt Pays)
-
- echo "ltBRgtIndicePays - Pays "
-
- PaysEurope nom du tableau
- IndicePays nom de variables que lon crée
nous-mêmes qui contient les valeurs dindice. - Pays nom de variables que lon crée nous-mêmes
qui contient lélément correspondant - Lavantage de cette boucle est que nous navons
pas besoin deffectuer le décompte du nombre - déléments du tableau, puisquelle la découvre
toute seule.
Cf. Ex foreach.php
20Les tableaux non séquentiels
- Les tableaux non-séquentiels sont des tableaux
qui ne sont pas remplis dans lordre - croissant de leur indice, mais dans un ordre
aléatoire. - Ex
- Taille1234 " Enorme "
- Taille1 " Minuscule "
- Taille654 " Très grand "
- Le problème avec une vérification séquentielle de
ce genre de tableau est quil risque de ne
contenir que - très peu de valeur en réalité et comporter des
espaces vide - Fonctions current() et key()
- Ces fonctions sont des pointeurs pour conserver
la trace dun élément donné lors des déplacements
- dans un tableau.
- La fonction current() permet de voir quel élément
est en train dêtre utilisé par PHP - La fonction key() permet de rechercher la valeur
dindice affectée à lélément ? key est synonyme - d indice ici.
21Les tableaux non-séquentiels (suite)
- Fonctions next() et prev()
- Ces deux fonctions permettent de naviguer au sein
des tableaux, ainsi que de trouver la valeur dun
- nouvel élément ajouté au tableau.
- ExÂ
- Realisateur4 "Orson Welles"
- Realisateur1 "Carol Reed"
- Realisateur93 "Fritz Lang"
- Realisateur24 "Jacques Tourneur"
- Realisateur "Alfred Hitchcock"
- next(Realisateur)
- ValeurIndiceCourant key(Realisateur)Â
- echo (ValeurIndiceCourant)Â
- ? La valeur affichée est 1 et current() renvoie
le nom  Carol ReedÂ
Cf. Ex next_prev.php
22Les tableaux non-séquentiels (suite)
- Fonctions list() et each()
- Les fonctions list() et each() permettent de
renvoyer uniquement les éléments du tableau
contenant - des données, au lieu de passer des données vides
qui peuvent être nombreuses. - Nous utiliserons la boucle while peut effectuer
cela - while (list(ValeurIndice,ContenuElement)
each(NomTableau)) - ValeurIndice à lindice de lélément
- ContenuElement au contenu de lélément
- Exemple
- while (list(ValeurIndiceElement,ContenuElement)
each(Realisateur)) -
- echo "ltBRgtValeurIndiceElement -
ContenuElement " -
- La fonction list() renvoie dabord la valeur de
lindice, puis le contenu de lélément.
Cf. Ex list_each.php
23Array functions
- Pour découvrir les array fonctions cf.
http//tecfa.unige.ch/guides/php/php5_fr/ref.array
.html - Trier les tableaux
- Il y a plusieurs fonctions de tri de tableau.
Passons-en en revue cinq ici. - Fonction sort()
- Fonction qui trie les éléments dun tableau par
ordre alphabétique -
- sort(NomTableau)
- Fonction asort()
- Fonction qui trie les éléments dun tableau par
ordre alphabétique, mais en conservant les
indices de - chaîneÂ
- asort(NomTableau)
24Exemples darray functions (suite)
- Fonctions array_push() et array_pop()
- Permettent dajouter ou de supprimer un élément Ã
un tableau - ExÂ
- a)
- array_push(Pays,  "Italie"  , "Suède") ?
ajoute ces deux pays - b)
- Pays 2 "Suisse" Â
- Pays 1 "France"
- Pays 8 "Espagne" Â
- Pays 10 "Angleterre"Â
- array_pop(Pays)Â
- ? supprime le dernier élément ajouté au
tableau (ici  Angleterre ). Mais cette
fonction ne supprime quun élément à la fois. - Fonctions Implode et Explode
- Fonctions qui permettent de stocker tout le
contenu dun tableau en tant que chaîne ou
linverse. - Implode concatène les éléments dun tableau et
crée une chaîne séparée par un délimiteur.
25Les tableaux multidimensionnels
- Nous nen parlerons pas ici.
- Les tableaux multidimentionnels sont des tableaux
de tableau. - Ex
- NomTableau array (indice gt array (Contenu du
tableau)) - Ex annuaire téléphonique
- Lindice serait  Jessica Claude et le contenu
( 10 ch. Rieu , 022/----- )
26La portée des variables
- Les variables locales et globales
27Variables locales vs globales
- Les variables à lintérieur dune fonction ont
une portée locale. Elle nexistent quÃ
lintérieur même - dune fonction et donc uniquement pour la durée
dappel de cette fonction. - Les variables dont la durée de vie correspond Ã
la durée de vie dune page ont une portée
globale. - Illustration
- ltphp?
- MessageBienvenue  Hello world Â
? VARIABLE GLOBALE - function traduire_message ( MessageFrancais)
-
- MessageFrancais  Bonjour à tout le
monde ? VARIABLE LOCALE - return MessageFrancais
-
- traduire_message ()
- echo MessageBienvenue
- echo MessageFrancais
- ?gt
Cf. Ex variables_locales_globale.php
28Variables locales vs globales (suite)
- Utiliser les variables globales à lintérieur des
fonctions - Lexemple de GLOBAL
- lt?php
- MessageBienvenue "Â Hello world "
- function traduire_message ( MessageFrancais)
-
- echo GLOBAL " MessageBienvenue "
- MessageFrancais " Bonjour à tout le
monde " - return MessageFrancais
-
- traduire_message ()
- echo MessageBienvenue
- echo (traduire_message(MessageFrancais))
- ?gt
29Lexercice
30Consignes
- Reprenez votre exercice STAF 14 de lannée passée
et reproduisez-le à laide darray, de - boucles et de fonctions, comme nous venons de le
voir. - Lidée est de ne plus utiliser une structure
envahie de  if ,  then .