Les nouveautés de C++11 : Ecrire du C++ ModerneMicrosoft
Le langage C++ a toujours la réputation d’un langage complexe, demandant une rigueur de tous les instants et qui peut en rebuter plus d’un. Mais avec l’arrivée de la nouvelle norme C++11 et de son intégration dans Visual Studio 11 (et intégration partielle dans Visual Studio 2010), elle permet comme le souligne Herb Sutter, d’écrire désormais du code "Clean, Safe and Fast", nous passons à l'ère du C++ moderne.
Les nouveautés de C++11 : Ecrire du C++ ModerneMicrosoft
Le langage C++ a toujours la réputation d’un langage complexe, demandant une rigueur de tous les instants et qui peut en rebuter plus d’un. Mais avec l’arrivée de la nouvelle norme C++11 et de son intégration dans Visual Studio 11 (et intégration partielle dans Visual Studio 2010), elle permet comme le souligne Herb Sutter, d’écrire désormais du code "Clean, Safe and Fast", nous passons à l'ère du C++ moderne.
Comme des millions de développeurs, vous utilisez C# quotidiennement … mais en maitrisez-vous les subtilités ? Cette session ludique vous plongera au cœur de votre langage de prédilection au travers programmes et exemples de code qui ne cesseront de vous surprendre. Avec en prime quelques (petits) lots à gagner pour les développeurs les plus perspicaces !
la plupart des programmes informatique sont des programmes complexes. Ils comportent des dizaines de milliers de lignes et les grosses applications en comportent des millions. Si l'on garde tout dans une seule fonction, la fonction main() par exemple, il va être très difficile de s'y retrouver. Il serait certainement plus simple de découper ce programme en fonctions. Chaque fonction est destinée à effectuer une tâche précise et renvoie généralement un résultat. Découper son programme en fonctions permet de s'organiser.
En plus, si vous êtes plusieurs développeurs à travailler sur le même programme, vous pourrez vous partager plus facilement le travail : chacun s'occupe d’une fonction différente.
Et ce n'est pas tout ! Prenons par exemple le calcul de la racine carrée, que nous avons vu précédemment. Si vous créez un programme de maths, il est bien possible que vous ayez besoin, à plusieurs endroits, d'effectuer des calculs de racines. Avoir une fonction sqrt() va nous permettre de faire plusieurs de ces calculs sans avoir à recopier le même code à plusieurs endroits. On peut réutiliser plusieurs fois la même fonction et c'est une des raisons principales d'en écrire.
In mathematics and computer science, an algorithm is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing calculations and data processing.
Open close principle, on a dit étendre, pas extends !Engineor
Conférence en français sur le principe d'ouverture fermeture proposé à l'AFUP de Paris en février 2019, comportant des exemples d'implémentation du principe à l'aide de design patterns, avec ou sans utilisation d'un framework.
C++11 introduit les fonctions lambda : qu'est-ce que c'est ? Comment (bien) les utiliser ? Voici le support d'une présentation donnée à l'occasion des rencontres C++ à Montpellier le 21 oct. 2014.
Présentation des nouveautés apportées par la version 7 du langage C# : Méthodes locales, Tuples, Déconstructeurs, Pattern matching, Variables de sortie, Membres sous forme d’expression, Amélioration de la levée des exceptions, ...
Comme des millions de développeurs, vous utilisez C# quotidiennement … mais en maitrisez-vous les subtilités ? Cette session ludique vous plongera au cœur de votre langage de prédilection au travers programmes et exemples de code qui ne cesseront de vous surprendre. Avec en prime quelques (petits) lots à gagner pour les développeurs les plus perspicaces !
la plupart des programmes informatique sont des programmes complexes. Ils comportent des dizaines de milliers de lignes et les grosses applications en comportent des millions. Si l'on garde tout dans une seule fonction, la fonction main() par exemple, il va être très difficile de s'y retrouver. Il serait certainement plus simple de découper ce programme en fonctions. Chaque fonction est destinée à effectuer une tâche précise et renvoie généralement un résultat. Découper son programme en fonctions permet de s'organiser.
En plus, si vous êtes plusieurs développeurs à travailler sur le même programme, vous pourrez vous partager plus facilement le travail : chacun s'occupe d’une fonction différente.
Et ce n'est pas tout ! Prenons par exemple le calcul de la racine carrée, que nous avons vu précédemment. Si vous créez un programme de maths, il est bien possible que vous ayez besoin, à plusieurs endroits, d'effectuer des calculs de racines. Avoir une fonction sqrt() va nous permettre de faire plusieurs de ces calculs sans avoir à recopier le même code à plusieurs endroits. On peut réutiliser plusieurs fois la même fonction et c'est une des raisons principales d'en écrire.
In mathematics and computer science, an algorithm is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing calculations and data processing.
Open close principle, on a dit étendre, pas extends !Engineor
Conférence en français sur le principe d'ouverture fermeture proposé à l'AFUP de Paris en février 2019, comportant des exemples d'implémentation du principe à l'aide de design patterns, avec ou sans utilisation d'un framework.
C++11 introduit les fonctions lambda : qu'est-ce que c'est ? Comment (bien) les utiliser ? Voici le support d'une présentation donnée à l'occasion des rencontres C++ à Montpellier le 21 oct. 2014.
Présentation des nouveautés apportées par la version 7 du langage C# : Méthodes locales, Tuples, Déconstructeurs, Pattern matching, Variables de sortie, Membres sous forme d’expression, Amélioration de la levée des exceptions, ...
1. Langage C
Allocation dynamique de mémoire
François Cuvelier
Laboratoire d'Analyse Géométrie et Applications
Institut Galilée
Université Paris XIII.
16 novembre 2012
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 1 / 13
2. Plan
1 Introduction
2 Fonction malloc()
3 Fonction calloc()
4 Fonction free()
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 2 / 13
3. Introduction
L'allocation dynamique de mémoire permet en cours d'éxécution d'un
programme de réserver un espace mémoire dont la taille n'est pas
nécessairement connue lors de la compilation.
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 3 / 13
4. Introduction
L'allocation dynamique de mémoire permet en cours d'éxécution d'un
programme de réserver un espace mémoire dont la taille n'est pas
nécessairement connue lors de la compilation.
L'allocation dynamique est réalisée par les fonctions malloc() et calloc ().
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 3 / 13
5. Plan
1 Introduction
2 Fonction malloc()
3 Fonction calloc()
4 Fonction free()
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 4 / 13
6. Fonction malloc()
Prototype
void * malloc ( size_t t );
Description
permet de réserver (si possible) un bloc de taille t (en bytes) et renvoie
un pointeur vers l'adresse du bloc alloué s'il y a susament de
mémoire disponible
la valeur NULL en cas d'erreur.
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 5 / 13
7. Fonction malloc() : Exemple 1
Code
1 int ∗ pi ,n;
2 printf (n= ); scanf (%d,n);
3 pi= ( int ∗)malloc(n∗ sizeof( int ));
Description
La fonction malloc alloue (si possible) un bloc de n int et retourne
l'adresse (non typée, void ∗) du bloc.
On eectue alors une conversion de type : void ∗ vers int ∗.
Attention, aucun test si la fonction retourne la valeur NULL.
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 6 / 13
8. Fonction malloc() : Exemple 2
Code
1 pi= ( int ∗)malloc(n∗ sizeof( int ));
2 if ( pi == NULL ){
3 fprintf ( stderr ,
4 Allocation impossible : fichier %s, ligne %dn ,
5 __FILE__,__LINE__−2);
6 exit (EXIT_FAILURE);
7 }
Description
En cas d'erreur d'allocation, le programme ache un message d'erreur et
se termine!
On utilise ici des constantes du préprocesseur :
__FILE__ : ache le nom du chier source.
__LINE__ : ache le numéro de la ligne atteinte
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 7 / 13
9. Plan
1 Introduction
2 Fonction malloc()
3 Fonction calloc()
4 Fonction free()
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 8 / 13
10. Fonction calloc ()
Prototype
void * calloc(size_t n, size_t t);
Description
permet de réserver (si possible) n blocs de taille t (en bytes) et renvoie
un pointeur vers l'adresse du bloc alloué s'il y a susament de
mémoire disponible
la valeur NULL en cas d'erreur.
les blocs alloués sont tous mis à 0 (contrairement à la fonction
malloc() où la mémoire est non initialisée : donc aléatoire)
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 9 / 13
11. Fonction calloc () : Exemple 1
Code
1 int ∗ pi ,n;
2 printf (n= ); scanf (%d,n);
3 pi= ( int ∗) calloc (n, sizeof( int ));
Description
La fonction calloc alloue (si possible) un bloc de n int et retourne l'adresse
(non typée, void ∗) du bloc.
On eectue alors une conversion de type : void ∗ vers int ∗.
De plus, chaque bloc contient la valeur 0.
Attention, aucun test si la fonction retourne la valeur NULL.
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 10 / 13
12. Plan
1 Introduction
2 Fonction malloc()
3 Fonction calloc()
4 Fonction free()
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 11 / 13
13. Fonction free ()
Prototype
void free(void *);
Description
permet de libérer de la mémoire préalablement allouée par les fonctions
malloc() ou calloc ().
En paramètre, on passe l'adresse du bloc mémoire à désallouer.
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 12 / 13
14. Fonction free () - Exemple
Code
1 #include stdlib .h
2 #include stdio .h
3
4 void main(){
5 int ∗ pi ,n, i ;
6 printf (n= ); scanf (%d,n);
7 pi= ( int ∗)malloc(n∗ sizeof( int ));
8 if ( pi == NULL ){
9 fprintf ( stderr ,
10 Allocation impossible : fichier %s, ligne %dn ,
11 __FILE__,__LINE__−4);
12 exit (EXIT_FAILURE);
13 }
14 for ( i=0;in; i++) pi [ i]=2∗ i ;
15 for ( i=0;in; i++) printf (pi[%d]=%dn ,i , pi [ i ]);
16 free ( pi );
17 }
Cuvelier F. (FSIMACS) Langage C 16 novembre 2012 13 / 13