Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 1
RESUMES Module II1SOMMAIRE
CYCLE 1 : Saisir – Afficher – Données
CYCLE 2 : Calculs Arithmétiques
CYCLE 3 : Alternatives
CYCLE 4 : Boucles
CYCLE 5 : Tableaux
CYCLE 6 : Fonctions
1
CYCLE 1 : Saisir – Afficher – Données
1- En quoi consiste la programmation ?
2- Afficher du texte sur l’écran
3- Variables numériques
4- Déclarer des variables
5- Saisir des valeurs de variables au clavier
6- Afficher texte et valeurs de variables sur l’écran
7- Initialiser des variables par affectation
8- Déclarer des constantes
2
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 2
RESUMES CYCLE 1: Saisir – Afficher – Données
1- En quoi consiste la Programmation ?
La Programmation permet d’obtenir une solution informatique à
partir d’un cahier des charges.
Le programmeur doit concevoir son programme, le coder dans un
langage évolué (fichier source sur le disque dur), puis le tester.
Des données sont saisies (lues) au clavier, le programme effectue
des traitements et les résultats sont affichés (écrits) sur l’écran.
Comme une recette de cuisine, un programme est constitué de
données (ingrédients) et d’une suite d’instructions (opérations).
3
RESUME CYCLE 1...
2- Afficher du texte sur l’écran
Dans un programme en C, on communique avec l’utilisateur
avec des fonctions de la bibliothèque stdio.h :
Affichage de texte sur l’écran :
printf("\tTexte\n");
Le CPU écrit le texte sur l’écran à l’endroit où se trouve le
curseur ; \n le fait passer à la ligne et \t le fait tabuler sur la
droite.
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 3
RESUME CYCLE 1...
3- Variables numériques
Une variable permet de sauver des valeurs dans un programme.
C’est une donnée dont la valeur peut varier au cours d’une
exécution du programme.
Les valeurs sont stockées dans la RAM pendant l’exécution. Une
variable est identifiable par un nom et une adresse mémoire.
Le Type numérique d’une variable définit la nature de ses valeurs :
entier (nombre sans décimale signé ou non signé), réel (nombre
avec décimales). Le type limite également l’ensemble des valeurs
que peut prendre la donnée : un codage sur 1, 2, 4 ou 8 octets
conduit à des valeurs min et max possibles différentes.
Les principaux types numériques du C sont : short, unsigned short,
int, unsigned int, float, double...
RESUME CYCLE 1...
4- Déclarer des variables
Dans un programme en C, la déclaration de variable sert à
indiquer les données qui seront utilisées.
Déclaration de variable :
TYPE nomVariable;
Règle de qualité : nom explicite, pas trop long, commençant par une
minuscule
Le CPU réserve un espace mémoire vide dans la RAM. Cet espace
a pour nom nomVariable et pour adresse &nomVariable. Sa taille
est définie par le type de la variable.
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 4
RESUME CYCLE 1...
5- Saisir des valeurs de variables au clavier
Dans un programme en C, on communique avec l’utilisateur
avec des fonctions de la bibliothèque stdio.h :
Saisie de valeurs au clavier :
scanf("%format",&nomVariable);
Après détection de la touche RC, le CPU lit la valeur tapée sur le
clavier, la convertit dans le type donné par le format, puis
l’affecte à la variable nomVariable (stockée dans la RAM à
l’adresse &nomVariable).
RESUME CYCLE 1...
6- Afficher texte et valeurs de variables sur l’écran
Dans un programme en C, on communique avec l’utilisateur
avec des fonctions de la bibliothèque stdio.h :
Affichage de valeurs de variables sur l’écran :
printf("\tTexte : %format\n",nomVariable);
Le CPU écrit le texte sur l’écran à l’endroit du curseur ; \n le fait
passer à la ligne et \t le fait tabuler sur la droite. %format indique
l’endroit, dans le texte, où s’affiche la valeur de la variable
nomVariable (la valeur est dans le format indiqué après le %).
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 5
RESUME CYCLE 1...
7- Initialiser des variables par affectation
Dans un programme en C, l’affectation permet d’attribuer une
valeur à une variable (de l’initialiser).
Affectation :
nomVariable= valeur;
(dans partie données ou instructions)
Le CPU stocke la valeur de droite dans l’espace mémoire RAM de
la variable nomVariable, qui est à gauche du signe d’affectation.
RESUME CYCLE 1...
8- Déclarer des constantes
Dans un programme en C, la déclaration de constantes sert à
indiquer les données fixes qui seront utilisées (valeur non
modifiable lors d’une exécution du programme).
Les constantes rendent le code plus lisible et la maintenance du
programme plus facile.
Déclaration de constante :
const TYPE NOMCONSTANTE= valeur;
Règle de qualité : nom explicite, pas trop long, tout en MAJUSCULES
Le CPU réserve un espace mémoire dans la RAM et y stocke la
valeur donnée à droite du signe d’affectation. Cet espace a pour
nom NOMCONSTANTE. Sa taille dépend du type choisi.
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 6
CYCLE 2 : Calculs Arithmétiques
1- Ecrire une Instruction de Calcul
2- Exécuter une Instruction de Calcul
3- Comment faire une division entière ou réelle ?
11
RESUMES CYCLE 2: Calcul Arithmétiques1- Ecrire une Instruction de Calcul en C
Dans un programme en C, on écrit l’instruction de Calcul :
nomVariableResultat= Formule de Calcul;
La formule de calcul peut-être composée de fonctions standards (ex.
fonctions sqrt() ou cos() de la bibliothèque math.h) ou/et d’expressions de
calcul Arithmétique.
Les expressions Arithmétiques sont composées d’entiers ou de réels et des
opérateurs : + (addition), - (soustraction), x (multiplication), / (division),
% (modulo).
La partie suivante explique comment le CPU effectue les calculs…
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 7
RESUME CYCLE 2…2- Exécuter une Instruction de Calcul en C
Instruction de Calcul : nomVariableResultat= Formule de Calcul;
Le CPU exécute l’instruction de Calcul en 2 étapes : Évaluation
du résultat du calcul, Affectation du résultat à la variable
résultat de gauche.
En ce qui concerne l’évaluation du calcul, les règles sont :
priorité aux parenthèse, Respect de l’ordre de priorité des
opérateurs, Calcul de gauche à droite, en partant du =.
Il ne faut pas confondre les opérateurs d’affectation = et de
comparaison ==. Le premier écrit, le second lit dans la RAM.
RESUME CYCLE 2…3- Comment faire une division entière ou réelle ?
Pour éviter certaines erreurs de calculs arithmétiques dans un
programme, il est recommandé d’utiliser, au maximum, les mêmes
types de données dans une formule de calcul.
En effet la division a/b donne des résultats différents suivants les
types des opérandes :
division entière : si a ET b sont entiers, le résultat du calcul est
entier. D’autre part, avec 2 entiers, % donne le reste de la division.
division réelle : si a OU b est réel, le résultat du calcul est réel.
Dans tous les cas, si la variable résultat est un entier, le résultat
sera tronqué en entier.
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 8
CYCLE 3 : Alternatives
1- Les opérateurs logiques
2- Comment écrire l’instruction alternative SI-(SINON) ?
3- Comment marche l’instruction alternative SI-(SINON) ?
4- Comment écrire le SI - SINON SI - (SINON) ?
5- Comment marche le SI- SINON SI - (SINON) ?
15
RESUMES CYCLE 3: Instructions Alternatives
1- Les opérateurs logiques
Les opérateurs logiques de comparaison permettent de comparer
des valeurs (égalité, relation d’ordre).
Les opérateurs logiques booléens (ET, OU, NON) ont des tables de
vérité équivalentes à celles des opérateurs binaires.
Les expressions Logiques, qui ont pour valeur true (VRAI) ou false
(FAUX), servent essentiellement dans les conditions logiques.
Ces conditions logiques permettent, par exemple, d’écrire les
instructions ALTERNATIVES…
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 9
RESUME CYCLE 3...2- Ecrire l’instruction alternative SI-(SINON) ?
Pour faire un aiguillage à 2 chemins exclusifs dans un programme en C, on écrit
l’instruction alternative SI – SINON :
if (condition) (sans ;)
{ instructions 1; (avec indentations)
}
else (sans ;)
{ instructions 2; (avec indentations)
}
Si le else n’est pas utilisé, cette structure devient un filtre, une protection : les
instructions du if ne sont exécutées que si la condition est remplie.
Maintenant, voyons comment le CPU exécute cette instruction…
RESUME CYCLE 3...3- Comment marche le SI-(SINON) ?
Le if(condition) {} else{} est un aiguillage simple à 2 voies et le
chemin d’exécution emprunté par le CPU dépend de la valeur de la
condition logique : VRAI exécution des instructions dans les
accolades du if FAUX exécution des instructions dans les
accolades du else.
Le if(condition) {}, version simplifiée est une protection contre
certaines erreurs prévisibles, un filtre : le CPU n’exécute le
contenu du if que si la condition logique est VRAIE. Sinon, le SI
est ignoré.
Maintenant, voyons une Instruction Alternative conditionnelle qui
peut avoir plus de 2 voies…
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 10
RESUME CYCLE 3...
4- Ecrire le SI-SINON SI-(SINON) ?
Pour faire un aiguillage à plusieurs chemins exclusifs dans un programme en C,
on a l’instruction alternative SI - SINON SI - SINON :
if (condition 1) (sans ;)
{ instructions 1; (avec indentations)
}
else if (condition 2) (sans ;)
{ instructions 2; (avec indentations)
} ...
else (sans ;)
{ instructions 3; (avec indentations)
}
Sans else, le chemin d’exécution peut ne pas passer dans ce SI.
RESUME CYCLE 3...5- Comment marche le SI-SINON SI-(SINON) ?
Le if(condition 1) {} else if(condition 2){} else{} est un aiguillage à
plusieurs voies.
Le chemin d’exécution du CPU dépend des valeurs des conditions
logiques successives : dès qu’une condition est VRAIE, les
instructions associées à ce if sont exécutées :
condition 1 VRAI exécution du if
condition 1 FAUX et condition 2 VRAI exécution du 1° else if
...
toutes les conditions à FAUX exécution du else.
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 11
CYCLE 4 : Boucles
1- Comment écrire l’instruction itérative POUR ?
2- Comment marche la boucle POUR ?
3- Comment créer une boucle POUR ?
4- Des applications de la boucle POUR
5- Comment écrire une boucle TANT QUE ?
6- Comment marche les boucles TANT QUE ?
7- Comment créer une boucle TANT QUE ?
8- Des applications de la boucle TANT QUE
21
RESUMES CYCLE 4: Instructions Itératives
1- Ecrire une boucle POUR ?
Pour répéter des instructions un nombre connu de fois, on a l’instruction
itérative POUR (boucle POUR avec comptage croissant ici) :
for (i=valInit ; i<=valFin ; i=i+pas) (sans ;)
{ instructions; (avec indentations)
}
i=valInit est l’INITIALISATION
i<=valFin est la CONDITION de POURSUITE de boucle (cas
croissant). Son inverse (i>valFin) est la condition de fin de boucle.
i=i+pas est l ’INCREMENTATION
i est une variable compteur (obligatoirement de type entier), qui croît, ici,
de valInit à valFin en augmentant de pas à chaque reprise de boucle.
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 12
RESUME CYCLE 4...2- Comment marche la boucle POUR ?
L’instruction itérative for{ ; ; } est une boucle.
Le CPU recommence l’exécution des instructions de la boucle tant
que la variable compteur i ne dépasse pas valFin :
le compteur i démarre, la 1° fois, à valInit évaluation condition
de poursuite (i<=valFin pour un comptage croissant)
si condition VRAIE exécution boucle, puis retour au FOR
lorsque le CPU revient au FOR, i augmente de pas évaluation
condition de poursuite
quand condition FAUSSE sortie du FOR
Un passage dans la boucle est une itération.
RESUME CYCLE 4...3- Comment créer une boucle POUR ?
Etapes pour créer une boucle POUR :
écrire des exemples numériques sur papier détecter les
instructions qui se répètent : CONTENU boucle
à partir des exemples, identifier les valeurs de début et de fin du
comptage INITIALISATION et CONDITION de POURSUITE
identifier le PAS du compteur entre 2 exécutions de la boucle
écrire la boucle et la vérifier avec les valeurs limites de comptage
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 13
RESUME CYCLE 4...4- Des applications de la boucle POUR
Le CALCUL CUMULATIF : le cumul consiste à rajouter des quantités
dans une même variable : sa valeur est changée à chaque itération :
cumul= 0;
for (i=valInit ; i<=valFin ; i=i+pas)
{ cumul= cumul + quantité;
}
DECOMPTEUR : pour compter en décroissant, la condition de poursuite
(on arrive à la valeur finale par en haut) et le pas (négatif)sont inversés :
for (i=valInit ; i>=valFin ; i=i-pas)
{ instructions;
}
RESUMES CYCLE 4: Instructions Itératives
5- Ecrire une boucle TANT QUE ?
Pour répéter des instructions à une certaine condition, on a les
instructions itératives TANT QUE (boucles conditionnelles) :
FAIRE TANT QUE do (sans ;)
{ instructions; (avec indentations)
} while (condition); (AVEC ;)
TANT QUE while(condition) (SANS ;)
{ instructions; (avec indentations)
} (sans ;)
Le TANT QUE est exécuté tant que la condition est VRAIE.
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 14
RESUME CYCLE 4...6- Comment marche les boucles TANT QUE ?
Les instructions itératives while et do while sont des boucles.
Le CPU recommence l’exécution des instructions de la boucle tant
que la condition de poursuite est vraie (évaluation sur le while) et
dès que cette condition devient fausse, le CPU sort de la boucle.
dans le cas de la FAIRE TANT QUE : le CPU passe toujours le do
pour exécuter la boucle ; donc cette boucle s’exécute toujours au
moins une fois.
dans le cas de la TANT QUE : le CPU commence par le while,
donc par l’évaluation de la condition ; donc cette boucle peut
s’exécuter 0 fois.
RESUME CYCLE 4...7- Comment créer une boucle TANT QUE ?
Etapes pour créer une boucle TANT QUE :
écrire des exemples numériques sur papier détecter les
instructions qui se répètent : CONTENU boucle
à partir des exemples, identifier la CONDITION de POURSUITE
de boucle ; si c’est la condition de fin qui vient, il suffit de l’inverser
fixer, si besoin, valeurs de début, de fin et d’incrémentation d’un
compteur
écrire la boucle et la vérifier avec les conditions limites de boucle.
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 15
RESUME CYCLE 4...8- Des applications de la boucle TANT QUE
Une POUR peut toujours être transformée en TANT QUE :
i= valInit; (INITIALISATION)
do
{ instructions;
i=i+pas; (INCREMENTATION)
} while (i<=valFin); (CONDITION POURSUITE)
La POUR est plus simple quand on sait combien de fois la boucle tourne.
Une boucle de reprise permet d’éviter à devoir relancer un programme :
c’est une DO WHILE englobant toutes les instructions du programme.
Une saisie validée permet de recommencer un scanf() tant que la valeur
saisie n’appartient pas au bon intervalle. Le programmeur doit vérifier
toutes les saisies et informer l’utilisateur d’erreurs éventuelles.
CYCLE 5 : Tableaux
1- Que sont les Tableaux ?
2- Comment déclarer et initialiser un Tableau ?
3- Comment utiliser un Tableau ?
30
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 16
RESUMES CYCLE 5: Tableaux
1- Que sont les tableaux ?
Un Tableau est une suite de cases mémoires permettant de stocker
des données de même type simple.
31
0 1 2
Indices relatifs
des cases du
tableauNom du tableau
2 5 4tab[0] tab[1] tab[2]
Nom des cases
du tableau
tab
Donnée de type simple
2
tab[0]
&tab[0]
Adresses des cases du tableau
RESUME CYCLE 5...2- Comment déclarer et initialiser un tableau ?
Pour déclarer un tableau à une dimension :
TYPECASE nomTableau[NBCASES] (nom explicite)
CPU : réservation mémoire de longueur NBCASES x longueur TYPECASE
Pour initialiser un tableau à sa déclaration (dans la partie données) :
TYPECASE nomTableau[NBCASES]= {val1,val2,...,valn};
Pour initialiser un tableau par affectations(dans la partie instructions) :
for (i=0; i<NBCASES ; i++) { nomTableau[i]= 0; }
Pour initialiser un tableau par saisies clavier (partie instructions) :
for (i=0; i<NBCASES ; i++)
{ printf ("\nElément d’indice %d : ",i);
scanf("%d",&nomTableau[i]); }
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 17
RESUME CYCLE 5...3- Comment utiliser un tableau ?
Pour afficher un tableau :
for (i=0 ; i<NBCASES ; i++)
{ printf ("\nElément d’indice %d : %d",i,nomTableau[i]);
}
Pour additionner les cases d’un tableau :
sommeCumul= 0;
for (i=0; i<NBCASES ; i++)
{ sommeCumul= sommeCumul + nomTableau[i];
}
Pour multiplier les cases d’un tableau :
produitCumul= 1;
for (i=0; i<NBCASES ; i++)
{ produitCumul= produitCumul * nomTableau[i];
}
CYCLE 6 : Fonctions
1- Qu’est-ce qu’une Fonction ?
2- Fonction sans donnée échangée
3- Fonction avec Paramètre en E
4- Fonction avec résultat en Sortie
5- Type Pointeur
6- Fonction avec Paramètre en E/S
34
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 18
RESUMES CYCLE 6: Fonctions1- Qu’est une fonction ?
Utilité des fonctions :
Chaque fonction réalise une tâche simple et possède ses données
privées (non accessibles aux autres fonctions). Une fonction
s’exécute si elle est appelée, puis retour à la fonction appelante.
éviter les répétitions et structurer le code : source plus court et plus
lisible facilite maintenance et tests du programme.
Création d’une fonction :
Déclaration en haut du source : PROTOTYPE.
APPEL à l’endroit où ses instructions doivent être exécutées.
DEFINITION du corps de la fonction avec ses données et ses
instructions.
RESUME CYCLE 6...2- Fonctions sans échange de données
Fonction sans donnée échangée : effectue un simple traitement
// PROTOTYPE
void NomFonction(void);
//APPEL
NomFonction();
//DEFINITION
void NomFonction(void)
{ }
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 19
RESUME CYCLE 6...3- Fonctions avec paramètre en E
Fonction avec paramètre d’Entrée : valeur transmise à l’appel : x=n
// PROTOTYPE
void NomFonction(int );
//APPEL (n de type int) ; la valeur de n est transmise à la fonction
NomFonction(n);
//DEFINITION . x est un paramètre en Entrée, non modifable par la fonction
void NomFonction(int x)
{ }
RESUME CYCLE 6...4- Fonctions avec S
Fonction avec Sortie : 1 seule valeur retransmise après l’appel : div=d
// PROTOTYPE
float NomFonction(void);
//APPEL (div de type float) ; la valeur de d est récupérée dans div
div= NomFonction();
//DEFINITION (d : float). Valeur de d transmise en Sortie de la fonction
float NomFonction(void)
{ ... return(d); }38
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C
D. Garric IUT Sénart-Fontainebleau 20
RESUME CYCLE 6...5- Type Pointeur
Type POINTEUR : adresse d’une variable de type simple
int a, *pta; // pta : pointeur sur un int
pta= &a; // initialisation : pta pointe sur a
*pta= 3; // une valeur est rangée dans a
39
*pta= apta
&a 3
RESUME CYCLE 6...6- Fonctions avec paramètres en E/S
Fonction avec paramètre en E/S : adresse passée à l’appel : pta=&a
void NomFonction(int *pta); // PROTOTYPE avec pointeur
NomFonction(&a); //APPEL avec adresse (a de type int)
void NomFonction(int *pta) { } //DEFINITION (*pta = a)
Fonction avec paramètre tableau : adresse passée à l’appel : tabp=tab
void NomFonction(float tabp[]); // PROTOTYPE
NomFonction(tab); //APPEL (tab de type tableau de 3 float)
void NomFonction(float tabp[3]) { } //DEFINITION
Via le pointeur, la donnée passée par adresse (a ou tab) est directement
modifiée par la fonction.