Vous êtes sur la page 1sur 21

Ecole Mohammadia dIngnieurs

Algorithmique et programmation

Pr. Slimane Bah, ing. PhD


Sance 6
1

GELEC
Slimane .bah@emi.ac.ma

Semaine 8
Semestre 1 : Sept - Jan 2012

Annonce
Les sances Mardi 8h 10 sont dsormais
dplaces au Lundi de 10h 12h

Organisation :
Lundis : Cours
Vendredis : TPs

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Plan
Introduction
Algorithme, programmation et langages

Rsolution de problmes

Algorithmique
tapes et dmarche de rsolution

Programmation C
Types, variables, entres/sorties, oprateurs
Instructions de contrle
Tableaux
Fonctions
Pointeurs
Fichiers
3

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Quelle est la valeur de a :
Unsigned int a = 70000;
Quel sera laffichage de :
int a = 65;
printf(" %c %f ", a, a);

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Entres-sorties : Lecture
La fonction scanf( ) permet une lecture formate des donnes au
clavier.
Elle se trouve dans la libraire stdio.h
Syntaxe : scanf("format", adr1, adr2,adrN);
Le format est le mme que printf
les arguments (adr1, ) sont les adresses des variables dans lesquelles
les valeurs lues seront stockes. Adresse = &nomVariabe
5

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Entres-sorties : Lecture
Exemple

Pour lire un entier long faut utiliser : %ld, %li, %lu, %lo, %lx
Pour lire une donne de type double : %lf %le
6

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Entres-sorties : non format
Il existe dautres fonctions de lecture/criture non formate
stdio.h et conio.h
puts() : standard
putch() : non standard
putchar() : standard
gets() : standard - obsolete
getchar() : standard
getch() : non standard
getche() : non standard
7

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Les expressions
Une expression est une suite doprateurs et doprandes
dcrivant un calcul effectuer.
Lexpression est une opration qui renvoi une valeur et un type
Linstruction est une expression avec un ;
Ex. a + b est une expression
a + b; est une instruction
Syntaxe
oprande oprateur oprande ou oprateur oprande
expression oprateur expression
8

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Les oprateurs
Il existe plusieurs types doprateurs :
Les oprateurs arithmtiques : +, - , *, /, %
Les oprateurs daffectation : =, +=, -=, *=, /=, %=,
Les oprateurs logiques : &&, ||, !
Les oprateurs de comparaison : < , >, !=, ==, <=, >=

Les oprateurs sur les bits : << , >>, &, |, ~ , ^


Les oprateurs particuliers : ++, --, ?, cast, sizeof
9

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Les oprateurs arithmtiques
Le - est un oprateur la fois binaire et unaire.
Le % agit uniquement sur des entiers
Lorsque le type des oprandes est diffrent il y a conversion
automatique vers le type le plus fort
Exemple :
float x = 3 / 2;
float x = 3.0 / 2 ;
int x = 3.0 / 2 ;
10

Slimane .bah@emi.ac.ma

/* x = ?1.0 */
/* x = 1.5
?
*/
/* x = ?1
*/
Semestre 1 : Sept - Jan 2012

Programmation C
Les oprateurs daffectation
Affectation multiple
x = y = z = 12;
Affectation avec opration
x = x + 25; x +=25;
exp1 = exp1 op exp2 exp1 op= exp2

11

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Les oprateurs logiques

Servent pour des expressions contenant des conditions.


Lexpression est value de gauche droite. Ds que le rsultat
est dtermin lvaluation sarrte.
Exemple :
5 && 11.3
?
! 7.1
?
(3==3) || (x/9 > 2) 2me exp non value
(0) && ((x+2) > 4) 2me exp non value
12

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Les oprateurs de comparaison
Ne pas confondre = et ==
int a = 2, b =4, c = 8;
a==b ?
a=b ?
4 * (a <= b) + 2 * (a > 8) ?
char a = a, b = A
a == b ?
Il est difficile de comparer les rels avec ==
1.12345678 == 1.1234 ?
13

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Les oprateurs sur les bits
Ne pas confondre & avec && et | avec ||
1&2 ?
1 && 2 ?
~ : complment 1,
^ : XOR
3 << 2 12
7 >> 2 1

Exercice : -7 << 2
X >> Y X / 2Y et
14

X << Y X * 2Y
Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Les oprateurs particuliers
Incrmentation : x++ x +=1
Dcrmentation : x-- x -=1
--x Vs x-- et ++x Vs x++
Exemple
int i = 5, j, k;
j = i++;
k = ++i;
--i;
i--;
j = i--;
k = --i;
15

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Les oprateurs particuliers : casting
Conversion de type ou casting permet de changer le type dune
variable.
Conversion automatique
Conversion Manuelle (force)

16

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Les oprateurs particuliers : casting
Conversion automatique :
Elle est faite par lordinateur lorsque les types dans une
opration sont diffrents.
En gnral la conversion se fait vers le type de plus grande
prcision
Lors dune affectation cest le type de la variable qui reoit le
rsultat qui domine.

Char int
17

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Les oprateurs particuliers : casting
Conversion automatique :
Exemple :
int I = 8;
float X = 12.5;
double Y;
Y = I * X;

18

Imprvus

Imprvus

char A=3;
int B=4;
float C=4;
float D,E;
char F;
D = A/C;
E = A/B;
F = A/C;

int a=1, b;
float c=1.5;
b = a + c;

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Les oprateurs particuliers : casting
Conversion manuelle:
Syntaxe : (<type>) <expression>
(double) b;

Exemple :
int a = 3;
int b = 4;
float c;
c = (float) a/b;
a et b demeurent des entiers.
19

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Exercice : int vers char
main() {
int i; char c;
c = 'd';
i = c;
c = i;
}

Quelle est la valeur de c ? Pourquoi ?

20

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012

Programmation C
Exercice : char vers int
main(){
int i; char c;
i = 200;
c = i;
/* c = ascii(200) */
i = c;
/* extension de signe pour i */
printf("%c %d\n",c,i);
i = 100;
c = i;
i = c;
printf("%c %d\n",c,i);
}
Quel est le rsultat de ce programme ?
21

Slimane .bah@emi.ac.ma

Semestre 1 : Sept - Jan 2012