IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Recherche tuto gtk sans utilisé de liste chainé


Sujet :

GTK+ avec C & C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Points : 23
    Points
    23
    Par défaut Recherche tuto gtk sans utilisé de liste chainé
    bonjour,
    Je suis se tutorial:http://gtk.developpez.com/cours/gtk2/index.php
    Sa fait longtemps que j'esaye d'apprendre la gtk,a chaque fois je bloque sur les listes chainé,y aurré t'"il un moyun de continuer a apprendre la gtk sens utiliser de liste chainé?
    j'ai essayé d'aller directement au gtk entry en sautent les liste chaines,mais il s'en serve dans l'explication de fonctionement des gtk entry.

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Bonjour,

    les listes chaînées sont avec les tableaux une structure de stockage de données très utilisée. Ça fait partie du B-A BA en C, ce n'est pas spécifique à la GLib et GTK+.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  3. #3
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Un bon truc pour comprendre, construis-en une. C'est la méthode que je me suis imposée (il y a longtemps maintenant ). Ca m'a permis d'en comprendre tous les rouages.

  4. #4
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Et pour comprendre les pointeurs, qui sont la base des listes chaînées, l'incontournable Binky est là.

    [ame="http://video.yahoo.com/watch/409141/2387613"]Pointer Fun with Binky on Yahoo! Video[/ame]
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Points : 23
    Points
    23
    Par défaut
    les pointeurs,c'est pas se qui m'a causé le plus de difficulté,le plus dur a comprendre sété les structures,mais mintenan je comprend.
    Pris individuelment j'arrive a comprendre,mais il ne s'agis pas que de comprendre.
    le probleme des liste chainé c'est qu'on utilise tout a la fois,alors je mélange tout.
    Mais c'est déja bien d'être arrivé jusque la(sa seré con d'arrété) car je suis dyslexique,alors je suis pas senssé faire de la programmation.
    J'arrive a compensser et je fait des copier coller pour l'ortographe des fonctions(et d'autre truck) mais c'est ma mémoire de travaille qui pose probleme.
    J'ai aussi tendance a mettre tout dans le désordre,le coté programmation orienté objet de gtk m'avé aussi causé des probleme a se niveau la mais j'ai reussi a m'adapter avec du mal.
    Mais pour les listes chainées j'ai tout éssayé mais c'est tros dur,a la fois faut que je me consentre sur l'ordre et a la fois sur les infos que je doit garder en mémoire.

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Alors pour faire plus simple, il existe 2 types de listes chaînées:
    1. simplement chainée,
    2. doublement chaînée.


    Les listes simplement chaînées :
    Chaque élément de la liste doit avoir un pointeur sur la donnée sauvée et un pointeur sur l'emplacement de l'élément suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    element1
    data
    next     ------>    element2
                            data
                            next       -------->     element3
                                                         data
                                                         next
    Cette forme de liste est la plus simple. L'inconvénient majeur est que l'on doit la parcourir de façon séquentielle (élément par élément) pour extraire l'élément X. Elle a l'avantage de ne pas être très gourmande en mémoire.

    Les listes doublement chaînées:
    Elles ont une forme presque identiques aux listes simplement chaînées. Cependant on ajoute une information à chaque élément. Cette fois-ci on dispose du pointeur sur l'élément précédent aussi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    element1
    data
    previous
    next     ------>    element2
      ^                    data
       |---------------- previous
                            next       -------->     element3
                              ^                         data
                               |---------------------previous
                                                         next
    Ainsi, à partir de n'importe quel élément on peut parcourir la liste dans un sens ou dans un autre. L'inconvénient est son occupation mémoire plus importante.

    La structure:
    On peut donc remarquer que "element" est une structure. On pourrait l'écrire ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct _element
    {
      struct _element previous;
      struct _element next;
      gpointer data;
    };
    Il suffit d'enlever la déclaration "previous" pour avoir la structure d'une liste simplement chaînée.

    Les fonctions de la Glib:
    Cette bibliothèque met à notre disposition toutes les fonctions nécessaires à l'utilisation de telles chaînes. Il n'est donc pas nécessaire de déclarer la structure. Seule la donnée à insérer est nécessaire.

    Pour faire souple, les fonctions insèrent une donnée non typée. Comme ca on peut y insérer n'importe quoi. La seule contrainte est que la donnée doit être un pointeur sur une donnée.

    Exemple:
    Je désire sauver une liste de nombres allant de 0 à 10 dans une liste doublement chaînée. Pour les données soit j'alloue dynamiquement chaque élément dans le tas avec malloc, soit je déclare un tableau dans la pile.
    Pour l'éxemple j'ai pris la deuxième solution, pour simplifier le code. Mais attention à ce genre d'utilisation. Il faut toujours être certain que les données existent toujours lors de leur utilisation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #include <gtk/gtk.h>
     
    int main(int argc, char *argv[])
    {
    	guint nombre[] ={0,1,2,3,4,5,6,7,8,9};
    	GList *list=NULL;
    	gint i=0;
     
    	for (i=0; i< 10; i++)
    	{
    		/* Insertion de chaque élément dans la liste. A chaque insertion le
    		 * pointeur "list" est initialisé sur le premier élément. Je passe ici sur
    		 * les performances d'utilisation de "g_list_prepend();" par rapport à la
    		 * fonction présente. Ce n'est pas le but de l'exemple.
    		 */
    		list=g_list_append(list, &nombre[i]);
    	}
     
    	/* Lecture de la liste. Ici je déclare un pointeur temporaire sur la liste
    	 * pour ne pas perdre le premier pointeur de la liste.
    	 */
    	GList *TmpList=list;
    	guint *element=NULL;
    	while (TmpList)
    	{
    		element=(guint*)TmpList->data;
    		g_print("élément : %d\n", *element);
    		/* On passe à l'élément suivant. Si on est sur le dernier élément alors
    		 * le pointeur suivant vaut NULL. Ce qui nous permet de sortir de la boucle
    		 * while();*/
    		TmpList=g_list_next(TmpList);
    	}
     
    	return 0;
    }
    J'ai essayé de faire des phrases les plus courtes possibles. Regarde aussi dans le code exemple il y a des commentaires.
    En espérant que cela t'aide.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Points : 23
    Points
    23
    Par défaut
    je comprend un peu mieu le principe des listes chaine avec cette explication sa m'a permis d'avansser un peu plus sur le tutoriel C du site.
    Mais,j'ai encore beaucoup de mal,car y s'agi pas que de comprendre,.
    J'ai tendance a tout mettre dans le désordre,pour moi suivant et precedent,sa se resemble,je sé se que c'est mais j'ai un petit moment d'hésitation,et comme je doi aussi reflechir sur les structure et les pointeur a la fois,c'est pas évident.
    Mai je réaseyeré demain apres si sa va pas j'abandonne,j'ai déja passé une dizaine d'heur a esayé de tout décortiquer.
    Aisse que c'est vraiment indispensable les liste chainé avec la gtk?
    Si non sa seré pas possible d'avoir une petite explcation de comment fonctionne les gtk entry sans utilisé de liste chainée?

  8. #8
    Membre actif Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Points : 221
    Points
    221
    Par défaut
    Ben moi, je m'étais dit la même chose, quand j'avais regardé le tuto. J'avais donc lu le tutoriels C, mais au final, les listes chainées, je ne m'en suis jamais servi, en tous cas, je n'en ai jamais eu l'utilité. (à part pour les GtkButtonRadio)
    J'ai relu les tutos sur les listes chainées récemment, et ça m'a paru plutôt facile à comprendre.

    Puis si vraiment t'as besoin des GList, tu verras que GLib fait tout le boulot à ta place, tu as tout plein de fonctions pour manipuler les listes:
    http://library.gnome.org/devel/glib/...ked-Lists.html
    http://library.gnome.org/devel/glib/...ked-Lists.html

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Points : 23
    Points
    23
    Par défaut
    C'est bon j'ai enfin reussi a m'en sortir,j'arrive pas a finir le turorial du site liste chainées,mais sa m'a permis de comprendre comme avec la gtk tout est simplifier c'est bon.
    Pour les 2 derniers liens c'est en anglais donc je peux pas comprendre,mais j'ai compris sufisament de chose pour continuer le tutorial gtk.

  10. #10
    Membre actif Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Points : 221
    Points
    221
    Par défaut
    Pour les 2 derniers liens c'est en anglais donc je peux pas comprendre,mais j'ai compris sufisament de chose pour continuer le tutorial gtk.
    Bah, c'est de l'anglais technique, ça a rien avoir. C'est très facile à comprendre. Perso, je suis en terminale, je tourne autour de 7-8 de myenne en anglais, et j'ai aucun problème pour conprendre la doc Gtk+

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Points : 23
    Points
    23
    Par défaut
    Sa dépend pour qui,même l'anglais de base j'ai du mal,mais c'est par se que je suis dyslexique.
    Mais sinon ya les logiciels de traduction automatique,mais c'est pas parfait et les liste chainées mon assé dégouté comme sa,j'en sé sufisament le reste je m'en fou mintenant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Liste chainée triée sans insertion de doublon
    Par Bogs dans le forum Débuter
    Réponses: 1
    Dernier message: 22/03/2009, 18h50
  2. fonction de recherche dans une liste chainée
    Par seifvai dans le forum C
    Réponses: 10
    Dernier message: 23/12/2007, 10h35
  3. Recherche des exercices pour les listes chainée
    Par dot-_-net dans le forum C
    Réponses: 1
    Dernier message: 15/12/2007, 18h14
  4. Utilisation de liste - recherche tutos
    Par joker vb dans le forum IHM
    Réponses: 5
    Dernier message: 20/02/2007, 01h53
  5. Réponses: 2
    Dernier message: 10/10/2005, 02h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo