Algorithmique et Programmation en Langage C

Transcription

Algorithmique et Programmation en Langage C
Université Mohammed V – Agdal
Ecole Mohammadia d'Ingénieurs
Département Génie Informatique
Rabat
Plan
CHAPITRE 1:
 NOTIONS D'ALGORITHMIQUE
CHAPITRE 2:
Algorithmique et
Programmation en Langage C
 CONCEPTS DE BASE DU LANGAGE C
CHAPITRE 3:
 LES TABLEAUX
 LES POINTEURS
CHAPITRE 4
 LES FONCTIONS
Mr N.EL FADDOULI
Année Universitaire:2014/2015
EMI / Dept Génie Informatique/ N. El Faddouli
ETAPES
ET
DEMARCHES
DE
RESOLUTION ALGORITHMIQUE
EMI / Dept Génie Informatique/ N. El Faddouli
1
Fonctions de base d’un ordinateur
Fonctions de base d’un ordinateur
Exemple 1: Calcul de A op B sur une Calculette
 Exemple 2: Robot de Jardinage
A ti
Actions
d base:
de
b
 IIntroduction
d i d
des d
données
é numériques
éi
(A
(A,B)
B)
 Introduction de l’opérateur
 Creuser un trou.
 Affichage du résultat
 Reboucher un trou.
 Placer un arbre dans un trou.
 Arroser un arbre.
 Trois fonctions principales:
 Entrée des données (saisie)
 Traitement (calcul )
 Sortie des résultats (affichage)
Remarque:
Algorithme de plantation d'un arbre:
1- Creuser un trou.
une Action complexe sera décomposée en
plusieurs actions p
p
plus simples.
p
Exemple:
(30 + (40/25) ) / (13 * (5 + 31))
Décomposition:
2- Placer un arbre dans le trou.
3- Reboucher le trou.
Algorithme de plantation et d'arrosage de plusieurs
arbres:
R1 = 40/25
R2 = 30+R1
R3 = 5+31
R4 = 13*R3
R = R2/R4
1- Creuser un trou.
2- Placer un arbre dans le trou.
trou
3- Reboucher le trou.
On constate:
4- S'il existe encore des arbres
 Nécessité de mémorisation des résultats intermédiaires
Exécuter les actions 1, 2, 3 et 4.
 L’ordre d’exécution des différentes actions est important
Si
Sinon
E é t les
Exécuter
l actions
ti
suivantes
i
t (5,…).
(5 )

 Deux
D
autres
t
ffonctions
ti
essentielles:
ti ll
 Mémorisation
5- Arroser les arbres
 Séquencement
EMI / Dept Génie Informatique/ N. El Faddouli
2
EMI / Dept Génie Informatique/ N. El Faddouli
3
2
Fonctions de base d’un ordinateur
Fonctions de base d’un ordinateur
Résumé:
Remarques:
•Que
Que signifie une fonction de base d
d’un
un ordinateur?
 Planter tous les arbres et les arroser à la fin
Ou
Planter et arroser arbre par arbre
•Quelles sont les fonctions de base d’un ordinateur et la
signification de chacune?
- Entrée (saisie, lecture) de données:

A un problème donné pourraient correspondre
plusieurs algorithmes
- Traitement (calcul) de données:
 L'action 4 vérifie si une condition est vraie ou non.

 Sélection.
- Sortie (affichage) des résultats:
 Les actions 1, 2, 3 et 4 sont répétées un certain
- Mémorisation:
nombre de fois.

 Itération.
-Séquencement:
- Sélection:
-Itération:
EMI / Dept Génie Informatique/ N. El Faddouli
4
EMI / Dept Génie Informatique/ N. El Faddouli
5
3
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Concepts fondamentaux
Étapes de mise au point d’un programme
 Action (Ordre ou instruction):
• Opération de base que l'ordinateur sait faire.
• Produit un effet spécifique en un temps fini.
 Algorithme:
Programmeur
Problème?
• Suite finie d'instructions.
• Ordre déterminé.
Analyse du problème
• Appliqué à un nombre fini de données.
Algorithme
• Indépendant de l'ordinateur et des langages de
p g
programmation.
(Editeur de texte)
Programme en Langage
évolué
(Compilateur)
Compilation
Algorithme de la vie quotidienne:
Recette de cuisine, guides d'appareils électriques, …
Caractéristiques: - Exécutés par l'être humain
Prog exécutable
- Exprimés à demi-mot
- Contiennent des implicites
Données
 Algorithme pour ordinateur:
