Algo C Ii

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 35

Algorithme et Programmation C II

Prof :MR COULIBALY M (ingénieur en SI)

CHAPITRE 1 : introduction
I) Historique
¿

Dans les années -300 apparition de


l’algorithme euclid de pgcd de deux entiers
naturels. Cependant c’est dans les années 1940
qu’on a pu assister a l’émergence des fonctions
calculable.
II . Notion d’algorithme
a) Définitions de l’algorithme
NB : algorithme vient du nom du célèbre
mathématicien arabe AL Khawarizmi
Un algorithme est une suite d’opération
ou d’instructions finis élémentaires. Sa
réalisation permet de résoudre un
problème donné et délivre en sortie un
ensemble de valeurs.
L’algorithmique s’intéresse à l’art de construire des
algorithmes ainsi qu’a caractériser leur validité. En
effet, les domaines d’application des algorithmes est
très variés ; mais ils sont plus souvent utilisé dans le
domaine de l’informatique (science du traitement
automatique de l’information) pour effectués des
opérations dans des systèmes programmés
EX2 : les recettes d’omelette ; définir un algorithme
qui établit une facture d’électricité en admettant
qu’il existe deux tranches de facturation
b) Phases de réalisation d’un algorithme
 Résultats
 Données
 Variables de travail
 Enchainements logiques des opérations
SOLUTION de l’ex 2 ci-dessus :
A_resultats
mt_ttc est un réel // montant toutes taxes
comprises
B_ données
Conso est un réel
Prix_U1 est un réel //prix_U de la tranche 1
Prix_U2 est un réel // …………………….. 2
Tranche est un réel
Taxe est un réel
C_variable de travail
Mt_httc est un réel
Mt_tva est un réel
D_enchainement logique des opérations
1er cas : conso ≤ tranche
Mt_httc ← conso x prix 1 U

2e cas : conso¿ tranche


Mt_httc ← tranche x prixU 1+(conso tranche ;
) x prixU 2

Mt-tva← mt httc x taxe ;


Mt_ttc← mt httc +mt tva ;
Délivrer mt_ttc ;

CHAPITRE 1 : introduction

II- notion d’algorithme


4. propriétés d’un algorithme
Valide :aptitude à réaliser exactement la tâche pour
laquelle il a été conçu.
Robuste : aptitude à se protéger de conditions
anormales d’utilisation .
Efficace : aptitude à utiliser de manière optimale les
ressources du matériel qui l’exécute.
La complexité du nombre d’instructions
élémentaires à exécuter pour réaliser la tâche pour
laquelle , il a été conçu.
1. UN algorithme doit :
 Avoir un nombre fini d’etapes,
 Avoir un nombre fini d’opérations par étapes,
 Se terminer après un nombre fini d’opérations,
 Fournir un résultat ;
2. Chaque opération doit être
 Définie rigoureusement et sans ambiguïté
 Réutilisable par une machine
3. Le comportement d’un algorithme est déterministe
III-signes ou symboles utilisées en algorithmique
Opérations arithmétiques : + ;- ;x et :
Opérations comparatifs ou relatifs : ≤ ; ≥; <;>; ≠ ;=¿
Opérations d’affectations :←
Une instruction est une opération élémentaire
compréhension par un ordinateur
IV- langage informatique
 Les langages orientés procédures (fonctionnels)
 Les langages orientés objets

CHAPITRE 2 : les éléments de base de


l’algorithmique
Ce chapitre nous permettra de connaître tous
les éléments nécessaires qui entre dans la
construction d’un algorithme et les outils de
l’algorithmique.
I .Les types
Un type abstrait est un triplet composé :
 D’un nom,
 D’un ensemble d’opérations définies sur ces
valeurs,
Les types abstraits de base sont :
 Entier définit l’ensemble des entiers relatifs z
 Car les (caractères) définit l’ensemble des
caractères alphanumériques,
 Booléen prend une valeur dans l’ensemble { vrai
ou faux}
 Réel définit l’ensemble des irrationnels R
II. Variables
Une variable est un triplet composé :
D’un type (déjà défini)
D’un nom ( a priori toute chaîne
alphanumérique ),
D’une valeur.
Déclaration d’une variable.
Nom_variable est un(e) type ;
Exemple
Prixttc est un réel
Nb : une variable peut changer de valeur à tout
moment dans l’algorithme
III. Constantes
Une constante est une variable dont la valeure est
figée durant toute la realisation de l’algorithme.
Déclaration
Constante nom constante← valeur
IV- OPERATEURS
Opérateurs arithmétiques : + , -, x , /, mod
Opérations d’affectations :←
Opérations comparatifs ou relatifs : ≤ ; ≥; <;>; ≠ ;=¿
Operateurs logiques : et ^ ; ou v; négation l

