Vous êtes sur la page 1sur 65

languages de programmation

LPB-102

Sammy Dieleman – LPB@amstram.be

Développeur d’interfaces WEB – X75 – 2021


Développeur d’applications mobiles – X76 – 2021

22 janvier 2021
LPB - Plan des cours

Janvier Février - Mars Avril - Mai

LPB-101 : Algo LPB-104 : Javascript 1 LPB-113 : PHP-1


LPB-102 : Algo LPB-105 : Javascript 2 LPB-114 : PHP-2
LPB-103 : Algo LPB-106 : Javascript 3 LPB-115 : PHP-3
LPB-107 : Javascript 4 LPB-116 : PHP-4
LPB-108 : Javascript 5 LPB-117 : PHP-5
LPB-109 : Javascript 6 LPB 118 : PHP-6
LPB-110 : Javascript 7
LPB-111 : Javascript 8
LPB-112 : Javascript 9
2
LPB_102

Les I/O

3
LPB_102 >> Les I/O

Ecrivons un programme pour calculer le carré d’un nombre,


mettons 12 :

Variable A en Numérique
Début
A ← 12^2
Fin
● Si l’on veut le carré d’un autre nombre il faut réécrire le
programme !
● Le résultat est calculé par la machine, mais l’utilisateur qui fait
exécuter ce programme, lui, ne sais pas quel est le carré de 12

4
LPB_102 >> Les I/O

Il existe des instructions pour permettre à la machine de


dialoguer avec l’utilisateur.

Des instructions permettent à l’utilisateur de rentrer des


valeurs au clavier/souris/micro/caméra pour qu’elles soient
utilisées par le programme.

Cette opération est la lecture

Dans l’autre sens, des instructions permettent au programme


de communiquer des valeurs à l’utilisateur en les
affichant à l’écran/imprimante/lecteur braille.

Cette opération est l’écriture


5
LPB_102 >> Les I/O

Ecrire “Entrez votre nom : ”


Lire NomFamille

● Dès que le programme rencontre une instruction Lire,


l’exécution s’interrompt, attendant la frappe d’une valeur au
clavier
● Dès lors, aussitôt que la touche Entrée (Enter) a été frappée,
l’exécution reprend, et l’entrée est stockée dans la variable

6
LPB_102 >> Les I/O > Exercices

7
LPB_102 >> Les I/O > Exercices

8
LPB_102

Les tests

– Opérateurs
– Composition
– Imbrication
9
LPB_102 >> Les tests

Allez tout droit jusqu’au prochain carrefour

Si la rue à droite est autorisée à la


circulation Alors
Tournez à droite
Avancez
Prenez la deuxième à gauche
Sinon
Prenez la suivante à droite
Avancez
Prenez la première à droite
Finsi

10
LPB_102 >> Les tests

Un test (ou condition) est une comparaison

Elle est composée de trois éléments :


1) une valeur
2) un opérateur de comparaison
3) une autre valeur

Les valeurs peuvent être a priori de n’importe quel type


(numériques, caractères…), mais attention aux types !
pommes, poires, torchons, serviettes

L’ensemble des trois éléments de la condition forme une


affirmation qui, à un moment donné, est VRAIE ou FAUSSE

11
LPB_102 >> Les tests > Opérateurs

En algorithmique, les opérateurs de comparaison sont :

= égal à ..
<> différent de ..
< strictement plus petit que ..
> strictement plus grand que ..
=< plus petit ou égal à ..
>= plus grand ou égal à ..

Ces opérateurs peuvent tout à fait s’employer avec des


caractères (grace à l’ASCII)

“t” < “w” VRAI


“Maman” > “Papa“ FAUX
“maman” > “Papa” VRAI
12
LPB_102 >> Les tests > Composition

On peut lier plusieurs tests/comparaison/conditions au moyen


d’opérateurs logiques (booléens) déjà rencontrés dans DTA

ET, OU, NON, XOR

13
LPB_102 >> Les tests > Composition

ET

Pour que Condition1 ET Condition2 soit VRAI,


il faut impérativement que
Condition1 soit VRAI
et que Condition2 soit VRAI

Si vous devez avoir 18ans et mesurer +1.60m pour


monter dans le manège, vous ne pouvez pas monter
si vous avez moins de 18ans ou moins 1.60m

14
LPB_102 >> Les tests > Composition

OU

Pour que Condition1 OU Condition2 soit VRAI,


il suffit que
Condition1 soit VRAIE
ou
Condition2 soit VRAIE

Le point important est que, si


Condition1 est VRAIE
et
Condition2 est VRAIE
Alors Condition1 OU Condition2 est VRAIE.

15
LPB_102 >> Les tests > Composition

XOR

Pour que Condition1 XOR Condition2 soit VRAI, il faut que


Condition1 soit VRAI,
ou bien que Condition2 soit VRAI.

Mais si toutes les deux sont


