Débutant en C...

Débutant en C... - Programmation

Marsh Posté le 01-03-2001 à 17:07:31    

Vous foutez pas de ma gueule, mais je comprends vraiement pas l'utilité des pointeurs, à part emmer... les pauvres petits étudiants. :-)
Notre prof veut absolument que l'on utilisent les pointeurs alors que de simples variables toutes bêtes suffiraient.
Si vous avez de bons liens, n'hésitez pas.
Merci

Reply

Marsh Posté le 01-03-2001 à 17:07:31   

Reply

Marsh Posté le 01-03-2001 à 17:14:58    

Les pointeurs tous les langages en ont (même s'ils ne sont pas aussi visibles qu'en C) et les microporcesseurs ont des fonction spécialement prévues pour les pointeurs.
 
En gros tu n'a pas bien compris les grands principes de la programmation. Donc le conseil que je te donne c'est de faire le plus possibles de programmes et petit à petit tu comprendra.  
 
Par example amuse toi à faire une fonction qui inverse le contenu de 2 variables en C.

Reply

Marsh Posté le 01-03-2001 à 17:52:46    

C'est droit le genre d'exercices que nous donnent notre prof.
Bon faut dire que depuis qu'il a commencé à parler des pointeurs, la moitié des élèves ont lachés(tout des électroniciens).
Bon on va continuer a faire plein d'exercices.
 
Merci

Reply

Marsh Posté le 01-03-2001 à 17:56:12    

Pourtant les pointeurs, c'est très basique, dans le sens proche du fonctionnement du CPU et de la prog assembleur.
Ca aurait dû plaire aux électronicien.

Reply

Marsh Posté le 01-03-2001 à 18:05:01    

Le pointeur est indispensable car il permet de stocker l'adresse d'un bloc memoire .
 
Par exemple , la fonction malloc alloue une zone de memoire et le retour de la fonction contient l'adresse du debut de cette zone de memoire. Tu ne pourrais pas manipuler cette memoire allouée si tu n'avais pas les pointeurs.
 
Moi aussi quand j'ai commencé à programmer ( c'etait quand deja ? ), je ne comprenais pas a quoi servait les pointeurs, mais a force de programmer , je me suis rendu compte de leur utilité ( ils sont meme indispensables ).

Reply

Marsh Posté le 01-03-2001 à 19:17:56    

On peut aussi avoir des pointeurs
caches comme en java.
Tout depend de savoir quel degre d'abstraction
on recherche.  
Sinon si on veut devenir programmeur (professionnel)
il est bon tout de meme de savoir ce qu'est un pointeur..
 
Legreg

Reply

Marsh Posté le 01-03-2001 à 20:36:21    

ca permet aussi d'optimiser tes programmes
 
au lieu de faire passer une variable de 100 octets par exemple tu passes son adresse (4 octets) ... tu vois l'interet ???
de plus, bcp de fonction ne sont exploitable que par les pointeurs .. ca te permet un gain de temps important mais par contre ca fait plus mal à la tete :fou:

Reply

Marsh Posté le 01-03-2001 à 23:00:25    

voici une comparaison que j'aime bien :
 
"Manipuler les pointeurs, c'est un peu comme jouer avec le feu. Le feu est sans doute l'outil le plus important de l'homme.. utilisé avec précaution, le feu est considérablement utile; mais quel désastre s'il n'est plus contrôlé ."
 
elle est tirée d'un bouquin de programmation séquentielle en Ada 95

Reply

Marsh Posté le 01-03-2001 à 23:27:13    

nawbacan> Ada95 ? Ca ne m'étonne pas ! :D
Tout à fait l'esprit de ce langage : disposer de tous les outils performants connus, pour n'avoir à utiliser les plus puissants (et les plus dangereux donc) que quand on en a vraiment besoin.
 