^ Vrai Faux
Vrai Vrai Faux
Faux Faux Faux

v Vrai Faux
Vrai Vrai Vrai
Faux Vrai Faux

Vrai Faux
Faux vrai
Les instructions entrée /sortie :
Sortie :afficher
Permet d’afficher une, expression , une variable ou
une constante à l’écran.
Syntaxe :
Afficher (‘’constante chaine’’ + expression) ;
Exemple :
Afficher (‘’votre age est : ‘’ + varage) :
Entreé : lire
Permet de lire une variable au clavier.
Syntaxe
Lire(nom_variable) :
Exemple :
Lire(varage)
EXO : ECRIRE les instructions pour visualiser ce
écran .

Entrer a :4
Enter b :7
Somme(7,4)=11

 Afficher (« entrer a : ») ;
 Lire(a) ;
 Afficher (« entrer b : ») ;
 Lire(b)
 Afficher(‘ somme(‘ +a+ ’,’ +b+’)=’
+a+b)
V- les structures de contrôle
V-1 . si condition alors … sinon finsi
Permet de realiser une alternative simple
EXO DE MAISON :
Ecrire un algorithme qui permet de lire
3entiers a,b,c et calculer le plus grand
SOLUTION :
1er cas :
a) Résultat
max est un entier
b) Données
a , b , c sont des entiers
c) Variable de travail
Néant
d)L’enchaînement logique des opérations
Début
Afficher (« entrer a : ») ;
Lire(a) ;
Afficher (« entrer b : ») ;
Lire(b) ;
Afficher (« entrer c : ») ;
Lire(c) ;
si a<b alors
a← b;
finsi
si a<c alors
a← c;
finsi
max ←a ;
afficher
(« maximum= »+max) ;
finsi

2 cas :
si a>b ∩ a>c alors
max←b ;
sinon
si b>c alors
max←b ;
sinon
max ←c ;
finsi
finsi

Logigramme correspondant
Condition faux
bloc d’instruction 2
vrai

Bloc d’instructions 1
Avec le 2 cas on a le logigramme suivant :
V-2. selon que cas cas1 … cas casn autrement
finselon(alternative multiple)
Cette structure de contrôle est utilisée quand il
existe plusieurs choix à faire selon que la valeur prise
par la variabe de condition
Syntaxe :
Selon que variable – condition
Cas valeur 1 :
Bloc d’instructions 1
Cas valeur 2 :
Bloc instructions 2
Cas valeur 3 :
Bloc d’instructions n
Autrement :
Fin selon que
NB : pour eviter d’exécuter la suite des blocs
d’instructions suivantes on utilise l’instruction exit
EXO 1
Ecrire un algorithme qui permet de lire un caractère et
retourner si le caractère est une voyelle ou une consonne
EXO2
Ecrire un algorithme qui permet de lire un nombre
entier et retourner sa traduction en lettre
Solution EXO 1 :
a)résultat : type booléen
b)données :caract. est un caractère
c) variable de travail :néant
d)enchainement logique des opérations :
début
afficher(« entrer caract : »)
lire(caract) ;
si (caract >a ∩ caract ≤ z) alors
selonque (caract)
cas ’a’:
cas ‘e ‘ :
cas ‘i’ :
cas ‘u’ :
cas ‘o’ :
cas’y’ :
type←v
exit
autrement :
type ←f ;
fin selonque
si (type) alors
afficher (caract+ ‘ est une voyelle’) ;
sinon
afficher(carct + ‘ est une consonne ‘) ;
finsinon
sinon
afficher (caract +’est inconnu ‘) ;
fin si
fin
la SUITE DU COURS SE TROUVE DANS CE PDF

cc
SOLUTION DE L’exo 1 :
M procédure que pour la boucle tant que (résultat,
donnés ,var de travail, enchainement logique )

