Vous êtes sur la page 1sur 34

Algorithmique et programmation 2

Chapitre 1:Rappel

1. Introduction
2. Variable, saisie, calcul, affichage
3. Structures alternatives
4. Structures itératives

1
MIPC: S3 Département
Introduction
• Un programme en c : un programme écrit en
langage c qui traduit un algorithme décrivant la
solution d’un problème.
• Il est composé de:
• Directives de préprocesseur (#)
• Déclarations
• Fonctions
• Fonction principale (main)
•Instruction
• Bloc
• Commentaires (/* texte*/ , // ligne) 2
MIPC: S3 Département
Introduction (suite)
Exemple:
Bibliothèque
# include<stdio.h>
Directive float Rayon,Pi=3.14; Déclaration de données
float Surface(float r)
{ return (r*r*Pi);} Fonction
main()
{ Fonction principale
float Res;
Instruction
Scanf("%f",&Rayon);
Bloc Res = Surface(Rayon); /* Appel de la fonction*/
printf ("%f",Res);
} Commentaire

3
MIPC: S3 Département
Donnée
• Donnée: constituée de trois attributs
(identificateur, valeur et type)
• Mots réservés au langage c:
break double int struct
case else long switch
char float return typedef
const for short unsigned
continue goto signed void
default if sizeof
do static while

4
MIPC: S3 Département
Donnée (suite)
• Type: Nom Taille
char 1 octet

int 2 octets (et plus)


short int 2 octets
long int 4 octets
unsigned int 2 octets

float 4 octets
double 8 octets
long Double 10 octets

• Catégories de donnée: variable et constante

5
MIPC: S3 Département
Donnée (suite)
• Variable:
type identificateur_var ;
Exemple: float surface ;
• Constante:
const type identificateur_const = valeur ;
Exemple: const float Pi = 3.14;
• Remarques:
•On peut utiliser # et define pour définir une
constante (#define Pi 3.14)
• Deux types de variable: globale et locale
6
MIPC: S3 Département
Calcul

• Expression: combinaison d’opérandes et


d’opérateurs.
•Affectation: stockage du résultat d'une
expression dans une variable.
identificateur_variable = expression ;
Exemple: surface = rayon*rayon*3.14;

7
MIPC: S3 Département
Calcul (suite)

• Opérateurs:
• Arithmétiques
• Relationnels
• Logiques
• Incrémentation / décrémentation
•…

8
MIPC: S3 Département
Calcul (suite)

• Opérateurs arithmétiques:
Opérateur Signification
+ Addition
- Soustraction
* Multiplication
/ Division
% Reste de la
division entière

9
MIPC: S3 Département
Calcul (suite)

• Opérateurs relationnels:
Opérateur Signification
== Egal
!= Différent
< Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal

10
MIPC: S3 Département
Calcul (suite)
• Opérateurs logiques:
Opérateur Signification
! Non
|| OU
&& ET

• Opérateurs d’incrémentation et décrémentation:


Opérateur Signification
++ Augmente d’une unité la variable
-- Diminue d’une unité la variable

11
MIPC: S3 Département
Saisie (Entrées)
•Instruction d’entrée: acquérir et placer une
valeur dans une variable.
scanf ("format",&variable) ;

•Exemple:
scanf ("%f",&Rayon) ;

Fonction de Format Adresse Identificateur


lecture de la variable

12
MIPC: S3 Département
Saisie (Entrées)

•Formats associés aux types:


Type Format

int ou short %d

float ou double %f

char %c

String %s

13
MIPC: S3 Département
Affichage (Sorties)
•Instruction de sortie: afficher sur l’écran
(un message, le contenu d’une variable ou
le résultat d’une expression)
printf (" Message format",variable ou expression) ;
• Exemple:
printf ("Le double de %d est %d ",R,2*R) ;

Message Variable
Format Expression

14
MIPC: S3 Département
Structures alternatives

•Structure de choix simple (1)


• Structure de choix alternatif (2)
• Structure de choix multiples (3)

15
MIPC: S3 Département
Structures alternatives (suite)
(1) Structure de choix simple

if (conditions)
{
instruction 1;
instruction 2;

instruction n;
}

16
MIPC: S3 Département
Structures alternatives (suite)
(2) Structure de choix alternatif

if (conditions)
{
instructions 1;
}
else
{
instructions 2;
}
17
MIPC: S3 Département
if - else if - ... - else

if ( <expr1> )
<bloc1>

else if (<expr2>)
<bloc2>

else if (<expr3>)
<bloc3>
………………..
else if (<exprN>)
<blocN>

else <blocN+1>

18
MIPC: S3 Département
EXERCICE 1
Ecrire un programme de facturation avec remise. Il lit en
donnée un simple prix hors taxes et calcule le prix TTC
correspondant (avec un taux de TVA constant de 20 %). Il
établit ensuite une remise dont le taux dépend de la valeur
ainsi obtenue, à savoir :
● 0 % pour un montant inférieur à 1 000 DH
● 1 % pour un montant supérieur ou égal à 1 000 DH et
inférieur à 2 000 DH
● 3 % pour un montant supérieur ou égal à 2 000 DH et
inférieur à 5 000 DH
● 5 % pour un montant supérieur ou égal à 5 000 DH
19
MIPC: S3 Département
Solution
#define TAUX_TVA 20
main()
{
float ht, ttc, net, tauxr, remise ;
printf("donnez le prix hors taxes : ") ;
scanf ("%f", &ht) ;
ttc = ht * ( 1 + TAUX_TVA/100) ;
if ( ttc < 1000) tauxr = 0 ;
else if ( ttc < 2000 ) tauxr = 1 ;
else if ( ttc < 5000 ) tauxr = 3 ;
else tauxr = 5;
remise = ttc * tauxr / 100 ;
net = ttc - remise ;
printf ("prix ttc %f\n", ttc) ;
printf ("remise %f\n", remise) ;
printf ("net à payer %f\n", net) ;
}
20
MIPC: S3 Département
Structures alternatives (suite)
(3) Structure de choix multiples
switch (variable)
{
case valeur 1: instructions 1;
break;

case valeur n: instructions n;
break;
default: instructions n+1;
}
21
MIPC: S3 Département
Exemple
switch (choixMenu)
Exemple: Apps-Sport {
case 1:
int choixMenu; printf("Vous avez choisi le Foot
printf("=== Menu ===\n\n");
balle !");
break;
printf("1. foot balle n");
case 2:
printf("2. Tennis n");
printf("Vous avez choisi le Tennis. ");
printf("3. Natation \n");
break;
printf("4. Equitationn"); case 3:
printf("\nVotre choix ? "); printf("Vous avez choisi la natation");
scanf("%d", &choixMenu); break;
case 4:
printf("Vous avez choisi l’Equitation");
break;
default:
printf("Vous n'avez pas rentré un
nombre correct. !");
}
22
MIPC: S3 Département
Exercice 2

Ecrire un programme en c qui affiche la


mention équivalente à une moyenne
obtenue à partir de trois notes saisies au
clavier.

23
MIPC: S3 Département
solution
#include <stdio.h>
main()
{ int i;
float n,m,a,moy,som = 0 ;
printf ("donnez un entier ") ;
scanf ("%f", &n) ;
som=som+n;
printf ("donnez un entier ") ;
scanf ("%f", &m) ;
som=som+m;
printf ("donnez un entier ") ;
scanf ("%f", &a) ;
som=som+a;
moy=som/3;
printf ("Somme : %f\n", som) ;printf ("moyenne : %f\n", moy) ;
}
24
MIPC: S3 Département
Structures itératives

• Boucle (1)
• Boucle (2)
• Boucle (3)

25
MIPC: S3 Département
Structures itératives (suite)
Boucle (1)
Initiations Conditions

for (expressions1; expressions2; expressions3)


{
Incrémentatio
instruction 1; ns ou bien
instruction 2; Décrémentatio
ns

instruction n;
}

26
MIPC: S3 Département
Structures itératives (suite)
Boucle (2)

while (conditions)
{
instruction 1;
instruction 2;

instruction n;
}

27
MIPC: S3 Département
Structures itératives (suite)
Boucle (3)

do{
instruction 1;
instruction 2;

instruction n;
}while(conditions);

28
MIPC: S3 Département
Solution
#include <stdio.h>
main()
{ int i;
float n,moy,som = 0 ;
i=0;
do
{ printf ("donnez une note ") ;
scanf ("%f", &n) ;
som += n ;
i++ ;
}
while (i<3) ;
moy=som/i;
printf ("Somme : %f\n", som) ;
printf ("moyenne : %f\n", moy) ;
} 29
MIPC: S3 Département
Exercice 2

Ecrire un programme en c qui affiche si un


entier saisi au clavier est un nombre parfait
ou non.

30
MIPC: S3 Département
Solution
main()
{
int i, nombre, somme=0;
printf("entrer un nombre\n");
scanf("%d",&nombre);
for (i=1; i<=nombre/2; i++)
{
if (nombre % i == 0)
{
somme = somme + i;
}
}
if(somme == nombre) printf("parfait");
else printf("n est pas parfat");
} 31
MIPC: S3 Département
Exercice 3

Ecrire un programme en langage C qui


détermine la Nième valeur Un (N étant
fourni en donnée) de la suite de
« FIBONACCI » définie comme suit :
U1=1
U2=1
Un= Un-1+ Un-2 pour n>2

32
MIPC: S3 Département
Solution_1
main()
{
int u1, u2, u3 ; /* pour "parcourir" la suite */
int n ; /* rang du terme demandé */
int i ; /* compteur */
do
{ printf ("rang du terme demandé (au moins 3) ? ") ;
scanf ("%d", &n) ;
}
while (n<3) ;
u2 = u1 = 1 ; /* les deux premiers termes */
i=3;
while (i < n+1) /* attention, l’algorithme ne fonctionne que pour n > 2 */
{ u3 = u1 + u2 ;
u1 = u2 ;
u2 = u3 ;
i++;
}
printf ("Valeur du terme de rang %d : %d", n, u3) ; 33
} MIPC: S3 Département
Solution_2
#include<stdio.h>
int U1,U2,U3,i,n ;

printf(« Entrer un entier:");


scanf("%d",&n);
U1=1;U2=2;
for (i=3;i<n+1;i++)
{
U3=U1+U2;
U1=U2;
U2=U3;
}
printf ("Valeur du terme de rang %d : %d", n, U3) ;
34
} MIPC: S3 Département

Vous aimerez peut-être aussi