Vous êtes sur la page 1sur 147

Algorithmique et langage C

Notes de cours

Module Informatique I
Cours, TD et TP de 28h, 1ère année
Filière Génie Informatique-EMI

Mme Fatima-Zahra BELOUADHA

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 1


Algorithmique et langage C

 INTRODUCTION
 NOTIONS D'ALGORITHMES
 CONCEPTS DE BASE ET STRUCTURES DE
CONTRÔLE DU LANGAGE C
 LES TABLEAUX
 LES POINTEURS
 LES FONCTIONS
 ETAPES ET DEMARCHES DE RESOLUTION
ALGORITHMIQUE
 QUELQUES EXEMPLES DE LANGAGES
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 2

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 2


Algorithmique et langage C

Terminologie
Etapes de résolution d’un problème
 Scénario d’un traitement automatique
Exemple

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 3

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 3


Algorithmique et langage C

Science.
Traitement automatique de l'information.
Outil : l’ordinateur.
Objet :
 élaborer des commandes + instructions.
 commander+orienter l'ordinateur lors du
traitement.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 4

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 4


Algorithmique et langage C

Traitement automatique?
 Résolution
de problèmes au moyen de
programmes ou logiciels.
Programme?
 Série
d'instructions (exécutables par la
machine) pour résoudre un problème.
Logiciel?
 Ensemble de programmes pour
résoudre un problème complexe.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 5

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 5


Algorithmique et langage C

1 : Construire l’algorithme solution,


 Données du problème? + Source?
 Actions élémentaires à faire?
 Résultats cherchés? + Destination?

2 : Ecrire le programme correspondant,


3 : Créer le fichier programme,
le compiler et l’exécuter.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 6

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 6


Algorithmique et langage C

1 : Le processeur extrait les données à


traiter,
2 : Exécute les instructions dans l'ordre
prévu et mémorise les résultats
intermédiaires,
3 : Renvoie le ou les résultats attendus à
la destination prévue.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 7

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 7


Algorithmique et langage C

Calculer le montant total d’une facture


de téléphone pour des appels locaux
effectués le soir.
 Entrées : consommation, prix_unitaire,
TVA et prix_abonnement à demander à
l'utilisateur.
 Ordre des opérations + résultats à
mémoriser (PHT+PT).
 Sortie : PT à afficher.

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 8

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 8


Algorithmique et langage C

Début
Lire (consommation,prix_unitaire,TVA,prix_abonnement)
PHT  (consommation*prix_unitaire)+prix_abonnement
PT  PHT * (1+TVA)
Ecrire PT
Fin

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 9

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 9


Algorithmique et langage C

Soient :
 Consommation=100 unités, Prix
unitaire=0.50DH
 Prix d’abonnement=70DH et TVA=20%
Le processeur demande les entrées (100,
0.50, 0.2 et 70) à l'utilisateur,
Fait les calculs
 PHT=(100*0.5)+70=120
 PT=120*(1+0.2)=144

Affiche le résultat final 144.


Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 10

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 10


Algorithmique et langage C

/*Ce programme calcule le montant de la facture de téléphone*/


#include <stdio.h>
main( )
{
int consommation, prix_d_abonnement ;
float prix_unitaire, TVA, PHT, PT ;
printf("Entrer la valeur de la consommation :");
scanf("%d",&consommation) ;
printf("Entrer la valeur du prix unitaire :");
scanf("%f",&prix_unitaire) ;
printf("Entrer la valeur de la TVA :");
scanf("%f",&TVA) ;
printf("Entrer la valeur du prix abonnement :");
scanf("%d",&prix_d_abonnement) ;
PHT=(consommation * prix_unitaire) + prix_d_abonnement ;
PT=PHT * (1+TVA) ;
printf("Le prix total est de %f DH\n",PT);
}
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 11

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 11


Algorithmique et langage C

Qu'est ce qu'un algorithme ?


Opérations de base
Exemple : Conversion en base

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 12

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 12


Algorithmique et langage C

Définition simple
 Description d’une méthode de résolution de
problème programmable sur machine.
Définition plus précise
 Suite finie et ordonnée d’actions
élémentaires finies (en temps et moyens).
 Objectif : aboutir à un résultat déterminé
d'un problème donné.
 Règles de composition : Séquencement +
Sélection + Itération.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 13

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 13


Algorithmique et langage C

 Algorithme de plantation d'un arbre

 Creuser un trou,
 Placer l'arbre dans le trou,
 Reboucher le trou.

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 14

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 14


Algorithmique et langage C

 Algorithme de plantation et d’arrosage


de plusieurs arbres
 1- Creuser un trou,
 2- Placer un arbre dans le trou,
 3- Reboucher le trou,
 4- S'il existe encore des arbres
exécuter les actions 1, 2, 3 et 4,
Sinon exécuter les actions suivantes,
 5- Arroser les arbres.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 15

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 15


Algorithmique et langage C

 Planter tous les arbres et les arroser à la fin


Ou
Planter et arroser arbre par arbre

 A un problème donné pourraient
correspondre plusieurs algorithmes.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 16

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 16


Algorithmique et langage C

Langage informel proche du langage


naturel et indépendant de tout langage
de programmation.

Variables? x …

Données du problèmes y …

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 17

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 17


Algorithmique et langage C

Syntaxe
Variable  expression

Exemples
x  10
x 10
 x  (x*b)+c
y 's'
 y  's'
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 18

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 18


Algorithmique et langage C

Syntaxe
Lire variable

Exemples
 Lire a
 Lire (a,b,c)

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 19

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 19


Algorithmique et langage C

Syntaxe
Ecrire expression
Exemples
 Ecrire 'bonjour'
 Ecrire 12

 Ecrire a,b,c

 Ecrire a+b
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 20

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 20


Algorithmique et langage C

Si condition alors
Début
instruction(s) 1
Fin
Sinon
Début
instruction(s) 2
Fin

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 21

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 21


Algorithmique et langage C

 Calculer la taxe sur le chiffre d'affaire (CA).


 10% si le CA < 5000DH, 20% si le CA ≥ 5000DH
Début
lire CA
Si CA<5000 alors
Début
TaxeCA*0.1
Fin
Sinon
Début
TaxeCA*0.2
Fin
Ecrire Taxe
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 22

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 22


Algorithmique et langage C

Si condition alors
Début
instruction(s) 1
Fin

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 23

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 23


Algorithmique et langage C

Si condition1 alors
Début
Exemple de Si condition2 alors
Début
syntaxe Si condition3 alors
Début
Instruction(s) 1
Fin
Sinon
Début
instruction(s) 2
Fin
Fin
Sinon
Début
instruction(s) 3
Fin
Fin
Sinon
Début
instruction(s) 4
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 24

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 24