Début
Afficher (« entrer max : ») ;
Lire(max)
i←0 ;
répéter
afficher (i+ « ») ;
i← i+5
jusqu’à (i≤ max ¿ ;
fin

SOLUTION DE l’exo 2 :
M procédure (résultat, données, var de travail :i,
enchainement logique)

Début
Afficher (« entrer a : ») ;
Lire(a) ;
Afficher (« entrer b : ») ;
Lire(b) ;
p← 1;
i ← 1;
répéter
p← p xa ;
i← i+1 ;
jusqu’à (i≤ b ¿ ;
afficher(‘puissance ”+a+”, “+b+”=+p ‘)

logigramme de la boucle repeter :

bloc initialisation

instruction-à-repeter
bloc incrémentation

Condition

fin

EXO 1 :
Debut

Afficher(‘ entrer max :’) ;


Lire (max)

i← O;
répétera

afficher(i+’ ‘)

i← i+5 ;

i≤ max

fin

Remarque :
Différences entre les boucles tant que et repeter
Jusqu’à :
 la séquence d’instructions est exécutée au
moins une fois dans la boucle repeter
jusqu’à, alors qu’elle peut ne peut pas
être exécutée dans le cas du tant que

 la séquence d’instruction est exécutée si la


condition est vraie pour tant que et si la
condition est fausse pour répéter jusqu’à

 dans les 2 cas , le séquence d’instruction


doit obligatoirement faire évoluer la
condition ,faute de quoi on obtient une
boucle infinie

CHAPITRE 3 :les fonctions et procédures

Dans l’optique de diviser pour mieux regner on


peut décomposer un problème complexe en sous
problèmes simples .Chaque problème simple peut
faire l’objet de la création d’une fonction ou
procédure qui sont une portion d’algorithme
permettant de résoudre une tâche spécifique.
Syntaxe :
Fonction nomdefonction(lireParamètre) type résultat
Debut
// partie instruction qui contient l’appel à retourner
Fin
Finfonction
I-Déclaration de fonction
Syntaxe :
Fonction nom-fonction(types1 arg… types arg)
// déclaration des variables locales autres que les paramètres
Début
// partie instruction qui contient l’appel à retourner
Fin
Finfonction
 type-resultat correspond au type de résultat de la fonction
 nom_fonction est le nom qui identifie le fonction
 type1 arg1… type n arg n définit les types et les noms des
paramètres de la fonction

ces argument sont appelés paramètres formels, par


opposition aux paramètres effectifs qui sont les
paramètres avec lesquels la fonction est effectivement
appelée

 Par référence :
ref arg :type
la fonction travaille directement dans la variable
passée en paramètre

 Par valeur :
ref arg :type
la fonction travaille sur une copie de la variable
passée en paramètre
REMARQUE :
1. Une fonction peut fournir comme résultat :
Un type arithmétique
Rien
2 . si une fonction ne fournit pas de résultat , il faut
indiquer vide comme types de résultat.
3 . Dans le cas où type- résultat est différent du type vide,
le corps de la fonction doit obligatoirement comporter
une instruction retourner, dite instruction de retour à la
fonction appelante. La syntaxe de cette instruction est :
retourner expression ;

EX :
Fonction exemple(val n entier, ref m :entier) :vide
Début

n← 5
m← 7

Fin
Finfonction

A - Soit le programme principal appelant exemple var


p,q entier
Début
p← 1
q← 2
exemple (p , q)
fin
Analyser les valeurs de p et q après exécution de
l’exemple.
EXO1 :
Ecrire une fonction produit de deux entiers a et b
Puis en écrire la somme

A : Exemple de correction

A la fin l’exécution de la fonction exemple :


P=1car p passé par valeur
Q=7 car q passe par référence

Corrigés de L’EXO1 :
Fonctionproduit(a :entier, b :entier) :entier
Var ;
P :entier ;
Début
p← a xb;
retourner p ;
fin
finfonction
II. Différent type de passage de paramètres
En ce qui concerne le passage de paramètres à une
procédure ou fonction, le programmeur a deux besoins
fondamentaux :
 Soit il désire passer une valeur qui sera exploitée
par l’algorithme de la procédure(c’est ce dont on
a besoin quand on écrit par ex sin(x) . une telle
façon de passer un paramètre s’appelle du,
passage par valeur ;
 Soit il désire passer une référence à une variable,
de manière a permettre à la procédure de
modifier la valeur de cette variable

Exercice :
Ecrire la fonction qui permet la permutation de a,b
Solution :
Fonctionechange(ref a :entier, ref b :entier) :vide
Var
Temps :entier
Debut
temps← a
a← b

b← temps
fin
foncfonction
III- La récursivité
La récursivité est possible dans bcp de langages ;c’est la
propriété qu’a une fonction de s’auto appelé( cad de se
répéter elle m plusieurs fois ).
EXERCICES
1- Considérons une suite
U0=1
U0=2Un+1 ∀ n ≥1
 Ecrire une fonction récursive permettant de
calculer le n terme de cette suite
 Ecrire une fonction permettant de calculer le
factoriel d’un nombre entier quelconque positif

PROGRAMmATION C :

Plan
Chapitre 1 : présentation et généralité sur le langage
c
Chapitre 2 :outils de l’algorithme en langage c
Chapitre 3 :fonction en langage c
Chapitre 4 : les tableaux

Chapitre 1 :
A. Historique et évolution
Les années 1967et 19785 (structuration)
1970 :PASCAL
1972 : c’est le 1er langage de programmation système
(années 70 par Dennis Ritchie aux laboratoires Bell).
B . les familles de langages
 Ils sont composés de 2 langages :
Les langages orientés procédures (c)
Les langages orientés objets (java)
 les langages informatiques du point de vue
compilation ou interprétation
les langages interprétés( java script)
les langages compilés ©
les langages intermédiaires (python)

 Un commentaires dans un programme est


un texte explicatifs ignorés par la machine
ou l’interprétation
Commenter sur 1 ligne://
Commenter sur plusieurs lignes:*/
C / Structures d’un programme

Pour pouvoir s’exécuter, un programme c doit


contenir une fonction spéciale appelée « main »
qui sera le point d’entrée de l’exécution. La
structure de c se fait selon les points suivants :

1 ) les directives du préprocesseur : représentées


par le caractère # marquant le début d’un
programme c(#include ¿ stdio.h ¿ ):

2) déclarations de variables :
3) définition de fonctions : ce sont des sous-
programmes dont les instructions vont définir
un traitement sur des variables.
SYNTAXE :
Type -résultat nom fonction (type1 arg, …type
n arg){
« déclaration de variables locales »
« liste d’instructions »
}
EX de programme en c :
#include « stdio.h »
int addition(int a, int b)
{ int s
s =a+b
returns;
}
Autre méthode:
int somme(int a; int b)
{
Return a+b ;
}

Int main ()
{ int a,b ;
Printf(« entrer a : »)
Scanf («%d »,¿ a ¿ ;
Printf(« entrer b: »)
Scanf («%d »,¿ b ¿ ;
Printf(« somme (%d,%d)=%d\n »,a,
b ,addition(a,b));
Printf(« produit(%d,%d)=%d\n ,a ;b ,
produit(a,b));
Return o

D) les directives de compilation


1.le traitement par le préprocesseur
2.compilation
3.assemblage
4. edition de liens

E- l’entrée-sortie
Il s’agit des fonctions de la librairie standard stdio.h
utilisées avec les unités classiques d’entrées-
sorties,qui sont respectivement le clavier et l’ecran
 La fonction printf
Syntaxe :
Printf(« chaine de contrôle [%type1type2,…] » ,
[expression1,….,expression n]) ;
%type sont :

Printf(« produit(%d,%d)=%d\n ,a ;b , produit(a,b));

CHAINE DE
CONTROLE Le type entier(int) en c
est représenté par %d

Expression

 %d int entier signée


 %f double décimale virgule fixe
 %c unsigned char caractère
 %s char*chaine de caractères

EX

Ecrire les printf correspondent aux resultats


d’affichage :
1. Entrer a :
Printf(‘entrer a : ‘) ;
2. a=7 b=5
produit(7,5)=35
Printf(« produit(%d,%d)=%d\n ,a ;b , produit(a,b));
3.caract=’a’ ;
a =60 en ASCII
printf(‘%c = %d ASCII\n ‘, caract,caract) ;
4 . i =15
15=F en hexadécimal
Printf(‘%d=%x en hexa\n’,i,i)
5.nom=’toto’ prenom= ‘titi’
age =20
toto titi a 20 ansf
printf(‘%s %s a %d ans’,nom,prenom,age);

EXO:
Ecrire un programme qui permet de lire 3 entiers
a;b;c et de calculer le plus petit

#include¿stdio.h¿
Int main ()
printf( entrer a: )
scanf( %d βa )
printfenter b :
scanf( %d ; βb )
printf( entrer c : )
scanf( %d βc )
if min=a¿ b
printf( %d ; %d=%d )
if c=min ;and , min ¿ c
printf( %d ; %d=%d )

return 0

Vous aimerez peut-être aussi