Introduction

 Informatique?:

 construit sur la contraction de l’expression « information automatique ».  L’informatique est la science du traitement automatique de l’information  L’informatique traite de deux aspects complémentaires : les programmes immatériels (logiciel, software) qui décrivent un traitement à réaliser et les machines (matériel, hardware) qui exécutent ce traitement.

Introduction
 Qu’est ce qu’un ordinateur :  une machine totalement dénuée d'intelligence  capable d’effectuer un grand nombre de tâches  Exécute très rapidement et sans erreurs les ordres

qu'on lui donne

Qu’est-ce qu’un programme ?
 Assemblage et enchaînement d’instructions élémentaires
 Écrit dans un langage de programmation

 Exécuté par un ordinateur afin de traiter les données d’un problème
 et renvoyer un ou plusieurs résultats

Environnement de programmation
 Programme s’écrit dans un fichier texte  On écrit les commandes les unes à la suite des autres
 Le compilateur  vérifie la syntaxe du fichier texte

Avaancer au lieu de avancer

 traduit en langage machine (100101100101001011…)

 Hélas, il ne détecte pas les bugs !!!  Si on fonce dans le mur, il ne nous dit rien !

Environnement de programmation
 Environnement de programmation dédié
Fichier source Fichier traduit

compilateur

Affichage des Erreurs

Programmation
 Un programme est réalisé dans le but d’effectuer un

ensemble de traitements particuliers sur un ensemble de données
 Définir sous quelle forme les données initiales seront

fournies à l’application  Définir sous quelle forme les résultats seront communiqués  Expliciter les différentes actions à réaliser pour réaliser cette tâche

Données et traitements
 Donnée : valeur stockée  variable ou constante  Type  Traitement : opérations sur les données  instructions
Données initiales
Traitements

résultats

Analyse du problème
 Décomposer la tâche
 Exemple simple : moyenne de 10 notes
notes saisies
Calculer Moyenne

moyenne affichée

saisie clavier

Lire et stocker les données notes

Additionner les données notes et stocker donnée somme

Diviser la donnée somme par 10 et stocker la donnée moyenne

Afficher la Donnée moyenne

affichage écran

Sous programme
 Sous-programme  Diviser pour mieux régner  Intérêts :  Programmer tâche par tâche  Meilleure lisibilité du code  Économie de codage et réutilisation  Inconvénients :  Nécessite de réfléchir en blocs de fonctionnalités

Où on apprend réellement à programmer

Algorithmique
 Un peu de vocabulaire…  Algorithme : enchaînement des actions (instructions) nécessaires pour résoudre un problème  Différentes appellations

 

langage algorithmique pseudo-langage de programmation pseudo-code)

Organisation d’un programme
Exemple d’un programme :
PROGRAMME monProgr /* Constantes: initialisation obligatoire */ CONST const1 <- 10 : entier const2 <- "bonjour!" : chaîne // les variables au sens strict VAR varReel1, varReel2 : réels varChaine : chaîne DEBUT Instruction1 Instruction2 … FIN

déclarations

Corps du programme

Où on se rend compte qu’un ordinateur n’est qu’une succession de boites !

Les données
 Données = ensemble des informations manipulées

par un programme
 Les données d'un programme sont mémorisées en

mémoire centrale dans des variables (sortes de cases)

Notion de variable
 Une variable possède :  une valeur contenue par la case mémoire  un identificateur : nom unique par lequel on peut accéder à son contenu  un type qui définit la taille de la place occupée

 Ne pas confondre la variable et son contenu
 Une variable est un contenant (case ou boîte)  Le contenu d'une variable est une valeur numérique,

alphanumérique…

Variable
 Une variable (VAR) est donc une « boite » dans laquelle on met une valeur (un nombre, un mot…) qui peux changer (si l’utilisateur modifie la valeur

par exemple)

 Les variables dont la valeur ne change pas au cours de l'exécution du programme sont appelées

variables constantes (CONST)

Déclaration de variable
 Déclarer une variable :  réserver une place en mémoire  attribuer l'identificateur à cette place  La déclaration indique :  l’identificateur  le type  Exemple : VAR maVar : réel

