Cours d`informatique en Langage C 1ère année 2014-2015
Transcription
Cours d`informatique en Langage C 1ère année 2014-2015
Cours d’informatique en Langage C
è
ère
1 année 2014‐2015
L’i
L’informatique à l’IOGS
f
ti
à l’IOGS
1A : Langage C : apprentissage d’un langage de programmation structuré
p
g
3 séances Matlab : analyse numérique
2A
2A : Langage C++ à Bordeaux
: Langage C++ à Bordeaux
3A : Palaiseau : Python
2
Dé l
Déroulement de l’année
t d l’
é
U
Une session de cours‐td au 1S
i d
td 1S
11 séances de 2h
Dont 2 synthèses (2h note), un mini‐projet
+ un examen individuel sur machine
i di id l
hi
Un projet au 2S
3 séances de 4h
+ une présentation orale du projet
+ une présentation orale du projet
3
B t d 1ères séances
But des 1
é
Préciser (un peu) ce qu’est l’informatique
Bases d’un langage informatique : le langage C
B
d’ l
i f
ti
l l
C
Bases du raisonnement informatique
q
Prise en main d’un environnement de développement : Code::Blocks
développement : Code::Blocks
Essais de 1ers programmes
4
L L
Le Langage C
C
Créé au début des années 70 par Dennis Ritchie et Brian Kernighan
Brian Kernighan
Langage multi plate‐forme : Windows, Mac, Linux, nombreux micro‐processeurs
En respectant la norme ANSI/ISO, le même code n respectant la norme ANSI/ISO, le même code
va pouvoir être recompilé par plusieurs systèmes
Reste encore aujourd
Reste
encore aujourd'hui
hui un langage très un langage très
utilisé dans le monde (perfectionné depuis : la norme a évolué)
é l é)
5
L L
Le Langage C
C
Langage évolué / langage de bas niveau
Évolué : «
Évolué : « relativement » proche de l
» proche de l’humain
humain
Bas niveau : proche de la machine
Langage C : Langage évolué
Langage évolué
Mais aussi assez proche de la machine
Permettra par exemple de programmer des P
l d
d
microprocesseurs.
6
1ère Approche de l’informatique
A
h d l’i f
ti
Manipulation de données
Calculs, entrées, sorties Calculs, entrées, sorties – saisies, affichages saisies, affichages – écriture écriture
et lecture dans des fichiers, …
Données : stockées dans des cases mémoires
Case mémoire : emplacement physique où est stockée ((sous forme électrique) la donnée à traiter q )
La case mémoire élémentaire : c’est l’octet (on y reviendra)
Une case mémoire : connue par la machine grâce à son adresse = son emplacement physique
Connue par le programmeur par un nom (à choisir)
7
1ère Approche de l’informatique
A
h d l’i f
ti
Traitements de base sur les mémoires
Initialisation d
Initialisation d’une
une mémoire
mémoire
Affectation du résultat d’un calcul ou d’un traitement à une mémoire
à
é
Et aussi
Saisie d
Saisie d’une
une valeur au clavier et stockage dans une valeur au clavier et stockage dans une
mémoire
Affichage sur l’écran du contenu de la mémoire Affi h
l’é
d
d l
é i
8
1ère Approche de l’informatique
A
h d l’i f
ti
Un exemple d’algorithme : Résolution d’une équation du 1er
degré à coefficients réels : a.x + b = 0
Saisir a p
puis b
si a=0 faire
si b=0 faire
Affi h « Tout
Afficher
T t réel
é l estt solution
l ti »
sinon Faire
Afficher « Pas de solution réelle »
sinon Faire
Calculer –b/a Solution
Afficher Solution
9
1ère Approche de l’informatique
A
h d l’i f
ti
Processus de développement :
A partir d
A partir d’un
un problème donné
problème donné
Humain
Méthode
à mettre
en œuvre :
algorithme
Le développeur
Langage
informatique
Traduction
en
informations
exécutables
Code::Blocks
Micro
-processeur
Le PC
10
Les bases du Langage C
Le programme main
main()
{
}
11
P é t ti d C d Bl k
Présentation de Code::Blocks
Code::Blocks est un IDE (Integrated p
)
Development Environment) :
Il permet
d'éditer le code (taper le programme)
d'édi
l
d (
l
)
de compiler pour traduire le code en langage machine
faire l’édition de liens et réaliser un exécutable
d’exécuter le programme
de corriger les erreurs (déboguer) et de mettre au de corriger les erreurs (déboguer) et de mettre au
point le programme grâce aux outils de debug. 12
P é t ti d C d Bl k
Présentation de Code::Blocks
Code::Blocks est téléchargeable gratuitement à: http://www.codeblocks.org/downloads/binaries
Lancer Code::Blocks par exemple avec le raccourci sur le bureau
raccourci sur le bureau 13
P é t ti d C d Bl k
Présentation de Code::Blocks
Créer un nouveau projet
14
P é t ti d C d Bl k
Présentation de Code::Blocks
Créer une Application Console 15
P é t ti d C d Bl k
Présentation de Code::Blocks
Cliquer sur Next
Sélectionner comme
langage le C
Info C – IOGS 1A
2012-2013
16
P é t ti d C d Bl k
Présentation de Code::Blocks
Renseigner les noms et les chemins
Par exemple en créant un dossier spécifique pour Par exemple en créant un dossier spécifique pour
la session de C et un dossier par séance
en remplaçant si besoin \\hera par U:\
l
b
\\h
\
Exemple : U:\jean.michel\Mes documents\ProgrammesEnC\td1
\j
\
\ g
\
17
P é t ti d C d Bl k
Présentation de Code::Blocks
L’espace projet
tel qu’il apparaît
Incluant un
programme de
base
Info C – IOGS 1A
2012-2013
18
P é t ti d C d Bl k
Présentation de Code::Blocks
Une fois le code écrit, il faut générer un p
exécutable en compilant :
avec Build > Build
ou avec CTRL F9
ou avec CTRL –
ou avec
Pour exécuter le programme :
avec Build > Run
avec
Build > Run
ou avec CTRL – F10
ou avec 19
P é t ti d C d Bl k
Présentation de Code::Blocks
Nb : on peut tout faire en une fois :
avec Build avec Build > Build and run
Build and run
ou avec F9
ou Nb : pour mettre en forme le programme
Plugin > Source code formatter
Plugin > Source code formatter
20
P é t ti d C d Bl k
Présentation de Code::Blocks
En cas d’erreurs, aller lire la fenêtre suivante puis cliquer sur l’erreur
Et toujours commencer par corriger la 1ère erreur de la liste avant de relancer la compilation
21
P é t ti d C d Bl k
Présentation de Code::Blocks
Règles à respecter absolument :
Un seul main () par projet. Un seul main () par projet.
Et donc un seul fichier comprenant la fonction main
Tous les fichiers de code source devront avoir l’ t i
l’extension .c
Attention aux extensions en .cpp (erreur dans la création du projet) qui ne fonctionneront pas ici
22
Les bases du Langage C
Une ligne de code se termine par ;
i
main()
{
…
mem3 = mem1 + mem2;
…
}
23
Aff t ti
Affectation : avec le signe =
l i
Ne permet pas de tester l’égalité mathématique !
mathématique !
Affecte l’expression de droite à la variable de gauche
Expressions non autorisées :
xpressions non autorisées :
b + c = 50 ;
3 = a ;
Instructions autorisées :
b = a + c ;
b = c + 77 ;
a = b = 44;
24
E
Exemple 1
l 1
En pseudo‐code
20 mem1
250 mem2
mem1 + mem2 mem3
Pour utiliser une
variable,, il faut
d’abord l’avoir
déclarée en précisant
son type
En Langage C
main()
{
int mem1;
int mem2;
int mem3;
mem1 = 20;
mem2 = 250;
mem3
3 = mem1
1 + mem2;
2
}
25
E
Exemple 1 (variantes)
l 1( i t )
main()
{
/* Utilisation de la , */
int mem1,mem2,mem3;
1
2
3
mem1 = 20;
mem2 = 250;
mem3 = mem1 + mem2;
}
main()
{
// Déclaration et Initialisation
int mem1=20 , mem2=250 , mem3;
mem3 = mem1 + mem2;
}
26
C
Commentaires du code
t i d
d
Un code doit être commenté
Afin d
Afin
d’être
être lisible par d
lisible par d’autres
autres (vos enseignants, (vos enseignants,
votre binôme, vos futurs collègues, les personnes qui vont modifier votre code, …)
qui vont modifier votre code, …)
Les commentaires sont compris entre /* et */ avec d’éventuels
avec d
éventuels sauts de lignes sauts de lignes
Ou encore // uniquement pour le reste de la ligne
27
Li ibilité d
Lisibilité du code
d
Un code doit être lisible
Grâce aux commentaires
Grâce
aux commentaires
Avec des noms de variables ou de fonctions explicites
Avec une mise en forme des différents blocs
28
Id tifi t
Identificateurs des variables d
i bl
Identificateur = nom permettant de désigner (
)
une variable (ou une fonction)
Caractères autorisés
a, …,z,A, …,Z et 0, …, 9 et _
A Z 0
9
Un identificateur commence par une lettre ou par le caractère _
Attention : Le C différencie majuscules et j
minuscules 29
Id tifi t
Identificateurs des variables d
i bl
Choix de nom explicite
Améliore la lisibilité du code
Améliore
la lisibilité du code
Exemples :
Ma_Variable
Ma
Variable
TemperatureFarenheit
Les noms explicites de variables permettent p
p
de ne pas surcommenter
30
Dé l ti d
Déclaration des variables en C
i bl
C
Déclarer une variable c’est définir son nom et son type
int mem1; /* mem1 est de type int */
En Langage C, on doit déclarer une variable avant de l’utiliser
On effectue les déclarations de variables en On effectue les déclarations de variables en
début de bloc, c‐à‐d juste après {
Pas d
Pas d’importance
importance dans l
dans l’ordre
ordre des des
déclarations
Attention
A
i : ne pas mélanger ligne exécutables él
li
é
bl
et déclarations
31
Q l
Quelques types de variables en C
t
d
i bl
C
Type entier : int
Exemple : int MaVariable ;
Type réel : float
Exemples : float Discriminant ;
float Eps = 1e-6 ;
float Tempe= 23.5 ;
32
V i bl
Variables en C
C
On va rencontrer les variables à 3 occasions :
Déclaration traité ici
Initialisation Souvent indispensable … pour éviter p g
(
p
)
des programmes faux (même s’ils compilent)
Utilisation traité à plusieurs reprises
Initialisation : de 2 façons
Initialisation : de 2 façons
int MaVariable ;
…//déclaration
//déclaration ou code
MaVariable = 2 ; // Init
int MaVariable = 2 ;
// Déclaration & Init
simultanées
Au choix du développeur
33
FFonctions d’affichage (1
ti
d’ ffi h
(1ère approche)
h )
Affichage d’une phrase, d’un entier, d’un réel :
#include <stdio.h>
<stdio h>
main()
{
int mem1 = 10 ;
float mem2 = 20.0 ;
Nécessaire en début de code
pour utiliser la fonction
d’affichage
3 appels à la fonction
d’affichage
printf("Bonjour, ça va bien?\n");
printf("%d\t"
printf(
%d\t , mem1);
printf("%f\n", mem2);
}
34
Fi hi d’ têt h
Fichiers d’en tête : .h
Stdio : standard input output
Fichier .h (comme header) ou fichier d
Fichier h (comme header) ou fichier d’en‐tête
en tête
Contient la déclaration de la fonction utilisée
Permet de s’en servir en sachant :
Ce qu
Ce qu’elle
elle fait
fait
La syntaxe à utiliser
Mais sans connaître le code de la fonction
M i
î l
d d l f
i
Il en existe de nombreux autres :
math.h, stdlib.h, string.h, ctype.h, time.h 35
Fonctions de saisie au clavier (1
( ère
approche)
Saisie d’un entier ou d’un réel :
#include <stdio.h>
<stdio h>
main()
{
int mem1 ;
float mem2 ;
…
scanf("%d",&mem1);
scanf("%f"
scanf(
%f ,&mem2);
&mem2);
…
}
Attention à bien
mettre le & avant le
nom de la variable
(mem1 ici)
Attention :pas de
\n du type :
‘scanf(’%d\n ’’) ;
36
St t
Structure d’un programme simple
d’
i l
#include <stdio.h>
main()
{
int mem1 ;
float mem2 ;
…
scanf("%d",&mem1);
scanf("%f",&mem2);
…
}
En-tête
Corps du programme :
main()
Accolade de début
Dé l
Déclarations
ti
des
d variables
i bl
Instructions du programme
Accolade de fin
37
L
Les structures de contrôle
t t
d
t ôl
Quelques problèmes simples :
Convertir les Fahrenheit en Celsius et afficher un message si la température (en °C) est négative
Déterminer le min et le max parmi 2 nombres
Afficher les nombres impairs entre 0 et 100 (inclus)
Nécessitent des tests ou des boucles : ce sont Nécessitent
des tests ou des boucles : ce sont
les structures de contrôle
38
St t
Structure de contrôle : Les boucles
d
t ôl L b l
3 types de boucles
Boucles for
Boucles for
De i = 0 à N, faire instructions
Boucles while
Tant que (condition vraie), faire
Tant que
(condition vraie) faire instructions
Boucles do while
B l d hil
faire instructions Tant que (condition vraie)
39
L b l
Les boucles
E
Exemples de boucles for
l d b l f :
for (i=0;i<100;i++)
Nombre = Nombre *2; /* Fin de la boucle for : i s’incrémente s’il n’est pas égal à 100 et la ligne d’instruction est ré‐exécutée */
’
é là
l l
d’
é é é */
for (i=0;i<=100;i=i+10)
{
Nombre = Nombre *2; /* Plusieurs instructions : donc on met des accolades */
Nombre2 = Nombre2 *3;
Nombre2 = Nombre2 *3;
}
/* Fin de l a boucle for : i s’incrémente etc… */
for (i=0;;i++)
for (;;) (;;) { … }
{ }
{ }
{ … }
/* La condition de terminaison est /*
La condition de terminaison est
facultative mais pas le ; */
//* Une boucle for particulière !! Une boucle for particulière !! *//
40
L b l
Les boucles
E
Exemples de boucles while
l d b l
hil :
while (i<100)
ii++;; //* Fin de la boucle while: i s
Fin de la boucle while: i s’incrémente
incrémente ss’ilil n
n’est
est pas égal pas égal
à 100 et la ligne d’instruction est ré‐éxécutée*/
while (i<100)
(
)
{
i++;
Nombre = Nombre Nombre Nombre *i;i; //* Plusieurs instructions : donc on met Plusieurs instructions : donc on met
des accolades */
Nombre2 = Nombre2 *2*i;
}
;
; /
/* Fin de la boucle while
Fin de la boucle while*//
while (1) { … }
/* Une boucle while particulière !! */
41
L b l
Les boucles
Les boucles do … while :
Syntaxe proche des while
Syntaxe proche des while
Mais ce type de boucle sera exécutée au moins une fois (même si la condition est fausse une
fois (même si la condition est fausse
d’emblée)
do {
i++;
}
while (i<100) ;
42
L
Les conditions d’arrêt des boucles
diti
d’ êt d b l
Condition d’arrêt : expression logiques
Opérateurs :
Opérateurs
Signification
<
I fé i
Inférieur
à
<=
Inférieur ou égal à
>
Supérieur ou égal à
Supérieur ou égal à
>=
Supérieur ou égal à
==
Égal (ne pas confondre avec = qui correspond à l’affectation)
!=
Différent de
Même
priorité
Priorité
inférieure
43
L
Les conditions d’arrêt
diti
d’ êt
Condition d’arrêt : expression logique
Évaluation d
Évaluation d’expression
expression logique :
logique :
A l’aide de : || (Ou) && (Et) ! (négation logique)
Exemple
l : (i>= 100) || (j==10) && !(k>0)
&& p
prioritaire sur ||
0 correspond à Faux
Toute valeur non nulle correspond à Vrai
To te ale r non n lle correspond à Vrai
Exemple : if (correct) ou bien if(!correct)
44
St t
Structure de contrôle : Les tests
d
t ôl L t t
2
2 types de tests
d
Les if … else
Les
L switch
it h
Les if … else
if else
if (Condition) instruction1;
if (Condition)
(C diti ) i
instruction1;
t
ti 1
else instruction2;
if (Condition)
{ instruction1; instruction2; }
else { instruction2 ;}
45
L t t l if imbriqués
Les tests : les if
i bi é
E
Exemple
l
if (choix1< 0)
if (choix2>0)
instruction1;
else
instruction2;
Le else se rapporte toujours au dernier if sans else
L’indentation n’a pas de conséquence sur la compilation …
… mais sur la lisibilité: Pensez donc à indenter !
i
l li ibilité P
d
ài d t !
Code::Blocks propose d’ailleurs une mise en forme via gg > Source code formatter
f
Pluggins
46
L t t l if successifs
Les tests : les if
if
Application : choix successifs
if (
(choix1< 0)
) instruction1;
;
else if (choix2>0) instruction2;
else if (choix3>0)
( h i 3>0) i
instruction3;
t
ti 3
else if (choix4>0) instruction4;
[ else instruction5; ]
47
L t t
Les tests
Les switch Switch (Choix)
{
case 1 : instruction1 ; break;
case 2 : instruction2 ; break;
case 3 : instruction3 ; break;
…
default : instruction_default ; break;
}
Le break permet de sortir de la boucle lorsque la condition est vérifiée
La variable de choix doit être de type entier (ou caractère)
Le default n’est exécuté que si aucun des autres cas e default n est exécuté que si aucun des autres cas
n’est vrai : il est facultatif.
Le break après default est facultatif mais est une bonne convention d’écriture
48
T bl
Tableau à 1 dimension en Langage C
à 1 di
i
L
C
Comme pour les variables, on va rencontrer les tableaux dans 3 types de circonstance : Déclaration – Initialisation –
Utilisation
Déclaration :
int tab[10] ;
Attention : int tab[n] est interdit en C
L
La numérotation des composantes commence à 0 et se é t ti d
t
à0 t
termine à N‐1 ; ex : tab[0] à tab[9]
Utilisation :
x = tab[2] + tab[4];
tab[2] = tab[4]*2 ;
tab[i] = i + j ;
49
T bl
Tableau à 1 dimension en Langage C
à 1 di
i
L
C
Attention :
Si on dépasse la taille du tableau : le programme compile mais l’ é i
l’exécution «
plantera
l
»
Initialisation :
Fortement conseillé
2 façons : soit à la déclaration, soit dans le code
int Montab[5] = {1,3,17,-54,2} ;
__________________________________
int Montab[5] ;
… bout de code
// boucle remplissant les cases tab[i]
50
T bl
Tableau à 2 dimensions en Langage C
à 2 di
i
L
C
Pratiquement comme pour les tableaux 1D.
Déclaration :
int tab[10][2] ; // 10 lignes, 2 col.
Utilisation :
x = tab[2][3] + tab[2][4];
tab[2][4] = tab[1][4]*2 ;
tab[i][j] = i + j ;
51
L b
La base 2
2
EEn informatique, les informations sont stockées i f
i
l i f
i
ké
dans des dispositifs électroniques ne prenant que 2 états électriques : un état correspond à 0 et
2 états électriques : un état correspond à 0 et l’autre à 1.
On parle alors de bits (« binary digit
On parle alors de bits («
binary digit »)
Ca impose de représenter les nombres en base 2 (ou binaire)
(ou binaire)
On peut presque s’en affranchir pour programmer en Langage évolué.
programmer en Langage évolué.
Voyons en cependant le principe
52
L b
La base 2
2
En base 10 : on exprime les nombres avec 10 chiffres de 0 à 9 :
1984 = 1.103 + 9.102 + 8.101 + 4.100
E b
En base 2: on a seulement 2 chiffres 0 et 1
2
l
t 2 hiff 0 t 1
1011 = 1.23 + 0.22 + 1.21 + 1.20
soit 11
53
L b
La base 2
2
En informatique : la « case mémoire » (g p
)
élémentaire est l’octet (groupement de 8 bits) ou byte en anglais
Une donnée peut être mémorisée sur Une donnée peut être mémorisée sur
plusieurs octets (voir juste après)
Un octet permet de coder :
De 0000 0000 à 1111 1111
De
0000 0000 à 1111 1111
Soit de 0 à 255 en non‐signé
ou de – 128 à +127 en signé
ou de 128 à +127 en signé
54
T
Types des variables en C
d
i bl
C
Pourquoi déclarer le type des variables ?
Pour que l
Pour que l’ordinateur
ordinateur puisse traiter une mémoire puisse traiter une mémoire
il doit connaître :
Son emplacement physique
Son
emplacement physique
La taille occupée par cette mémoire (en nombre d’octets))
Emplacement physique
Emplacement
physique Rôle de la chaîne de Rôle de la chaîne de
développement (Code::Blocks)
La taille occupée
La taille occupée le programmeur le fait en le programmeur le fait en
indiquant le type
55
T
Types des variables en C
d
i bl
C
Types entiers :
: 1 octet short: 2 octets long:
l
4 octets octets
int:
2 ou 4 octets car ça dépend du compilateur : type le plus employé. Ici 4 octets.
c
char
a
Et aussi
Types « unsigned » : unsigned short int,
unsigned long int
int.
56
O é ti
Opérations sur les entiers
l
ti
5 opérations :
+ (addition), + (addition) ‐ (soustraction), (soustraction) * (produit), (produit)
/ (division), % (reste de la division entière).
ÉÉvaluation de la gauche vers la droite
l i d l
h
l d i
/ et * : même niveau de priorité et priorité sur + et ‐
57
O é ti
Opérations sur les entiers
l
ti
Opérations unaires :
i++
++i
i-i
--i
i+=5
signifie i = i+5
Idem avec i*=a etc.
58
T
Types des variables en C
d
i bl
C
Types réels :
float:
oat
réel en simple précision codé
p p
sur 4 octets
double: réel en double précision codé
réel en double précision codé sur 8 sur 8
octets
4 é ti
4 opérations :
Les mêmes que pour les entiers, mais sans le modulo (%)
59
E é
En résumé é
Type en C
T
unsigned short int
T ill (octets)
Taille
( t t)
2
V l
Valeurs
permises
i
entier court
2
-32 768 à 32 767
entier long non signé
4
0 à 4 294 967 295
entier long
4
-2 147 483 648 à 2 147 483 647
int
entier (16 bits)
2
-32 768 à 32 767
int
entier (32 bits)
4
-2 147 483 648 à 2 147 483 647
2
char
entier non signé (16
bits)
entier non signé (32
bits)
texte
1
256 caractères (0 à 255)
float
nombre décimal
4
1.2e-38 à 3.4e38
double
nombre double
8
de 2.2e-308
2 2e 308 à 1.8e308
1 8e308
short
unsigned long int
long int
unsigned int
unsigned int
Nom F
N
Français
i
entier court non signé
4
0 à 65 536
0 à 65 536
0 à 4 294 967 295
60
P i ité d
Priorité des opérateurs
é t
L’expression la plus à droite est d’abord p
évaluée puis stockée dans la variable immédiatement à gauche du =
Dans une expression, la règle d’associativité Dans une expression la règle d’associativité
est de gauche à droite
Avec certaines règles de priorité :
(du plus au moins prioritaire)
++ ‐ ‐
* / %
/ %
+ ‐
61
Ch i d t
Choix des types
Attention : Le compilateur ne fait pas le traitement des dépassements de capacité.
C’est au développeur de typer ses variables de façon correcte
Exemple :
char a,b,c;
…
a = b + c ;
Ce programme va être compilé, s’exécuter (apparemment) normalement, mais est faux !
62
C
Conversion de types
i d t
Attention
Att
ti : les opérateurs sont conçus pour 2 opérandes de même l
é t
t
2 é d d
ê
type et produisent un résultat du même type.
int a,b;
a+b est de type int
5/2 est donc int et vaut 2 !!
32/100*100
32/100
100 vaut 0
Quand 2 opérandes de types différents, le compilateur convertit dans le type dominant avec la convention :
Ch
Char
< short
h t i
int
t < long
l
int
i t < float
fl t < d
double
bl
Forçage de type :
ç g
yp
5/2.0 Le résultat est un float valant 2.5
32/100.0*100
Le résultat est un float valant 32.0
32 0
63
C
Conversion de types
i d t
Exemples :
int a=64,b=2;
float x=1,y=2;
b=7/b;
b
7/b;
/* En premier : calcul de l'argument à droite du = donc 7 (entier) /
2 (entier) donne 3 (entier, reste 1, que l'on obtiendrait par 5%2).
donc b=3 */
x=7/b;
/* 7 et b entiers => passage en réel inutile, calcul de 7/2 donne 3
( ti
(entier,
reste
t 1) puis
i opérateur
é t
= (t
(transformation
f
ti
d
du 3 en 3
3.0
0 puis
i
transfert dans X qui vaut donc 3.0) */
x=7/y;
x
7/y;
/* un int et un float autour de / : transformation implicite de 7 en
réel (7.0), division des deux réel (3.5), puis transfert dans x */
x=7.0/b;
/* un int et un float autour de / : transformation implicite de b en
64
réel, division des deux réel (3.5), puis transfert dans x */
C
Conversion de types
i d t
Attention : Le compilateur fait une conversion de type sans Le compilateur fait une conversion de type sans
tenir compte du membre de gauche de l affectation
l’affectation
Le résultat peut donc dépasser le type prévu
D’où perte d’informations !
D’où perte d’informations !
65
C t t
Constantes symboliques
b li
Définies en début de programme (au même Défi
i
déb d
(
ê
niveau que les #include) par :
#define PI 3
3.14159
14159
#define TAUX_TVA 0.196
Règle de style : constantes symboliques en Règle
de style : constantes symboliques en
majuscules
Règle de syntaxe : pas de signe = et pas de ;
g
y
p
g
p
;
Intérêt : Lisibilité du code
1 seule modification de la valeur même s’il y a plusieurs occurrences
66
C t t
Constantes symboliques
b li
Exemples d’utilisation
x = sin(2*PI*Omega*t) ;
Prix = Cout* (1 + TAUX_TVA) ;
Les constantes symboliques sont très utilisées
67
Affi h
Affichage console avec printf
l
i tf
Affichage de variables
int x;
printf("x =%d\n" ,x);
Affiche ll’int
Affiche
int x et saute à la ligne suivante
x et saute à la ligne suivante
Les codes de format d’affichage sont : %d
%c
%f
%lf
int
char
fl t
float
double … 68
Affi h
Affichage console avec printf
l
i tf
Affichage de variables et de chaînes de caractères
int x = 2 ;
double y = 2.5 ;
printf(‘‘le produit de %d par %lf vaut
%lf \n’’ , x , y
y, x*y);
y
Affiche : le produit de 2 par 2.5 vaut 5
69
S ii l i
Saisie clavier avec scanf et printf
f t i tf
Saisies de valeur de variables
int x ;
printf(‘‘Entrez x = \n’’);
scanf(‘‘%d ’’,&x);
Stocke nombre tapé au clavier dans la variable x
Attention :
au signe & devant la variable x
p
pas de \n dans le scanf
\
70