Programmation Initiation Aux Langages C et C++ (2) Bruno Permanne 2006.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Introduction au Langage C,C++
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Rappels C.
Développement logiciel sur micro-contrôleurs PIC en C
Introduction au langage C
C++ 6ème cours Patrick Reuter maître de conférences
GEF 243B Programmation informatique appliquée Pointeurs et adresses §9.1.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
Assembleur
La pile un élément essentiel
C.
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Paramètres et pointeurs
Structures et unions types énumérés Qu'est-ce qu'une structure
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
FLSI602 Génie Informatique et Réseaux
FLSI602 Génie Informatique et Réseaux
Points importants de la semaine Les pointeurs. Les chaînes de caractères.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006.
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Programmation Initiation Aux Langages C et C++ (3) Bruno Permanne 2006.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Points importants de la semaine Les constantes de compilation. Les fonctions.
Un langage de programmation hybride
IFT 6800 Atelier en Technologies d’information
Standard Template Library
Les chaînes de caractères
C++ : variables Déclaration de variables
LANGAGE C LP A2I IUT St DIE
Structures de données IFT-2000
Types de données fondamentaux
Faculté Polytechnique de Mons
L’essentiel du langage C
Buffer Overflow Anatomy of an exploit.
2.1 - Historique Chapitre 2 : Introduction au langage C++
Les bases de l’assembleur
Le langage C Rappel Pointeurs & Allocation de mémoire.
Représentation des informations
La notion de type revisitée en POO
et quelques rappels sur certains éléments du langage C
Les adresses des fonctions
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
8PRO107 Éléments de programmation Les chaînes de caractères.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Points importants de la semaine Les caractères.
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
1 Les caractères En informatique, les caractères sont très importants puisqu’ils sont utilisés pour la communication personne-machine. Puisque les ordinateurs.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Les bases de l’algorithmique
Langage de programmation
8PRO107 Éléments de programmation Les adresses et les pointeurs.
PRO-1027 Programmation Scientifique en C
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
Introduction au langage C
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Les flux en C++ Les flux d’entrées sorties Les flux standards.
Transcription de la présentation:

Programmation Initiation Aux Langages C et C++ (2) Bruno Permanne 2006

Programmation Sommaire Programmation Instructions de bas niveau Manipulation de la mémoire Préprocesseur Les fonctions en C++ La portée des variables Programmation avancée C++ Bruno Permanne 2006

Instructions de bas niveau Opérateurs de manipulation de bits << >> & | ~ ^ Instructions Adresse Mémoire Contenu (décimal) (hexa) (binaire) unsigned char a; 0x34FE (a) ? a=0x54; 0x34FE 84 0x54 0101 0100 a>>=2; 21 0x15 0001 0101 unsigned char b=240,c; c=a&b; 0x34FF (b) 0x3500 (c) 240 16 0xF0 0x10 1111 0000 0001 0000 c^=0xFF; ou c~=c; 239 0xEF 1110 1111 c=a&1|0x30; 49 0x31 0011 0001 a=(char) (b==240); 1 (true) 0x01 0000 0001 Retour sommaire Bruno Permanne 2006

Manipulation de la mémoire Rappel: Le code ASCII Retour sommaire Bruno Permanne 2006

Manipulation de la mémoire Opérateurs d'accès & * Instructions Adresse Mémoire Contenu char a; 0x34FE (a) ? a=0x54; 0x34FE 0x54 char *p; 0x34FF (p) 0x3500 p=&a; 0x34 0xFE *p=0x33; 0x33 Déclaration d'un octet Affectation d'une valeur Déclaration d'un pointeur sur un octet Recopie de l'adresse de a dans le pointeur p Modification du contenu de la mémoire à l'adresse pointée par p Retour sommaire Bruno Permanne 2006

Manipulation de la mémoire Opérateurs d'accès & * Instructions Adresse Mémoire Contenu char a; 0x34FE (a) ? a=0x54; 0x34FE 0x54 char *p; 0x34FF (p) 0x3500 char b; p=0x3501; *p=234; 0x3501 (b) 0x35 0x01 0xEA p--; *p=0; 0x33 0x34 0x00 Déclaration d'un octet Affectation d'une valeur Déclaration d'un pointeur sur un octet Affectation directe d'une l'adresse dans le pointeur p modification de la case mémoire pointée Modification du contenu de la mémoire à l'adresse pointée par p-1 Retour sommaire Bruno Permanne 2006