Types (1)
 Type caractère  lettres, chiffres, ponctuation, code des opérations, espace, retour chariot,…  Exemples : ‘a’ ‘+’ ‘.’
 Type chaîne de caractère  suites de caractères  Exemples : « bonjour » « cac40 »

Types (2)
 Type entier  les nombres entiers  Exemples : 3 45
 Type réel  les nombres réels  Exemples : 3,14
133

37,7

Types (3)
 Type booléen  que deux valeurs possibles  soit VRAI, soit FAUX

Exemples de variables
Mémoire centrale (mémoire vive)

 Identificateur : X  Type : entier  Valeur : 25
X 25

 Identificateur : Y  Type : réel
Y 3,7

 Valeur : 3,7

Où l’addition devient compliquée

Opérateurs
 Les opérations possibles sur les variables dépendent de

leur type
 On ne peux pas multiplier des mots…

Réels
opérations possibles addition soustraction multiplication Division comparaisons symbole ou mot clé + * / <, ≤, >, ≥, =, ≠

Entiers
opérations possibles addition soustraction Multiplication Division Division entière Modulo Comparaisons symbole ou mot clé + * / DIV MOD <, ≤, >, ≥, =, ≠

Caractères
opérations possibles comparaisons symbole ou mot clé <, ≤, >, ≥, =, ≠ (exemple ‘a’ < ‘z’)

Chaînes
opérations possibles Concaténation Longueur Extraction symbole ou mot clé & Longueur (chaîne) Extraction (sous-ch, ch)

Booléens
opérations possibles comparaison négation conjonction disjonction symbole ou mot clé =, ≠ NON ET OU

Rappel
PROGRAMME monProgr /* Constantes: initialisation obligatoire */ CONST const1 <- 10 : entier const2 <- "bonjour!" : chaîne // les variables au sens strict VAR varReel1, varReel2 : réels varChaine : chaîne DEBUT Instruction1 Instruction2 … FIN déclarations

Corps du programme

Instructions
 Instruction = ordre que peut exécuter l'ordinateur
 exécution d'un programme :  Échanges d'informations en mémoire  Calculs  Affichage des résultats

Informations
 Les informations manipulées par les instructions

peuvent prendre plusieurs formes:
 des variables  des constantes  des valeurs littérales ("bonjour", 45, VRAI)  des expressions complexes : combinaisons de variables,

constantes et valeurs littérales avec des opérateurs (2 * r * 3.14)

Les instructions élémentaires
 Affectation : le fait de donner une nouvelle valeur à

une variable (mettre un nombre dans une boite)  lire: Permet à l’ordinateur de récupérer ce que l’utilisateur tape au clavier  ecrire: Permet à l’ordinateur d’afficher sur l'écran ce qu’on veux (le résultat d’un calcul, une variable…)

L’ affectation
 Syntaxe :  Variable <- Valeur
 Valeur évaluée à partir d’une expression :  Variable (le contenu d’une autre boite…)  Constante (une valeur fixe : PI…)  valeur littérale (3 6 5.12…)  expressions complexes (un calcul…)

Exemples
 X <- Y
 X <- 25  X <- 3,3  C <- ‘a’  maChaine <- «bonjour»  B <- VRAI  X <- 25 + Y + 3

Différence avec le = mathématiques
 Quand on dit qu'une variable prend pour valeur une

autre variable, ça ne veut pas dire qu'elles seront toujours égales !  Cela veut seulement dire que la première variable va prendre la valeur de la seconde
 Le contenu de la première boite sera le même celui de la

seconde boite…  Mais si on modifie le contenu de la seconde boite après, ça n’a pas d’impact sur le contenu de la première boite !

Exemples
 Algo :  Maths :
 Algo :  Maths :  Algo :  Maths :

x <- y x = y

différend de y <- x équivaut à y = x
impossible ! a un sens a un sens impossible

x + 12 <- y x + 12 = y x <- x + 7 x = x + 7

La saisie
 Syntaxe :  Lire variable1 [,variableN]*
 Permet à un utilisateur de communiquer des données

au programme  Assigne une valeur entrée au clavier dans une variable  Tant que l'utilisateur n'entre rien au clavier, le déroulement du programme est stoppé