Algorithmique et langage C

Début
lire (ancienneté, note)
Si ancienneté < 5 alors
Si ancienneté = 4 et note ≥ 16 alors
écrire ('L’agent peut bénéficier du crédit')
Sinon
Si ancienneté = 3 et note ≥ 18 alors
écrire ('L’agent peut bénéficier du crédit')
Sinon
écrire ('L’agent n’a pas droit au crédit')
Sinon
Si note ≥ 13 alors
écrire ('L’agent peut bénéficier du crédit')
Sinon
écrire ('L’agent n’a pas droit au crédit')
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 25

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 25


Algorithmique et langage C

Selon variable

valeur1 : instruction(s) 1
valeur2 : instruction(s) 2
...
valeurn : instruction(s) n
sinon instruction(s) m

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 26

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 26


Algorithmique et langage C

Début
lire c
Selon c
'a' : écrire ('le caractère est une voyelle')
'e' : écrire ('le caractère est une voyelle')
'i' : écrire ('le caractère est une voyelle')
'o' : écrire ('le caractère est une voyelle')
'u' : écrire ('le caractère est une voyelle')
'y' : écrire ('le caractère est une voyelle')
sinon écrire ('le caractère est une consonne')
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 27

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 27


Algorithmique et langage C

Pour compteurvaleur1 à valeurn faire


Début
Instruction(s)
Fin
Exemple : somme des entiers compris entre 0 et n.
Début
 lire n
 s0
 Pour i1 à n faire
 Début
 ss+i
 Fin
 écrire s
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 28

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 28


Algorithmique et langage C

Tant que condition faire


Début
instruction(s)
Fin
 Exemple : somme des entiers compris entre 0 et n (n≥0)
Début
 lire n
 s0
 Tant que n > 0 faire
 Début
 ss+n
 nn-1
 Fin
 Ecrire s
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 29

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 29


Algorithmique et langage C

Faire
Début
instruction(s)
Fin
Tant que condition

Bloc d'instructions exécuté au moins


une fois.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 30

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 30


Algorithmique et langage C

 Exemple : somme des entiers compris entre 0 et n.


Début
 lire n
 s0
 i 0
 Faire
 Début
 ss+i
 ii+1
 Fin
 Tant que i≤n
 Ecrire s
Fin
 Si n=0 et i initialisé à 1 : somme=1 (1≤0).
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 31

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 31


Algorithmique et langage C

Ecrire un algorithme qui affiche le


résultat de la conversion d’un
nombre entier positif strictement
dans une base quelconque
(comprise entre 2 et 10).

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 32

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 32


Algorithmique et langage C

 Entrées : Les entiers n et b.


 Sorties : Le résultat de conversion r.
 Traitement: Convertir le nombre n en base b.
Cas particuliers : n ≤ 0, b < 2 et b > 10.

Début
1- Lire n et b
2- Convertir le nombre n en base b
3- Ecrire r
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 33

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 33


Algorithmique et langage C

 n=11 et b=2.
1- 11/2=5 reste=1
2- 5/2=2 reste=1
3- 2/2=1 reste=0
4- 1/2=0 reste=1 (on s’arrête)  r=1011
 Remarques
 Il s’agit d’effectuer une succession de divisions
de n par b (traitement à répéter autant de fois
qu’il le faut).
 Le résultat est la combinaison des différents
restes obtenus commençant par le bit 0.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 34

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 34


Algorithmique et langage C

Début
1- Lire n et b
2- Effectuer une succession de division de n par b
autant de fois qu'il le faut
3- Le résultat est la combinaison des différents restes
obtenus à écrire commençant par le bit 0.
Fin

Début
1- Lire (n,b)
2- Tant qu’il le faut (condition à chercher) faire
Début
3- Diviser n par b pour calculer le reste
4- Ecrire le reste
Fin
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 35

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 35


Algorithmique et langage C

Début
1- Lire (n,b)
2- Tant que le résultat de la division est différent de 0 faire
Début
3- r  n mod b
4- n  n div b
5- Ecrire r
Fin
Fin

Début
1- Lire (n,b)
2- Tant que n ≠ 0 faire
Début
3- r  n mod b
4- n  n div b
5- Ecrire r
Fin
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 36

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 36


Algorithmique et langage C

Début
1- Faire
Lire n
Tant que n ≤ 0
2- Faire
Lire b
Tant que b < 2 ou b > 10
3- Tant que n ≠ 0 faire
Début
4- r  n mod b
5- n  n div b
6- Ecrire r
Fin
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 37

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 37


Algorithmique et langage C

Prendre la place de la machine pour


exécuter dans l’ordre prévu les
différentes actions de l’algorithme.

Appliquer manuellement les actions de


l’algorithme à un exemple au choix pour
le valider.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 38

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 38


Algorithmique et langage C

Opération n b r
1 11 - -
2 11 2 -
3 11 2 -
4 11 2 1
5 5 2 1
6 5 2 1 (1 affichage)
er

3 5 2 1
4 5 2 1
5 2 2 1
6 2 2 1 (2ème affichage)
3 2 2 1
4 2 2 0
5 1 2 0
6 1 2 0 (3ème affichage)
3 1 2 0
4 1 2 1
5 0 2 1
6 0 2 1 (4ème affichage)
3 0 2 1

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 39

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 39


Algorithmique et langage C

 Cas où n≤0 et b quelconque : OK.


 Cas où b<2 ou b>10 et n quelconque : OK.
 Cas où n<b : OK (r = n, Arrêt).
 Cas où n≥b :
 Après une succession finie de division de n par
b, n devient nul  Arrêt de la boucle.
 Résultats pertinents?  Jeu d’essai.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 40

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 40


Algorithmique et langage C

Structure d'un programme en C


Les directives de compilation
Les commentaires
Les variables et les constantes
L’affectation (assignation)
Les entrées/sorties
Les opérateurs
Les instructions sélectives
Les instructions itératives
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 41

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 41


Algorithmique et langage C

Créé en 1970 par Dennis RITCHIE


Objectif initial : Ecrire Unix.
Caractéristiques :
 Souplesse
 Fiabilité
 Portabilité
 Possibilités de l'assembleur
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 42

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 42


Algorithmique et langage C

/*Ce programme affiche un message*/


main( )
{
printf("bonjour la première année");
}
Pour améliorer la lisibilité :
 Instructionpar ligne.
 Indentation sensée.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 43

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 43


Algorithmique et langage C

<Directives de compilation>
<Déclaration de variables externes>
<Déclaration de prototypes de fonctions>
main ( )
{
corps du programme
(déclaration de constantes,
déclaration de variables,
instructions)
}
<Définition de fonctions>

