0% ont trouvé ce document utile (0 vote)
32 vues36 pages

Chapitre II (Suite) : Les Éléments de Base D'un Algorithme Et Leur Représentation Algorithme Et Leur Représentation en Langage C

Transféré par

mohamednaibete
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
32 vues36 pages

Chapitre II (Suite) : Les Éléments de Base D'un Algorithme Et Leur Représentation Algorithme Et Leur Représentation en Langage C

Transféré par

mohamednaibete
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Moulay Ismail Année universitaire : 2020/2021

Faculté des Sciences et Techniques Filière MIP (S1) : Module I111


Département d’Informatique Prof Yousef FARHAOUI
Errachidia

Chapitre II (suite):
les éléments de base d’un
algorithme et leur représentation
en langage C

(De l’algorithmique au langage C)

Prof Yousef FARHAOUI 1 Filière MIP (S1) : Module I111


Structure d’un programme C

La structure d’un programme C est la suivante :

Votre programme doit


#include<stdio.h> Obligatoirement
void main () { contenir une fonction
principale
Déclaration des variables « main ( ) », qui est
Corps exécutée lorsque le
programme est lancé
}
monProgramme.c

Prof Yousef FARHAOUI 2 Filière MIP (S1) : Module I111


Structure d’un programme C

#include<stdio.h>

Void main () {

Déclaration des variables


Corps

}
monProgramme.c

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


3
Structure d’un programme C

Mon premier programme : Bonjour tout le monde