Exemples
 Lire (x)  Lire(x, y)  Lire(a, b, c, d, e, f)

Avantages
 Utiliser le même programme pour des données

différentes  Sans instruction de saisie (ou de lecture sur un périphérique quelconque), un programme fournirait toujours le même résultat

Pièges
 Saisir une valeur ne correspondant pas au type de la

variable où elle doit être stockée
 Essayer de mettre un mot dans une variable de type texte

 L’utilisateur peut penser que le programme s’est arrêté  Si il n’y a rien d’affiché, l’utilisateur ne voit qu’un curseur clignotant…

L’affichage
 Syntaxe :  ecrire variable1 [, variableN]*
 L'instruction d'affichage permet de fournir des

résultats à l'utilisateur à travers l'écran

Exemples
 Ecrire(x)
 Ecrire(«bonjour»)  Ecrire(x, y, z)  Ecrire(x + y)  Ecrire(«le résultat de x + y est : », x

+ y)
On peut afficher plusieurs trucs à la suite grâce à la virgule !

Avantages
 Permet de fournir un résultat
 Permet de guider l’utilisateur  Permet d’afficher des valeurs intermédiaires  Permet de débuguer

Exemple complet
PROGRAMME bonjour CONST bj <- «Bonjour» : chaîne mr <- «Monsieur » : chaîne varNom, ch : chaîne

VAR

DEBUT Ecrire(«Quel est votre nom ?») Lire(varNom) ch <- mr & varNom Ecrire(bj, ch ) FIN

 Réaliser un algorithme : exprimer en pseudo-code les règles de traitement d’un problème pour le soumettre à un ordinateur (par un programme)
 Les données d’un programme sont mémorisées dans des variables qui sont des cases mémoire  Les instructions permettent de manipuler et de déplacer une donnée d'un endroit à un autre de la mémoire

 Une variable est un contenant, qui contient une et une

seule valeur à un moment donné. Elle est caractérisée par
 un identificateur (son nom)  une valeur (qui peut varier au cours du programme, sauf pour les

constantes)  un type (qui détermine sa taille et les opérations possibles)

 Les instructions de base sont :
 l'affectation (permet de changer la valeur d'une variable)  la saisie (permet d'assigner à une variable, une valeur entrée au

clavier)  l'affichage (permet d'écrire le contenu d'une variable ou d'une expression à l'écran)

Exemples de synthèse…
Exemple 1 : Calcul de la surface d ’un rectangle Analyse :
Les trois étapes de cet algorithme : 1. Lecture de données, longueur et largeur 2. Calcul de la surface, longueur*largeur 3. Edition du résultat

Algorithme :
Algorithme surface_rectangle; Variables longueur, largeur, surface : réel; Début Ecrire (‘ Donner les valeurs de la longueur et la largeur ’); Lire (longueur, largeur); surface  longueur*largeur; Ecrire (‘ la surface du rectangle est : ’, surface); Fin
50

Exemples de synthèse…
Exemple 2 : euroVersDirham Analyse :
Les trois étapes de cet algorithme : 1. Lecture des données : VE, tauxC 2. Calcul du VD (valeur en dirham) 3. Edition du résultat

Algorithme :
Algorithme euroVersDirham Entête Variables VE, VD, tauxC : réel; Déclaration des variables Début Ecrire (‘ Donner les valeurs du VE et de tauxC); Lire (VE, tauxC); VD  VE*tauxC; Les instructions Ecrire (‘ le prix VD est : ’,VD); Fin
51

Commentaires…
Afin d'améliorer la lisibilité d'un algorithme, on peut utiliser des commentaires. Un commentaire est une suite de caractères quelconques encadrée par les symboles /* et */ Exemple : /* ceci est un commentaire */

/* le calcul du prix TTC */ Algorithme prix_ttc; /* entête de l ’algorithme */ /* déclaration des variables */ Variables PH,TVA, PTTC : réel; Début /* lecture des variables PH et TVA */ Ecrire (‘ Donner les valeurs du PH et de la TVA’); Lire (PH, TVA); PTTC  PTTC+PH*TVA; /* Calcul du PTTC */ Ecrire (‘ le prix TCC est : ’,PTTC); /* Edition du résultat */
Fin
52