Un programme en C doit contenir au


moins le programme principal.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 44

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 44


Algorithmique et langage C

#include : Inclut le fichier d’instructions


prédéfinies.
#include <nom_fichier_de_la_bibliothèque C>

#define : Remplace un symbole par une


constante ou un type ou définit une macro.

#define expression_remplacée
expression_remplaçante
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 45

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 45


Algorithmique et langage C

#include <stdio.h>

#define pi 3.14

#define entier int

#define somme(x,y) x+y

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 46

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 46


Algorithmique et langage C

Syntaxe
/* texte du commentaire */

Exemple
 main( )
 {
 printf("bonjour"); /* ce programme affiche
le mot bonjour*/
 }

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 47

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 47


Algorithmique et langage C

Déclaration
Type identificateur;
Type identificateur1,…,identificateur n;

Exemples
 inti;
 float j,k;

 char c;
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 48

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 48


Algorithmique et langage C

 composés indifféremment de lettres, chiffres et


du caractère ( _ ).
 Commence par une lettre ou le caractère (_)
 Seuls les 32 (8) premiers caractères sont
significatifs.
 Majuscules et minuscules donnent lieu à des
identificateurs différents.
 Ne doivent pas être un mot réservé (comme int,
char, … ).
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 49

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 49


Algorithmique et langage C

solution1 OK
1solution Non
prix unitaire Non
prix_unitaire OK
jour, Jour et JOUR sont différents
int Non
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 50

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 50


Algorithmique et langage C

Type Signification Représentation système

Taille Valeurs limites


(bits)
int Entier 16 -32768 à 32767
short (short int) Entier 16 -32768 à 32767
long ( long int) Entier en double 32 -2147483648 à
longueur 2147483647
char Caractère 8
float (short float) Réel 32 ±10-37 à ±1038
double (long float) Réel en double 64 ±10-307 à ±10308
précision
long double Réel en grande 80 ±10-4932 à
précision ±104932
unsigned Non signé (positif) 16 0 à 65535
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 51

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 51


Algorithmique et langage C

int équivaut à short sur PC et à long sur


station.
sizeof retourne la taille en octets d'un
objet.
Exemples :
 n=sizeof(int); /* n reçoit 2 */
 n=sizeof(3.14); /* n reçoit 8 */
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 52

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 52


Algorithmique et langage C

 Sont définies dans des fichiers de bibliothèque C.


 Fonctions mathématiques
 Appliquées aux types numériques (math.h).
 Fonctions sur les caractères
 Appliquées à des caractères (ctype.h).
 Vérifient si un caractère appartient à une catégorie
donnée.
 Retournent 0 si faux, une valeur différente si vrai.

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 53

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 53