Manipulation de la mémoire Opérateurs d'accès & * Instructions Adresse Mémoire Contenu int a=0x54FE; 0x34FE (a) 0x34FF 0x54 0xFE int *pa; pa=&a; 0x3500 (pa) 0x3501 0x34 *pa=0; 0x00 int **pb; *pb=&pa; 0x3502 (pb) 0x3503 0x35 Déclaration d'un entier initialisé Déclaration d'un pointeur sur un entier et affectation à l'adresse de a Remise à zéro de l'entier pointé par pa Déclaration d'un pointeur sur un pointeur. Retour sommaire Bruno Permanne 2006

Manipulation de la mémoire Opérateurs d'accès & * Instructions Adresse Mémoire Contenu char b=4; 0x34FE (a) 0x34FF (p) 0x3500 0x3501 (b) 0x33 0x34 0xFE 0x04 b=*(p+2); a=*p-3; 0xFB Déclararation et initialisation d'un octet b la variable b reçoit la contenu de la case mémoire pointée par l'adresse stockée par la pointeur p augmentée de 2 Modification du contenu de la mémoire à l'adresse pointée par p Retour sommaire Bruno Permanne 2006

Manipulation de la mémoire Tableaux, chaînes de caractères et pointeurs Instructions Adresse Mémoire Contenu char a[3]= {10,0x34,'0'); 0x34FE (a) 0x34FF 0x3500 0x0A 0x34 0x30 char b,*p; p=&a; b=a[2]; ou b=*(p+2); ou p+=2; b=*p; 0x3501 (b) string s="OK"; ou char s[]="OK"; char s[]= {'O','K','\0'); ou char s[3]; s[0]='O'; s[1]='K'; s[2]='\0'; 0x3502 (s) 0x3503 0x3504 0x3505 0x4F ('O') 0x4B ('K') 0x00 ('\0') ? Déclaration d'un tableau d'octets initialisé Déclaration d'un octet, d'un pointeur sur a et accès aux cases du tableau Déclaration dune chaine de caractère string pour le C++ Différents styles de déclaration Ne pas oublier le caractère nul '\0' à la fin de la chaine Retour sommaire Bruno Permanne 2006

Préprocesseur Directives de compilation #include et #define Directive Action #include <iostream> Inclure à cet endroit le fichier source iostream du C++ standard #include "MonEntete.h" Inclure à cet endroit un fichier que j'ai écrit et qui se trouve dans le répertoire courant du projet #define PI 3.14159 #define S(r) PI*r*r Définition du symbole PI et S(r) (comportant un paramètre) qui sera remplacé avant la compilation dans le programme source s1=PI*r*r; s2=S(r); s1=3.14159*r*r; s2=3.14159*r*r; Au moment de l'écriture, Après le passage du préprocesseur et avant la compilation Retour sommaire Bruno Permanne 2006

Les fonctions en C++ Définition des fonctions (1) Directive Action // fichier simple.hpp #include <csdtlib> #include <iostream> using spacename std; void simple(void); void simple(void) { cout << "Bonjour" << endl; } Fichier des bibliothèques utilisées Prototype d'une fonction sans arguments et sans valeur de retour définition de la fonction, c'est un simple sous programme // fichier simple.cpp #include "simple.hpp" main() simple(); Programme principal complet avec appel de la fonction simple() Retour sommaire Bruno Permanne 2006

Les fonctions en C++ Définition des fonctions (2) Directive Action // fichier simple2.hpp #include <csdtlib> #include <iostream> using spacename std; void simple2(string); void simple2(string s) { cout << s << endl; } Fichier des bibliothèques utilisées Prototype d'une fonction avec un argument et sans valeur de retour définition de la fonction // fichier simple2.cpp #include "simple2.hpp" main() simple2("Bonjour"); Programme principal complet avec appel de la fonction simple2() Retour sommaire Bruno Permanne 2006

