Академический Документы
Профессиональный Документы
Культура Документы
1 2 3
Choix des identificateurs (1) Choix des identificateurs (2) Types des variables
Le choix des noms de variables est soumis à quelques règles qui Conseil: pour la lisibilité du code choisir des noms significatifs Le type d’une variable détermine l’ensemble des valeurs qu’elle peut
varient selon le langage, mais en général: qui décrivent les données manipulées prendre, les types offerts par la plus part des langages sont:
Type numérique (entier ou réel)
Un nom doit commencer par une lettre alphabétique exemples: TotalVentes2006, Prix_TTC, Prix_HT • Byte (codé sur 1octet): de 0 à 255
exemple valide: A1 exemple invalide: 1A • Entier court (codé sur 2 octets) : -32 768 à 32 767
• Entier long (codé sur 4 ou 8 octets)
doit être constitué uniquement de lettres, de chiffres et du
Remarque: en pseudo-code algorithmique, on va respecter • Réel simple précision (codé sur 4 octets)
soulignement _ (Eviter les caractères de ponctuation et les espaces)
les règles citées, même si on est libre dans la • Réel double précision (codé sur 8 octets)
valides: SMI2007, SMI_2007 invalides: SMI 2007, SMI-2007, SMI;2007
syntaxe Type logique ou booléen: deux valeurs VRAI ou FAUX
doit être différent des mots réservés du langage (par exemple en Type caractère: lettres majuscules, minuscules, chiffres, symboles, …
Java: int, float, else, switch, case, default, for, main, return, …)
exemples: ’A’, ’a’, ’1’, ’?’, …
La longueur du nom doit être inférieure à la taille maximale spécifiée Type chaîne de caractère: toute suite de caractères,
par le langage utilisé exemples: " Nom, Prénom", "code postale: 1000", …
4 5 6
1
09/05/2014
Exercices simples sur l'affectation (2) Exercices simples sur l'affectation (3) Expressions et opérateurs
Donnez les valeurs des variables A et B après exécution des Une expression peut être une valeur, une variable ou une
Ecrire un algorithme permettant d’échanger les opération constituée de variables reliées par des opérateurs
instructions suivantes ?
valeurs de deux variables A et B exemples: 1, b, a*2, a+ 3*b-c, …
Variables A, B : Entier L'évaluation de l'expression fournit une valeur unique qui est le
Début résultat de l'opération
A←1
B←2 Les opérateurs dépendent du type de l'opération, ils peuvent être :
A←B
B←A
• des opérateurs arithmétiques: +, -, *, /, % (modulo), ^ (puissance)
Fin
• des opérateurs logiques: NON, OU, ET
• des opérateurs relationnels: =, , <, >, <=, >=
Les deux dernières instructions permettent-elles d’échanger les • des opérateurs sur les chaînes: & (concaténation)
valeurs de A et B ? Une expression est évaluée de gauche à droite mais en tenant
compte de priorités
10 11 12
Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de Les instructions de lecture et d'écriture permettent à la machine de L'écriture permet d'afficher des résultats à l'écran (ou de les écrire
priorité est le suivant (du plus prioritaire au moins prioritaire) : communiquer avec l'utilisateur dans un fichier)
La lecture permet d'entrer des donnés à partir du clavier
•
•
^ : (élévation à la puissance)
• En pseudo-code, on note: écrire (var)
* , / (multiplication, division) • En pseudo-code, on note: lire (var)
• % (modulo)
la machine met la valeur entrée au clavier
la machine affiche le contenu de la
• + , - (addition, soustraction) dans la zone mémoire nommée var
zone mémoire var
exemple: 2+3*7 vaut 23
• Remarque: Le programme s'arrête lorsqu'il rencontre une
• Conseil: Avant de lire une variable, il est fortement conseillé
d’écrire des messages à l’écran, afin de prévenir l’utilisateur de
En cas de besoin (ou de doute), on utilise les parenthèses pour instruction Lire et ne se poursuit qu'après la frappe d’une valeur
ce qu’il doit frapper
indiquer les opérations à effectuer en priorité au clavier et de la touche Entrée
exemple: (2 + 3) * 7 vaut 35
13 14 15
16 17 18
2
09/05/2014
19 20 21
25 26 27
3
09/05/2014
Tests imbriqués Tests imbriqués: exemple (version 1) Tests imbriqués: exemple (version 2)
Les tests peuvent avoir un degré quelconque d'imbrications Variable n : entier Variable n : entier
Début Début
Si condition1 alors
Ecrire ("entrez un nombre : ") Ecrire ("entrez un nombre : ")
Si condition2 alors Lire (n)
Lire (n)
instructionsA Si n < 0 alors Si n < 0 alors Ecrire ("Ce nombre est négatif")
Sinon Ecrire ("Ce nombre est négatif") Finsi
instructionsB Si n = 0 alors Ecrire ("Ce nombre est nul")
Sinon
Finsi
Finsi Si n = 0 alors Si n > 0 alors Ecrire ("Ce nombre est positif")
Sinon Ecrire ("Ce nombre est nul")
Finsi
Si condition3 alors Sinon Fin
instructionsC Ecrire ("Ce nombre est positif") Remarque : dans la version 2 on fait trois tests systématiquement alors que
Finsi Finsi dans la version 1, si le nombre est négatif on ne fait qu'un seul test
Finsi Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer
Finsi
d'abord les conditions les plus probables (minimiser la complexité)
Fin
31 32 33
Tests imbriqués: exercice Tests imbriqués: corrigé de l'exercice Tests imbriqués: Exercice 2
Variables copies : entier
Le prix de photocopies dans une reprographie varie selon le prix : réel
nombre demandé: 0,5 DH la copie pour un nombre de copies Début Écrire l’algorithme du traitement qui calcule le discriminant
inférieur à 10, 0,4DH pour un nombre compris entre 10 et 20 et Ecrire ("Nombre de photocopies : ") DELTA d’trinome du second degré AX2 + BX + C et qui, en
0,3DH au-delà. Lire (copies) fonction de son signe, calcule la ou les racines réelles du
Si copies < 10 Alors trinome ou afiche, si besoin est qu’il n’ya pas de racine réelle.
Ecrivez un algorithme qui demande à l’utilisateur le nombre de prix ← copies*0.5
photocopies effectuées, qui calcule et affiche le prix à payer Sinon Si copies < 20 Les trois coefficients A, B et C seront saisis au clavier avant
prix ← copies*0.4
traitement.
Sinon
prix ← copies*0.3
Finsi
Finsi
Ecrire (“Le prix à payer est : ”, prix)
Fin
34 35 36
4
09/05/2014
Début
A, B, C, Delta, X1, X2 : réels Algorithmique On distingue 2 types de boucles:
Lire (A, B, C)
Delta ← B2 – 4 AC • Les boucles à compteur ou définie
Si (Delta < 0) Alors • On sait à l’avance combien de fois la boucle devra tourner et
Ecrire (« le trinome n’a pas de racine réelle ») une variable (le compteur ) compte les répétitions
Sinon • Choisir 10 nombres au hasard. On fera dix fois l’opération choisir
Si (Delta > 0 Alors un nombre au hasard.
X1 ← (-B + racine(delta)) / 2A • Ex : la boucle Pour
X2 ← (-B - racine(delta)) / 2A
Ecrire (« le trinome possède deux racines réelles : », X1, X2) Les boucles • Les boucles à événement ou indéfinie
Sinon • On ne sait pas à l’avance le nombre de fois que la boucle sera
exécutée.
X1 ← (-B ) / 2A • Ça peut dépendre du nombre de données à traiter.
Ecrire (« le trinome possède une racine réelle : », X1) • Ça peut dépendre du nombre d’essais que l’usager a effectués.
Finsi • Ex : la boucle Tanque et la boucle jusqu’a
Finsi
Fin
37 38 39
Les boucles Tant que Boucle Tant que : exemple simple Les boucles Pour
Un algorithme qui détermine le premier nombre entier N tel que la
Pour compteur allant de initiale à finale par pas valeur du pas
somme de 1 à N dépasse strictement 100
TantQue (condition)
instructions
Variables som, i : entier
instructions Debut FinPour
i←0
i ←initiale
som← 0
FinTantQue Vrai TantQue (som <=100)
condition instructions
i ← i+1
som ← som+i Vrai
Faux i n'a pas atteint finale instructions i ← i + pas
FinTantQue
Ecrire (" La valeur cherchée est N= ", i)
Fin Faux
40 41 42
Les boucles Pour Déroulement des boucles Pour Boucle Pour : remarque
Remarques : 1) La valeur initiale est affectée à la variable compteur Il faut éviter de modifier la valeur du compteur (et de finale) à
l'intérieur de la boucle. En effet, une telle action :
2) On compare la valeur du compteur et la valeur de finale :
Compteur est une variable de type entier (ou caractère). Elle doit • perturbe le nombre d'itérations prévu par la boucle Pour
a) Si la valeur du compteur est > à la valeur finale dans le cas d'un pas
être déclarée
positif (ou si compteur est < à finale pour un pas négatif), on sort de la
• rend difficile la lecture de l'algorithme
boucle et on continue avec l'instruction qui suit FinPour • présente le risque d'aboutir à une boucle infinie
Pas est un entier qui peut être positif ou négatif. Pas peut ne pas
être mentionné, car par défaut sa valeur est égal à 1. Dans ce cas, le b) Si compteur est <= à finale dans le cas d'un pas positif (ou si compteur Exepmle : Pour i allant de 1 à 5
nombre d'itérations est égal à finale - initiale+ 1 est >= à finale pour un pas négatif), instructions seront exécutées i i -1
écrire(" i = ", i)
i. Ensuite, la valeur de compteur est incrémentée de la valeur du pas
Finpour
Initiale et finale peuvent être des valeurs, des variables définies si pas est positif (ou décrémenté si pas est négatif)
avant le début de la boucle ou des expressions de même type que ii. On recommence l'étape 2 : La comparaison entre compteur et
compteur finale est de nouveau effectuée, et ainsi de suite …
43 44 45
5
09/05/2014
46 47 48
Variables x, puiss : réel Écrire deux algorithmes qui calculent Algorithme / tantque Algorithme / Pour
Calcul factorielle 1
n, i : entier pour un entier positif donné n la valeur Variables
Calcul factorielle 2
Variables
Debut
Ecrire (" Entrez respectivement les valeurs de x et n ") n!, un de ces algorithmes doit utilisé la i, f, n : Naturel i, f, n : Naturel
Début
Lire (x, n) boucle Pour et l’autre la boucle Tanque i←1
Début
f←1
puiss ← 1, i ← 1
f←1 pour i variant de 2 à n
TantQue (i<=n) tant que (i < n) f←f*i
puiss← puiss*x i ← i+1 Fin pour
i ← i+1 Entrée : n de type naturel f←f*i écrire (f)
FinTantQue
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Sortie : factoriel (n) = 1*2*3*…..*(n-1)*n Fin de tant que
écrire (f)
Fin
Fin Fin
49 50 51
Jusqu'à condition
Pour i allant de 1 à 5 OX Instruction;
Faux
Pour j allant de 1 à i OOX while (condition) condition
condition
écrire("O") OOOX Vraie
do Vrai
FinPour OOOOX
{ La boucle s’exécute tant que la Fausse
écrire("X") OOOOOX Condition est évaluée après chaque itération
f :=n; condition est vraie. La boucle
FinPour n--; cesse lorque la condition est
les instructions entre Répéter et jusqu’à sont exécutées au moins une fois et
fausse. À utiliser si l’on veut que la
} while (n>1); leur exécution est répétée jusqu’à ce que condition soit vrai (tant qu'elle est
boucle soit exécutée au moins une
fausse)
fois
52 53 54
6
09/05/2014
58 59 60
61 62 63
7
09/05/2014
Transmission des paramètres : exemples Transmission par valeur, par adresse : exemples Variables locales et globales (1)
Procédure incrementer1 (x : entier par valeur, y : entier par adresse) Procédure qui calcule la somme et le produit de deux entiers : On peut manipuler 2 types de variables dans un module (procédure ou
x ← x+1 Procédure SommeProduit (x,y: entier par valeur, som, prod : entier par adresse) fonction) : des variables locales et des variables globales. Elles se
y ← y+1 som ← x+y distinguent par ce qu'on appelle leur portée (leur "champ de définition", leur
FinProcédure prod ← x*y "durée de vie")
8
09/05/2014
9
09/05/2014
Tableaux à deux dimensions Exemples : lecture d'une matrice Exemples : affichage d'une matrice
Les langages de programmation permettent de déclarer des Procédure qui permet de saisir les éléments d'une matrice : Procédure qui permet d'afficher les éléments d'une matrice :
tableaux dans lesquels les valeurs sont repérées par deux indices.
Procédure SaisieMatrice(n : entier par valeur, m : entier par valeur , Procédure AfficheMatrice(n : entier par valeur, m : entier par valeur
Ceci est utile par exemple pour représenter des matrices
tableau A : réel par référence ) ,tableau A : réel par
Début valeur )
En pseudo code, un tableau à deux dimensions se déclare ainsi : variables i,j : entier Début
variable tableau identificateur[dimension1] [dimension2] : type Pour i allant de 0 à n-1 variables i,j : entier
écrire ("saisie de la ligne ", i + 1)
Pour i allant de 0 à n-1
• Exemple : une matrice A de 3 lignes et 4 colonnes dont les éléments Pour j allant de 0 à m-1
Pour j allant de 0 à m-1
sont réels écrire ("Entrez l'élément de la ligne ", i + 1, " et de la colonne ", j+1)
lire (A[i][j])
écrire ("A[",i, "] [",j,"]=", A[i][j])
variable tableau A[3][4] : réel FinPour
FinPour
FinPour FinPour
A[i][j] permet d'accéder à l’élément de la matrice qui se trouve à
l’intersection de la ligne i et de la colonne j Fin Procédure Fin Procédure
82 83 84
Exemples : somme de deux matrices Appel des procédures définies sur les matrices Tableaux : Exemple d’exercice
Procédure qui calcule la somme de deux matrices : Exemple d'algorithme principale où on fait l'appel des procédures définies
précédemment pour la saisie, l'affichage et la somme des matrices :
Procédure SommeMatrices(n, m : entier par valeur, Écrire l’algorithme du traitement qui permet de
tableau A, B : réel par valeur , tableau C : réel par référence ) Algorithme Matrices saisir 10 nombres entiers dans un tableau à
Début variables tableau M1[3][4],M2 [3][4],M3 [3][4] : réel une dimension, puis qui recherche et affiche la
variables i,j : entier Début valeur minimale entrée dans un tableau.
Pour i allant de 0 à n-1 SaisieMatrice(3, 4, M1) L’affichage mentionnera également l’indice
Pour j allant de 0 à m-1 SaisieMatrice(3, 4, M2) auquel se trouve ce minimum.
C[i][j] ← A[i][j]+B[i][j] AfficheMatrice(3,4, M1)
FinPour AfficheMatrice(3,4, M2)
FinPour SommeMatrice(3, 4, M1,M2,M3)
Fin Procédure AfficheMatrice(3,4, M3)
Fin
85 86 87
88
10