Petit rappel sur les pointeurs
|
|
|
- Sylvie Beauregard
- il y a 9 ans
- Total affichages :
Transcription
1 Petit rappel sur les pointeurs Version 1 29 mai 2009 Axel Berardino <[email protected]>
2 i Table des matières 1 Préface Introduction Déclaration de type pointeur simple Exemple récapitulatif commenté: Les erreurs classiques Déclaration de type pointeur plus évoluée Le pointeur neutre Les pointeurs sur fonctions/procédures Les listes chainées Manipulation des listes chainées: Accéder à l élement n: Insertion d élément Suppression d élément
3 Chapitre 1: Préface 1 1 Préface Auteur : Axel BERARDINO <[email protected]>
4 Chapitre 2: Introduction 2 2 Introduction Les pointeurs sont très utiles. Ils permettent d accélerer ou d alléger certains processus. Comme vous le savez, à chaque fois que vous déclarez une variable, une taille est automatiquement allouée dans la mémoire. Chaque variable peut être considérée comme une "boite" qui contient l information que l on a stocké. Ces petites "boites" sont placées quelquepart dans la mémoire, elles ont une adresses. Le principe du pointeur c est de gérer soit même la mémoire, au lieu de laisser le compilateur le faire. Lorsque vous déclariez votre variable, vous mettiez votre information dans une "boite" sans vous souciez ou elle se trouvait dans la mémoire. Cette fois, vous allez gérer son emplacement et sa taille. Un pointeur est une variable spéciale qui contient une adresse. On pourrait comparer un pointeur à un raccourci. Imaginez que vous ayez une liste de 40 divx, faisant 1 go chacun, que vous voudrier trier. La première solution consiste à trier naturellement ces 40 fichiers, ce qui mettrait un temps fou. La deuxième serait de créer un raccourci pour chaque divx, et de trier, non pas les divx directement, mais les raccourcis de ceux-ci. Ainsi en très peu de temps, on a trié notre liste (même si on n a pas trié directement la liste, le résultat est le même). On pourrait donc voir les pointeurs comme des "flèches" qui pointent sur des "boites".
5 Chapitre 3: Déclaration de type pointeur simple. 3 3 Déclaration de type pointeur simple. Pour déclarer un pointeur rien de plus simple. Il suffit de mettre une étoile après le type pointé. int* a; mon_type* b; etc... Ce type de pointeur ne peux pointer que devant le type qui lui est associé. Lorsque vous allez créer votre pointeur, celui-ci ne pointera sur rien. Vous devez donc lui dire sur quoi pointer. Exemple: int main(void) int* chiffre1; int i; } i = 12; chiffre1 = NULL; // ne pointe sur rien chiffre1 = &i; printf("%i\n", *chiffre1); // Affichera 12 printf("%i\n", i); // Affichera 12 Analysons l exemple précédent. On commence par déclarer un pointeur sur entier (chiffre1) et un entier (i). Puis on attribue la valeur de 12 à i. chiffre1 ne pointe au début sur rien (NULL). Puis on récupere l adresse de i, grâce à l opérateur "&". Maintenant notre "flèche" chiffre1 pointe sur la "boite" i. Enfin, on aimerait se servir du joli pointeur que l on a crée, alors on va afficher la valeur de i, indirectement. On déréférence le pointeur, c est à dire que le pointeur va se comporter comme s il était la "boite" pointée (avec le signe "*"). A présent, on sait utiliser les pointeurs comme raccourci. Maintenant, on va voir comment allouer de la mémoire, c est à dire se servir des pointeurs sans utiliser de variables déjà existantes. Vous allez me dire, s il n y a pas de variable à pointer, comment faire? Et bien c est simple, on peut utiliser un pointeur pour créer une "boite" dans la mémoire. Pour allouer de la mémoire plusieurs solutions. On utilise la fonction "malloc". Vous devez alors indiquer la taille de la "boite". Exemple: chiffre1 = malloc(50); Voila vous venez de créer un espace pour mettre une valeur. Maintenant, on sait que toute les variables ne prennent pas toute la même place en mémoire. On va donc allouer de la mémoire en fonction de la taille de la variable. Exemple: chiffre1 = malloc(sizeof (int)); Voila, on est sur d occuper exactement la taille nécessaire. Notre "boite" est crée. Il ne reste qu à la remplir. Pour cela, on déréference le pointeur, et on fait comme si le pointeur était une variable normale. Exemple: *chiffre1 = 52; Il reste une notion importante, si on alloue un espace mémoire, il faut ABSOLUMENT le libérer quand on a finit de s en servir. On utilise pour cela la fonction "free". Exemple: free(chiffre1);
6 Chapitre 4: Exemple récapitulatif commenté: 4 4 Exemple récapitulatif commenté: int main(void) int* chiffre1; float* chiffre2; int i; } chiffre1 = malloc(sizeof (int));// Allocation mémoire chiffre2 = malloc(sizeof (float)); i = 7; *chiffre1 = 5; // On place 5 dans la "boite" que pointe chiffre1 printf("%i\n", *chiffre1);// Affichera 5 *chiffre1 = i; // On place l valeur de i dans la "boite" que pointe chiffre1 printf("%i\n", *chiffre1);// Affichera 7 *chiffre2 = i; // On place l valeur de i dans la "boite" que pointe chiffre2 printf("%i\n", *chiffre2);// Affichera 7 free(chiffre1);// Désallocation mémoire chiffre1 = chiffre2; // On demande a chiffre1 de pointer //sur ce que pointe chiffre2 printf("%i\n", *chiffre1);// Affichera 7 chiffre1 = NULL; free(chiffre1);// Ici, chiffre1 vaut NULL, donc free ne fera rien free(chiffre2);// Désallocation mémoire
7 Chapitre 5: Les erreurs classiques. 5 5 Les erreurs classiques. Il y a certaines erreurs qui reviennent souvent. Par exemple, n essayez jamais de désallouer un pointeur nul. Exemple: int main(void) int* chiffre2; int i; } chiffre2 = malloc(sizeof (int));// Allocation mémoire chiffre2 = NULL;// Ne pointe sur rien i = 7; printf("%i\n", i);// Affichera 7 printf("%i\n", *chiffre2);// PLANTE free(chiffre2);// chiffre2 vaut NULL, donc ne fait rien En passant, lorsque l on a fait un "chiffre2 = NULL;" on a perdu dans la mémoire la "boite" que l on pointait. Comme on a perdu l adresse, on ne pourra plus jamais la retrouver. Une partie de la mémoire sera donc occupée pour rien. (Pas de panique, les "boites" perdues sont détruites au sortir de l application). Deuxieme erreur fréquente, n oubliez pas d allouer avant de manier un pointeur. Exemple: int main(void) int* chiffre2; int i; } i = 7; printf("%i\n", i);// Affichera 7 printf("%i\n", *chiffre2);// PLANTE free(chiffre2);// chiffre2 vaut une valeur aléatoire, Donc ca plante! Maintenant vous allez me dire, oui mais dans ton premier exemple tu n alloues pas. Rappel (1er exemple): int main(void) int* chiffre1; int i; } i = 12; chiffre1 = NULL; // Ne pointe sur rien chiffre1 = &i; printf("%i\n", *chiffre1); // Affichera 12 printf("%i\n", i); // Affichera 12
8 Chapitre 5: Les erreurs classiques. 6 Ce n est pas tout à fait pareil, dans mon premier exemple, je n ai rien à allouer parce que les variables existent déjà. Ici, la variable i existe, je veux stocker dans la "boite" i, je n ai donc pas besoin de créer une nouvelle "boite". Enfin dernière erreur (la plus fréquente), n oubliez pas de désallouer un pointeur. Exemple: int main(void) int* chiffre1 = NULL; int i; } i = 12; chiffre1 = malloc(sizeof (int)); chiffre1 = &i; printf("%i\n", *chiffre1); // Affichera 12 printf("%i\n", i); // Affichera 12 // Ici, un free est manquant! Le pire dans cette erreur, c est que ca ne fait pas planter l application. Mais votre programme "fuira". C est à dire qu il pompera de plus en plus de mémoire pour rien.
9 Chapitre 6: Déclaration de type pointeur plus évoluée. 7 6 Déclaration de type pointeur plus évoluée. On peut bien évidemment pointer sur des structures plus évoluées (Tableau, enregistrement, classe, etc..). Exemple: struct s_list int a; float b; }; struct s_list* p_ma_structure; // Pointeur sur un struct s_list* Créer un tableau de pointeur: int** tab;// Tableau de pointeur pointant sur des entiers Ou même pointer sur un pointeur qui pointe sur un pointeur, etc... int******* ptr; ******ptr = malloc(sizeof (int)); *******ptr = 5; free(******ptr); ATTENTION: ne pas confondre "pointeur sur tableau" et "tableau de pointeur". Un pointeur sur tableau est un pointeur unique qui pointe sur un tableau. Il se déréférence comme ceci: (*tab)[0] Un tableau de pointeur est un tableau qui contient des pointeurs. Il se déréférence comme ceci: *(tab[0]) On peut évidemmnent déclarer un type "Pointeur sur tableau de pointeur". Il se déférence comme ceci: *((*tab)[0])
10 Chapitre 7: Le pointeur neutre. 8 7 Le pointeur neutre. Dernier type de pointeur: le pointeur neutre. Ce type de pointeur, peut pointer sur tout. On le déclare comme ceci: void *ptr; Toutefois, ce type de pointeur ne peut être déréférencé. void* ptr; int i = 5; int* truc; int* tmp; truc = &i; ptr = truc; // Valide *ptr = 5; // Invalide En effet, il faut "caster" ce type. void* ptr; int i = 5; int* truc; int* tmp; truc = &i; ptr = truc; // Valide tmp = ptr; printf("%i\n", *tmp); // Affichera bien 5
11 Chapitre 8: Les pointeurs sur fonctions/procédures. 9 8 Les pointeurs sur fonctions/procédures. On peut pointer aussi sur des fonctions ou des procédures. int (*pfunc)(void);// Pointe sur des fonctions qui ne prennent //rien en paramètre mais retourne un type integer void (*pfunc)(void);// Pointe sur des procédure qui ne prennent // rien en paramètre int (*pfunc)(char* s);// Pointe sur des fonctions qui prennent une // chaine en paramètre et retourne un type integer void (*pfunc)(int a);// Pointe sur des procedure qui prennent un // entier en parametre Pour utiliser nos procedures pointées, il faut faire ceci: int (*pfunc)(char* s); int dbl_strlen(char* s) return (2 * strlen(s)); } int main(void) pfunc my_func; } my_func = strlen; my_func("coucou"); // Renvoie 6 my_func = dbl_strlen; my_func("test"); // Renvoie 8 return (0); Cela permet aussi d avoir indirectement un tableau de procédures ou de fonctions. pfunc* tab_func;
12 Chapitre 9: Les listes chainées Les listes chainées. Enfin, je terminerai sur les listes chainées. Une liste chainée est comparable à un tableau. Elle se construit avec un enregistrement. Le principe est celui ci: chaque "case" de ce "tableau" contient l adresse de la prochaine "case". D une certaine manière cela revient à gérer soit même son tableau. On la déclare comme ceci: typedef struct s_list int val; // Ici on prend un int, mais ca aurait pu // ^etre n importe quoi d autre struct s_list* suivant; } s_list; Pour savoir quand on atteint la fin du tableau on regarde si la variable "suivant" vaut "NULL". Il existe des variantes comme les listes doublement chainées (chaque case possède l adresse de la case suivante et de la case précédente), les listes circulaires (la dernière case pointe sur la première), et les listes circulaires doublement chainées.
13 Chapitre 10: Manipulation des listes chainées: Manipulation des listes chainées: 10.1 Accéder à l élement n: Pour lire un élément, il suffit de le déréférencer. Mais avant il faut déjà placer le pointeur dessus. 1er élément: pointeur->val 2ème élément: pointeur->suivant->val 3ème élément: pointeur->suivant->suivant->val Vous imaginez bien que si la liste comporte 120 éléments, on ne va pas écrire "suivant->suivant...". On va donc utiliser une boucle. Exemple: for (i = 0; i < 3; i++) pointeur = pointeur->suivant; // Accès 3ème élément pointeur->val; Ainsi on atteint le 3ème élément du tableau, en contrepartie, on perdu toute les informations précédentes (on ne peut plus retourner en arrière). ATTENTION: le "danger" avec les listes chainées c est de perdre la "tête", c est à dire perdre les précédents éléments de la liste. Cela arrive fréquemment. Pour parcourir votre liste chainée, créez un pointeur temporaire. Il faut donc toujours l écrire comme ceci: Exemple: s_list* tmppointeur; tmppointeur = pointeur; for (i = 0; i < 3; i++) tmppointeur = tmppointeur->suivant; // Accès 3ème élément
14 Chapitre 10: Manipulation des listes chainées: 12 tmppointeur->val; Là, c est parfait, on accède au 3ème élément, sans perdre des informations Insertion d élément Pour insérer un élément le principe est le suivant: On créer une "boite" pointée par un pointeur temporaire. On fait pointer notre "boite" sur la "boite" suivante de la "boite" précédente. On fait maintenant pointer la "boite" précédente sur notre "boite". Et voila, on a ajouté notre élément. Vous comprenez maintenant l utilité des listes chainées par rapport au tableau. Dans un tableau il aurait fallu décaler certains éléments vers la droite, en liste chainée, c est immédiat. Exemple d ajout en 3ème position: s_list* tmppointeur; s_list* pointeurcreation; pointeurcreation = malloc(sizeof (s_list)); tmppointeur = pointeur; // accès 2ème élément for (i = 0; i < 2; i++) tmppointeur = tmppointeur->suivant; // On fait pointer notre "boite" sur la "boite" suivante de la "boite" précédente. pointeurcreation->suivant = tmppointeur->suivant; // On fait maintenant pointer la "boite" précédente sur notre "boite".
15 Chapitre 10: Manipulation des listes chainées: 13 tmppointeur->suivant = pointeurcreation; 10.3 Suppression d élément Pour supprimer un élément le principe est proche de l insertion d élément. On se place sur l élément précédent l élément à supprimer. Puis on pose un pointeur temporaire sur cet élément. On fait pointer l élément précédent sur l élément suivant de l élément à suppprimer. Enfin, on détruit l élément à supprimer. Exemple de suppression de la 3ème position: s_list* tmppointeur; s_list* supprpointeur; tmppointeur = pointeur; // On se place sur l élément précédent l élément à supprimer. for (i = 0; i < 2; i++) tmppointeur = tmppointeur->suivant; // Puis on pose un pointeur temporaire sur cet élément. supprpointeur = tmppointeur->suivant; // On fait pointer l élément précédent sur l élément suivant l élément à suppprimer. tmppointeur->suivant = supprpointeur->suivant; // Enfin, on détruit l élément à supprimer.
16 Chapitre 10: Manipulation des listes chainées: 14 free(supprpointeur);
17 Chapitre 11: Conclusion Conclusion Les pointeurs sont un point difficile du C, seul une pratique régulière de ce concept vous permettra de réellement vous familiariser avec cette notion.
Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation
Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des
Conventions d écriture et outils de mise au point
Logiciel de base Première année par alternance Responsable : Christophe Rippert [email protected] Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette
Les arbres binaires de recherche
Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s
Bases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
Analyse de sécurité de logiciels système par typage statique
Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction
Cours d initiation à la programmation en C++ Johann Cuenin
Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................
INITIATION AU LANGAGE C SUR PIC DE MICROSHIP
COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par
Travaux Dirigés n 1 : chaînes de caractères
UE LE315 Travaux Dirigés n 1 : chaînes de caractères Exercice 1 Ecrire une fonction int nombre_caract(char *chaîne) qui retourne la taille d une chaîne de caractères. Exercice 2 Ecrire la fonction void
Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)
Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être
Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs
Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales
Chap III : Les tableaux
Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction
Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
Les structures. Chapitre 3
Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre
1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.
1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this
03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing
3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps
Poker. A rendre pour le 25 avril
Poker A rendre pour le 25 avril 0 Avant propos 0.1 Notation Les parties sans * sont obligatoires (ne rendez pas un projet qui ne contient pas toutes les fonctions sans *). Celles avec (*) sont moins faciles
Algorithmique, Structures de données et langage C
UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure
Le prototype de la fonction main()
Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski [email protected]
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski [email protected] Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université
Cours de Programmation Impérative: Zones de mémoires et pointeurs
Cours de Programmation Impérative: Zones de mémoires et pointeurs Julien David A101 - [email protected] Julien David (A101 - [email protected]) 1 / 1 Z`o n`e s `d`e m`é m`o i r`e Julien
Utilisation d objets : String et ArrayList
Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons
INITIATION A LA PROGRAMMATION
2004-2005 Université Paris Dauphine IUP Génie Mathématique et Informatique INITIATION A LA PROGRAMMATION PROCEDURALE, A L'ALGORITHMIQUE ET AUX STRUCTURES DE DONNEES PAR LE LANGAGE C Maude Manouvrier La
STAGE IREM 0- Premiers pas en Python
Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer
Chapitre 1 : La gestion dynamique de la mémoire
Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement
TD3: tableaux avancées, première classe et chaînes
TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première
Programme Compte bancaire (code)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; Programme Compte bancaire (code) namespace compte_bancaire /// Classe Program public
Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004
Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation
Java Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
Les structures de données. Rajae El Ouazzani
Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l
Le langage C. Séance n 4
Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de
Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles [email protected]
Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles [email protected] Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables
PROJET ALGORITHMIQUE ET PROGRAMMATION II
PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du
NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle
NIMEGUE V3 Fiche technique 3.07 : Sauvegarde / Restauration manuelle Version au 2 mai 2011 Toute donnée mémorisée sur un ordinateur, quelque soit le support, peut-être supprimée/effacée suite à un dysfonctionnement
Programmation Orientée Objet Java
Programmation Orientée Objet Java Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 12 novembre 2014 Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre
GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger
GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger SOMMAIRE GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger o o o o o o o o o o o o
Programmation C++ (débutant)/instructions for, while et do...while
Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de
Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte
Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes
Arguments d un programme
Arguments d un programme L2 SPI, Bruno Jacob 1 Arguments Quand on appelle un programme dans un environnement UNIX ou MS- DOS, on compose une ligne de commandes de la forme : nom-du-programme argument1
as Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
Le langage C. Introduction, guide de reference
Le langage C Introduction, guide de reference Ce document est une présentation du langage de programmation C, de sa syntaxe et de ses spécificités. Il est destiné essentiellement à servir de mémo-guide
Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin 2010. Algorithmique 1
Algorithmique 1 Durée : 2h Machines électroniques interdites Tous documents papiers autorisés Il est conseillé de traiter les deux parties dans l ordre du sujet. Veuillez respecter les notations introduites
Structure fonctionnelle d un SGBD
Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert
Examen d informatique première session 2004
Examen d informatique première session 2004 Le chiffre à côté du titre de la question indique le nombre de points sur 40. I) Lentille électrostatique à fente (14) Le problème étudié est à deux dimensions.
Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;
CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe
L exclusion mutuelle distribuée
L exclusion mutuelle distribuée L algorithme de L Amport L algorithme est basé sur 2 concepts : L estampillage des messages La distribution d une file d attente sur l ensemble des sites du système distribué
RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.
S Vous n aimez pas la souris Les raccourcis clavier sont là pour vous faciliter la vie! INTRODUCTION : Vous avez du mal à vous habituer à la manipulation de la souris Des solutions existent : les raccourcis
Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7
Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin
4D v11 SQL Release 5 (11.5) ADDENDUM
ADDENDUM Bienvenue dans la release 5 de 4D v11 SQL. Ce document présente les nouveautés et modifications apportées à cette nouvelle version du programme. Prise en charge de nouvelles plates-formes La release
1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)
1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d
INF111. Initiation à la programmation impérative en C http://ama.liglab.fr/ amini/cours/l1/inf111/ Massih-Reza Amini
Initiation à la programmation impérative en C http://ama.liglab.fr/ amini/cours/l1// Massih-Reza Amini Université Joseph Fourier Laboratoire d Informatique de Grenoble 2/52 Introduction Structures de contrôle
P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )
P r ob lé m a t iq u e d e la g é n é r icit é les versions de Java antérieures à 1.5 permettaient de créer des classes de structures contenant n'importe quels types d'objet : les collections (classes
Premiers Pas en Programmation Objet : les Classes et les Objets
Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.
V- Manipulations de nombres en binaire
1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,
F. Barthélemy. 17 mai 2005
Typage de la généricité en Java F. Barthélemy 17 mai 2005 1 Le shéma général La g én éricit é en Java est un ajout r éalis é sur un langage existant depuis d éjà une dizaine d ann ées, avec des contraintes
MegaStore Manager ... Simulation de gestion d un hypermarché. Manuel du Participant
MegaStore Manager Simulation de gestion d un hypermarché.......... Manuel du Participant 1. Introduction 1.1. La simulation de gestion Vous allez participer à une simulation de gestion. Cette activité
Langage et Concepts de ProgrammationOrientée-Objet 1 / 40
Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne [email protected]
TD/TP PAC - Programmation n 3
Université Paris Sud Licence d informatique/iup-miage2 Année 2004-2005 Auteur : Frédéric Vernier Semaine : 11-16 octobre 2004 Conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html
Définitions. Numéro à préciser. (Durée : )
Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.
Initiation. àl algorithmique et à la programmation. en C
Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,
Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
Chapitre 10. Les interfaces Comparable et Comparator 1
Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],
Présentation du langage et premières fonctions
1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en
Introduction au langage C
Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les
Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter
I. Introduction aux fonctions : les fonctions standards
Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons
ALGORITHMIQUE ET PROGRAMMATION En C
Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2
ACCÈS À MOODLE PAR INTERNET PROCÉDURE POUR LES ÉTUDIANTES ET LES ÉTUDIANTS POUR SE DOTER D UN NOUVEAU MOT DE PASSE
ACCÈS À MOODLE PAR INTERNET PROCÉDURE POUR LES ÉTUDIANTES ET LES ÉTUDIANTS POUR SE DOTER D UN NOUVEAU MOT DE PASSE 1) Dans votre navigateur web (idéalement Firefox), tapez l adresse de la page d accueil
Polymorphisme, la classe Object, les package et la visibilité en Java... 1
Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....
Les chaînes de caractères
Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files
Chapitre 7 (suite) Listes particulières Pile : liste particulière T. A. D. pile insertion et suppression au sommet de la pile extraction Files queue Listes doublement chaînées insertion file : liste particulière
Claude Delannoy. 3 e édition C++
Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.
Langage C. Patrick Corde. [email protected]. 22 juin 2015. Patrick Corde ( [email protected] ) Langage C 22 juin 2015 1 / 289
Langage C Patrick Corde [email protected] 22 juin 2015 Patrick Corde ( [email protected] ) Langage C 22 juin 2015 1 / 289 Table des matières I 1 Présentation du langage C Historique Intérêts
Algorithmique et Programmation, IMA
Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions
Traduction des Langages : Le Compilateur Micro Java
BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant
Programmation Objet - Cours II
Programmation Objet - Cours II - Exercices - Page 1 Programmation Objet - Cours II Exercices Auteur : E.Thirion - Dernière mise à jour : 05/07/2015 Les exercices suivants sont en majorité des projets à
1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : [email protected] Page personnelle : http://www.lri.fr/ hivert
1 de 46 Algorithmique Trouver et Trier Florent Hivert Mél : [email protected] Page personnelle : http://www.lri.fr/ hivert 2 de 46 Algorithmes et structures de données La plupart des bons algorithmes
Programmation par composants (1/3) Programmation par composants (2/3)
Programmation par composants (1/3) La programmation par composant vise le développement de logiciel par aggrégation de briques logicielles existantes est indépendante de la POO La programmation par composant
Cours de C. Allocation dynamique. Sébastien Paumier
Cours de C Allocation dynamique Sébastien Paumier [email protected] Illustrations provenant du site http://tux.crystalxp.net/ 1 Les pointeurs pointeur=adresse mémoire+type type* nom; nom pointe sur une
Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets
Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper
TP, première séquence d exercices.
TP, première séquence d exercices. Benoît Valiron [email protected] 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la
Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan
Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre
Chapitre 2. Classes et objets
Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons
LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. [email protected] www.cril.univ-artois.fr/~jabbour
LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour [email protected] www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections
Examen Médian - 1 heure 30
NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une
MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année
2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par
Programmation C. J.-F. Lalande. 15 novembre 2012
Programmation C J.-F. Lalande novembre 0 Ce cours est mis à disposition par Jean-François Lalande selon les termes de la licence Creative Commons Attribution - Pas d Utilisation Commerciale - Partage à
Package Java.util Classe générique
Package Java.util Classe générique 1 Classe Vector La taille est dynamique: dès qu un tableau vectoriel est plein, sa taille est doublée, triplée, etc. automatiquement Les cases sont de type Object add(object
Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test
Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite
Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java
Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique
Cours 1: Java et les objets
Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/
Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2
Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................
Exercices sur les interfaces
Exercices sur les interfaces Fabrice Rossi 18 octobre 1999 1 Le type Object 1.1 Manipulations élémentaires Exercice 1.1 : Indiquer l affichage produit par le programme suivant : public class UpCast1 {
Cours 1 : Qu est-ce que la programmation?
1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas [email protected] Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre
Solutions du chapitre 4
Solutions du chapitre 4 Structures de contrôle: première partie 4.9 Identifiez et corrigez les erreurs (il peut y en avoir plus d une par segment de code) de chacune des proposition suivantes: a) if (
Généralités sur le Langage Java et éléments syntaxiques.
Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...
Guide d utilisation pour W.access - Client
1. Inscription en ligne : Guide d utilisation pour W.access - Client Aller à l adresse suivante : http://www.micasf.com; Cliquer sur «Zone Clients» en haut à droite de la page, ensuite sur «OUVREZ VOTRE
MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C
Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...
