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

Algorithmes et structures de données Discussion :

Débuter avec l'Algorithmique ?


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Débuter avec l'Algorithmique ?
    Bonjour,

    Déjà je suis nouveau sur ces forums et j'éspere pouvoir y apprendre pleins de choses.

    Voilà, je connais le HTML/CSS et j'ai de bonne bases en PHP.
    Je voudrais apprendre un langage relativement simple pour débuter (Java, VB, etc ...), mais je voudrais savoir si avant toute chose il ne faudrait pas que je lise des cours d'algorythmie ?
    Il me semble que c'est les bases même de la logique et le la programmation, alors avant de me lancer à étudier un langage j'aurais voulu savoir ce que vous trouvez qu'il y a de mieux à faire avant d'apprendre n'importe quel langage ?

    Merci de vos éclaircissements.

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    personnellement je pense que ca n'est pas du tout (au contraire, meme) contre indiqué d'apprendre un langage en meme temps que tu bosse sur l'algorithmie. l'avantage principal est que faire un "vrai" programme te sanctionne tout de suite : si ton algorithme est mauvais, le programme foire un point c'est tout, donc tu seras obligé de chercher ce qui se passe. en plus, ecrire des algorithme "dans l'abstrait" peut parfois masquer des difficultée.

    choisis toi un langage, et essaie d'implementer quelque algo classiques, en reflechissant d'abord avec un papier et un crayon pour definir la marche a suivre.

  3. #3
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    salut,

    moi je pense qu'il te faudrait éviter le langage C et meme C++. Les pointeurs ca va t'embrouiller et te dégouter de la programmation.

    sinon je pense aussi pas qu'il y ai besoin de faire trop d'exerices abstraits d'algorithmie. attaque toi à des problèmes simples pour apprendre un langage puis à des problèmes plus intéressants.

    moi j'ai commencé avec scheme, un langage fonctionnel, pas très utilisé dans l'industrie. j'imagine que les meilleurs rapports simplicité/puissance c'est java ou python.. regarde un peu ces langages et les outils dispo, et choisit celui que tu préfère..

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    rien ne t'oblige a utiliser des pointeurs.... si tu en utilises, c'est que tu en a besoin, sinon ben non... donc je pense que le C++ est aussi un bon langage pour demarrer... j'ai peur que la logique de java soit un peu tordu pour simplement applquer des algos de bases, python je connais mal mais j'en entends bcp de bien, et scheme c'est pluot des mauvais souvenirs

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    Citation Envoyé par mamelouk
    troll, troll, troll...
    meuh non ! juste une opinion tirée de mon experience perso. n'empeche que dire qu'on peut faire de l'algorithmie en C++ sans jamais toucher aux pointeurs, c'est un fait...

  6. #6
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    Citation Envoyé par jobherzt
    meuh non ! juste une opinion tirée de mon experience perso. n'empeche que dire qu'on peut faire de l'algorithmie en C++ sans jamais toucher aux pointeurs, c'est un fait...
    mmm t'as jamais touchés aux tableaux ni aux chaines de caractères en C alors ? ca fait de la programmation très limitée... et me dis pas que tu peut utiliser l'opérateur [], car il ne t'empeche pas de faire des débordements (ou des effets de bords si le passe en paramètre d'une fonction), ce qui est justement un des pires trucs avec les pointeurs. C++ ce serait bien mais le problème c'est qu'il y a toujours du C melé avec ...

    la logique de java est tordue... dis moi t'as fait du java pendant combien de temps ? qu'est ce que tu trouve tordu ? les if ou les for ? ou alors la programmation objet ?

    pour moi scheme, caml, haskell c'est les meilleurs souvenir de programmation que j'ai : ceux ou t'es obligé d'utiliser ton cerveau.

    et c'est sur, le python tout le monde ne parle, mais personne n'en fait donc ca doit etre bien....

    et le troll continue...

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par mamelouk
    pour moi scheme, caml, haskell c'est les meilleurs souvenir de programmation que j'ai : ceux ou t'es obligé d'utiliser ton cerveau.
    D'après ses envies, il aurait plutôt tendance à préferer un langage impératif (objet, impératif, c'est un peu pareil).

    Et en général, quand tu écris des algorithmes, ils ont une notation impérative (rarement purement fonctionnelle, même si ça arrive).
    Je ne répondrai à aucune question technique en privé

  8. #8
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    Citation Envoyé par millie
    D'après ses envies, il aurait plutôt tendance à préferer un langage impératif (objet, impératif, c'est un peu pareil).

    Et en général, quand tu écris des algorithmes, ils ont une notation impérative (rarement purement fonctionnelle, même si ça arrive).
    et ... ?
    je disais ca juste pour répondre au troll ci dessus, mais deux posts plus haut je décourageais leurs utilisation

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  9. #9
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par mamelouk
    et ... ?
    je disais ca juste pour répondre au troll ci dessus, mais deux posts plus haut je décourageais leurs utilisation
    Ah oui, j'avais pas fait la liaison que c'était le même pseudo
    Je ne répondrai à aucune question technique en privé

  10. #10
    Membre éclairé
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Points : 810
    Points
    810
    Par défaut
    mmmm
    bien que le sujet ait dérivé en troll "mon langage est mieux que le tien", le sujet de départ était de savoir s'il était bon de lire des bouquins sur l'algorithmie avant de se lancer dans un langage particulier.

    Débugger du code est deux fois plus dur que d'en écrire.
    Donc, si vous écrivez votre code aussi intelligemment que vous le pouvez, vous n'etes, par définition, pas assez intelligent pour le débugger.

  11. #11
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    c'est lourd ces gens qui voient des trolls partout... j'ai repondu a sa question, a savoir "oui, bosser l'algorithmie c'est important, oui faut essayer de pondre ses machins au papier crayon, mais oui aussi c'est bien de choisir un langage pour implementer les algos et se rendre compte comment ca marche"

    apres, j'ai conseillé suivant mon opinion personnelle des langages, dont certains que je ne pratique pas (donc je ne defend pas MON langage) en essayant de suggerer des choses appropriées pour la situation presente, a savoir la transcription directe d'un algorithme... apres si certain prennent ca pour un troll, ralent mais donnent dedans a fond c'est pas mon probleme

  12. #12
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    On se calme, je vous rappelle que la question initiale était : Avant de se lancer dans un langage de programmation, vaut il mieux avoir des bases en algorithmique. Et il voulait savoir ce qu'il y avait à faire avant n'importe quel langage.
    Je ne répondrai à aucune question technique en privé

  13. #13
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Je voudrais apprendre un langage relativement simple pour débuter (Java, VB, etc ...), mais je voudrais savoir si avant toute chose il ne faudrait pas que je lise des cours d'algorythmie ?
    Les langages ne sont que de vulgaires outils. Si tu ne fais pas un minimum d'algorithmique les langages ne te serviront pas à grand chose. Mais néanmoins l'un ne va pas sans l'autre (ne serait-ce que pour tester si les algorithmes que l'on a écrit sur le papier fonctionnent)

    Alors ensuite, est-ce que ça vaut le coup de savoir faire un tas de fibonacci pour faire quelque programme que ce soit ? En fait pour commencer je ne crois pas ... . En fait il faut que tu adaptes ton étude de l'algorithmique en fonction de tes besoins.

    Pour les bases de l'algorithmique, je pense que les structures de données de base sont nécessaires (pas forcément les avoir implémentés mais bien connaître leurs utilisations), je pense notament aux piles, files, listes, arbres (binaires dans un premier temps, puis plus évolués par la suite). Pour les algorithmes de tri, c'est important mais en fait tout dépend de tes besoins avenirs en terme de programme.

    Si tu as d'autres questions n'hésite pas.

  14. #14
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par mamelouk
    mmm t'as jamais touchés aux tableaux ni aux chaines de caractères en C alors ? ca fait de la programmation très limitée... et me dis pas que tu peut utiliser l'opérateur [], car il ne t'empeche pas de faire des débordements (ou des effets de bords si le passe en paramètre d'une fonction), ce qui est justement un des pires trucs avec les pointeurs. C++ ce serait bien mais le problème c'est qu'il y a toujours du C melé avec ...

    et le troll continue...
    Non, le troll s'arrête, tu as raison pour le C, mais en C++ on utilise les std::string, et les std::vector, qui gèrent leur mémoire automatiquement. Le passage des paramètres se fait par copie ou par référence.

    C'est comme ça que dans mon école ils enseignent l'algorithmie en C++.

    Par contre pour les arbres binaires par exemple, là c'est différent, ils font ça avec une gestion des arbres par table séquentielle + indices ou bien par liste et itérateurs.

    L'inconvénient c'est que tu te trimballes tous tes noeuds contenus à chaque fois pour faire une opération de base.
    C'est à dire que pour faire taille(arbre), tu fais taille(liste_des_noeuds, itérateur_vers_arbre). Bon ça ne fait qu'un paramètre en plus dont on aurait pu s'en passer.

    On peut très bien faire autrement, il suffit d'utiliser des types récursifs et c'est bon, tout ça sans pointeurs.


    Après je ne dis pas que OCaml est moins adapté pour faire de l'algorithmie, loin de là.

  15. #15
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 68
    Points
    68
    Par défaut
    Avant de parler de tableaux et de pointeurs je pense qu'il faut d'abord maîtriser l'algo en général... Concentre toi sur les trois types de structures : séquence, choix et boucle...
    Apprend à les combiner pour faire tes algos, le reste c'est de la logique...

    Une fois que tu sauras partir d'un problème et le décomposer petit à petit pour arriver aux fonctions élémentaires alors tu pourras te pencher sur les algos spécifiques au tri, tableaux etc...

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Déjà merci pour vos réponses.

    Je pense que je vais m'éssayer à 2-3 trucs d'algorythmie, je pense précisément au tris.

    Ensuite, j'hésite en soit le VB ou alors le Java, sachant qu'au début je ne compte pas faire un programme complet, hein, juste des tests, des actions, plein de bidouilles ...

    Donc où pourrais-je trouver des cours/exos d'algorythmie, et lequel ferais-je mieux de prendre entre Java ou VB ?


  17. #17
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 68
    Points
    68
    Par défaut
    Je te conseille le VB... le java est orienté objet c'est pas forcément le mieux pour débuter l'algo...

  18. #18
    Membre actif
    Avatar de Hatchepsout
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Points : 222
    Points
    222
    Par défaut
    salut
    vb oui
    ou vb.net aussi Orienter Objet et plus simple que le java

    bonne chance

    pour les cours voici http://algo.developpez.com/cours/
    tu trouve tous sur dvp
    " Ce n'est pas parce que les choses sont difficiles que nous n'osons pas, c'est parce que nous n'osons pas qu'elles sont difficiles. "

    Mon Pays

  19. #19
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Juste histoire de...

    Tu as dis que tu avais une assez bonne maitrise de php. Si ce que tu cherches, c'est améliorer tes compétences algorithmique, tu peux déjà faire pas mal de chose en php, notamment des tris. Et ca t'épargne d'avoir a apprendre en parallele un autre langage et doubler la difficulté.

    Maintenant, apprendre un langage n'est jamais vain.
    Vb est effectivement plus simple que Java, mais a mon sens un peu moins répandu (communauté & industrie) donc quitte à choisir, je me dirigerai plutôt vers du Java quand même.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  20. #20
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 84
    Points : 68
    Points
    68
    Par défaut
    kajol je suis pas d'accord : je conseille vb justement pour ne pas commencer avec l'OO... Par la suite je conseille plutôt java, surtout que la syntaxe est plus proche des langages plus répandus comme C ou C++...

Discussions similaires

  1. débuter avec Visual .NET
    Par akimmm dans le forum MFC
    Réponses: 4
    Dernier message: 28/10/2005, 04h53
  2. [GridBagLayout] Comment débuter avec ce layout
    Par Bighobbit dans le forum Débuter
    Réponses: 12
    Dernier message: 28/09/2005, 17h13
  3. [MFC je crois] Débuter avec visual c++
    Par flzox dans le forum MFC
    Réponses: 6
    Dernier message: 28/06/2005, 18h31
  4. [JAXP] Débuter avec XML et Java
    Par Fleep dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 04/05/2005, 11h27
  5. Débuter avec Java
    Par reptils dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 11/07/2004, 21h26

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