FAUX ou VRAI
alors le résultat global est
considéré comme FAUX

16
LPB_102 >> Les tests > Composition

NON

le NON inverse une condition

NON(Condition1)
est VRAI si Condition1 est FAUX,
est FAUX si Condition1 est VRAI.

Pourquoi écrire NON(Prix > 20), alors que Prix=<20


fonctionne ?

17
LPB_102 >> Les tests > Composition

Si age < 10 ET age > 15


// code
FinSi

Gestion des enfants entre 10 et 15ans ?

18
LPB_102 >> Les tests > Exercices

19
LPB_102 >> Les tests > Imbrications

Un programme devant donner l’état de l’eau selon sa


température doit pouvoir choisir entre trois réponses possibles
● solide, à partir -0° jusqu’au zéro absolu
● liquide, au dessus de 0° jusqu’à 100° non compris

● gazeuse, à partir de 100°

Une première approche serait ..

20
LPB_102 >> Les tests > Imbrications

21
LPB_102 >> Les tests > Imbrications

Une autre approche serait ..

22
LPB_102 >> Les tests > Imbrications

23
LPB_102 >> Les tests > Imbrications

Nous avons fait des économies :


● au lieu de devoir taper trois conditions, dont une composée,
nous n’avons plus que deux conditions simples.
● le temps d’exécution : si la température est inférieure à zéro,
celui-ci écrit « C’est de la glace » et passe directement à la fin,
sans être ralenti par l’examen d’autres possibilités (qui sont
forcément fausses)

Cette approche est donc


plus simple à écrire
plus lisible
plus performante

24
LPB_102 >> Les tests > Imbrications

25
LPB_102 >> Les tests > Imbrications

26
LPB_102 >> Les tests > Imbrications

Une structure SI peut être facilement comparée à un aiguillage


de train.

La voie principale se sépare en deux, le train devant rouler ou


sur l’une, ou sur l’autre, et les deux voies se rejoignant tôt ou
tard pour ne plus en former qu’une seule, lors du FinSi

On peut schématiser :

27
LPB_102 >> Les tests > Imbrications

Dans le cas de l’état de l’eau, il nous faut trois voies pour notre
« train », puisque l’eau peut être solide, liquide ou gazeuse.

Pour deux voies, il faut un aiguillage, pour trois voies il nous en


faut deux, imbriqués l’un dans l’autre.

28
LPB_102 >> Les tests > Imbrications

Dans le cas de l’état de l’eau, il nous faut trois voies pour notre
« train », puisque l’eau peut être solide, liquide ou gazeuse.

Pour deux voies, il faut un aiguillage, pour trois voies il nous en


faut deux, imbriqués l’un dans l’autre.

29
LPB_102 >> Les tests > Variable booléenes

Nous avons utilisé des expressions conditionnelles, et comme


toute expression, elles n’ont qu’une seule valeur à un moment
donné. Cette valeur peut être stockée dans une variable.

30
LPB_102 >> Les tests > Opérateurs booléens

ET, OU, NON, ( )

Si X vaut 3, que vallent D et E ?


31
LPB_102 >> Les tests > Variable booléenes

Dans une condition composée employant à la fois des


opérateurs ET et des opérateurs OU

la présence de parenthèses
détermine parfois le résultat

tout comme dans le cas d’une expression numérique


comportant des multiplications et des additions.

32
LPB_102 >> Les tests > De Morgan

Si A ET B

Si NON(A) OU NON(B)
33
LPB_102 >> Les tests > De Morgan

34
LPB_102 >> Les tests > Exercices

35
LPB_102 >> Les tests > Exercices

36
LPB_102 >> Les tests > Exercices

37
LPB_102 >> Les tests > Exercices

38
LPB_102 >> Les tests > Exercices

39
LPB_102 >> Les tests > Exercices

40
LPB_102

Les boucles

41
LPB_102 >> Les boucles

Imaginons un programme qui pose une question à laquelle


l’utilisateur doit répondre par O (Oui) ou N (Non)

Que se passe-t-il s’il répond autre chose, Z par exemple ?

Dans tout programme on doit mettre en place le contrôle de saisie.

42
LPB_102 >> Les boucles

C’est impeccable, tant que l’utilisateur ne se trompe qu’une seule


fois

Si l’on veut également prévoir une deuxième erreur, il faudrait


rajouter un SI.

Et ainsi de suite, on peut rajouter des centaines de SI, et écrire un


algorithme d’une lourdeur affreuse.

43
LPB_102 >> Les boucles

Le programme du café, avec une boucle :

On a une erreur à chaque exécution !

En effet, l’expression booléenne qui figure après le TantQue


interroge la valeur de la variable Rep, qui n’a pas été affectée avant
l’entrée dans la boucle.

On teste donc une variable qui n’a pas de valeur !


44
LPB_102 >> Les boucles

Il faut que la variable Rep ait déjà été affectée avant qu’on arrive au
premier tour de boucle.

Pour cela, on peut faire une première lecture de Rep avant la


boucle :

45
LPB_102 >> Les boucles

Une autre approche, l’affectation par défaut mais pas arbitraire.

L’affectation doit donc faire en sorte que le booléen soit mis à VRAI
pour déclencher le premier tour de la boucle :

46
LPB_102 >> Les boucles > Styles ?

la boucle sera exécutée l’entrée de la boucle est forcée, et


uniquement lors d’une mauvaise l’exécution de celle-ci, au moins une fois,
saisie initiale. est rendue obligatoire à chaque exécution
du programme.
Si l’utilisateur saisit une valeur
correcte à la première demande de Mais l’instruction de lecture est unique.
Rep, le programme passera sur la Lire(Rep, 127, pointer, ‘rw+’, return)
boucle sans entrer dedans
moins de code, moins de bugs
moins de bugs, moins de maintenance
47
LPB_102 >> Les boucles > Styles ?

48
LPB_102 >> Les boucles > Infinies

Si on écrit un TantQue dans laquelle le booléen n’est jamais VRAI, le


programme ne rentre alors jamais dans la boucle.

Mais la faute symétrique existe aussi :

Une boucle dans laquelle le booléen ne devient jamais FAUX.

Le programme tourne alors dans la boucle sans jamais en sortir,


jusqu’à ce que l’utilisateur (ou un système) force le programme à
s’arrêter.

49
LPB_102 >> Les boucles > Exercices

50
LPB_102 >> Les boucles > Exercices

51
LPB_102 >> Les boucles > Exercices

52
LPB_102 >> Les boucles > Exercices

53
LPB_102

Les tableaux

54
LPB_102 >> Tableaux

Imaginons un programme qui traite 12 valeurs, par exemple, des notes


pour calculer une moyenne :
● 12x variables ?
– Notea, Noteb, Notec,..
– N1, N2, N3, ..

● 12x instructions Lire() unique ?

● Calcul ?
Moy = (N1 + N2 + N3 + N4 + N5 + N6 + N7 + N8 + N9 + N10 + N11 + N12 ) / 12

● Quid pour
– 1000 valeurs ?
– 100000 valeurs ?
– N valeurs ?
55
LPB_102 >> Tableaux

● Il existe une structure de données qui permet de rassembler toutes


ces variables en une seule
● Chaque valeur sera désignée par un numéro appelé l’index ou l’indice
● Un ensemble de valeurs portant le même nom de variable et
repérées par un nombre, s’appelle un tableau
● Chaque fois que l’on doit désigner un élément du tableau, on fait
figurer le nom du tableau, suivi de l’indice de l’élément, entre
parenthèses.
Tableau Note(11) en Entier
Lire(Note(0))
Ecrire(Note(0))

56
LPB_102 >> Tableaux

Tableau Note(11) en Entier


Variables i, Somme en Entier
Variable Moyenne en Réel
Pour i ← 0 à 11
Ecrire “Entrez la note n°”, i
Lire Note(i)
FinPour

Somme ← 0
Pour i ← 0 à 11
Somme = Somme + Note(i)
FinPour

Moyenne = Somme / Taille(Note)

57
LPB_102 >> Tableaux

Taille inconnue ? Taille variable ?


Il arrive fréquemment que l’on ne connaisse pas à l’avance le nombre d’éléments
que devra comporter un tableau.
Bien sûr, une solution consisterait à déclarer un tableau gigantesque (10 000
éléments, pourquoi pas, au diable les varices) pour être sûr que « ça rentre ». Mais
d’une part, on n’en sera jamais parfaitement sûr, d’autre part, en raison de
l’immensité de la place mémoire réservée – et la plupart du temps non utilisée, c’est
un gâchis préjudiciable à la rapidité, voire à la viabilité, de notre algorithme.
Aussi, pour parer à ce genre de situation, a-t-on la possibilité de déclarer le tableau
sans préciser au départ son nombre d’éléments. Ce n’est que dans un second
temps, au cours du programme, que l’on va fixer ce nombre via une instruction de
redimensionnement : Redim. Notez que tant qu’on n’a pas précisé le nombre
d’éléments d’un tableau, d’une manière ou d’une autre, ce tableau est inutilisable.
Exemple : on veut faire saisir des notes pour un calcul de moyenne, mais on ne sait
pas combien il y aura de notes à saisir. Le début de l’algorithme sera quelque chose
du genre
58
LPB_102 >> Les tableaux > Exercices

59
LPB_102 >> Les tableaux > Exercices

60
LPB_102 >> Les tableaux > Exercices

61
LPB_102 >> Les tableaux > Exercices

62
LPB_102 >> Les tableaux > Exercices

63
LPB_102 >> Les tableaux > Exercices

64
Des questions ?

65

Vous aimerez peut-être aussi