Algorithmique et langage C

 #include <math.h>
 main( )
 {
 int p, i=4,j=-2;
 float r;
 p=pow(i,2);
 r=sqrt (i);
 i=abs(j);
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 54

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 54


Algorithmique et langage C

Fonction Signification
isalpha (c) c : une lettre
isupper (c) c : lettre majuscule
islower (c) c : lettre minuscule
isdigit (c) c : chiffre
isxdigit (c) c : hexadécimal [0-9], [A-F] ou [a-f]
isalnum (c) c : alphanumérique (chiffre ou lettre)
isspace (c) c : blanc, tabulation, retour chariot, newline ou formfeed
ispunct (c) c : caractère de ponctuation
isprint (c) c : caractère imprimable (de 32 (040) à 126 (0176) tilde)
isgraph (c) c : caractère imprimable différent d'espace
iscntrl (c) c : caractère de contrôle ≠ d'espace, (<32) ou delete (0177)
isascii (c) c : caractère ASCII (0  c < 128)
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 55

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 55


Algorithmique et langage C

Données dont les valeurs ne varient pas


lors de l'exécution du programme.

Déclaration
const Type Identificateur = Valeur ;

#define Identificateur Valeur

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 56

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 56


Algorithmique et langage C

 main( )
{
const float pi=3.14;
printf("pi égale à %f",pi);
}
 #define pi 3.14
main( )
{
printf("pi égale à %f",pi);
}
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 57

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 57


Algorithmique et langage C

Une valeur initiale peut être affectée à


une variable au moment de sa
déclaration.
Cas de types numériques :
Type Identificateur = Valeur numérique ;
Cas du type caractère :
Type Identificateur = 'caractère' ;
Type Identificateur = code ASCII ;
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 58

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 58


Algorithmique et langage C

 main( )
 {
 int i, j=3, k;
 float f=1.2 e5;
 int i=011; /*11 en octal*/
 char c='A';
 char c=65; /*Code ASCII de A*/
 }

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 59

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 59


Algorithmique et langage C

Des caractères spéciaux sont représentés à


l'aide du métacaractère \.
Exemple
 main( )
 {
 char c = '\''; /*c reçoit un apostrophe*/
 char c = '\x041'; /*c reçoit 41 code ASCII
en hexadécimal de A*/
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 60

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 60


Algorithmique et langage C

Représentation Signification
\0 Caractère NULL
\a Bip (signal sonore)
\b Espace arrière
\t Tabulation
\n Nouvelle ligne
\f Nouvelle page
\r Retour chariot
\" Guillemet
\' Apostrophe
\\ Antislash (\)
\ddd Caractère ayant pour valeur ASCII octale ddd
\x hhh Caractère ayant pour valeur ASCII hexadécimale hhh

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 61

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 61


Algorithmique et langage C

Syntaxe
Variable = Valeur ou expression ;

Exemple
 main( )
 {
 int i, j;
 i=2;
 j=(i*3)+5;
 i=j=2; /*j reçoit d'abord 2 puis i reçoit j*/
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 62

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 62


Algorithmique et langage C

Dans le cas d’assignation de types


différents, des conversions de types sont
automatiquement réalisées.
Exemple
 main( )
 {
 int i;
 float j=3.5;
 char c='A';
 i=j; /*i reçoit 3, le résultat est tronqué*/
 i=c; /*i reçoit 65 le code ASCII de A*/
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 63

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 63


Algorithmique et langage C

printf : affichage formaté à l'écran.

texte et caractères de contrôle

Printf("message et formats d'affichage", arg1,…,argn);

Noms de variables ou expressions

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 64

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 64


Algorithmique et langage C

 main( )
 {
 int i=2,k=5;
 float j=3.5;
 printf("Donnez le prix unitaire");
 printf("Donnez le prix unitaire \n");
 printf("la valeur de i est %d\n ",i); /*la valeur de i est 2*/
 printf("i=%d j=%f",i,j); /*i=2 j=3.5*/
 printf("i=%d\nj=%f",i,j); /*i=2
j=3.5*/
 printf("somme(%d,%d)=%d\nFIN",i,k,i+k);
 /*somme(2,5)=7
 FIN*/
 printf("j=%4.2f\n",j); /*j= 3.50*/
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 65

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 65


Algorithmique et langage C

Un caractère de contrôle est précédé de \.


(\n)
Un format d'affichage = % + un caractère
indiquant le type de conversion.
Des indications peuvent être introduites
dans le format d’affichage.

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 66

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 66


Algorithmique et langage C

Format d'affichage Signification


%d Conversion en décimal
%o octal
%x hexadécimal (0 à f)
%X hexadécimal (0 à F)
%u entier non signé
%c caractère
%s chaîne de caractères
%l long ou double
%L long double
%e Conversion sous forme m.nnnexx
%E sous forme m.nnnExx
%f sous forme mm.nn
%g Semblable à e ou f selon la valeur à afficher
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 67

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 67


Algorithmique et langage C

 scanf : Lecture formatée.


scanf("formats d'affichage", variable1,…,variablen);
 Seules les variables scalaires doivent être
précédées de &.
 Exemples
#include <stdio.h>
main( )
{
int i;
float k;
char m;
scanf("%d",&i);
scanf("%d%f",&i,&k);
scanf("%c",&m);
}
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 68

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 68


Algorithmique et langage C

+ addition Exemple
- soustraction main( )
* multiplication {
/ division int i=9,j=4,k;
% reste de la
division entière float x=9.0, y;
k=i+j;
y=i/j; /*division entière*/
y=x/j; /*division réelle*/
y=9.0/j; /*division réelle*/
k=i%j;
}
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 69

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 69


Algorithmique et langage C

 Exemple
main( )
{
int i=9,j=4;
float y;
y=(float) i / j;
y=(float) (i/j);
}

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 70

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 70


Algorithmique et langage C

sont utilisés pour faciliter l'écriture.


Ecriture classique Ecriture équivalente
i = i + 20; i += 20;
i = i - 20; i -= 20;
i = i * 20; i *= 20;
i = i / 20; i /= 20;

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 71

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 71


Algorithmique et langage C

Opérateurs signification
! Non logique
> >= < <= Test de supériorité et d'infériorité
== et != Test d'égalité et d'inégalité
&& et || ET et OU logique

if (i)  if (i!=0) et if (!i)  if (i==0).


Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 72

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 72


Algorithmique et langage C

 #include <stdio.h>
 main( )
 {
 int a,b,c;
 printf ("Introduire a, b et c : ");
 scanf ("%d%d%d",&a,&b,&c);
 if (a==b && b!=c)
 printf("a égale à b et b différent de c\n");
 if (!(a<b) || a==0)
 printf("a >= b ou a = 0\n");
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 73

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 73


Algorithmique et langage C

 Pré-incrémentation (Pré-décrémentation)
 Incrémentation (décrémentation) de 1 puis affectation
 Post-incrémentation (Post-décrémentation)
 Affectation puis incrémentation (décrémentation).
 Exemples : Soient i=3 et j=5,
Instruction Equivalent Résultats
i++; i=i+1; i=4
++i; i=i+1; i=4
i--; i=i-1; i=2
--i; i=i-1; i=2
i= ++j; j=j+1; i=j; j=6 et i=6
j=++i + 5; i=i+1; j=i+5; i=4 et j=9
j=i++ + 5; j=i+5; i=i+1; j=8 et i=4;
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 74

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 74


Algorithmique et langage C

if (Condition)
{
instruction1;

instructionn;
}
else
{
instruction1';

instructionn';
}

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 75

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 75


Algorithmique et langage C

 #include <stdio.h>
 main( )
 {
 int a,b;
 printf ("Introduire a et b : ");
 scanf ("%d%d",&a,&b);
 if (a==b)
 printf("a égale à b\n");
 else
 printf("a différent de b\n");
 if (a=b) /*faire a=b; puis if (a) [si a0]*/
 {
 printf("a est différent de 0\n");
 }
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 76

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 76


Algorithmique et langage C

 else se rapporte à if le plus rapproché.


 #include <stdio.h>
 main( )
 {
 int a,b,z,n;
 printf ("Introduire a, b et n : ");
 scanf ("%d%d%d",&a,&b,&n);
 if (n>0)
 if (a>b) /*si n>0 et a>b*/
 z=a;
 else /*si n>0 et a<=b*/
 z=b;
 if (n>0)
 { if (a>b) /*si n>0 et a>b*/
 z=a;
 }
 else /*si n<=0*/
 z=b;
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 77

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 77


Algorithmique et langage C

entier ou un caractère

switch (Variable de contrôle)


{
case Valeur1 : instructions1; break;

case Valeurn : instructionsn; break;
default : instructionsm
}

break fait sortir de switch.


Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 78

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 78


Algorithmique et langage C

 #include <stdio.h>
 main( )
 {
 int a;
 char c;
 printf("Donner un nombre : ");
 scanf ("%d",&a);
 switch (a)
 {
 case 0 : printf ("Le nombre est zéro\n"); break;
 case 1 : printf ("Le nombre est 1\n"); break;
 default : printf("Il est différent de 0 et 1\n");
 }
 printf("Donner une lettre: ");
 scanf ("%c",&c);
 switch (c)
 {
 case 'x' : printf ("La lettre est x\n"); break;
 case 'y' : printf ("La lettre est y\n"); break;
 }
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 79

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 79


Algorithmique et langage C

while (Condition) Exemple


{  #include <stdio.h>
instruction(s)  main( )
} {
 int n,somme=0;
 scanf ("%d",&n);
 while (n>0)
 {
 somme=somme+n;
 n--;
 }
 printf ("%d",somme);
}

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 80

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 80


Algorithmique et langage C

do Exemple
{  #include <stdio.h>
instruction(s)  main( )
}
while (Condition); {
 int n, somme=0, i=0;
 scanf ("%d",&n);
 do
 {
 somme=somme+i;
 i++;
 }
 while (i<=n) ;
 printf ("%d",somme);
}
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 81

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 81


Algorithmique et langage C

for ( initialisations;Condition;Instructions)
{
instruction(s)
}
 Exemple
 #include <stdio.h>
 main( )
 {
 int i,j,n,somme=0;
 scanf ("%d",&n);
 for (i=1; i<=n; i++)
 somme=somme+i;
 printf ("%d",somme);
 for (i=2, j=4; i<5 && j>2; i++, j--)
 printf ("i:%d et j:%d\n",i,j); /* i:2 et j:4
 i:3 et j:3*/
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 82

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 82


Algorithmique et langage C

 Break permet de sortir de la boucle interne.


 Continue permet de passer à l'itération suivante
de la boucle la plus interne.
 Exemple
 #include <stdio.h>
 main( )
 {
 int i;
 for (i=5; i>0; i--)
 {
 if (i==5) continue;
 printf ("Ok");
 if (i==4) break;
 }
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 83

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 83


Algorithmique et langage C

Tableaux à une dimension (vecteurs)


Chaînes de caractères
Tableaux à plusieurs dimensions

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 84

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 84


Algorithmique et langage C

Collection homogène et ordonnée de


données de taille statique.
Structure de données pour représenter une
liste d'éléments de même type.
Chaque élément est repéré par un indice.
0 1 2 3 4 5 6
15 20 25 30 100 200 150
t[0] t[4]
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 85

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 85


Algorithmique et langage C

 Déclaration
Type identificateur [Taille];
Constante
 Exemples
 #include <stdio.h>
 #define taille1 5
 main( ) {
 char a [taille1];
 a[0]= 'x';
 int b [10];
 scanf("%d", &b[0]);
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 86

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 86


Algorithmique et langage C

 Suite d’octets dont la taille dépend du type


d’éléments.

 Exemple

Indices 0 1 2
Tableau t a b c t[1] = 'b';
Adresses 100 101 102 &t[1]=101

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 87

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 87


Algorithmique et langage C

 Un vecteur peut être totalement ou


partiellement initialisé.
Type identificateur [Taille] = {Val1,…,Valn};

 Exemples
 #include <stdio.h>
 #define taille1 3
 main( ) {
 float a [taille1] = {0.,1.5,3.};
 int b [taille1] = {1};
 char c [taille1] = {'x', ,'y'};
 int d [ ] = {4,6,8};
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 88

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 88


Algorithmique et langage C

 Se font élément par élément.


 Exemple
 #include <stdio.h>
 #define taille 20
 main( ) {
 int i, t [taille];
 for(i=0;i<taille;i++)
 scanf ("%d",&t[i]);
 for(i=0;i<taille;i++)
 printf ("%d\n",t[i]);
 }
 Le compilateur C n'empêche pas un
dépassement de la taille du tableau.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 89

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 89


Algorithmique et langage C

 Exemple
 #include <stdio.h>
 #define taille 20
 main( ) {
 int i, t [taille];
 for(i=0;i<taille;i++)
 t[i]=i;
 }

 L'affectation d'un tableau B à un tableau A :


 Se fait élément par élément. (A=B) n'est pas
possible.
 Réalise une copie de B dans A.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 90

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 90


Algorithmique et langage C

 Exemple
 #define taille 3
 main( ) {
 int i, A [taille]={7,8,9};
 int B [taille]={4,5,6}; A 7 8 9 B 4 5 6
 for(i=0;i<taille;i++)
 A[i]=B[i]; A 4 5 6 B 4 5 6
 for(i=0;i<taille;i++)
 A[i]=i; A 0 1 2 B 4 5 6
 }
 A et B ne changent pas d’adresse
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 91

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 91


Algorithmique et langage C

 #include <stdio.h>
 #define taille 20
 main( ) {
 char a [taille], b[taille];
 int i, egaux;
 for (i=0;i<taille;i++)
 {
 scanf ("%c",&a[i]);
 scanf ("%c",&b[i]);
 }
 egaux=1;
 for(i=0;i<taille;i++)
 if (a[i]!=b[i]) {égaux=0; break;}
 if (egaux) printf ("a et b sont égaux.\n");
 else printf ("a et b sont différents\n");
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 92

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 92


Algorithmique et langage C

 Initialisation
char identificateur [Taille] = "Texte\0";
 Exemples
 #define taille1 3
 #define taille2 4
 main( ) {
 char t [taille1]="ali";
 char a [taille2]="ali\0";
 }
 L’affectation t="texte\0" est impossible si t est
déclaré comme un tableau de caractères.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 93

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 93


Algorithmique et langage C

 Se font globalement en format %s ou avec gets


(puts).
scanf ("%s", Chaîne de caractères);
printf ("%s", Chaîne de caractères);
gets (Chaîne de caractères);
puts (Chaîne de caractères);
 scanf amène uniquement le texte introduit
avant le premier blanc.
 gets amène tout le texte introduit jusqu'au
retour chariot.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 94

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 94


Algorithmique et langage C

/*Soit Turbo C la chaîne de caractères que l'on introduit


lors de l'exécution de l'exemple suivant*/
 #include <stdio.h>
 #define taille 20
 main( ) {
 char t [taille];
 scanf ("%s",t);
 printf ("%s",t);
 gets (t);
 puts (t);
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 95

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 95


Algorithmique et langage C

Fonction S’applique à Retourne Rôle


strlen 1 chaîne Un entier Retourne la longueur de la chaîne.
strcmp 2 chaînes Un entier Compare 2 chaînes et retourne :
-0 si elles sont égales
-une valeur différente sinon.
strcpy 2 chaînes Rien (void) Copie une chaîne dans une autre.
 #include <string.h>
 #define taille 20
 main( ) {
 char a [taille], b[taille]="ali\0";
 int n;
 n=strlen(b);
 strcpy(a,b);
 n=strcmp(a,b);
 }
 Les fonctions de "string.h" sont appliquées à des
chaînes de caractères qui se terminent par '\0'.
 strcmp(a,b) est impossible si a et b sont des char.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 96

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 96


Algorithmique et langage C

 Déclaration
Type Identificateur [Taille1]…[Taille n];
 Exemple : Lecture de nombre de buts marqués par
chacun des 11 joueurs de 8 équipes
 #include <stdio.h>
 #define taille1 8
 #define taille2 11
 main( ) {
 int t [taille1][taille2], i, j;
 for(i=0;i<taille1;i++)
 for (j=0; j<taille2;j++)
 scanf ("%d",&t[i][j]);
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 97

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 97


Algorithmique et langage C

 Exemple : Lire 4 notes en Info et Maths de 5 étudiants


Informatique Mathématiques
Etudiants N1 N2 N3 N4 N1 N2 N3 N4
1 19 17 15 18 14 15.5 16 17
2 13 7 9.5 12 13 9 11.5 10
3 14 14.5 16 16.5 16 17 17.5 16.5
4 8.5 10.5 10 12 12 13 13.5 6.5
5 15 19 15 16.5 15 13 12.5 14.5

 #define taille1 5
 #define taille2 2
 #define taille3 4
 main( ) {
 float t [taille1][taille2][taille3];
 int i,j,k;
 for(i=0;i<taille1;i++)
 for (j=0; j<taille2;j++)
 for (k=0; k<taille3;k++)
 scanf ("%f",&t[i][j][k]);
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 98

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 98


Algorithmique et langage C

 Déclaration
Type Identif [m]… [p]={ Liste0,…, Listem-1};

Exemple : Initialiser une matrice M


 #define taille1 3
 #define taille2 2
 main( )
 {
 int M [taille1][taille2]={{0,1},{2,3},{4,5}};
 /*initialisation ligne par ligne*/
 /*M[0]={0,1}, M[1]={2,3} et M[2]={4,5}*/
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 99

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 99


Algorithmique et langage C

 Déclaration de pointeurs
 Opérateurs & et *
 Opérateurs ++ et --
 Allocation mémoire

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 100

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 100


Algorithmique et langage C

 Définition et déclaration
 Variable contenant une adresse mémoire.
 Un pointeur ne contenant aucune adresse est égal à
NULL (stdio.h).

Type_variable_pointée *Pointeur;

 Exemples : char *p; int *p;


 Opérateurs & et *
&variable : adresse de variable.
*pointeur : contenu de l'adresse pointeur.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 101

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 101


Algorithmique et langage C

 Exemple
 #include <stdio.h>
 main( )
 {
 int i,j,*p;
 i=5;
 p=&i;
 j=*p;
 *p=j+2;
 }
 Représentation mémoire
 Supposant que i, j et p sont aux adresses 100, 102 et 104.

100 5 i 100 5 i 100 5 i 100 7 i


102 j 102 j 102 5 j 102 5 j
104 NULL p 104 100 p 104 100 p 104 100 p
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 102

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 102


Algorithmique et langage C

 Servent à déplacer un pointeur d'une


adresse à une autre.
 L'unité de déplacement est la taille de la
variable pointée.
 Exemple
 #include <stdio.h>
 main( ) {
 int i, *p;
 p=&i;
 p++;
 char c, *q;
 q=&c;
 q++;
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 103

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 103


Algorithmique et langage C

 Initialiser le pointeur à une adresse donnée (p=&i)


ou lui allouer de la mémoire.
 malloc() réserve de la mémoire (malloc.h).
 Exemple
 #include <stdio.h>
 #include <malloc.h>
 main( ) {
 int *q;
 q=(int*) malloc(2*sizeof(int));
 *q=2;
 *(q+1)=5;
 char *p;
 p=(char*) malloc(5*sizeof(char));
 p="toto\0";
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 104

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 104


Algorithmique et langage C

Introduction
Structure et prototype d’une fonction
Appel de fonctions
Domaines d'existence de variables
Passage de paramètres
Fonction récursive
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 105

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 105


Algorithmique et langage C

 Un programme peut être découpé en plusieurs


modules dites fonctions.
 Le programme principal s’exécute en premier.
 Avantages
 Faculté de maintenance (détection facile des
erreurs…).
 Absence de répétition de séquences d'instructions
(paramétrage de fonctions).
 Partage et réutilisation de modules (fonction).
 Fonction : ensemble d'instructions réalisant une
tâche précise dans un programme.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 106

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 106


Algorithmique et langage C

 #include <stdio.h>
 int triple (int);
 main( ) {
 int i=2,j;
 j=triple(i);
 printf ("%d“,j);
 j=triple(4);
 printf ("%d",j);
 }
 int triple (int n) {
 int r;
 r=n*3;
 return r;
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 107

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 107


Algorithmique et langage C

Void si aucun Void si aucun


Type_Résultat Nom_Fonction(TypeArg1,…,TypeArgn);
{
<Déclaration des variables locales>
<Bloc d'instructions>
}
 Exemple
 #include <stdio.h>
 void afficher (void); /*Cette fonction n'a ni paramètre ni
résultat*/
 main( )
 {afficher();}
 void afficher(void)
 {printf("bonjour");}
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 108

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 108


Algorithmique et langage C

Variables locales
 Variables dont la portée est uniquement la
fonction où on les déclare.

Return
 Indique le résultat retourné par la fonction
et constitue un point de sortie de la fonction.

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 109

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 109


Algorithmique et langage C

 Déclaration
Void si aucun Void si aucun

Type_Résultat Nom_Fonction (Type1,…,Typen);

 Avantages
 Règle d'usage de la fonction : nombre et type de
paramètres ainsi que le type de la valeur retournée.
 Permet au compilateur de détecter des erreurs
(effectuer des conversions de types…).

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 110

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 110


Algorithmique et langage C

 Si la fonction retourne un résultat et admet des


paramètres
 Variable=Nom_Fonction(Param effectifs);
 Si la fonction retourne un résultat et n'a pas de
paramètres
 Variable = Nom_Fonction ( );
 Si la fonction ne retourne rien et admet des
paramètres
 Nom_Fonction (Paramètres effectifs);
 Si la fonction ne retourne rien et n'admet pas de
paramètres
 Nom_Fonction ( );
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 111

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 111


Algorithmique et langage C

Domaine Signification
d'existence
locale Elle n'est référencée que dans la fonction où elle est
déclarée.
globale Placée en dehors des fonctions (généralement au début du
programme avant le main), elle peut être accédée par toutes
les fonctions.
Static C'est une variable locale à une fonction mais qui garde sa
valeur d'une invocation de la fonction à l'autre.
Externe Elle est déclarée dans un module. La mémoire qui lui est
réservée est allouée par un autre module compilé
séparément.
Register C'est une variable que l’on place dans un registre.

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 112

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 112


Algorithmique et langage C

 Les paramètres effectifs ne changent pas après


l’appel de la fonction.
 Exemple
 #include <stdio.h>
 void triple (int, int);
 main( ) {
 int i=2, j=0;
 triple(i,j);
 printf ("%d",j);
 }
 void triple (int i, int j){
 j=3*i;
 printf ("%d",j);
}
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 113

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 113


Algorithmique et langage C

 Les paramètres effectifs (déclarés comme


pointeurs ) peuvent changer après appel de la
fonction .
 Exemple
 #include <stdio.h>
 void triple (int , int*);
 main( ) {
 int i=2, j=0;
 triple(i,&j);
 printf ("%d",j);
 }
 void triple (int i, int *j) {
 *j=3*i;
 printf ("%d",*j);
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 114

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 114


Algorithmique et langage C

 Les tableaux passent par défaut par adresse.


 Un paramètre vecteur peut être dynamique.
 Exemple : Somme de deux vecteurs
 #include <stdio.h>
 void somme_vecteurs (int [ ], int [ ], int [ ]);
 main( ) {
 int a[10], b[10], c[10],i;
 for (i=0; i<10; i++)
 scanf ("%d%d",&a[i],&b[i]);
 somme_vecteurs(a,b,c);
 for (i=0; i<10; i++)
 printf ("%d ",c[i]);
 }
 void somme_vecteurs (int a[ ], int b[ ], int c[ ])
 {
 int i;
 for (i=0; i<10; i++)
 c[i]=a[i]+b[i]);
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 115

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 115


Algorithmique et langage C

 Fonction calculable en un temps fini, qui dans


sa définition fait appel à elle-même.
 Exemple : La puissance xy
 #include <stdio.h>
 int puissance (int, unsigned);
 main( ) {
 int x;
 unsigned y;
 scanf ("%d%u",&x,&y);
 printf ("%d",puissance (x,y));
 }
 int puissance (int x, unsigned y)
 {
 if (y==0) return (1);
 else return(x*puissance (x,y-1));
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 116

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 116


Algorithmique et langage C

Cycle de vie d'un algorithme


Exemple de la démarche descendante
Exemple de la démarche ascendante

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 117

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 117


Algorithmique et langage C

 Entrées ?
 Sorties ?
 Traitement(s) ?
 Cas particuliers et Solutions proposées?

 Décomposer le problème en sous


problèmes plus simples à résoudre.
 Une analyse par l'exemple aide à dégager la
solution.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 118

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 118


Algorithmique et langage C

 Démarche descendante
 Détailler progressivement le problème en
actions plus simples exécutables par la machine.
 Démarche ascendante
 Traiter le cas simplifié du problème complexe et
l’enrichir progressivement.

 L'algorithme répond-t-il aux spécifications


du problème?
 Appliquer la trace de l'algorithme,
 Etudier l'ensemble de classes de valeurs
d’entrées.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 119

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 119


Algorithmique et langage C

Coder l'algorithme obtenu dans un


langage de programmation au choix.

 Rendre le programme opérationnel.


 Compiler et corriger les erreurs.
 faire un jeu d'essais et vérifier les
résultats.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 120

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 120


Algorithmique et langage C

 Division Euclidienne
 Calculer le quotient Q et le reste R de deux
nombres entiers positifs A et B.
 Définition du problème
 Entrées : Les nombres entiers positifs A et B.
 Sorties : Le quotient Q et le reste R.
 Traitement : Calculer le quotient Q et le reste R de
la division de A par B.
 Cas particuliers : B=0.

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 121

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 121


Algorithmique et langage C

Début
1- Lire A et B
2- Calculer le quotient Q et le reste R
de la division de A par B
3- Ecrire (Q, R)
Fin

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 122

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 122


Algorithmique et langage C

 Analyse par l'exemple, Cas : A=13 et B=4.


 Hypothèses : la machine ne sait exécuter que la
soustraction et l'addition.
 1- 13-4=9
 2- 9-4=5
 3- 5-4=1
 4- 1-4=-3 (on s’arrête)  Q=3 et R=1

 Q est le nombre de fois que l'on peut effectuer la


soustraction.
 R est le résultat de la dernière opération.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 123

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 123


Algorithmique et langage C

Début
1- Lire A et B
2- Soustraire B de A autant de fois que c'est
possible
3- Q est le nombre de soustractions effectuées
4- R est le résultat de la dernière soustraction
5- Ecrire (Q, R)
Fin

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 124

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 124


Algorithmique et langage C

Début
1- Lire A et B
2- Poser Q=0
3- Tant que la soustraction A-B est possible faire
Début
4- Soustraire B de A
5- Additionner 1 à Q
Fin
6- Poser R=A
7- Ecrire (Q, R)
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 125

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 125


Algorithmique et langage C

Début
1- Lire A et B
2- Q  0
3- Tant que A≥B faire
Début
4- A  A-B
5- Q  Q+1
Fin
6- R  A
7- Ecrire (Q, R)
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 126

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 126


Algorithmique et langage C

Opération A B Q R
1 11 5 - -
2 11 5 0 -
3 11 5 0 -
4 6 5 0 -
5 6 5 1 -
3 6 5 1 -
4 1 5 1 -
5 1 5 2 -
3 1 5 2 -
6 1 5 2 1
7 1 5 2 1
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 127

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 127


Algorithmique et langage C

 Cas où A=0 et B0  R=A et Q=0.


 Cas où A0 et B=0  Boucle infinie.
 Cas où A=0 et B=0  Boucle infinie.
 Cas où A0 et B0 :
 Cas où A<B  R=A et Q=0.
 Cas où A=B  R=0 et Q=1.
 Cas où A>B, Arrêt de la boucle ≠ jeu d'essai

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 128

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 128


Algorithmique et langage C

Début
1- Lire A et B
2- Si B=0 alors
3- Ecrire ('Impossible de diviser par 0')
4- Sinon
Début
5- Q0
6- Tant que A≥B faire
Début
7- A  A-B
8- Q  Q+1
Fin
9- RA
10- Ecrire (Q, R)
Fin
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 129

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 129


Algorithmique et langage C

 Factures d’électricité
 Calculer le montant de plusieurs factures
d’électricité.
 TVA = 20%
 Prix unitaire = 0.6DH : Tranche <= à 100 KWh
= 0.9 DH : Ce qui est au delà .
 Définition du problème
 Entrées : L’ancien index ai et le nouvel index ni pour
chaque facture.
 Sorties : La consommation, PHT et PTTC de chaque
facture.
 Traitement : Calculer consommation, PHT et PTTC de
chaque facture.
 Cas particuliers : ai > ni, ai < 0, ni < 0.
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 130

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 130


Algorithmique et langage C

 Calculer la consommation, PHT et PTTC


d’une facture.
 Généraliser le traitement à plusieurs factures.

Début
1- Lire ai et ni
2- Calculer la consommation, PHT et PTTC d’une facture.
3- Ecrire (consommation, PHT, PTTC)
4- Généraliser le traitement à plusieurs factures.
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 131

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 131


Algorithmique et langage C

Début
1- Lire ai et ni
2- Calculer la consommation
3- Calculer le prix hors taxe PHT
4- Calculer le prix TTC PTTC
5- Ecrire (consommation, PHT, PTTC)
Fin

Début
1- Lire ai et ni
2- consommation  ni - ai
3- Si consommation ≤ 100 alors
4- PHT  consommation * 0.6
5- Sinon
6- PHT(100*0.6)+(consommation–100)*0.9
7- PTTC  PHT * (1+0.2)
8- Ecrire (consommation, PHT, PTTC)
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 132

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 132


Algorithmique et langage C

Début
1- Lire ai et ni
2- Si ai > ni ou ai < 0 ou ni < 0 alors
3- Ecrire ('Erreur de saisie')
4- Sinon
Début
5- consommation  ni - ai
6- Si consommation ≤ 100 alors
7- PHT  consommation * 0.6
8- Sinon
9- PHT(100*0.6)+(consommation–100)*0.9
10- PTTC  PHT * (1+0.2)
11- Ecrire (consommation, PHT, PTTC)
Fin
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 133

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 133


Algorithmique et langage C

Début
1- Lire ai et ni
2- Si ai > ni ou ai < 0 ou ni < 0 alors
3- Ecrire ('Erreur de saisie')
4- Sinon
Début
5- consommation  ni - ai
6- Si consommation ≤ 100 alors
7- PHT  consommation * 0.6
8- Sinon
9- PHT(100*0.6)+(consommation–100)*0.9
10- PTTC  PHT * (1+0.2)
11- Ecrire (consommation, PHT, PTTC)
Fin
12- S’il y a une nouvelle facture refaire le même traitement
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 134

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 134


Algorithmique et langage C

Début
1-Faire
Début
2- Lire ai et ni
3- Si ai > ni ou ai < 0 ou ni < 0 alors
4- Ecrire ('Erreur de saisie')
5- Sinon
Début
6- consommation  ni - ai
7- Si consommation ≤ 100 alors
8- PHT  consommation * 0.6
9- Sinon
10- PHT(100*0.6)+(consommation–100)*0.9
11- PTTC  PHT * (1+0.2)
12- Ecrire (consommation, PHT, PTTC)
Fin
13- Lire nouvelle facture
Fin
14-Tant que nouvelle facture = 'oui‘
Fin
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 135

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 135


Algorithmique et langage C

Opération Ai ni cons PHT PTTC N. fact


1 - - - - - -
2 100 170 - - - -
3 100 170 - - - -
5 100 170 - - - -
6 100 170 70 - - -
7 100 170 70 - - -
8 100 170 70 42 - -
11 100 170 70 42 50.4 -
12 100 170 70 42 50.4 -
13 100 170 70 42 50.4 Oui
14 100 170 70 42 50.4 Oui
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 136

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 136


Algorithmique et langage C

Opération Ai ni cons PHT PTTC N. fact


1 100 250 - - - -
2 100 250 - - - -
3 100 250 - - - -
5 100 250 - - - -
6 100 250 150 - - -
7 100 250 150 - - -
9 100 250 150 - - -
10 100 250 150 90 - -
11 100 250 150 90 108 -
12 100 250 150 90 108 -
13 100 250 150 90 108 Non
14 100 250 150 90 108 Non
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 137

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 137


Algorithmique et langage C

Cas où n. fact=’non’  Arrêt.


Cas où n. fact=’oui’  OK.
Cas où ai < 0 ou ni < 0  OK.
Cas où ai > ni  OK.
Cas où ai ≤ ni, Arrêt de la boucle
 jeu d'essai
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 138

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 138


Algorithmique et langage C

Java
Visual Basic
Exemples

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 139

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 139


Algorithmique et langage C

 Types : int, float, char…+boolean


 Tableaux : dynamiques + réservation de mémoire
 Chaînes de caractères : classe string+méthodes standard
 Lecture : à base de,
 system.in.read(variable de type byte);
 Affichage :
 system.out.println(texte ou argument séparés par +);

 Opérateurs arithmétiques et logiques : pareil qu’en C


 Instruction de contrôle : pareil qu’en C
 Java est un langage orienté objet (classe, méthode…)
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 140

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 140


Algorithmique et langage C

 Exemple
 Class Bonjour
 {
 public static void main (string args[])
 {
 system.out.println (“Bonjour”);
 }
 }
 Compilation et exécution
 Javac Bonjour.java
 Java Bonjour

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 141

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 141


Algorithmique et langage C

 Java est un langage événementiel


 Types : integer, double, …+ string, boolean
 Tableaux : dynamiques
 Lecture au moyen d’une interface
 Affichage :
 print(texte ou argument séparés par +);
 Opérateurs logiques : and, or
 Instruction de contrôle : if then, select case, for next,
while, do while loop until

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 142

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 142


Algorithmique et langage C

 Exemple
 sub Bonjour

 print (“Bonjour”);

 endsub

 Compilation et exécution au moyen d’une interface

Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 143

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 143


Algorithmique et langage C

 #include <stdio.h>
 #define taille 20
 main( ) {
 char a [taille], b[taille];
 int i;
 for (i=0;i<taille;i++)
 {
 scanf ("%c",&a[i]);
 scanf ("%c",&b[i]);
 }
 i=0;
 while (i<taille && a[i]==b[i])
 i++;
 if (i>=taille) printf ("a et b sont égaux.\n");
 else printf ("a et b sont différents\n");
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 144

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 144


Algorithmique et langage C

 Class comparer
 {
 public static void main (string args[])
 {
 final int taille=20;
 char a []=new char [taille], b []=new char [taille];
 int i;
 byte j;
 for (i=0;i<taille;i++)
 {
 a[i]= (char) system.in.read (j);
 b[i]= (char) system.in.read (j);
 }
 i=0;
 while (i<taille && a[i]==b[i])
 i++;
 if (i>=taille) printf ("a et b sont égaux.\n");
 else printf ("a et b sont différents\n");
 }
 et }langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI
Algorithmique 145

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 145


Algorithmique et langage C

 #include <stdio.h>
 main( ) {
 const taille as integer=20;
 dim a (taille) as string;
 dim b (taille) as string;
 dim i as integer;
 for i=0 to taille-1
 scanf ("%c",&a[i]);
 scanf ("%c",&b[i]);
 next I;
 i=0;
 while (i<taille and a(i)=b(i))
 i=i+1;
 wend
 if (i>=taille) then print ("a et b sont égaux.");
 else print ("a et b sont différents");
 endif
 }
Algorithmique et langage C. Mme F.Z. BELOUADHA. Filière Génie Informatique-EMI 146

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 146


Algorithmique et langage C

 B.W. Kernighan, D.M. Ritchie. Le langage C, Norme


ANSI. Dunod, 2004.
 C. Delannoy. Programmer en Java. Eyrolles. 2006.
 R. Sedgewick. Algorithmes et langage C.
InterEditions, Paris, 1991.
 G. Leblanc. Turbo C. Eyrolles, 1992.
 E. Kain. Du C au C++. Sybex, 1992.
 M. Eleuldj. Notes du cours Informatique. EMI.
 N. Tounsi. Polycopié du langage C. EMI.
 http://c.developpez.com/ : Cours et tutoriaux sur les
langages C, Java, VisualBasic…

Mme Fatima-Zahra BELOUADHA. Filière Génie Informatique-EMI. 1ère année. 147

Vous aimerez peut-être aussi