#include <stdio.h>
void main()
{
printf(" Bonjour tout le monde ") ;

On sauvegarde ce programme dans un fichier qui se nomme


programme1.c

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


4
Structure d’un programme C
Mon premier programme : Bonjour tout le monde
La machine ne comprend que le langage machine
Il faut traduire mon programme programme1.c en langage
machine à l’aide d’un traducteur du langage C vers le langage
machine
Un programme appelé compilateur vérifie la syntaxe de mon
programme (on dit d’une façon générale, code source) et le
traduit en code objet, compris par le processeur
Le programme en code objet ainsi obtenu peut être exécuté sur la
machine
Prof Yousef FARHAOUI Filière MIP (S1) : Module I111
5
Compilation d'un programme C
Schéma simplifié de la compilation
#include <stdio.h>
void main()
{
printf(" Bonjour tout le monde ") ;
}

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


6
Compilation d'un programme C
Schéma: Bibliothèques de fonctions et compilation

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


Compilation d'un programme C
Quelques environnements de développement

Sous Windows Sous Linux


Eclipse Eclipse
Netbeans Netbeans
Visual C++ KDevelop
Turbo c++ …
Dev-C++

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


8
De l’algorithmique au C
Algorithme et programmation C

Algorithme somme #include <stdio.h>


variable X, Y: Entier void main ( ){
Début int X, Y ;
X 4 X=4 ;
Ecrire("Donner Y ") printf("Donner Y");
Lire(Y) scanf("%d",&Y);
Ecrire(X+Y) printf("%d",X+Y);

Fin }
Prof Yousef FARHAOUI Filière MIP (S1) : Module I111
9
De l’algorithmique au C
Traduction de l’entête d’un algorithme

Syntaxe en pseudo-code: Syntaxe en langage C :

Algorithme <nom_algorithme> void main ( )


(éventuellement ajouter au début
du fichier #include<stdio.h>)

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


10
De l’algorithmique au C
Traduction des déclarations d’un algorithme : variables

Syntaxe en pseudo-code: Syntaxe en langage C :

variable<nom_variable> : <type_variable> <type_variable> <nom_variable> ;

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


11
De l’algorithmique au C
Traduction des déclarations d’un algorithme : variables

12

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


De l’algorithmique au C
Traduction des instructions : affectation

Exemple:

Prof Yousef FARHAOUI 13 Filière MIP (S1) : Module I111


De l’algorithmique au C
Traduction des instructions : écriture

Exemple :

14

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


De l’algorithmique au C
Exemple : Traduire en C l'algorithme suivant

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


15
De l’algorithmique au C
Corrigé
#include<stdio.h>
Void main ( )
{
int A, B, C;
A = 3;
B=2;
printf(" Avant échange");
printf("La valeur de A =%d et de B =%d",A,B);
C=B;
B=A;
A=C ;
printf(" Après échange") ;
printf("La valeur de A =%d et de B =%d",A, B);
}

Prof Yousef FARHAOUI 16 Filière MIP (S1) : Module I111


De l’algorithmique au C
Traduction des instructions : lecture

Exemple :

Prof Yousef FARHAOUI 17 Filière MIP (S1) : Module I111


De l’algorithmique au C
Exemple : Traduire en C l'algorithme suivant

Prof Yousef FARHAOUI 18 Filière MIP (S1) : Module I111


De l’algorithmique au C
Corrigé #include<stdio.h>
Void main ( )
{
int A, B, C;
printf("Donner A");
scanf("%d",&A);
printf("Donner B");
scanf("%d ",&B) ;
C=B;
B=A;
A= C ;
printf("Après échange") ;
printf("La valeur de A =%d et de B =%d",A, B);
}

Prof Yousef FARHAOUI 19 Filière MIP (S1) : Module I111


Les Constantes caractères (Séquences d'échappement)

Une séquence d'échappement est un couple de symboles dont le premier


est le signe d'échappement '\'.

\a sonnerie \\ trait oblique


\b curseur arrière \? point d'interrogation
\t tabulation \' apostrophe
\n nouvelle ligne \" guillemets
\r retour au début de ligne \f saut de page (imprimante)
\0 NUL \v tabulateur vertical

Prof Yousef FARHAOUI 20 Filière MIP (S1) : Module I111


Les opérateurs standards

Opérateurs arithmétiques Opérateurs logiques

+ addition && et logique


- soustraction || ou logique
* multiplication
/ division (entière et rationnelle!) ! négation logique
% modulo (reste d'une div. entière)

Opérateurs de comparaison

== égal à
!= différent de
<, <=, >, >= plus petit que, ...

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


21
Initialisation des variables

En C, il est possible d'initialiser les variables lors de leur déclaration:

Exemple:
int A,MAX = 1023;
char C,TAB = '\t';
float X = 1.05e-4;

Remarque:

int A=10; int A;


A=10;

Prof Yousef FARHAOUI


22 Filière MIP (S1) : Module I111
Initialisation des variables
Les constantes
En utilisant l'attribut const, nous pouvons indiquer que la valeur d'une variable
ne change pas au cours d'un programme.

Exemple:
const int MAX = 767;
const double TVA = 0.25;
const double e = 2.7;
const char NEWLINE = '\n';

Prof Yousef FARHAOUI


23 Filière MIP (S1) : Module I111
Commentaires

Les commentaires sont non seulement utiles, mais nécessaires à la


compréhension d'un programme.

Forme « standard » : /*... */ ou //…

Exemple:

a = a + 1; /* Ceci est un commentaire de ligne */


b = b - 1; /* Et ceci en est un autre */

Prof Yousef FARHAOUI 24

Filière MIP (S1) : Module I111


Les opérateurs particuliers de C

En pratique, nous retrouvons souvent des affectations comme: i = i + 2


En C, nous utiliserons plutôt la formulation plus compacte: i += 2
L'opérateur += est un opérateur d'affectation.
Pour la plupart des expressions de la forme:
expr1 = (expr1) op (expr2)
Il existe une formulation équivalente qui utilise un opérateur
d'affectation:
expr1 op= expr2

Prof Yousef FARHAOUI 25 Filière MIP (S1) : Module I111


Les opérateurs particuliers de C
Opérateurs d'affectation

+= ajouter à
-= diminuer de
*= multiplier par
/= diviser par
%= modulo

Exemple

A+=2; A=A+2;
A*=B A=A*B;
A%=B A=A%B;

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


26
Opérateurs d'incrémentation et de décrémentation
Les affectations les plus fréquentes sont du type: I = I + 1 et I=I-1
En C, nous disposons de deux opérateurs pour ces affectations:
I++ ou ++I pour l'incrémentation (augmentation d'une unité)
I-- ou --I pour la décrémentation (diminution d'une unité)
X=I++ passe d'abord la valeur de I à X et incrémente après
X=I-- passe d'abord la valeur de I à X et décrémente après
X=++I incrémente d'abord et passe la valeur incrémentée à X
X=--I décrémente d'abord et passe la valeur décrémentée à X

var ++; ⇒ Post-incrémentation


++ var; ⇒ Pré-incrémentation
Exemple
Supposons que la valeur de N est égal à 5:
X = N++; Résultat: N=6 et X=5
X = ++N; Résultat: N=6 et X=6
Prof Yousef FARHAOUI 27 Filière MIP (S1) : Module I111
Les priorités des opérateurs

Priorité 1 (la plus forte): ()


Priorité 2: ! ++ --
Priorité 3: */%
Priorité 4: +-
Priorité 5: < <= > >=
Priorité 6: == !=
Priorité 7: &&
Priorité 8: ||
Priorité 9 (la plus faible): = += -= *= /= %=

Prof Yousef FARHAOUI Filière MIP (S1) : Module I111


28
Les fonctions arithmétiques standard
Les fonctions suivantes sont prédéfinies dans la bibliothèque
standard <math>. Pour pouvoir les utiliser, le programme doit contenir la
ligne:
#include<math.h>

COMMANDE C EXPLICATION
exp(X) fonction exponentielle
log(X) logarithme naturel
log10(X) logarithme à base 10
pow(X,Y) X exposant Y
sqrt(X) racine carrée de X
fabs(X) valeur absolue de X
sin(X) cos(X) tan(X) sinus, cosinus, tangente de X
asin(X) acos(X) atan(X) arcsin(X), arccos(X), arctan(X)
sinh(X) cosh(X) tanh(X) sinus, cosinus, tangente hyperboliques de X

Prof Yousef FARHAOUI 29 Filière MIP (S1) : Module I111


Les conversions de type
Les conversions de type automatiques
les valeurs des opérandes sont converties automatiquement dans un type
commun. Ces manipulations implicites convertissent en général des types plus
'petits' en des types plus 'larges';
char < short ≤ int ≤ long < float < double
Exemple
Pour le calcul de D, A est converti en float et divisé par C. Le

char A=3; résultat (0.75) est affecté à D qui est aussi du type float. On
int B=4; obtient donc: D=0.75
float C=4;
float D,E; Pour le calcul de E, A est converti en int et divisé par B. Le
char F; résultat de la division (type int, valeur 0) est converti en float.
D = A/C;
E = A/B; On obtient donc: E=0.000
F = A/C; Pour le calcul de F, A est converti en float et divisé par C. Le
résultat (0.75) est retraduit en char. On obtient donc: F=0

Prof Yousef FARHAOUI 30 Filière MIP (S1) : Module I111


Les conversions de type
Les conversions de type forcées (casting)
Il est possible de convertir explicitement une valeur en un type quelconque en
forçant la transformation à l'aide de la syntaxe:
Casting (conversion de type forcée)

(<Type>) <Expression>

Exemple
La valeur de A est explicitement convertie
char A=3;
int B=4; en float. La valeur de B est automatiquement
float C;
C = (float)A/B;
convertie en float. Le résultat de la division
(type rationnel, valeur 0.75) est affecté à C.
Résultat: C=0.75
Prof Yousef FARHAOUI 31 Filière MIP (S1) : Module I111
Écriture d'un caractère putchar('a');

putchar() c’est une fonction d’écriture d’un caractère.

Exemples

char A = 225;
char B = '\a';
int C = '\a';
putchar('x'); /* afficher la lettre x */
putchar('?'); /* afficher le symbole ? */
putchar('\n'); /* retour à la ligne */
putchar(65); /* afficher le symbole avec le code 65 (ASCII: 'A') */
putchar(A); /* afficher la lettre avec le code 225 (ASCII: 'ß') */
putchar(B); /* beep sonore */
putchar(C); /* beep sonore */

Remarque:
putchar(B); printf("%c",B) ;

Prof Yousef FARHAOUI 32 Filière MIP (S1) : Module I111


Lecture d'un caractère getchar

getchar() c’est une fonction de lecture d’un caractère

Exemple:

int C;
Scanf("%c",&c);
C = getchar();

Prof Yousef FARHAOUI 33 Filière MIP (S1) : Module I111


Exemple 1 : Traduire en C l'algorithme suivant

Algorithme Calcul
Variable A : Entier
C,B : Réel
D : caractère
E : Booléen
Début
A ← 30
B←A*2
Écrire('B=' , B)
C ← (B + A)/4
B←C/5
D ← ‘A’
E ← (A > 40) Ou (C < B)
Écrire('les valeurs obtenues sont : A = ' , A , 'B = ' ,B , ' C =’,C, ' D = ', D, ' E = ', E)
Fin

34
Exemple 2 : Traduire en C l'algorithme suivant

Algorithme Surface d’un cercle


Constante Pi 3.14
Variable Rayon : Entier * Donnée d’entrée*
Variable Surface : Réel * Donnée de sortie*
DEBUT
Écrire ( 'Saisir la valeur du rayon' )
Lire(Rayon)
Surface ← Rayon * Rayon * Pi
Écrire (' La Surface du cercle est : ', Surface)
FIN

35
Exemple 3 : Traduire en C l'algorithme suivant

Algorithme Commission
Constante M 4000 * M: montant fixe*
Variable CA : Entier * Donnée d’entrée (CA: chiffre d’affaire) *
Com : Réel * Donnée intermédiaire (Com: commission )*
Sal : Réel * Donnée de sortie(Sal: salaire mensuel )*
DEBUT
Écrire ('Donner le CA mensuel en DHS')
Lire(CA)
Com ←CA * 10/100
Sal ← Com + M
Écrire ('Le salaire mensuel est de : ', Sal, ' en DHS ' )
FIN

36

Vous aimerez peut-être aussi