Exercices…
1. Soient n et m deux entiers, écrire l ’algorithme qui permute les valeurs de n et m

(exemple : passer de n=10, m=15 à n=15, m=10)
Algorithme permutation; Variables X,Y : réel ; Z : réel ; /* variable intermédiaire */ Début /* lecture des variables X et Y */ Ecrire (‘ Donner les valeurs de X et de Y’); Lire (X, Y); Ecrire (‘ Avant permutation : X =’,X, ‘ Y=‘ ,Y); /* permutation des valeurs des variables X et Y */ ZX; XY; YZ; Ecrire (‘ Après permutation : X =’,X, ‘ Y=‘ ,Y); Fin
53

2. Les structures de contrôles…

Objectifs Dans ce chapitre nous décrivons : • la structure alternative SI … ALORS … SINON • la structure de choix multiple CAS ... • les structures répétitives – la boucle POUR – la boucle TANT QUE – la boucle REPETER

54

Enchaînement des actions…
On utilisera cette structure lorsqu'une action doit succéder à une autre

e1

T1 T s1 e2 T2 T

Exemple : Calcul du prix TTC Algorithme :
Algorithme prix_ttc Variables PH,TVA, PTTC : réel; Début Ecrire (‘ Donner les valeurs du PH et de la TVA’); Lire (PH, TVA); PTTC PTTC+ PH*TVA; Ecrire (‘ le prix TCC est : ’,PTTC);
Fin

s2

55

Structure alternative ou conditionnelle…
oui condition Vraie ? non

T1

T2

SI (Condition) ALORS T1; SINON T2; FSI

suite du programme

La condition désigne une expression booléenne dont la valeur est VRAI ou FAUX. T1 et T2 désignent une suite d'instructions (pouvant elles mêmes être des structures alternatives).

56

Structure alternative ou conditionnelle…
Exemple 1 : n et m sont deux entiers. Écrire l ’algorithme qui retourne la plus grande valeur de A et B ?
ALGORITHME MAXIMUM_DE_DEUX_NOMBRES VARIABLES A, B : ENTIER; /* les deux nombres à comparer */ MAX : ENTIER; /* le plus grand */ DEBUT ECRIRE('Entrez les valeurs de A et B :'); LIRE(A, B); SI (A >= B) ALORS MAX  A; SINON MAX  B; FSI /* Fin de la structure SI */ ECRIRE('le maximum de ', A,' et de ',B,' est : ',MAX); FIN
57

Structure alternative ou conditionnelle…
Exemple 1 : n et m sont deux entiers. Écrire l ’algorithme qui retourne la plus grande valeur de A et B ?
ALGORITHME MAXIMUM_DE_DEUX_NOMBRES VARIABLES A, B : ENTIER; /* les deux nombres à comparer */ MAX : ENTIER; /* le plus grand */ DEBUT ECRIRE('Entrez les valeurs de A et B :'); LIRE(A, B); MAX A SI (B >A) ALORS MAX  B; FSI /* Fin de la structure SI */ ECRIRE('le maximum de ', A,' et de ',B,' est : ',MAX); FIN
58