Les fonctions en C++ Définition des fonctions (3) Directive Action // fichier mult.hpp #include <csdtlib> using spacename std; int mult(int, int); int mult(int a, int b) { return a*b; } Fichier des bibliothèques utilisées Prototype d'une fonction avec un argument et une valeur de retour définition de la fonction // fichier mult.cpp #include <iostream> #include "mult.hpp" main() { int r=10; cout << mult(r, 3); Programme principal complet avec appel de la fonction mult() Retour sommaire Bruno Permanne 2006

Les fonctions en C++ Définition des fonctions (4) Directive Action // fichier mult.hpp #include <csdtlib> using spacename std; void mult(int, int, int*); void mult(int a, int b, int *s) { *s=a*b; } Fichier des bibliothèques utilisées Prototype d'une fonction avec un argument et pas de valeur de retour définition de la fonction avec passage d'un pointeur sur la variable résultat // fichier mult.cpp #include <iostream> #include "mult.hpp" main() { int s, r=10; mult(r,3,&s); cout << s; Programme principal complet avec appel de la fonction mult() Notez le passage de l'adresse de la variable résultat par &s Retour sommaire Bruno Permanne 2006

Les fonctions en C++ Définition des fonctions (5) Directive Action // fichier mult.hpp #include <csdtlib> using spacename std; void mult(int, int, int&); void mult(int a, int b, int &s) { s=a*b; } Fichier des bibliothèques utilisées Prototype d'une fonction avec un argument et pas de valeur de retour définition de la fonction avec passage d'une référence sur la variable résultat // fichier mult.cpp #include <iostream> #include "mult.hpp" main() { int s, r=10; mult(r,3,s); cout << s; Programme principal complet avec appel de la fonction mult() Notez le passage de l'adresse de la variable résultat sans le & Retour sommaire Bruno Permanne 2006

Les fonctions en C++ La portée des variables (1) Directive Action // fichier portee.hpp #include <csdtlib> #include <iostream> using spacename std; int x=5: void fonc(void); void fonc(void) { cout << x; } Définition de x globale au fichier portee.hpp Affiche la valeur 5 // fichier portee.cpp #include "portee.hpp" main() Affiche une erreur car la variable x est inconnue du fichier principal portee.cpp Retour sommaire Bruno Permanne 2006

Les fonctions en C++ La portée des variables (1) Directive Action // fichier portee.hpp #include <csdtlib> #include <iostream> using spacename std; extern int x=5: void fonc(void); void fonc(void) { cout << x; } Définition de x globale à tous les fichiers du projets Affiche la valeur 5 // fichier portee.cpp #include "portee.hpp" extern int x; main() la variable extern doit être reprécisée ici (sans valeur !) Retour sommaire Bruno Permanne 2006

Les fonctions en C++ La portée des variables (2) Directive Action // fichier portee.hpp #include <csdtlib> #include <iostream> using spacename std; int x=5: void fonc(void); void fonc(void) { int x=10; cout << x; } Définition de x globale au fichier portee.hpp Affiche la valeur 10 // fichier portee.cpp #include "portee.hpp" main() { int x=1; Affiche la valeur 1 Retour sommaire Bruno Permanne 2006

Programmation avancée C++ Enumérations enum Directive Action #define PRINTEMPS 0 #define ETE 1 #define AUTOMNE 2 #define HIVER 3 Utilisation du #define classique #enum {PRINTEMPS,ETE,AUTOMNE,HIVER}; L'énumération est plus élégante enum SAISON {PRINTEMPS,ETE,AUTOMNE,HIVER}; Elle peut être nommée SAISON saison_2=HIVER; Nouveau type légal en C++ en fait SAISON est un int Retour sommaire Bruno Permanne 2006

Programmation avancée C++ types et structures struct Directive Action struct complexe { double re; double im; }; en C++ une structure est un nouveau type, pas en C ! complexe addcomp(complexe, complexe); complexe addcomp(complexe x, complexe y) complexe res; res.re=x.re+y.re; res.im=x.im+y.im; return res; } fonction addition de nombres complexes prototype obligatoire Le '.' permet l'accès aux membres de la structure complexe m,n,somme; somme=addcomp(m,n); Appel de la fonction Retour sommaire Bruno Permanne 2006

Programmation Fin de la deuxième partie Bruno Permanne 2006