Jacouille> Je te comprends parfaitement. Moi-même, j'ai mis un certain temps avant de comprendre l'intérêt des pointeurs (mais j'apprenais par moi-même à l'époque, je ne faisais pas encore d'études en informatique). C'est vrai, quelle est l'utilité d'un pointeur sur entier quand un simple entier suffit ? En fait, les pointeurs commencent à être intéressants dans le cas suivant. Supposons que l'on définisse la structure suvante:
 
   typedef struct _Noeud {
      int            info;
      struct _Noeud  suivant;
   } Noeud;
 
et puis la fonction:
 
   Noeud* nouveau_noeud(int info)
   {
       Noeud*  noeud = (Noeud*) malloc(sizeof(Noeud));
 
       noeud->info    = info;
       noeud->suivant = NULL;
 
       return noeud;
    }
 
La fonction nouveau_noeud() permet de créer facilement un... nouveau noeud, justement.
 
Et bien là où ça devient intéressant, c'est quand tu réalises qu'avec cette structure, tu peux attacher plein de "noeuds" les uns aux autres, "à la queue-leu-leu" (en écrivant noeud1->suivant = noeud2;".
 
Certes, un seul noeud revient à un entier, mais à un entier auquel tu peux attacher un autre entier, auquel lui-même, tu peux attacher encore un troisième entier, etc.
 
Bref, c'est un peu comme un tableau d'entiers, mais dont la taille varierait selon tes besoins... et quasiment sans aucune limite supérieure (en fait, globalement, la limite, c'est toute la mémoire disponible dans ta machine... ce qui fait un sacré paquet de noeuds !).
 
La structure de données que j'ai décrite ci-dessus est la structure dite de "Liste". C'est la plus simple structure algorithmique requérant des pointeurs, et une fois qu'on l'a comprise, on peut attaquer des structures de données (qui requièrent aussi des pointeurs) plus complexes -- mais toujours aussi utiles -- comme les files d'attente, les arbres (binaires ou autres), les graphes, ....
 
Donc une fois que tu as compris ça, le reste devrait venir plus facilement.
 
Quand aux autres raisons sur l'utilité des pointeurs -- genre c'est permet de faire des programmes plus optimisés -- tu peux les oublier, au moins pour le moment. La programmation est suffisamment compliquée comme ça pour n'utiliser les pointeurs que quand il y en a vraiment besoin, c'est-à-dire quand l'algorithmique elle-même y fait appel (ceci dit, savoir utiliser les pointeurs quand on en a besoin nécessite de savoir les utiliser... tout court !).
 
De toute façon, dans les langages un minimum évolués, le compilateur (s'il est un tant soit peu intelligent) fera ce qu'il faut pour rendre ton code optimisé, et mettra des pointeurs dans le code généré quand il en faut.

 

--Message édité par BifaceMcLeOD--

Reply

Marsh Posté le 01-03-2001 à 23:31:40    

ca sent les arbres ca ...

Reply

Marsh Posté le 01-03-2001 à 23:31:40   

Reply

Marsh Posté le 01-03-2001 à 23:52:24    

Merci beaucoup pour ces explications.
C'est difficile, car je n'ai jamais touché au C. J'avais fais un peu de Pascal en apprentissage, mais que les bases.
Au fait, nous ne verrons les structures qu'après les vacances(c'est à dire la semaine prochaine). Là on en est aux tableaux. Je vois qu'il me reste quelques bonnes années avant de devenir un "pro" de la programmation...

Reply

Marsh Posté le 02-03-2001 à 01:12:59    

Ah, ces profs qui veulent faire apprendre les pointeurs avant les structure, j'y crois pas...  :sarcastic:  
 
Jacouille> Pas quelques années. Simplement, la programmation est une science expérimentale. C'est un peu comme conduire une voiture : on apprend vite les gestes techniques, mais savoir quoi (et comment) faire en toutes situations demande un peu plus d'expérience...  ;) :cool:

Reply

Marsh Posté le 02-03-2001 à 10:07:05    

Je loue ici bien bas la pédagogie employée par mes profs de DUT. On a trimé un mois entier avec des fonctions, des tableaux avec pleins de calculs à 'la con', mangé du for en tant que while, fait tout un tas de conneries, poussés à la faute par nos profs qui nous montraient qu'il y avait plus malin....
 
Au bout d'un mois on a abordé un mini projet dont la seule nouveauté était struct, malloc et '*'. Eh bien je peux vous dire que le mini projet est passé comme une lettre à la poste PERSONNE n'a galéré avec les pointeurs.
 
On était tellement en avance sur la date de clôture que la moitié des élèves ont bidouillé une interface graphique, généralement en utilisant des tableaux de pointeurs de fonctions pour les menus :)
 
Merci à vous chers professeurs (Mr Rogard, Ratard) de l'IUT de Vélizy j'ai passé les meilleures années de ma scolarité là bas (1994-1995).
 
Et même quand on a fait du C système UNIX, c'était le panard total.
 
Pensée spéciale pour Mr Rogard : "Allez Guingamp ! :)"
 
C'était la pensée émue du jour.

 

--Message édité par Toxin--


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Chaîne YT | Photos
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed