Get this course plus top-rated picks in tech skills and other popular topics.

Ali343
Algorithm1forbeginners__UniversityPrivateFezFrenchcourse-example.PDF.zip

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

a10 b4 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 x2 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

x2

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