1 of 16

Séance 6

Algorithmique 1

2 of 16

Instructions, Expressions et Opérateurs

  • Opérateurs bit à bit

Les opérateurs bits à bits n’opèrent que sur des entiers. Les opérandes sont interprétées bits par bits (le bit 1 correspondant à une valeur vraie, 0 est considéré comme une valeur fausse).

MIPC

2

2019/2020

La syntaxe du langage C

3 of 16

Instructions, Expressions et Opérateurs

  • Opérateurs bit à bit
    • Exemples: chaque opérande est fournie sous forme décimale et binaire) :

MIPC

3

2019/2020

4 of 16

Instructions, Expressions et Opérateurs

  • Opérateurs d’accès à la mémoire : &
    • L’opérande de l’opérateur d’adresse & doit être une expression qui désigne un objet ou une expression.
    • &x renvoie l’adresse mémoire de x et est donc

un pointeur vers x.

MIPC

4

2019/2020

La syntaxe du langage C

5 of 16

Instructions, Expressions et Opérateurs

  • Autres opérateurs
    • Opérateur séquentiel ( , )
      • <expr1> , <expr2>,., <exprN>
      • Exprime des calculs successifs dans une même expression. Le type et la valeur de l’expression sont ceux du dernier opérande.
      • Exemple : x = 5 , x + 6. L’expression a pour valeur 11
    • Opérateur conditionnel (? :)
      • <expression> ? <expr1>: <expr2>
      • <expression> est évaluée. Si sa valeur est non nulle, alors la valeur de <expr1> est retournée. Sinon, c’est la valeur de <expr2> qui est renvoyée.
      • Exemple : max = a > b ? a : b
      • si a est le plus grand, alors affectation à max du contenu de a sinon affectation du contenu de b

MIPC

5

2019/2020

La syntaxe du langage C

6 of 16

Instructions, Expressions et Opérateurs

  • Autres opérateurs

MIPC

6

2019/2020

La syntaxe du langage C

7 of 16

Instructions, Expressions et Opérateurs

  • Priorité et associativité des opérateurs
    • Lors de l’évaluation des différentes parties d’une expression, les opérateurs respectent certaines lois de priorité et d’associativité.
    • Exemples
      • La multiplication a la priorité sur l’addition
      • La multiplication et l’addition ont la priorité sur l’affectation.
  • Tableau des opérateurs et priorité
    • La priorité est décroissante de haut en bas dans le tableau.
    • La règle d’associativité s’applique pour tous les opérateurs d’un même niveau de priorité. (pour une associativité de gauche à droite et pour une associativité de droite à gauche).
    • Dans une expression, les parenthèses forcent la priorité.

MIPC

7

2019/2020

La syntaxe du langage C

8 of 16

Instructions, Expressions et Opérateurs

MIPC

8

2019/2020

Priorité

Opérateurs

Associativité

1

()

🡺

2

+ - ++ -- !

🡸

3

* / %

🡺

4

+ -

🡺

5

< <= > >=

🡺

6

== !=

🡺

7

&&

🡺

8

||

🡺

9

? :

🡺

10

= += -= *= /= %=

🡸

La syntaxe du langage C

9 of 16

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ées à partir du clavier

    • En pseudo-code, on note: lire (x)

la machine met la valeur entrée au clavier dans la zone mémoire nommée x

    • 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

MIPC

9

2019/2020

10 of 16

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 (x)

la machine affiche le contenu de la zone mémoire x

    • 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 

MIPC

10

2019/2020

11 of 16

Exemple (lecture et écriture)

Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui calcule et affiche le double de ce nombre

Algorithme Calcul_double

Var A, B : entier

Début

écrire("entrer la valeur de A ");écrire(“bonjour “);

lire(A);

B ← 2*A;

écrire("le double de ", A, "est :", B);écrire(B, “ c’est le double de “,A);

Fin

A=3 le double de 3 est: 6 6 c’est le double de 3

MIPC

11

2019/2020

12 of 16

Exercice (lecture et écriture)

Ecrire un algorithme qui vous demande de saisir votre nom puis votre prénom et qui affiche ensuite votre nom complet

Algorithme AffichageNomComplet

variables Nom, Prenom, Nom_Complet : chaîne de caractères

Début

écrire("entrez votre nom");

lire(Nom);

écrire("entrez votre prénom");

lire(Prenom);

//Nom_Complet ← Nom & Prenom;

//écrire("Votre nom complet est : ", Nom_Complet) Fatihi Malak votre nom complet est Fatihi Malak

écrire("Votre nom complet est : ", Nom & Prenom );

Fin

MIPC

12

2019/2020

13 of 16

Exercice (respect des règles)

  • Chacun de ces quatre algorithmes contient une erreur. Laquelle?

MIPC

13

2019/2020

Algorithme alg1

Var

Quantité : entier;

Prix_unit , Prix_total: réel;

Début

Lire (Quantité, Prix_unit);

Prix_total <- Quantité * Prix_unit;

Écrire (Prix_total);

Fin

Algorithme alg2

Var

X, Y, Z : réel;

Début

Lire (X, Y, Z);

Z <- X-Y;

Écrire (Z);

Fin

14 of 16

Méthode de construction d’un algorithme simple

Exemple :

Écrire un algorithme qui consiste a calculer l’air S d’un cercle selon la formule

S = Pi * R2

Rappel : Pi = 3.14159 et R le rayon du cercle

Méthodologie a suivre :

    • constantes : Pi = 3.14159
    • Variables : Rayon, Surface
    • Types : Rayon, Surface : réel
    • Expressions et affectation : Surface = Pi * (Rayon)2
    • Structures conditionnelles et les boucles : ------
    • Opérations d’entrée-sortie : Lire (Rayon), Écrire (Surface)

MIPC

14

2019/2020

15 of 16

Méthode de construction d’un algorithme simple

MIPC

15

2019/2020

Algorithme

Calcul_Aire

Const

Pi 🡨 3,14159

Var

Rayon, Surface : réels

Début

lire (Rayon)

Surface 🡨 Pi * (Rayon)2

écrire (Surface)

Fin

16 of 16

Méthode de construction d’un algorithme simple

MIPC

16

2019/2020

Programme C

#include <stdio.h>

#include <math.h>

main ( )

{

float Pi = 3.14159;

float R, surface;

Printf(’’entrez la valeur du rayon’’);

scanf (’’%f’’ , &R);

surface = Pi*pow (rayon,2);

printf (’’ surface=%f \t R=%f\n ’’,surface,R );return 0;}

Surface= 6,3547 R=2