20
RESUMES II1 2010-2011 : PROGRAMMATION EN LANGAGE C D. Garric IUT Sénart-Fontainebleau 1 RESUMES Module II1 SOMMAIRE 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 Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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

Page 2: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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.

Page 3: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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.

Page 4: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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 %).

Page 5: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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.

Page 6: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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…

Page 7: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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.

Page 8: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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…

Page 9: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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…

Page 10: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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.

Page 11: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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.

Page 12: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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

Page 13: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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.

Page 14: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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.

Page 15: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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

Page 16: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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]); }

Page 17: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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

Page 18: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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)

{ }

Page 19: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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

Page 20: RESUMES Module II1 - Freegarriciut.free.fr/WEBII1_1011/Resumes/RESUMES II1 - VIDEO 1011 v1… · comparaison ==. Le premier écrit, le second lit dans la RAM. RESUME CYCLE 2… 3-

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.