Chapitre 9 Passage de paramètres
par adresse (existe aussi dans le langage C) langages C++ et Java1). 1 Java : passage par valeur pour les primitifs et par référence pour les objets.
Programmation C/C++ : Notions de base
Passage par adresse . Passage par référence . ... Les objectifs de ce cours sont de découvrir les bases du langage C/C++. Premier programme.
Algorithmes et langage C
5 COMPILATION ET EXECUTION D'UN PROGRAMME EN C CHAPITRE 3 CONCEPTS DE BASE DU LANGAGE C ... 5.2 PASSAGE PAR ADRESSE (PAR REFERENCE).
LES VARIABLES :
Dans la technique de la compilation (exemple langage C ou C++) : 3- Le passage par adresse : Il sera revu dans la fiche sur les pointeurs.
Programmation Impérative II Sémantique dun programme C++
Passage par référence. Les pointeurs Langage objets (C++ Java)
Programmation Structurée en Langage C
Le pointeur est une variable destinée à contenir une adresse mémoire. En langage C les passages de paramètres se font par valeur
Les structures et les tableaux
Par convention les noms de structures commencent par une minuscule en C struct point c[10]; ... 1.3 Passage par valeur et par référence. ? En C ...
Chapitre 7 - Programmation modulaire
On peut distinguer en langage C
COURS et TP DE LANGAGE C++
Ici le passage par référence est obligatoire puisque la fonction “ saisie ” modifie les valeurs des arguments. - Une fonction de prototype void calcul(float aa
ALGORITHMIQUE ET PROGRAMMATION STRUCTUREE EN
langage C utilise le principe du passage des paramètres effectifs par adresse. • On utilise pour cela des variables particulières permettant de stocker une.
[PDF] Chapitre 9 Passage de paramètres
En C++ 3 types de passage de paramètres: ? par valeur (existe aussi dans les langages C et Java1) ? par adresse (existe aussi dans le langage C)
[PDF] Programmation en langage C - Centre Inria de Paris
Chaque octet de la mémoire est caractérisé par son adresse qui est un entier Deux octets contigus en mémoire ont des adresses qui diff`erent d'une unité
[PDF] Langage C - LPTHE
Langage C 8 5 4 Passage de tableau de taille inconnue `a la compilation 190 8 5 5 Exemple de passage d'un tableau 1D de taille variable
[PDF] Algorithmes et langage C - Ecole Mohammadia dingénieurs
Le langage C met en jeu deux opérateurs utilisés lors de l'usage de pointeurs Il s'agit des opérateurs et * &variable signifie adresse de variable *
[PDF] Le Langage C
langage machine (manipulations de bits d'adresses ) ? efficace d'afficher : notre premier programme C et \n ordonne le passage à la ligne suivante
[PDF] Programmation Structurée en Langage C - Institut Fresnel
une définition précise du langage C appelée C reference manual Le pointeur est une variable destinée à contenir une adresse mémoire
[PDF] Les fonctions et les procédures en C
fonctions et procédures 11 Procédures (2/3) maprocedure c En langage C il n'existe pas d'autre Carré avec passage de paramètres par adresse
Passage par référence - CERMICS
C++ comme Pascal offre deux modes de passage des arguments à une fonction : par valeur et par référence Par contre C Java et CAML par simplicité n'en
[PDF] Langage C et aléa séance 3 - Loria
Le moyen le plus simple de faire est que l'appelant déclare le tableau et le passe en argument à la fonction ——————————————— Exercice 3 (passage par référence)
Révision 2.5, 2006.
71.2 Présentation du langage C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81.3 Premier programme en C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91.4 Langage C et programmation structurée . . . . . . . . . . . . . . . . . . . . . . . . .
10 142.2 Constantes associées aux types de base . . . . . . . . . . . . . . . . . . . . . . . . . .
152.3 Variables de base : déclaration et initialisation . . . . . . . . . . . . . . . . . . . . . .
162.4 Types dérivés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
182.5 Conversion de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19 2122
25
4.2 Opérateurs binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
274.3 Opérateur ternaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
304.4 Précédence des opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3033
5.2 Instructions de répétition ou d'itération . . . . . . . . . . . . . . . . . . . . . . . . .
375.3 Ruptures de séquence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4045
6.2 Passage des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
466.3 Utilisation de pointeurs en paramètres . . . . . . . . . . . . . . . . . . . . . . . . . .
4747
6.5 Retour de fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
486.6 Récursivité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
486.7 Paramètres de la fonction principale . . . . . . . . . . . . . . . . . . . . . . . . . . .
486.8 Étapes d'un appel de fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4951
7.2 Inclusion de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
527.3 Variables de précompilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
527.4 Dénition de macro-expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
537.5 Sélection de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5355
8.2 Visibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
568.3 Prototypes des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
598.4 Fonctions externes et fonctions dénies ultérieurement . . . . . . . . . . . . . . . . .
608.5 Déclarations et dénitions multiples . . . . . . . . . . . . . . . . . . . . . . . . . . .
6065
9.2 Arithmétique d'adresse et tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . .
669.3 Tableaux multi-dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
679.4 Pointeurs et tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
679.5 Tableau de pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6971
10.2 Unions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7410.3 Énumérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7610.4 Types synonymes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7780
11.2 Ouverture d'un chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8211.3 Fermeture d'un chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8411.4 Accès au contenu du chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8411.5 Entrées-sorties formatées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8911.6 Déplacement dans le chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9411.7 Gestion des tampons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9811.8 Gestion des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99101
12.2 Types de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10212.3 Fonctions mathématiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10212.4 Fonctions utilitaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10312.5 Fonctions de dates et heures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10512.6 Messages d'erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
106B Mots réservés du C 108
C Quelques pointeurs sur Internet 109
109C.2 Librairies scientiques et graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
C.3 Sources et sites de programmeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Liste des tableaux111
Liste des programmes 113
Bibliographie115
71.2 Présentation du langage C . . . . . . . . . . . . . . . . . . . . . . . . . . .
81.3 Premier programme en C . . . . . . . . . . . . . . . . . . . . . . . . . . .
91.4 Langage C et programmation structurée . . . . . . . . . . . . . . . . . .
10Ces deux langages partagent avec le C :
Les deux langages prédécesseurs du C avaient la particularité d'être sans type. Ils ne connaissent que
le mot machine, ce qui leur donne un degré de portabilité nul. Le langage C comble ces lacunes en
introduisant des types de données tels que l'entier ou le caractère. Les dates marquantes de l'histoire du C sont les suivantes : Jusqu'en 1987, il n'y avait pas de norme. Le livre The C programming language [RK78] contientune dénition précise du langage C appelée C reference manual . C'est principalement de ce livre
(et de sa traduction française [KR94]) que s'inpire ce support de cours.Le langage C a été conçu pour l'écriture de systèmes d'exploitation. Plus de90%?? ????? ?? ???????
Il est cependant susamment général pour permettre de développer des applications variées de type
scientique, ou encore pour l'accès aux bases de données (application de gestion) Le C est un langage impératif classique qui comporteIl reète bien le savoir faire des années 70, et se situe dans la famille du langage Pascal. Son avantage
vis-à-vis du Pascal est son plus grand pragmatisme. Il autorise clairement deux styles de program-
mation, le style bidouille pour produire du code ecace et le style génie logiciel pour produire
des programmes plus lisibles, plus sûrs et plus facilement modiables.Bien que pouvant être considéré de bas niveau, le langage C supporte les structures de base néces-
saires à la conception des applications structurées. Cette caractéristique le range dans la catégorie
des langages de haut niveau. Il est aussi un des premiers langages orant des possibilités de program-
mation modulaire. Un programme en C peut être constitué de plusieurs modules. Chaque moduleLorsque nous parlons du langage C, nous faisons référence à ce que sait faire le compilateur lui-même.
Plusieurs outils interviennent dans la transformation d'un ensemble de chiers sources, constituantun programme, en un chier binaire exécutable, résultat de ce que l'on appelle communément, la
Le langage C se limite aux fonctionnalités qui peuvent être traduites ecacement en instructions
machine. Cette règle de fonctionnement doit permettre de détecter ce qui est fait directement par le
compilateur lui-même et ce qui ne peut pas être fait. Illustrons cette règle par quelques exemples :
à partir du code ASCII
Pour réaliser des fonctions plus compliquées, le programmeur doit écrire ses propres fonctions ou
faire appel aux fonctions pré-dénies de la bibliothèque du langage C (cf. chapitres 11 et 12). Ces
fonctions sont elles-aussi standardisées.Prog. 1.1 Hello World!
Programme
Affiche
Hello World #includeAffiche
le messageValeur
de retour de la fonction5. Ce type de commentaire a été introduit avec le langage C++ et n'est pas purement C-ANSI. Il est cependant
supporté par tous les compilateurs actuels. Précisons que dans ce cas, le commentaire doit se limiter à une unique
ligne.À sa base, le langage C n'est qu'un ensemble de bibliothèques à partir desquelles le compilateur trouve
les fonctions et les applications qui lui permettent de créer un programme exécutable. Exactement ce
que l'on fait lorsqu'on cherche dans une encyclopédie pour faire un exposé. Certaines bibliothèques
(les plus courantes) sont incluses dans le compilateur, ce qui permet à notre programme de com-Les librairies standards du C seront présentées au fur et à mesure de leur utilisation dans ce cours.
Néanmoins, nous pouvons déjà en dire quelques mots. À l'instar de l'étudiant qui recherche dans des
livres, on peut dire que le chier .h représente l'index du livre et le chier .cpp correspondant
le contenu du chapitre concerné. Ainsi, lorsque le compilateur rencontre le mot??????? ?? ???????Le langage C est apparu en 1972, c'est à dire en pleine période de réexion sur les langages structurés.
Il supporte donc un ensemble de fonctionnalités qui sont directement issues de ce courant de pensée.
Le langage C a été conçu et réalisé pour écrire un système d'exploitation et le logiciel de base de ce
système. Il doit être capable de faire les mêmes choses que l'assembleur. Il est assez permissif, ce qui
va à l'encontre de la programmation structurée telle que Wirth [Wir74] l'a décrite. En eet, en C, le
programmeur peut écrire des choses explicites qui sont liées à la structure de la machine. Le langage C est assez peu contraignant. Il ore des structures de programme mais il n'oblige pasà les utiliser. En particulier, il autorise les entrées multiples et les sorties multiples dans les tâches.
La mise en page est libre, ce qui permet d'écrire des programmes dont la mise en page reète la structure. Les programmes sans mise en page sont rapidement illisibles du fait de la richesse de la syntaxe du C. Comme le montre la gure 1.1, un programme en C est constitué d'un ensemble de chiers sources destinés à être compilés séparément et à subir une édition de liens communeLe fait de pouvoir compiler chaque chier source de manière autonome amène à concevoir des pro-
grammes de manière modulaires en regroupant, dans chaque chier source, des fonctions qui mani-7. Les diérentes étapes de la compilation sont plus complexes que cela. Toutes ces opérations sont relativement
transparentes avec le logiciel Visual C++ de Microsoft, puisqu'il sut de cliquer sur un bouton pour réaliser l'ensemble
des étapes aboutissant à l'exécutable! (source, module) compilation fichier1.o (objet) fichier2.cpp (source, module) compilation fichier2.o (objet) edition de liens fichier.exe (executable) fichier3.cpp (source, module) compilation fichier3.o (objet) Figure 1.1 Les étapes de compilation d'un programme.Maîtriser la programmation en langage C nécessite beaucoup de savoir faire et donc de pratique.
Elle s'apprend essentiellement à partir de ses erreurs, alors n'hésitez pas à mettre les mains dans le
cambouis ... 14 14 142.1.3 Le type vide :????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
152.1.4 Taille des types de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15 15 152.2.2 Constantes avec partie décimale . . . . . . . . . . . . . . . . . . . . . . . .
162.2.3 Constantes caractère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16 16 172.3.2 Qualicatifs des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17 18 182.4.2 Les chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19 19 1. dénir le domaine de valeur de cette variable (taille en mémoire et représentation machine). 2. dénir les opérations possibles sur cette variable. 3. dénir le domaine de validité de cette variable. 4. permettre à l'environnement d'exécution du programme d'associer le nom de la variable à une adresse mémoire. 5. initialiser la variable avec une valeur compatible avec le domaine de valeur.En langage C, une variable se caractérise à partir de son type et de sa classe mémoire. Les points
1 et 2 sont associés au type de la variable, les points 3 et 4 sont associés à la classe mémoire de la
variable. 2 [¡2147483648;2147483647]? Tableau 2.1 Longueur des types de base sur un processeur Intel i686.Taille (octets)
Les constantes peuvent être suxées par un l ou un L pour préciser que leur type associé
Voici quelques exemples de constantes de type entier : Voici quelques constantes avec partie décimale : ?nn?? ?n?? ?n??? ?n??? Un certain nombre d'abréviations est également disponible : ?n??? ?n??? ?n??? ?n??? ?n??? ?n??? Une dénition de variable a les rôles suivants :5. Le nombre 100 correspond au code ASCII décimale du caractère????
Une dénition de variable est l'association d'un identicateur à un type et la spécication d'une
classe mémoire.Les deux qualicatifs peuvent être utilisés sur la même variable, spéciant que la variable n'est pas
modiée par la partie correspondante du programme mais par l'extérieur.Nous allons examiner en détails les deux premiers types dérivées. Les tableaux et les structures seront
examinés dans les chapitres 9 et 10.Le compilateur C vérie le type des adresses mises dans un pointeur. Le type du pointeur conditionne
les opérations arithmétiques sur ce pointeur. Les opérations les plus simples sur un pointeur sont les
suivantes :Une fois un pointeur aecté avec l'adresse d'une variable, ce pointeur peut être utilisé pour accéder
aux cases mémoires correspondant à la variable (valeur de la variable) :?????? ? ??? ???? ?Tableau 2.2 Chaîne de caractères constante
e s s a g e n?Il est impossible d'utiliser les opérateurs sur les chaînes de caractères. Notamment, il est interdit de
Il est néanmoins possible d'initialiser une chaîne de caractères constante de la manière suivante :????
Tableau 2.3 Exemples d'initialisation de chaînes.La notion de richesse d'un type est précisée dans la norme. Le type dans lequel le calcul d'une
expression à deux opérandes doit se faire est donné par les règles suivantes : 1. 2. 3. 4. sinon, appliquer la règle de promotion en entier, puis : (a) (b) (c) (d)La règle de promotion en entier précise que lorsque des variables ou des constantes des types suivants
sont utilisées dans une expression, alors les valeurs de ces variables ou constantes sont transformées
en leur équivalent en entier avant de faire les calculs. Ceci permet d'utiliser des caractères et des
entiers courts de la même façon que des entiers. Des exemples de conversions implicites sont donnés dans le tableau 2.4.Tableau 2.4 Exemples de conversion implicite.
li = f + i; transformé en?????? ????? ??????? transformé en????? ????? ??????Il est possible de forcer la conversion d'une variable (ou d'une expression) dans un autre type avant
de l'utiliser par une conversion implicite. Cette opération est appelée cast . Elle se réalise de la
2122
Bien sûr, le langage C est un langage des années 70 et l'idée de l'interaction avec l'utilisateur est celle
des systèmes centralisés à temps partagé. Un utilisateur de ce type de système est connecté via une
voie d'entrée-sortie qui permet d'échanger des caractères. Ces voies sont la plupart du temps reliées
à un télétype (écran, clavier, avec sortie optionnelle sur papier). Les caractères sont écrits sur l'écran
du terminal et lus à partir du clavier.Les entrée-sorties en langage C ne sont pas prises en charge directement par le compilateur mais elles
Tableau
de 80caractères
Le tableau 3.1 donne un résumé des déclarations de variables et des formats nécessaires à leurs
L'exemple 3.2 montre qu'il est possible de réaliser l'écriture ou la lecture de plusieurs variables en
utilisant une seule chaîne de caractères contenant plusieurs descriptions de formats.Prog. 3.2 Lectures multiples avec???????
Lecture
Écriture
Format externe
scanf("%d",&i); printf("%d",i); scanf("%o",&i); printf("%o",i); scanf("%x",&i); printf("%x",i); scanf("%u",&i); printf("%u",i); scanf("%hd",&j); printf("%d",j); scanf("%ho",&j); printf("%o",j); scanf("%hx",&j); printf("%x",j); scanf("%hu",&j); printf("%u",j); scanf("%ld",&k); printf("%ld",k); scanf("%lo",&k); printf("%lo",k); scanf("%lx",&k); printf("%lx",k); scanf("%lu",&k); printf("%lu",k); scanf("%f",&l); printf("%f",l); scanf("%e",&l); printf("%e",l); printf("%g",l); scanf("%lf",&m); printf("%lf",m); scanf("%le",&m); printf("%le",m); printf("%lg",m); scanf("%Lf",&n); printf("%Lf",n); scanf("%Le",&n); printf("%Le",n); printf("%Lg",n); scanf("%c",&o); printf("%c",o); scanf("%s",p); printf("%s",p);Voici quelques exemples :
2526
4.1.2 Opérateur d'incrémentation et de décrémentation . . . . . . . . . . . . . . .
264.1.3 Opérateur de dimension . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
274.1.4 Non logique, plus et moins unaires . . . . . . . . . . . . . . . . . . . . . . .
2727
27
4.2.2 Opérateurs de manipulation de bits . . . . . . . . . . . . . . . . . . . . . .
284.2.3 Opérateurs booléens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
284.2.4 Opérateur d'aectation et de succession . . . . . . . . . . . . . . . . . . . .
2930
4.4 Précédence des opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . .
30L'organisation de ce chapitre est guidée par le nombre d'opérandes mis en cause par l'opérateur et
non par l'utilisation des opérateurs.Tableau 4.1 Liste des opérateurs unaires.
Utilisation
Il est possible d'utiliser les opérateurs unaires d'incrémentation et de décrémentation après ou avant
la variable. Ce qui permet de post-incrémenter, de pré-incrémenter, de post-décrémenter ou de pré-
décrémenter. Lorsque l'opérateur est préxé, l'opération est appliquée avant que la valeur correspon-
dant à l'opération ne soit calculée. Dans le cas où l'opération est post-xée, la valeur de la variable
avant l'opération est utilisée pour les autres calculs et ensuite l'opération est appliquée.
Le moins unaire inverse le signe de l'expression qui le suit. Le plus unaire sert à conrmer le signe
de l'expression.Tableau 4.2 Liste des opérateurs binaire.
Opérateurs
UsageMasquage
Décalage
Relation
Logique
Aectation
cf. tableau 4.3 aectation.Succession
Comme nous avons déjà vu les opérateurs unaires, vous remarquerez l'utilisation contextuelle dans le
Le langage C permet de construire des opérateurs binaires d'aectation à partir des opérateurs
binaires arithmétiques, des opérateurs de masquage et des opérateurs de décalage, en les faisant
Tableau 4.3 Liste des opérateurs binaires d'aectation. Tableau 4.4 Exemple d'opérateurs binaires d'aectation.Résultat
Équivalence
Lecture
110i = i + 10 i += j 115
i = i + j i -= 5 110
i = i - 5 i -= j 105
i = i - j i *= 10 1050
i = i * 10 5250
i = i * j i /= 10 525
i = i / 10 i /= j 105
i = i / jquotesdbs_dbs44.pdfusesText_44
[PDF] passage par valeur et par variable
[PDF] passage par référence php
[PDF] difference entre passage par valeur et passage par adresse en c
[PDF] passage par référence c++
[PDF] passage par valeur et par adresse en c
[PDF] passage par référence c++ open classroom
[PDF] acting out psychanalyse
[PDF] le salaire du sniper analyse
[PDF] le salaire du sniper texte pdf
[PDF] le salaire du sniper questionnaire
[PDF] redaction le salaire du sniper
[PDF] le salaire du sniper personnage principal
[PDF] passé composé terminaison
[PDF] passé composé cm2