Get this course plus top-rated picks in tech skills and other popular topics.
Algorithmique Partie5-boucles.pdf
Algorithmique: Partie5
PRÉPARÉ PAR PR. <Username>
GINFO1
Année Scolaire 2021-2022
Les boucles
Les boucles servent à répéter l'exécution d'un groupe d'instructions un
certain nombre de fois
On distingue trois sortes de boucles en langages de programmation :
Les boucles tant que (while): on y répète des instructions tant qu'une certaine
condition est réalisée
Les boucles répéter jusqu’à (do while): on y répète des instructions jusqu'à ce qu'une
certaine condition soit réalisée
Les boucles pour ou avec compteur (For): on y répète des instructions en faisant évoluer un compteur (variable particulière) entre une valeur initiale et une valeur
finale
La boucle Tant que (1)
la condition (dite condition de contrôle de la boucle) est évaluée avant chaque itération
si la condition est vraie, on exécute instructions (corps de la boucle), puis, on retourne tester la condition. Si elle est encore vraie, on répète l'exécution, …
si la condition est fausse, on sort de la boucle et on exécute l'instruction qui est après FinTantQue
La boucle Tant que (2)
Le nombre d'itérations dans une boucle TantQue n'est pas connu au moment d'entrée dans la boucle.
Il dépend de l'évolution de la valeur de condition
Une des instructions du corps de la boucle doit absolument changer la valeur de condition de vrai à faux (après un certain nombre d'itérations), sinon le programme tourne indéfiniment
=> Attention aux boucles infinies
Exemple de boucle infinie :
i ← 2
TantQue (i > 0)
i ← i+1 (attention aux erreurs de frappe : + au lieu de -)
FinTantQue
Boucle Tant que : exemple (nombre d’iterations est inconnu)
Contrôle de saisie d'une lettre majuscule jusqu’à ce que le caractère entré soit valable:
Variable C : caractère
Debut
Ecrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z’)
Ecrire ("Saisie erronée. Recommencez")
Lire (C)
FinTantQue
Ecrire ("La letter entree est en majuscule")
Fin
Début
Fin
Afficher Entrez une lettre C
Lire C
Ecrire ("Saisie erronée.Recommencez")
C < 'A' ou C > 'Z’
Faux Vrai
Organigramme
Lire C
Ecrire ("La lettre entree est en majuscule")
Reboucler
La boucle Repeter Jusqu’a
la condition (dite condition de contrôle de la boucle) est évaluée avant chaque itération
si la condition est fausse, on exécute instructions (corps de la boucle), puis, on retourne tester la condition. Si elle est encore vraie, on répète l'exécution, …
si la condition est vrai, on sort de la boucle et on exécute l'instruction qui est après jusqu’a
Repeter Instructions
Jusqu’a (condition) Vrai
Faux
1. Ecrivez un algorithme qui reçoit un entier de
l’utilisateur et ne l’affiche que si il est positif.
2. Tracez l’organigramme.
Repeter jusqu’a: exemple (nombre d’iterations est inconnu)
Algorithme
Variables: X: entier Début
Répéter
écrire (Entrez un entier X)
Lire (X)
Jusqu’à (x>0)
écrire (X est positif)
Fin
Début
Fin
écrire (Entrez un entier X)
Lire (X)
écrire (X est positif)
Si X>0
Faux
Vrai
Organigramme
Reboucler
Boucle Pour: Exemple
(nombre d’itérations est connu)
1. Ecrivez un algorithme pour calculer la moyenne de
N notes entrées par l’utilisateur et l’afficher sur
l’écran.
2. Tracez l’organigramme.
11
Algorithme
Variables N,i: entier
Note, somme, Moy: reel
debut
somme 0 Afficher (“Entrez N”)
Lire (N)
Pour i allant de 1 a N faire
Afficher (“Entrez Note”)
Lire (Note)
somme somme+Note fin Pour
Moy somme/N Affichez (Moy)
fin
13
Début
Fin
i<=N
Somme 0
Lire(Note)
i i+1
Afficher (“Entrez N”)
Afficher (“La Moyenne de N notes est: ”,Moy)
Vraie
Faux
i 1
Afficher (“Entrez une note”)
somme somme+Note
Moy Somme/N
Lire (N)
Reboucler
Algorithmique Partie1-Introduction.pdf
Notions
d’Algorithmiques:
Partie1
Préparé par<Username>
GINFO1
Année Scolaire
2020-2021
Plan
Définition d’un algorithme
Les notions de bases
Les outils de bases de l’algorithmique:
Les identificateurs
Les types de variables
Les instructions élémentaires en algorithmique:
Déclaration des variables
L’affectation
Les opérations de lecture/Ecriture
L’organigramme
Exercices
Lo mot Algorithme
Le mot algorithme est issu de la déformation du nom d’un
savant perse du IXème siècle appelé Al Khuwarizmi.
Donc, il n’y a aucun rapport avec le mot rythme, ce qui explique
l’absence de y dans le mot algorithme.
Algorithme : séquence finie d’actions permettant de résoudre
un problème donné.
La notion d’algorithmique est directement dérivée du concept
d’algorithme.
Algorithmique : ensemble des méthodes permettant de définir
et/ou d’étudier des algorithmes.
Definition d’un algorithme
Un algorithme prend en entrée des données et fournit un résultat
permettant de donner la réponse à un problème
Un algorithme =Une série d’opérations à effectuer :
o Opérations exécutées en séquence ⇒algorithme séquentiel.
o Opérations exécutées en parallèle ⇒algorithme parallèle.
o Opérations exécutées sur un réseau de processeurs ⇒algorithme réparti ou
distribué.
Mise en œuvre de l’algorithme
= implémentation (plus général que le codage)
= écriture de ces opérations dans un langage de programmation donne un
programme.
Représentation d’un
algorithme Un algorithme est généralement exprimé par
Un langage informel, ou incomplètement formalisé : texte libre (i.e.
description des différentes étapes en français),
Un Organigramme (diagramme représentant les étapes),
Un pseudo-code (version simplifiée d’un langage informatique) ou autres.
Notions de base
Dans les langages de programmation une variable sert à
stocker la valeur d’une donnée
Une variable désigne en fait un emplacement mémoire
dont le contenu peut changer au cours d’un programme
(d’où le nom variable)
Règle : Les variables doivent être déclarées avant
d’être utilisées, elles doivent être caractérisées par :
un nom (Identificateur)
un type (entier, réel, caractère, chaîne de caractères, …)
Choix des identificateurs (1)
Le choix des noms de variables est soumis à quelques règles qui varient selon le langage, mais en général:
Un nom doit commencer par une lettre alphabétique exemple valide: A1 exemple invalide: 1A
doit être constitué uniquement de lettres, de chiffres et du soulignement _ (Eviter les caractères de ponctuation et les espaces)
Exemples:
Noms valides: SMIP2007, SMP_2007
Noms invalides: SMP 2005,SMI-2007,SMP;2007
doit être différent des mots réservés du langage (par exemple en Java: int, float, else, switch, case, default, for, main, return, …)
La longueur du nom doit être inférieure à la taille maximale spécifiée par le langage utilisé
Choix des identificateurs (2)
Conseil: pour la lisibilité du code choisir des noms
significatifs qui décrivent les données manipulées
exemples: TotalVentes2004, Prix_TTC, Prix_HT
Remarque: en pseudo-code algorithmique, on va
respecter les règles citées, même si on est libre dans la
syntaxe
Types de variables
Le type d’une variable détermine l’ensemble des valeurs qu’elle peut prendre, les types offerts par la plus part des langages sont:
Type numérique (entier ou réel)
Byte (codé sur 1octet): de 0 à 255
Entier (codé sur 2 octets) : -32 768 à 32 767
Entier long (codé sur 4 ou 8 octets)
Réel simple précision (codé sur 4 octets)
Réel double précision (codé sur 8 octets)
Type logique ou booléen: deux valeurs VRAI ou FAUX
Type caractère: lettres majuscules, minuscules, chiffres, symboles, … exemples: ’A’, ’a’, ’1’, ’?’, …
Type chaîne de caractère: toute suite de caractères, exemples: " Nom, Prénom", "code postale: 1000", …
Declaration des variables
Rappel: toute variable utilisée dans un programme doit avoir fait
l’objet d’une déclaration préalable
En pseudo-code, on va adopter la forme suivante pour la
déclaration de variables:
Variables liste d'identificateurs : type
Exemple:
Variables i, j, k : entier
x, y : réel
ch1, ch2 : chaîne de caractères
Remarque: pour le type numérique on va se limiter aux entiers et
réels.
L’instruction d’affectation
l’affectation consiste à attribuer une valeur à une variable
(ça consiste en fait à remplir où à modifier le contenu d'une zone mémoire)
En pseudo-code, l'affectation se note avec le signe ←
Var← 2 : veut dire attribuer la valeur de 2 à la variable Var
e peut être une valeur, une autre variable ou une expression
Var et e doivent être de même type ou de types compatibles
l’affectation ne modifie que ce qui est à gauche de la flèche
Ex valides: i ←1 j ←i k ←i+j
x ←10.3 OK ←0 ch1 ←"SMI"
ch2 ←ch1 x ←4 x ←j
(voir la déclaration des variables dans le transparent précédent)
non valides: i ←10.3 OK ←"SMI" j ←x
Remarques importantes
Beaucoup de langages de programmation (C/C++, Java, …) utilisent le signe égal = pour l’affectation ←. Attention aux confusions:
l'affectation n'est pas commutative : A=B est différente de B=A
l'affectation est différente d'une équation mathématique :
A=A+1 a un sens en langages de programmation
A+1=2 n'est pas possible en langages de programmation et n'est pas équivalente à A=1
Certains langages donnent des valeurs par défaut aux variables déclarées.
Pour éviter tout problème il est préférable d'initialiser les variables déclarées
Exercice1
Donnez les valeurs des variables A, B et C après exécution des instructions suivantes ?
Algorithme test1
Variables A, B, C: Entier
Début
A ← 3
B ← 7
A ← B
B ← A+5
C ← A + B
C ← B – A
Fin
Exercice2
Donnez les valeurs des variables A et B après exécution des instructions suivantes ?
Algorithme test2
Variables A, B : Entier
Début
A ← 1
B ← 2
A ← B
B ← A
Fin
Les deux dernières instructions permettent-elles d’échanger les valeurs de A et B ?
Les instructions d'entrées-sorties:
lecture et écriture (1)
Les instructions de lecture et d'écriture permettent à la
machine de communiquer avec l'utilisateur
La lecture permet d'entrer des donnés à partir du
clavier
En pseudo-code, on note: lire (var)
la machine met la valeur entrée au clavier dans la zone
mémoire nommée var
Remarque: Le programme s'arrête lorsqu'il rencontre
une instruction Lire et ne se poursuit qu'après la frappe
d’une valeur au clavier et de la touche Entrée
Les instructions d'entrées-sorties:
lecture et écriture (2)
L'écriture permet d'afficher des résultats à l'écran (ou
de les écrire dans un fichier)
En pseudo-code, on note: écrire (var)
la machine affiche le contenu de la zone mémoire var
Conseil: Avant de lire une variable, il est fortement
conseillé d’écrire des messages à l’écran, afin de
prévenir l’utilisateur de ce qu’il doit frapper
Exemple1
Ecrivez un algorithme pour lire un entier de
l’utilisateur et l’afficher sur écran.
Solution:
Algorithme test3
variable x:entier
début
afficher (entrez un entier: )
lire(x)
afficher(x)
fin
Exemple2
Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui calcule et affiche le double de ce nombre.
Solution:
Algorithme Calcul_double
variables A, B : entier
début
écrire("entrer un nombre ")
lire(A)
B ← 2*A
écrire("le double de ", A, "est :", B)
fin
Exemple3: algorithme
Ecrivez un algorithme pour lire deux entiers de l’utilisateur
et afficher leur moyenne sur l’écran.
Solution:
Algorithme calcul_moyenne
variable a,b:entier
moy: reel
début
afficher (entrez un entier: )
lire(a)
afficher (entrez un entier: )
lire(b)
moy ←(a+b)/2
afficher(la moyenne de,a, et,b, est: ,moy)
Fin
Declaration d’une constante
Une constante prend une valeur invariable dans tout le
programme :
La déclaration d’une constante permet de réserver de l’espace
mémoire pour stocker des données dont la valeur est fixée
pour tout l’algorithme
Syntaxe:
constante(<identificateur>: type) ← <expression>
Exemple :
constantes (MAX : entier) ←100
(DOUBLEMAX : entier) ←MAX *2
Remarques importantes pour
les constantes
Une constante ne change pas de valeur au cours du prorgamme.
Exemple:
Variable a: entier
constantes (Dim : entier) ←10
Début
a ← 2
a ← Dim
a ← Dim+20
Dim ← 30
Valide
Valide
Valide
invalide
Un organigramme
Représentation graphique
d’un organigramme
Il n’existe pas vraiment de norme pour les organigrammes représentant des algorithmes. On peut tout de même mentionner certains points qui font consensus :
Les étapes de début et de fin sont représentées par des rectangles aux coins arrondis ;
Les étapes de traitement/lecture sont représentées par des rectangles
Les étapes d’ecriture ou affichage sont représentées par des parallélogrammes.
Les étapes de test sont représentées par des losanges ;
les transitions par des liens orientés entre les formes;
Les appels à des fonctions ou procédures (aussi appelées sous- routines) sont représentés par des rectangles dont les côtés sont dédoublés ;
Ecrire (Entrez un entier: )
Début
Fin
Lire(X)
Ecrire(X)
Exemple1
Tracez l’organigramme pour lire un entier de l’utilisateur et
l’afficher sur écran.
Exemple2
Tracez l’organigramme qui demande un nombre entier à
l'utilisateur, puis qui calcule et affiche le double de ce nombre.
Fin
Ecrire (Entrez un entier: )
Lire(a)
Ecrire(b)
b ←a*2
Début
Exemple3
Début
Fin
Ecrire (Entrez un entier: )
Lire(a)
Ecrire(moy)
Ecrire (Entrez un entier: )
Lire(b)
moy ←(a+b)/2
Tracez l’organigramme pour lire deux entiers de l’utilisateur et
afficher leur moyenne sur l’écran.
Conclusion
Les étapes qui décrivent un programme sont représentées par un algorithme ou un organigramme.
Cette phase est très importante pour faciliter l’implémentation en un langage de programmation.
Un algorithme est une description complète et détaillée des actions à effectuer et de leur séquencement pour arriver à un résultat donné
Intérêt: séparation analyse/codage (pas de préoccupation de syntaxe)
Qualités:
exact (fournit le résultat souhaité)
efficace (temps d’exécution, mémoire occupée)
clair (compréhensible)
général (traite le plus grand nombre de cas possibles), …
L’algorithmique désigne aussi la discipline qui étudie les algorithmes et leurs applications en Informatique
Une bonne connaissance de l’algorithmique permet d’écrire des algorithmes exacts et efficaces
Algorithmique Partie2-Expressions.pdf
Notions d’Algorithmiques:
Partie2 PRÉPARÉ PAR <Username>
GINFO1
Année Scolaire 2021-2022
Plan du cours •Les opérateurs
•Les expressions • arithmétiques
• Logiques
• combinées
•Exercices
Les opérateurs
▪Les opérateurs dépendent du type de l'opération, ils peuvent être :
▪ Des opérateurs arithmétiques: +, -, *, /, mod (% en langage C), ^ (puissance en algo)
▪ Des opérateurs logiques: NON (! en langage C), OU (|| en C), ET (&& en C)
▪ Des opérateurs relationnels: ==, (en C !=) , <, >, <=, >=
▪ Des opérateurs sur les chaînes: & (concaténation)
▪Une expression est évaluée de gauche à droite mais en tenant compte de priorités
Les expressions
▪Une expression peut être une valeur, une variable ou une opération constituée de variables reliées par des opérateurs.
Exemples: 1, b, a*2, a+ 3*b-c, …
▪L'évaluation de l'expression fournit une valeur unique qui est le résultat de l'opération.
▪Une expression est évaluée de gauche à droite mais en tenant compte de priorités
Priorité des opérateurs ▪Pour les opérateurs arithmétiques, l'ordre de priorité est le suivant (du plus prioritaire au moins prioritaire) :
^ : (élévation à la puissance)
* , / (multiplication, division)
% (modulo)
+ , - (addition, soustraction)
Exemple: 2 + 3 * 7 vaut 23
▪En cas de besoin (ou de doute), on utilise les parenthèses pour indiquer les opérations à effectuer en priorité exemple: (2 + 3) * 7 vaut 35
H ig
h es
t
Exercice1 Evaluer les expressions suivantes:
▪A=2+10*2-6/3
▪B=5*2+2^3
▪C=4*3^2
▪D=12 mod 2
Résultat: A=20 B=18 C=36 D=0
Exercice2 Afficher le résultat de l’algorithme suivant:
algorithme: calcul_expressions variables a,b: entier debut
a10 b4 ecrire(a+b) ecrire(a-b) ecrire(a*b) ecrire(a/b) ecrire(a mod b)
Fin
Résultat: 14 6 40 2 2
Exercice3
Écrivez un algorithme qui calcul la distance de 4 arguments doubles comme coordonnées rectangulaires de deux points (x1, y1) et (x2, y2) saisies par l’utilisateur et retourne la distance entre ces deux points comme suit:
)y-(y)x-(xtan 2
12
2
12 +=cedis
Solution : Exercice3
Algorithme3: Calcul_distance Variables x1,x2,y1,y2,d: reel début
Ecrire(Entrez les coordonnees du premier point: ) Lire(x1) Lire(y1) Ecrire(Entrez les coordonnees du deuxième point: ) Lire(x2) Lire(y2) d sqrt((x2-x1)^2-(y2-y1)^2) Ecrire(d)
fin
Les opérateurs relationnels ▪Ils permettent de comparer des valeurs a d’autres, des valeurs a des expressions ou des expressions a des expressions.
▪Ils sont très utilises dans les tests.
▪Le résultat d’évaluation d’une expression relationnelle est 1 (VRAI) ou 0 (FAUX)..
▪Exemples: ▪2<3 vraie ▪2>1+3 faux ▪1+3==2+2 vraie
Les opérateurs logiques
▪Les expressions relationnels peuvent être combinées en utilisant les opérateurs logiques suivants: ET, OU, et Non
▪Les opérateurs logiques ont une priorité plus faible que les opérateurs relationnels, qui à leur tour ont une priorité plus faible que les opérateurs arithmétiques.
▪Il est conseillé d’utiliser les parenthèses afin d’éviter toute ambiguïté.
Les operateurs logiques
La table de NON La table de OU La table de ET
Les opérateurs logiques ▪Remarque: Dans une expressions le 0 représente faux et tous les autres entiers représentent vraie.
▪Exemple: (2<3) et (4<5) vraie
(2>3) ou (4<5) vraie
(3>7) et (4<5) faux
Non (3>7) et (4<5) vraie
(1+2=3) et 1 vraie
Exercice4
Evaluer les expressions suivantes : A. 1 et (30 mod 10 >=0) ET (30 mod 10 <=3)
B. (12<3) ET (3<8)
C. (1+2<0) OU (5-7<0)
Exercice5
Evaluez les expressions suivantes : 1. NON (a-b) OU (a+b<=c*b)
2. c-b>a ET a>3*b OU c=a+b
avec oa=3, b=2 et c=6.
oa=2, b=2 et c=2.
Algorithmique Partie3-Les Tests.pdf
Notions et Algorithmes: Partie3: Les Tests
PRÉPARÉ PAR PR. <Username>
GINFO1
Année Scolaire 2021-2022
Plan du cours ▪Les Tests ▪Structure d'un test
▪Q'est-ce qu'une condition ?
▪Conditions composées
▪Test imbriqués
Introduction ▪La plupart des langages de programmation contiennent des instructions capables de réaliser différents types de tests et d’autres permettant de répéter le même traitement plusieurs fois.
▪Le langage C permet trois types de tests différents : simple, avec alternative, et multiple.
▪Pour chacun, on distingue deux parties : ▪Une ou plusieurs conditions ; ▪Un ou plusieurs blocs.
La condition ▪Condition : expression dont la valeur est interprétée de façon booléenne : la condition peut être soit vraie, soit fausse.
▪Le principe est d’associer une condition à un bloc.
▪Autrement dit: si une condition donnée est vraie, alors une certaine partie du programme sera exécutée. Sinon, c’est une autre partie qui sera exécutée ou aucune partie.
▪Remarque : une fois l’instruction de test exécutée, le programme reprend son cours normalement.
Exemples de conditions ▪Condition simple ▪ Si (X=2)
▪ Si (X<3)
▪Condition composée de plusieurs conditions: ▪ Si (x=2 et y=3)
▪ Si (a<b ou c>d)
Test simple ▪Avec le test simple, on associe une seule condition à un seul bloc de code.
Si la condition est vraie, ce bloc est exécuté. Sinon, il n’est pas exécuté.
▪la syntaxe est la suivante : si (condition)
instruction 1 ... instruction n
finsi
▪Remarquez aussi l’indentation utilisée, vous devez la reproduire dans vos propres programmes.
Test simple ▪Le fonctionnement est le suivant: ▪ L’expression condition est évaluée
▪ Si elle est vraie alors le bloc est exécuté ▪ Si elle est fausse alors le bloc n’est pas exécuté.
▪ Comme indiqué précédemment, dans les deux cas, l’exécution du programme continue normalement ensuite.
▪Exemple 1: variable x:entier debut x2 si (x>0)
ecrire("la valeur de x est positive") ecrire("le test est terminé") finsi fin
La valeur de x est positive Le test est termine
Execution du programme
Test simple ▪Exemple 2:
variable x:entier
debut
x-3
si (x>0)
ecrire("la valeur de x est positive")
Finsi
ecrire("le test est terminé")
fin
Le test est termine
Execution du programme
Test simple ▪Exemple 2:
variable x:entier debut x-3 si (x>0)
ecrire("la valeur de x est positive\n"); ecrire("le test est terminé\n"); finsi fin
Attention On considere le code suivant:
variable x:entier debut x-3 si (x>0)
ecrire("la valeur de x est positive\n"); finsi écrire("test de positive\n"); ecrire("test de negative\n");
ecrire("le test est terminé\n"); fin
test de positive Test de negative Le test est termine
Execution du programme
Test avec alternative ▪Avec le test simple, on exécute un bloc seulement si une condition est vraie, et on ne l’exécute pas si la condition n’est pas vraie.
▪Il est possible de proposer un bloc alternatif, à exécuter quand la condition n’est pas vraie (plutôt que de ne rien faire).
▪On parle alors de test avec alternative.
▪Ce bloc additionnel est introduit par le mot clé sinon, en respectant la syntaxe suivante : Si (condition)
instruction 1… Instruction n
Sinon instruction 1… Instruction n
Finsi
Exemple2: Test
1. Ecrivez un algorithme pour lire un entier de l’utilisateur et afficher positif si il est positif et négatif sinon.
2. Tracez l’organigramme.
Exemple 2: Algorithme
Variables x:entier Début
Afficher (Entrez un entier: ) Lire (X) si (X >0)
Afficher (Positif) sinon
Afficher (Negatif) Finsi
Fin
Début
Fin
Afficher (Entrez un entier: )
Lire(X)
Afficher ( Positif)
x>0 Faux Vrai
Exemple 2: Organigramme
Afficher ( Negatif)
Exemple1 ▪Algorithme test_positif
variable x:entier
debut
x2
si (x>0)
ecrire("la valeur de x est positive")
finsi
ecrire("le test est terminé")
fin
▪program test_positif.c Void main()
{ int x=2;
if (x>0)
{printf("la valeur de x est positive");}
printf("le test est terminé")
}
La valeur de x est positive Le test est termine
Execution du programme si le bloc ne contient qu’une seule instruction, on peut omettre les accolades { }.
Exercice1 Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui teste et affiche s'il est divisible par 3.
Solution Exercice1
Si (n mod 3 =0) alors
(“Entrez un entire:”)
Les tests multiples ou imbriqués ▪Dans certains cas, on a besoin de comparer une variable donnée à plusieurs valeurs différentes, et non pas une seule comme précédemment.
▪exemple : ▪ soit une variable entière x.
▪On veut effectuer un traitement différent suivant que la valeur de la variable est 1, 2, 3 ou plus.
▪ Si on utilise si, on va devoir procéder par imbrications successives :
Exemple1 si (x=1)
instructions sinon
si (x=2) instructions
sinon si (x=3)
instructions sinon
instructions finsi
finsi finsi
Tests imbriqués: exemple (version 1)
Exemple2
Tests imbriqués: exemple (version 2)
d'abord les conditions les plus probables
Exercice2 Ecrivez un algorithme pour afficher « Reçu avec mention » si une note est supérieure ou égale à 12, « Passable » si elle est supérieure à 10 et inférieure à 12, et « Insuffisant » dans tous les autres cas
Corrige de l’exercice2
Exercice3 Le prix de photocopies dans une reprographie varie selon le nombre demandé: 0,5 DH la copie pour un nombre de copies inférieur à 10, 0,4DH pour un nombre compris entre 10 et 20 et 0,3DH au-delà.
Ecrivez un algorithme qui demande à l’utilisateur le nombre de photocopies effectuées, qui calcule et affiche le prix à payer.
Corrige de l’exercice3
Algorithmique Partie4-Tableaux et chaines de caracteres.pdf
Notions et Algorithmes: Partie4
PRÉPARÉ PAR PR. <Username>
GINFO1
Année Scolaire 2021-2022
Plan du cours
▪Les tableaux
▪Les chaines de caracteres
Un tableau a dimension 1 (unidimentionnel)
▪ Un tableau est un ensemble d'éléments de même type désignés par un identificateur unique
▪ Une variable entière nommée indice permet d'indiquer la position d'un élément donné au sein du tableau et de déterminer sa valeur
▪ La déclaration d'un tableau s'effectue en précisant le type de ses éléments et sa dimension (le nombre de ses éléments).
▪ En algorithmique, la déclaration d’un tableau s’effectue comme suit :
variable tableau identificateur[dimension] : type
▪ Exemple :
variable tableau notes[3] : réel
Un tableau a dimension 1 On peut définir des tableaux de tous types : tableaux d'entiers, de réels, de caractères ou de chaînes de caractères.
Exemple:
◦ variable tableau tab[5] : entier
◦ variable tableau tab[5] : charactere
◦ variable tableau tab[5] : reel
Allocation de mémoire pour un tableau
Indexation du tableau
• Puisqu’un tableau est une séquence d’éléments, il nous faut un moyen d’accéder à ces éléments individuellement.
• Cet accès individuel se fait en précisant son index (ou son indice).
• Indice d’un élément : numéro de l’élément dans la séquence constituant le tableau.
• Remarque : en langage C, l’indexation (i.e. la numérotation) des éléments des tableaux commence par la valeur zéro, et non pas à la valeur 1 comme en mathématiques.
• Notez que ce n’est pas le cas pour tous les langages informatiques.
L’indice d’un tableau
▪ Sert à désigner les éléments d’un tableau.
▪Dans un tableau, la valeur d’un indice doit toujours : ▪ être égale au moins à 0
▪ être un nombre entier
▪ être inférieure au nombre d’éléments du tableau.
Exemple Algorithme lecture_tableau
variable tableau tab[5] : entier
debut
tab[0] 1
tab[1] 2
tab[2] 3
ecrire(“le premier element du tableau est:”,tab[0])
Fin
• Note: écrire(“le dernier élément du tableau est: ”tab[5])
• Cette instruction génèrera une valeur par default car aucune valeur n’a été affecté a cette cellule.
Code en C #include <stdio.h> void main() {
int tab[5]; tab[0]=1 tab[1] =2 tab[2] =3 printf(“le premier element du tableau est: %d”,tab[0]);
}
Exemple: Calcul de somme des elements d’un tableau
Variables somme : reel
tableau notes[3] : réel
Début
somme←notes[0]+notes[1] +notes[2]
écrire ("La somme des elements du tableau est : ", somme)
Fin
Chaine de caractere Syntaxe:
variable tableau identificateur[dimension] : type
Exemple: variable tableau nom[5] : caractere
Ou
variable tableau nom[] : ‘Bonjour les amis’
Programmation en C
Déclaration des variables dans un tableau
▪Lorsqu’on déclare une variable de type tableau, on précise le type des données contenues dans le tableau (i.e. le type de ses éléments), et sa taille.
▪Taille d’un tableau : nombre d’éléments que le tableau peut contenir au plus.
▪exemple : définition d’un tableau de 10 entiers appelé tab est:
Int tab[10];
▪Un tableau est représenté en mémoire de façon contigüe, c'est-à-dire que le premier élément est suivi du second, qui est directement suivi du troisième, etc.
Declaration
Type Nom_tableau[taille]
Type: char, int, double, float…
Taille doit être spécifiée des le début.
Operations sur les tableaux
▪ Soit Mon_Tableau un tableau d’entier de dimension 10.
▪ Déclaration
int Mon_Tableau[10];
▪ On veut récupérer le 10ème élément du tableau dans une variable a:
int a;
a=Mon_Tableau[9];
▪ on veut lire la taille du tableau dans b:
int b;
b=sizeof(Mon_Tableau);
▪ On veut stocker la valeur 52 dans le 4ème élément du tableau:
Mon_Tableau[3] = 52;
▪ On veut afficher la valeur du 2ème
élément du tableau:
printf("%d",Mon_Tableau[1]);
Initialisation d’un tableau (1) Problème: on veut remplir notre tableau tab avec les 10 premiers nombres pairs:
Méthode : initialisation en déclaration (méthode statique)
définit un tableau tab du type int de dimension 10.
Les 10 composantes sont initialisées par les valeurs respectives 0, 2, 4, …, 18.
int tab[ ]={0,2,4,6,8,10,12,14,16,18}
Débordement de tableau
Débordement de tableau : tentative d’accès à des éléments situés hors du tableau.
Exemple:
double tab[10]; int a; a=tab[11]; //valeur par defaut
Les chaines de caracteres: Exemple Algorithme lecture_tableau_caractere
variable tableau tab[5] : caractere
debut
tab[0] ’a’
tab[1] ‘b’
tab[2] ‘c’
ecrire(“la chaine de caractere:”,tab[0],tab[1],tab[2])
Fin
Algorithme lecture_tableau_caractere variable tableau tab[] : ‘Bonjour’ debut ecrire(tab) Fin
Programme en C void main()
{
char tab[5];
tab[0] =’a’
tab[1] = ‘b’
tab[2] = ‘c’
puts(tab);
//printf(“la chaine de caractere est %s",tab);
printf("\n Fin du programme.");
}
Algorithme lecture_tableau_caractere variable tableau tab[5]: caractere debut tab[0] ’a’ tab[1] ‘b’ tab[2] ‘c’ ecrire(“la chaine de caractere:”,tab[0],tab[1],tab[2]) Fin