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 .