Doit être précis et compréhensible
Résultat
Utilisateur
 Entrées + Instructions + Sorties
Par ordinateur
EMI / Dept Génie Informatique/ N. El Faddouli
6
EMI / Dept Génie Informatique/ N. El Faddouli
7
4
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Exemple de problème
Exemple de problème
La facture de téléphone
- Entrées: consommation, prix_unitaire, ttva et
prix_abonnement.
Programme C calculant le montant de la facture de
téléphone
#include <stdio.h>
main( )
{
int consommation;
float prix_abonnement , prix_unitaire, tva, PHT, PT ;
- Traitement: Calcul du montant total PHT et PT
- Sorties (Le résultat final à afficher ): PHT, PT.
Algorithme:
Lire (consommation,prix_unitaire, ttva, prix_abonnement)
PHT
PT


(consommation
*
prix_abonnement
prix_unitaire)
+
printf("Entrer la valeur de la consommation :");
scanf("%d",&consommation) ;
printf("Entrer la valeur du prix unitaire :");
PHT * (1 + ttva)
scanf("%f",&prix_unitaire) ;
Ecrire PT
printf("Entrer la valeur de la TVA :");
Cas de figure:
Consommation = 100 unités
scanf("%f",&tva) ;
P i unitaire
Prix
it i = 0.50
0 50 DH
printf("Entrer la valeur du prix abonnement :");
Prix d’abonnement = 70 DH
scanf("%f",&prix_abonnement) ;
Le taux de TVA = 20%
Le
processeur
attendra
la
saisie
des
entrées
PT =PHT * (1 + tva) ;
(100 0.50,
(100,
0 50 0.2
0 2 ett 70) par l'utilisateur,
l' tili t
f it les
fait
l calculs
l l :
PHT = (100*0.5)+70=120
et PT
printf("Le prix total est de %f DH\n",PT);
= 120*(1+0.2)=144
}
et affiche le résultat final 144.
EMI / Dept Génie Informatique/ N. El Faddouli
PHT=(consommation * prix_unitaire) + prix_abonnement ;
8
EMI / Dept Génie Informatique/ N. El Faddouli
9
5
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Actions de base
Exercice:
 Pseudo code
• Signaler les erreurs dans ces instructions:
Langage informel proche du langage naturel et
Entier A , B
indépendant de tout langage de programmation.
A  55
BA+F
 Les variables (voir Langage C page 46)
B+A  32
- Symboles
S b l dé
désignant
i
td
des d
données
é d
de diffé
différents
t ttypes.
B  40
- Caractéristiques:
 Nom.
• Donner les valeurs finales de A et B:
 Type.
X
…
Entier A , B
 Valeur.
Valeur
C
…
A  55
Exemple:
Entier
X
B  A *2
Caractère
C
BB
A
B
AA+B
 L'affectation (voir Langage C page 48)
Variable  Expression
Calculer l’expression et stocker le résultat dans la variable
Exemple:
X  10
X  (X*2) + 45
C  'f'
EMI / Dept Génie Informatique/ N. El Faddouli
X
10
65
C
f
10
EMI / Dept Génie Informatique/ N. El Faddouli
11
6
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Actions de base
Actions de base
 La lecture ((voir Langage
g g Cp
page
g 49))
Lire (Variable)
Exemple:
Lire (a)
Exercices:
1- Écrire un algorithme qui calcule et affiche la somme et
Étapes d’exécution:
le produit de deux entiers saisis au clavier.
-Attendre la saisie d’une valeur.
3- Écrire un algorithme qui calcule et affiche l'entier M
-Après validation:
Lire (a,b,c)
* Stocker cette valeur dans la
variable indiquée.
* Passer à l'instruction suivante
 L'écriture (voir Langage C page 48)
composé des chiffres à l’envers d'un entier N saisi au
clavier. L’entier N est composé de 4 chiffres
Exemple: N = 2579
Ecrire (expression)
 M = 9752
Remarque: Pour designer le reste de la division
Exemple:
euclidienne, utilisez l'opérateur Mod:
Ecrire (a)
Soient X et Y deux entiers:
Ecrire ("bonjour")
X Mod Y
 Le reste de X / Y
Ecrire (a, b, c)
Ecrire ("Le résultat est:", a)
Ecrire (a + b)
Ecrire (''La somme:", a + b)
EMI / Dept Génie Informatique/ N. El Faddouli
12
EMI / Dept Génie Informatique/ N. El Faddouli
13
7
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Structures de contrôles
Structures de contrôles
 La Sélection simple réduite
 La Sélection simple(voir Langage C page 52)
SI
Bloc 1
SI condition
condition ALORS
Début
instruction1
…
Début
instruction1
…
Fin
Fi
Fin
SINON
Bloc 2
ALORS
Début
instruction1'
…
Fi
Fin
Exemple: Calcul du prix total PT de N articles de prix
unitaire PU avec remise de 10% si le montant
dépasse 1500 Dh.
Important: Utiliser l'indentation pour indiquer les blocs.
Lire ( N )
Exemple: Afficher le maximum de A et B saisis au clavier
Lire
Lire(A,
(A,B)B)
Lire (PU)
PT *0.9
PT  N * PU
Si SiA>B
Alors
A>B
Alors
C Ecrire
A
("Le maximum est: ",A)
Sinon
Sinon
CB
Si PT>1500 Alors
PT  PT - PT* 0.1
Ecrire ("Le montant est: ",PT)
Ecrire ("Le maximum est: ",B)
Ecrire ("Le
( Le maximum est: ",C)
,C)
Exercice: Calcul de la taxe sur le chiffre d'affaire CA saisi
au clavier sachant que le taux est de:
10% si CA<5000Dh et 20% si CA≥5000Dh
EMI / Dept Génie Informatique/ N. El Faddouli
14
EMI / Dept Génie Informatique/ N. El Faddouli
15
8
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Structures de contrôles
Structures de contrôles
 Les sélections simples imbriquées
SI
condition
 Les expressions logiques
ALORS
Début
 Expression = Vrai ou Faux
Bloc 1
Fin
 Opérateurs logiques: ET, OU, NON
Exemples: A=1 B=2 C=3
SINON
Début
Bloc 2
Fin
Les blocs d'instructions contiennent à leur tour des
instructions de sélections (SI…SINON…)
(SI SINON )
Exemple: afficher les entiers A, B et C dans l'ordre
croissant: Lire (A, B, C)
(B>0) OU (C<1) = Vrai
(A>5) ET (C<A) = Faux
(B>A) ET (C>0) = Vrai
NON ((B>A) ET (C>B)) = Faux
 Les variables booléennes
Si A ≥ B Alors
Début
Si B ≥ C Alors
Ecrire (C, B, A)
Sinon
Début
Si C ≥ A Alors
…..
Fin
Fin
SINON ….
EMI / Dept Génie Informatique/ N. El Faddouli
(B>8) OU (C<1) = Faux
 Variables pouvant contenir VRAI ou FAUX.
Exemple: Soient A, B et C les coefficients d'une
équation de second degré.
Delta  B*B – 4*A*C
V  ( Delta > 0 )
Si V=Vrai ALORS
…..
16
EMI / Dept Génie Informatique/ N. El Faddouli
Si V ALORS
….
17
9
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Structures de contrôles
Structures de contrôles
 La sélection multiple
p ((voir Langage
g g C page
p g 52))
 Equivalent en langage C
Exemple: Effectuer une opération (+, -, * ou /) sur deux
Algo
C
Exemple
Var. booléenne
Var. entière int V;
Vrai
 0
Faux
0
NON
!
entiers A et B selon la valeur d' un caractère C.
Lire (A, C, B)
( 1 ) if (V==1)…  if (V) …
SELON
C
Si
C='+' Alors
Ecrire ("La Somme=", A+B)
Début
Sinon
'+': Ecrire ("La Somme=", A+B)
Si C='-'
("La différence
=", A-B)
'-' :Alors
EcrireEcrire
("La différence=",
A-B)
Sinon…: …
SINON
SINON:
in alide")
….. Ecrire ("Opération invalide")
Fin
if (V==0)…  if(!V)…
ET
&&
if ( A>=B && B>=C) …
OU
||
if ( A<B || B<C) …
= (égale)
(é l )
==
if ( A == 0)…
0)
≠ (différent)
!=
if ( A != 0)…
► La valeur d'une expression (variable)  Traitement
Exercice:
Traduire en langage C ll'algorithme
algorithme de tri des trois
entiers A, B et C.
► Plusieurs valeurs possibles  Choix du traitement
SELON Expression
Début
Valeur1 : Bloc1
Valeur2 : Bloc2
….
ValeurN : BlocN
SINON : Bloc0
Fin
EMI / Dept Génie Informatique/ N. El Faddouli
18
EMI / Dept Génie Informatique/ N. El Faddouli
19
10
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Structures de contrôles
Structures de contrôles
E
Exercices:
i
 L'instruction
L'i t
ti itérative
ité ti POUR (voir Langage C page 54)
1°- Résolution d'une équation de 1ier degré: A*X+B=0
2°- Vérifier si un employé a droit à un crédit ou non
selon son ancienneté (A) et sa note (N) comme
Exemple: Calculer et afficher la somme S des entiers
entre 1 et N (saisi au clavier)
S = 1 + 2 + 3 + ….+N
indiqué ci-dessous.
A≥5 :
A<5 :
N≥18  Crédit accordé
Lire (N)
S0
SS+1
SS+2
SS+3
…..
SS+N
N<18  Crédit non accordé
Ecrire ("La somme= ", S)
N≥13
 Crédit accordé
N<13
 Crédit non accordé
A=4:
N≥16  Crédit accordé
N<16  Crédit non accordé
A=3:
Lire (N)
S0
S  S i+
i 1 ttel
que N≥ i ≥1
Pour
à lN
Même
instruction
SS+i
Ecrire ("La somme= ", S)
A= 1 ou 2  Crédit non accordé
EMI / Dept Génie Informatique/ N. El Faddouli
20
EMI / Dept Génie Informatique/ N. El Faddouli
21
11
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Structures de contrôles
Structures de contrôles
Syntaxe générale: (voir Langage C page 54)
POUR Compteur  A à B
Début
Bloc 1
Fin
Nombre de répétition :
B-A+1 fois
Instructions répétées
B-A+1 fois
 L'instruction
L'instr ction itérative
itérati e TANT QUE(voir Langage C page 55)
► Répéter un traitement tant qu'une condition est
satisfaite.
►Evaluer la condition avant de faire le traitement.
TANT QUE Condition
Condition d'exécution
d exécution
Début
► Répéter un traitement un nombre connu de fois.
► Utiliser un compteur incrémenté (ou décrémenté)
à chaque itération.
Lire (N)
S0
i 1
TANT QUE i ≤ N
1- Initialisation du compteur par A
2 Si Compteur
2C
t
≤B:
Exécution du bloc: Bloc1
4-
Incrémentation de Compteur de 1
5-
Retour à 2
Bloc d'instructions à
répéter
Exemple: Calculer S = 1+2+…+ N (N saisi au clavier)
Étapes d'exécution
3-
Instruction1
…
Fin
Début
SS+i
ii+1
Fin
Ecrire ("La somme= ", S)
6 Sinon: Fin de la boucle.
6boucle
Exercice
Afficher les nombres impairs se trouvant entre 1 et N
EMI / Dept Génie Informatique/ N. El Faddouli
22
EMI / Dept Génie Informatique/ N. El Faddouli
23
12
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Structures de contrôles
Structures de contrôles
Important:
L
L'instruction
instruction itérative FAIRE …TANT QUE
(voir Langage C page 55)
Condition fausse au départ
 Le bloc d'instructions à répéter ne sera pas exécuté.
 Le bloc d'instructions dans "TANT QUE" sera
exécuté 0 ou plusieurs fois.
fois
► Répéter un traitement tant qu'une condition est
satisfaite.
FAIRE
Instruction1
Instruction2
…
TANT QUE Condition
Exemple: Saisie de N ≤ 0 dans l'algorithme précédent.
Bloc d'instructions à
répéter
Condition d'exécution
Exemple: Afficher les entiers entre 0 et N à ll'envers
envers
Lire ( N )
FAIRE
Ecrire ( N )
NN-1
TANT QUE N ≥ 0
Remarque: Après la ligne TANT QUE, N vaut
► Evaluation de la condition après
…
l'exécution du
traitement  Bloc d'instructions exécuté au moins une fois
Exemple: Saisie de N < 0 dans l'exemple précédent.
Résumé:
Choix
de
la
forme
d'itération
appropriée selon le problème à résoudre.
EMI / Dept Génie Informatique/ N. El Faddouli
24
EMI / Dept Génie Informatique/ N. El Faddouli
25
13
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Exemple complet
Exemple complet
Objectif: Calculer et afficher le résultat de conversion
Remarque:
q
d'un entier strictement positif dans une base quelconque
 Division de N par B autant de fois que possible
 Itération  Utilisation d’une boucle.
(comprise entre 2 et 10).
Entrées: Le nombre N et la base B
 Résultat = Combinaison des restes
Sorties: Le résultat de conversion R
Version 2°:
Traitement: Convertir le nombre N dans la base B
1- Lire ( N, B )
Cas particuliers: N≤0, B<2 ou B>10
2- Effectuer une succession de division de N
par B autant de fois qu
qu'il
il le faut.
faut
Version 1°:
3- Le résultat est la combinaison des restes.
1- Lire ( N, B )
Version 3°:
2- Convertir N en base B
1- Lire ( N, B )
3- Ecrire ( R )
3
2- Tant Qu'il le faut (condition à déterminer) faire
Analyse par l'exemple: N=11 et B=2
Conversion Ξ divisions successives de N par B
11/2= 5
Reste=1
5/2=2
Reste=1
2/2=1
Reste=0
1/2=0
Reste=1
3-
Diviser N par B pour calculer le reste R
4-
Conserver le quotient dans N
5
Afficher le reste R
La division de N par B est possible quand le quotient est
non nul  Version 4°
► Résultat=1011
EMI / Dept Génie Informatique/ N. El Faddouli
26
EMI / Dept Génie Informatique/ N. El Faddouli
27
14
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Exemple complet
Exemple complet
Version 4°:
Version 6°: On considère les cas particuliers
1- Faire
1- Lire ( N, B )
Lire ( N )
2- Tant Que (le résultat de N/B≠0)
Tant Que ( N≤0 )
Début
3
3-
R  N mod B
4-
N N/B
5
Ecrire ( R )
Le reste de N/B
3- Tant Que (N≠0)
Début
Version 5
5°::
1- Lire ( N, B )
2- Tant Que (N≠0)
Début
R  N mod B
4-
N N/B
5
Ecrire ( R )
Lire ( B )
Tant Que ( B<2 OU B>10 )
Fin
33
2- Faire
4-
R  N mod B
5-
N N/B
6-
Ecrire ( R )
Fin
 Trace d’algorithme (Validation de l'algorithme)
 Simulation de l'exécution de l'algorithme
Fin
 Valeurs des variables et les messages
g affichés.
Cas particuliers  N'accepter que les valeurs N>0 et
10 ≥ B ≥2
EMI / Dept Génie Informatique/ N. El Faddouli
28
EMI / Dept Génie Informatique/ N. El Faddouli
29
15
L'ALGORITHMIQUE
L'ALGORITHMIQUE
Exemple complet
Exemple complet
Trace de l'algorithme pour
Opération
N
N=11 et B=2
B
1 Faire
11
1Lire ( N ) 11
2
2
Tant Que ( N≤0
3
11)
2
2Faire
4
11
2
Lire ( B )
5
5
2
Tant Que ( B<2 OU B>10 )
6
5
2
3- Tant Que (N≠0)
3
5
2
Début
4 45
R  N mod B 2
5 52
N N/B2
6 62)
2
Ecrire ( R
Trace de l'algorithme pour
N=11 et B=2
R
Affichage
Opération
N
B
R
Affichage
-
-
1
11
-
-
-
-
-
2
11
2
-
-
-
-
3
11
2
-
-
1
-
4
11
2
1
-
1
-
5
5
2
1
-
1
1
6
5
2
1
1
1
-
3
5
2
1
-
1
-
4
5
2
1
-
1
-
5
2
2
1
-
1
1
6
2
2
1
1
2
2
1
-
3
2
2
1
-
4
2
2
0
-
4
2
2
0
-
5
1
2
0
-
5
1
2
0
-
6
1
2
0
0
6
1
2
0
0
3
1
2
0
-
3
1
2
0
-
4
1
2
1
-
4
1
2
1
-
5
0
2
1
-
5
0
2
1
-
6
0
2
1
1
6
0
2
1
1
3
0
2
1
-
3
0
2
1
-
3
Fin
FIN
EMI / Dept Génie Informatique/ N. El Faddouli
FIN
30
EMI / Dept Génie Informatique/ N. El Faddouli
31
16
L'ALGORITHMIQUE
Exemple complet
 Validation des différentes possibilités
 Par classes de valeurs des entrées N et B :
► N ≤ 0 et  B :
OK.
► B < 2 ou B > 10 et  N:
OK.
► N < B:
OK
(Une itération)
R=N
► N ≥ B (Cas général):
N devient nul après une succession finie de
division de N par B

Arrêt de la boucle.
 Pertinence des résultats?: non confirmée.
 Jeu d’essai
EMI / Dept Génie Informatique/ N. El Faddouli
32
17

Documents pareils