Structure alternative ou conditionnelle…
Exemple 2 : Afficher la valeur absolue d ’un entier quelconque N
ALGORITHME Valeur_absolue VARIABLES N : ENTIER; ABS : ENTIER; /* valeur absolue */ DEBUT ECRIRE('Entrez une valeur entière :'); LIRE(N); SI (N >=0) ALORS ABS  N; SINON ABS  -N; FSI ECRIRE( ’la valeur absolue de ', N,' est : ',ABS); FIN

59

Structure alternative ou conditionnelle…

Exercice : on veut résoudre, dans l’ensemble des nombres réels, une équation du second degré à coefficients réels. a, b et c sont des réels non nuls, écrire l ’algorithme qui retourne les racines réelles de l équation suivante : ax2 + bx +c = 0

60

Structure alternative généralisée…
e

Expression

T1

T2

T3

T4

s

Suivant la valeur de l'expression, un des traitements T1, T2, T3 ou T4 est exécuté.

61

Structure alternative généralisée…
En pseudo-langage, on écrira CAS (expression) valeur1 : T1; valeur2 : DEBUT T21; T22; FIN valeur3 : T3; valeur4 : T4; AUTRE T_autre; FIN CAS

62

Structure alternative généralisée…
Exemple : On désire calculer le salaire net (SN) d'un employé en tenant compte du nombre de personnes à charge. Le tableau des déductions par rapport au nombre de personnes à charge est le suivant :
Nombre de personnes à charge 0 1 2 3 4 ou 5 6 et plus Déductions du salaire brut (SB) 20% 18% 15%

13%
10% 08%

Ecrire l ’algorithme qui lit les données suivantes :  le nombre de personnes à charge (pers_ch de type entier)  le nombre d'heures de travail (nb_heur de type entier)  le taux horaire (taux de type réel) puis calcule le salaire net ?
63

Structure alternative généralisée…
ALGORITHME exemple1_CAS VARIABLES SN, SB, Taux : réel; nb_heur, pers_ch : entier; déduction : réel; DEBUT

ECRIRE( ’le nombre de pers_ch '); LIRE (pers_ch); ECRIRE( ’le nombre d heures '); LIRE (nb_heur); ECRIRE( ’le taux horaire '); LIRE (taux); SB  taux*nb_heur; CAS (pers_ch) 0 : déduction  0.20*SB; 1 : déduction  0.18*SB; 2 : déduction  0.15*SB; 3 : déduction  0.13*SB; 4,5 : déduction  0.10*SB; AUTRE déduction  0.08*SB; FIN CAS SN  SB - déduction ECRIRE(‘ le salaire net est : ‘ ,SN);

64

FIN

Structure alternative généralisée…
Exercice : Écrire l ’algorithme qui lit un caractère et vérifie s ’il est une lettre, un chiffre ou un caractère spécial.

ALGORITHME exemple2_CAS VARIABLES C : CARACTERE; DEBUT ECRIRE('Entrez un caractère :'); LIRE(C) ; CAS (C) ‘ a ’ … ‘ z ’ , ‘ A ’ … ‘ Z ’ : ECRIRE(C , ’ est une lettre ’); ‘0’…‘9’ : ECRIRE(C , ’ est un chiffre ’); AURTE : ECRIRE(C , ’ est un caractère spécial ’); FIN CAS FIN

65

Structures itératives…
La notion d'itération est l'une des notions fondamentales de l'algorithmique. Elle est utilisée lorsque l'on doit exercer plusieurs fois le même traitement sur un même objet.

Il existe trois répétition :

structures

de

initialisation

1. La boucle POUR 2. La boucle TANT QUE 3. La boucle REPETER

condition Vraie ? oui bloc d'instructions

non

modification

suite du programme

66

La boucle POUR…
Pour variable_de_contrôle = valeur_min jusque valeur_max Faire Début Bloc d ’instructions; Fin

ou
• variable_de_contrôle est la variable de contrôle (compteur) • valeur_min et valeur_max indique respectivement la valeur minimale
est la valeur maximale

67

La boucle POUR…
Exemple 1 : Soit n un entier, afficher les valeurs 1, 2, …, n
ALGORITHME exemple1_POUR VARIABLES n : ENTIER; i : ENTIER; /* variable de contrôle */ DEBUT ECRIRE('Entrez une valeur entière :'); LIRE(n); POUR i=1 jusque n FAIRE début ECRIRE( i); Fin
FIN

68

La boucle POUR …
Exemple 2 : Calculer n! (n!= 1*2*3* … *n)
ALGORITHME exemple2_POUR VARIABLES n, fac : ENTIER; i : ENTIER; /* variable de contrôle */ DEBUT ECRIRE('Entrez une valeur entière :'); LIRE(n); fac 1 POUR i=1 jusque n FAIRE début fac fac*i Fin ECRIRE( ’factoriel de ', n,' est : ',fac); FIN
69

La boucle Tant que
TANT QUE Condition FAIRE DEBUT T1; FIN
Lorsque la condition a pour valeur VRAI, on exécute le traitement T1 puis on revient tester la condition. Il est donc nécessaire que l'action T1 modifie la condition sinon l'itération ne s'arrêtera pas. Lorsque la condition a pour valeur FAUX, le traitement séquentiel continue. L'itération est terminée
e VRAI Condition

FAUX T1

s

70

La boucle Tant que
Une suite S de nombres non nuls est saisie au clavier. La fin de S est marquée par un nombre nul. Écrire l’algorithme qui affiche les variables (Pos) et (Neg) représentant respectivement le nombre de valeurs positives et le nombre de valeurs négatives

Exemple :

71

La boucle Tant que
ALGORITHME exemple_Tant-que VARIABLES pos, neg ,n : ENTIER; i : ENTIER; /* variable de contrôle */ DEBUT pos  0 ; neg  0 ECRIRE('Entrez une valeur entière : (0 pour terminer)'); LIRE(n); TANT QUE (n<>0) FAIRE début /* début de tant que */ SI n<0 ALORS neg neg +1 SINON pos pos +1 ECRIRE('Entrez une valeur entière : (0 pour terminer)'); LIRE(n); fin /* fin de tant que */ … /* afficher les valeurs de Pos et neg */ FIN
72

La boucle REPETER
REPETER Bloc d ’instructions; JUSQU’A CE QUE (expression soit Vraie)
b lo c d ' in s tru c tio n s

N on

c o n d itio n v ra ie

O ui

s u ite d u p ro g ra m m e

73

Exercices
Exercice 1: Calcul de la somme des n premiers entiers positifs
Calculer la somme des n premiers entiers positifs, par additions successives des entiers : Somme = 1+2+…+N.

ALGORITHME Somme_v1 VARIABLES somme ,N : ENTIER; i : ENTIER; /* variable de contrôle */ DEBUT Somme  0; ECRIRE('Entrez la valeur de N'); LIRE(N); Pour i=1 jusqu ’a N Faire début /* début de Pour */ Somme  Somme +i; fin /* fin de Pour */ ECRIRE(‘ Somme = ’, Somme); FIN
74

/* La structure Pour */

Exercices
ALGORITHME Somme_v2 VARIABLES somme ,N : ENTIER; i : ENTIER; /* variable de contrôle */ DEBUT Somme  0 ; ECRIRE('Entrez la valeur de N'); LIRE(N); i=1; Tant que (i<=N) Faire début /* début de Tant que */ Somme  Somme +i; i=i+1; fin /* fin de Tant que */ ECRIRE(‘ Somme = ’, Somme); FIN

/* La structure Tant que */

75

Exercices
ALGORITHME Somme_v2 VARIABLES somme ,N : ENTIER; i : ENTIER; /* variable de contrôle */ DEBUT Somme  0 ; ECRIRE('Entrez la valeur de N'); LIRE(N); i=1; Répéter Somme  Somme +i; i=i+1; Jusque ’a ce que (i>N) ECRIRE(‘ Somme = ’, Somme); FIN

/* La structure Répéter */

76

Exercices
Exercice 1
Écrire l'algorithme qui calcule le carré d'un entier saisi au clavier.

Exercice 2
Écrire l'algorithme qui saisie un prix unitaire, une quantité et qui calcule le prix total.

Exercice 3
Écrire l'algorithme qui lit deux nombres et les imprime dans l’ordre croissant de leurs valeurs.

Exercice 4
Soient trois nombres x, y et z. Écrire un algorithme qui détermine et imprime le plus grand des trois.

77

Exercices A partir d’un nombre lu en données, on détermine un montant net par application d’une remise de :
 1.5 % si le montant est compris entre 2000 et 5000 DH  2.5 % si le montant est compris entre 5001 et 10000 DH  3 % si le montant excède 10000 DH Écrire l'algorithme qui lit en entrée le montant et fournit en sortie la remise net.

78

Exercices
Exercice 6 Donner la trace de l ’algorithme suivant :
Variables I, J : entier ; Début I1; Ecrire(‘Itération ‘,I); Répéter J1; Tant que (J<4) Faire Début de tant que Ecrire(‘Itération ‘,J); J  J+1 ; Ecrire(I, J) ; Fin tant que I  I+1 ; Jusqu’à (I=5) ; Fin

79