Académique Documents
Professionnel Documents
Culture Documents
A) Le traitement de l'information
1) Catégorie d'information
Un identificateur est une suite de caractères formés par des lettres et/ou
des chiffres et qui commence par une lettre. La plupart des compilateurs
acceptent aussi le caractère "souligné" pour donner plus de lisibilité à un
identificateur.
3) Type de l'information
Durant les deux premières semaines de cours, on travaille surtout avec les
types entiers (int), réels (float) et caractères (char). Le type logique (booléen)
sera abordé vers la troisième semaine. Les autres types seront présentés
plus tard dans le cours.
Exemple 1
sexe : une variable de type caractère ('f' pour féminin, 'm' pour
masculin)
taille et poids : deux variables de type réel
age : une variable de type entier
Solution
char sexe;
float taille, poids;
int age;
Exemple 2
sexe et poste : deux variables de type caractère ('f' pour féminin, 'm'
pour masculin; 'a' pour analyste, 'p' pour programmeur,
'o' pour opérateur)
numero : numéro de l'employé (un entier, exemple : 5478)
anciennete : le nombre d'années d'ancienneté (un entier)
Salaire hebdomadaire : un réel
Solution
4) Nature de l'information
Méthode 1 : utiliser
Exemples :
Exemples :
Une variable est une information dont la valeur peut changer (varier) au
cours de l'exécution du programme.
Exemples :
int age;
float taille, poids, salHebdo;
char sexe, poste;
5) Affectation
Un des moyens pour donner une valeur à une variable est d'affecter
(déposer) à cette variable soit une constante, soit le résultat d'un calcul, soit
la valeur d'une autre variable, etc .
L'opérateur d'affectation est le symbole "=" en langage C :
variable = .....;
Exemples :
int age;
float taille1, taille2;
age = 18;
age = 3 * 12 - 5;
taille1 = (5 + 7 / 12.0) * 0.3048;
taille2 = taille1 + 0.17;
6) Commentaires
Exemples :
7) Opérateurs de base
Exemples :
17 / 5 * 4 + 2
------
3
-------
12
--------
14
17 / (5 * 4) + 2
------
20
---------
0
------------
2
< inférieur à
<= inférieur ou égal à
> supérieur à
>= supérieur ou égal à
== égale à (notez que le symbole "=" est utilisé pour l'affectation)
!= différent de
17 < 23 vaut 1
'c' != 'C' vaut 1
17 % 5 == 4 vaut 0 ( 17 % 5 donne 2, 2 == 4 est faux )
Exemples
1. printf désigne l'écriture (print : imprimer, ici dans le sens d'afficher, f vient
du mot format (de présentation)).
Dans le format, on rencontre très souvent les caractères "\n" qui provoquent
un changement de ligne (new line).
Exemples
age = 23;
nbCafe = 3;
taille = 1.72;
sexe = 'M';
fait afficher :
- sexe : ^^^^M
- age : ^^^23 ans
- taille : ^1.72 metre
- Nb. cafe : ^^^^3 tasse(s)
Attention :
Voici comment on répartit une longue instruction qui contient un long message
sur plus d'une ligne :
Nous utilisons l'opérateur "&" (adresse de) qui sera présenté en détail au
prochain chapitre. Pour les deux premières semaines de cours, on interprète
une saisie de donnée :
comme ceci :
un facteur peut livrer une lettre chez-nous s'il connaît notre adresse;
(un compilateur peut déposer une valeur lue dans une variable s'il connaît
son adresse).
Exemples
Par contre :
Entrez f, F, m ou M pour le sexe :^f
sexe vaut ' ' (caractère espace)
1) Instruction simple
Une seule instruction qui réalise un traitement : une lecture, une écriture, une
affectation, etc . On doit terminer une instruction simple par le point virgule
";".
Exemples
2) Instruction composée
un bloc d'instructions qui sont séparées les unes des autres (très
souvent) par un point virgule et qui sont délimitées par { (début) et } (fin)
on utilise souvent une instruction composée quand on décide de
faire deux ou plusieurs actions sous une condition (vrai ou faux).
Exemple
a) Syntaxe
if (condition) if (condition)
instruction 1 o instruction 1
else u
instruction 2
b) Fonctionnement
c) Remarques
d) Exemples
if (poste == 'A'){
bonus = 123.45;
printf("analyste\n");
} else if (poste == 'P'){
nbProgrammeur = nbProgrammeur + 1;
printf("programmeur\n");
totSalProg = totSalProg + salHebdo;
} else
printf("Autre poste\n");
e) Exercices
int age;
char sexe;
Solution :
Solution :
Enfant de 7 ans
sexe : masculin
Solution :
Solution :
if (age < 12)
printf("Enfant ");
else if (age < 18)
printf("Adolescent ");
else
printf("Adulte ");
Solution :
#include <stdio.h>
#include <ctype.h> /* nécessaire pour utiliser
la fonction toupper */
int main()
{
char unCar;
La donnée du problème est la variable rang (de type entier) tandis que le
résultat est un message qui dépend de la valeur de rang (voir ci-dessus)
Cheminement :
Lire rang
#include <stdio.h>
int main()
{
int rang; /* le rang d'une journée (1 : dimanche, 2 : lundi, ...,
7:samedi) */
/* Saisir le rang */
printf("Entrez le rang d'une journee (entre 1 et 7) : ");
scanf("%d", &rang);
Exécution
Exemple :
char poste;
float bonus;
.....
switch (toupper(poste)){ /* suivant que le poste vaut */
case 'A': bonus = 235.50;
printf("analyste\n");
break;
case 'O':
case 'P': bonus = 175.00;
break;
case 'S': bonus = 150.75;
printf("Secretaire\n");
break;
default: printf("poste errone\n");
o si oui :
o si non :
c) Remarques
int rang;
printf("Entrez le rang d'une journée (entre 1 et 7) :");
scanf("%d", &rang);
switch (rang){
/* du lundi à jeudi : */
case 2:
case 3:
case 4:
case 5: printf("On travaille tres fort!\n");
break;
/* le vendredi : */
case 6: printf("La fin de semaine s'en vient\n");
break ;
/* samedi ou dimanche : */
case 7:
case 1: printf("Youpi! C'est la fin de semaine\n");
break ;
/* autrement : */
default: printf("Rang invalide!\n");
}
Exemple 2
#include <stdio.h>
#include <ctype.h> /* pour la conversion en majuscule :
toupper(...) : to (en) upper
(majus)*/
int main()
{
char poste;
float bonus, salHebdo;
poste = toupper(poste);
printf("C'est un ");
switch (poste){
case 'A': bonus = BONUS_A;
printf("analyste ");
break;
case 'O':
case 'P': bonus = BONUS_OP;
if (poste == 'O')
printf("operateur ");
else
printf("programmeur ");
break;
case 'S': bonus = BONUS_S;
printf("secretaire ");
}
Dans le cas d'un cercle, le programme saisit son rayon. Il effectue les
calculs et affiche les résultats à l'écran :
le périmètre (2 x PI x rayon) et
la surface (PI x (rayon au carré))
Dans le cas d'un carré, le programme saisit le côté. Il effectue les calculs
et affiche les résultats à l'écran :
le périmètre (4 x côté)
la surface (côté au carré)
Notez que :
Soit An les deux derniers chiffres d'une année (An vaut 99 pour
Annee valant 1999 ==> An = Annee % 100). Soit Siecle les deux
premiers chiffres (Siecle vaut 19 pour Annee valant 1999 ==>
Siecle = Annee / 100).
Annee est bissextile (29 jours en février) <===> (An est différent
de zéro ET An est un multiple de 4) OU (An est zéro ET Siecle est
un multiple de 4)
int main()
{
int rang; /* le rang du mois */
int annee, /* exemple 1996 */
an, /* 2 derniers chiffres de l'année, exemple 96 */
siecle; /* 2 premiers chiffres de l'année, exemple 19 */
/* saisir le rang */
printf("Entrez le rang d'un mois (entre 1 et 12) : ");
scanf("%d", &rang);
an = annee % 100;
siecle = annee / 100;
if ((an != 0 && an % 4 == 0) ||
(an == 0 && siecle % 4 == 0))
printf("On a 29 jours en fevrier %d", annee);
else
printf("L'annee %d a un mois de fevrier de 28 jours", annee);
} else
printf("n'existe pas!");
printf("\n\n");
switch (rang){
case 4 :
case 6 :
case 9 :
case 11 : printf("30 jours\n");
break;
an = annee % 100;
siecle = annee / 100;
if ((an != 0 && an % 4 == 0) ||
(an == 0 && siecle % 4 == 0))
printf("On a 29 jours en fevrier %d", annee);
else
printf("L'annee %d a 1 mois de fevrier de 28 jours ",
annee);
break;
printf("\n\n");
return 0 ;
}
Exemples :
affectation multiple :
nbFem = 0;
nbHom = 0;
Nb_Pers= 0;
peut aussi s'écrire ainsi: nbFem = nbHom = Nb_Pers = 0;
Avec :
printf("%d", 27 > 12); le langage C affiche 1.
Ainsi, une condition qui est VRAI vaut un et une condition qui est FAUX
vaut zéro.
Par contre, une valeur numérique non nulle est considérée comme VRAI.
Le bloc :
char sexe;
int valide;
age est le nom d'une variable de type entier dont la valeur est 23. Dépendant
du type de la variable, le compilateur réserve un nombre d'octets (bytes) pour
mémoriser l'information. L'opérateur "sizeof" (taille de ..., nombre d'octets
de ...) permet de calculer le nombre d'octets nécessaires pour mémoriser
une variable ou une information d'un type donné. Dans notre environnement
Windows XP, et sous Microsoft Visual C++ :
Adresse
1245033
1245032
1245031
1245030
#include <stdio.h>
int a = 5, b = 23;
float x = 123.4;
char d = 'V';
int c = 100;
int main()
{
printf("Nom Type Nb. octets Adresse Valeur\n");
printf("--- ----- ---------- ------- ------\n");
printf(" a int %d %u %d\n", sizeof(a), &a, a);
printf(" b int %d %u %d\n", sizeof(b), &b, b);
printf(" x float %d %u %6.2f\n",sizeof(x), &x, x);
printf(" d char %d %u %c\n",sizeof(char), &d, d);
printf(" c int %d %u %d\n", sizeof(int), &c, c);
printf("\n\nL'operateur * (contenu de l'adresse) :\n");
Exécution
L'exécution du programme avec Microsoft Visual C++ sur un IBM ThinkPad (Pentium
3 celeron) donne ce qui suit :
Schéma d'explication
5
a 1245052 adresse du début de a
23
b 1245048 adresse du début de b
123.4
x 1245044 adresse du début de x
INUTILISÉ
INUTILISÉ
INUTILISÉ
d 'V' 1245040 adresse du début de d
G) Exercices de révision
Exercice 1
Écrire les déclarations qui rendent valide les instructions suivantes :
Solution :
#include <ctype.h> /* pour appeler toupper to upper : en majuscule
*/
. . .
char poste;
Exercice 2
Solution :
Exemple 1
/***********************************************************************
* carac.c *
* Cours : IFT 1969 *
* Auteur : Gontran Grondin *
* Description : Ce programme permet de déterminer si un caractère est *
* un chiffre ou une voyelle *
* Date : 12 décembre 2007 *
***********************************************************************/
#include <stdio.h>
int main()
{
char carac; /* le caractere a analyser */
case'A':
case'a':
case'E':
case'e':
case'I':
case'i':
case'O':
case'o':
case'U':
case'u':
case'Y':
case'y': printf("%c'est une voyelle\n\n", carac);
break;
default : printf("%c'est ni un chiffre, ni une voyelle\n\n",
carac);
}
return 0 ;
}
int main()
{
char carac; /* le caractère à analyser */
Remarque: