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 :

Difficultés à débuter


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Points : 8
    Points
    8
    Par défaut Difficultés à débuter
    Bonjour à tous,

    je m'initie actuellement à la programmation via un MOOC, et j'éprouve de réelles difficultés à transformer un problème posé ( sous forme d'exercices ) en démarche algorithmique.
    Je débute réellement, je ne suis qu'aux boucles / itérations mais je tiens à aller progressivement en étant sur de maîtriser tous les exercices proposés.

    Voici un cas typique ou je suis incapable d'avoir la démarche de l'auteur de l'exercice : http://pix.toile-libre.org/?img=1435147605.png

    Je comprend comment l'on passe de U0 à U1 par exemple, mais je n'ai absolument pas la réflexion adéquate pour en faire un pseudo code. Surtout en voyant la solution qui est d'une telle simplicité qu'elle ne m'avait même pas effleurée.

    Ma question est donc la suivante, selon vous est-ce qu'il y a peut-être une démarche méthodologique que je n'ai pas ou est-ce simplement une question de temps et de pratique avant que les choses deviennent limpide ?
    Avez vous des conseils pour travailler cette logique?

    Merci beaucoup pour votre temps.

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Pour les boucles, on se demande ce qui arrête l'ordinateur.
    • Si c'est un nombre d'itérations, alors c'est une boucle "for ...".
    • Si c'est une condition particulière,
      • Si la boucle doit être faite au moins une fois, c'est un "do ... while"
      • Si la boucle peut ne jamais être faite, c'est un "while ..."


    Appliqué ici, on voit bien se détacher l'initialisation, puis le calcul répétitif des Un. Comme on veut 10 termes de la suite, la boucle for est indiquée. Il ne reste plus qu'à lire son manuel de référence pour retrouver la syntaxe d'un for.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par endl. Voir le message
    Ma question est donc la suivante, selon vous est-ce qu'il y a peut-être une démarche méthodologique que je n'ai pas ou est-ce simplement une question de temps et de pratique avant que les choses deviennent limpide ?
    Bonjour.

    Tes difficultés sont tout à fait normales et elles sont rencontrées par tous les débutants sans exception. C'est d'ailleurs l'étape la plus difficile à passer.

    Il n'y a pas de méthodologie particulière et il te faudra simplement des centaines d'heures de pratique passées à retourner le problème dans tous les sens et à t'arracher les cheveux. Et plus tard tu te rendras compte que tu continueras à découvrir de nouvelles familles de problèmes et concepts qui te poseront problème au départ et pour lesquels l'écriture d'algorithmes deviendra ensuite un jeu d'enfant, un quasi-automatisme.

    Persévère et bon courage à toi.

  4. #4
    Invité
    Invité(e)
    Par défaut ...
    Citation Envoyé par DonQuiche Voir le message
    Bonjour.

    Tes difficultés sont tout à fait normales et elles sont rencontrées par tous les débutants sans exception. C'est d'ailleurs l'étape la plus difficile à passer.

    Il n'y a pas de méthodologie particulière et il te faudra simplement des centaines d'heures de pratique passées à retourner le problème dans tous les sens et à t'arracher les cheveux. Et plus tard tu te rendras compte que tu continueras à découvrir de nouvelles familles de problèmes et concepts qui te poseront problème au départ et pour lesquels l'écriture d'algorithmes deviendra ensuite un jeu d'enfant, un quasi-automatisme.

    Persévère et bon courage à toi.
    Dire que ses difficultés sont rencontrées par tous les débutants sans éxception est faux. Pour ma part il ne m'a fallu qu'une heure pour comprendre les bases de l'algorithmique, classe de seconde.
    Apres je pouver écrire des algorithmes sur tout type de problème que j'avais bien compris.
    Le vrai probleme est peut-etre que tu n'arrive pas a imaginer ce qu'il y-a entre le depart et l'arriver.

  5. #5
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par Ratator Voir le message
    Apres je pouver écrire des algorithmes sur tout type de problème que j'avais bien compris.
    Seulement dans tes rêves.

    Le vrai probleme est peut-etre que tu n'arrive pas a imaginer ce qu'il y-a entre le depart et l'arriver.
    Donc tu savais écrire l'algorithme, excepté tout ce qu'il y avait depuis la première ligne jusqu'à la dernière ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2015
    Messages : 2
    Points : 8
    Points
    8
    Par défaut
    Bonjour et merci pour vos réponses,


    Flodelarab , je pensais pourtant avoir saisis mais expliqué comme ça je me rend compte que ce n'était pas le cas ! Génial merci !

    DonQuiche, c'est précisément ce que j'espérais lire , merci beaucoup ça ne peut que me motiver pour mon apprentissage

    Bonne continuation

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il n'y a effectivement pas de méthodoligie formelle pour établir un algorithme. J'applique personnellement quelques principes de base, et j'imagine que tous ceux qui ont de la pratique et de l'expérience ont les leurs à ce sujet.

    1. Découper tout problème en plusieurs problèmes plus simples, à résoudre séparement ;
    2. Résoudre les problèmes étape par étape sur papier (avec l'habitude, la pratique et l'expérience, on finit par le faire de tête) ;
    3. Ne pas hésiter à reformuler le problème pour qu'il soit plus adapté à sa propre façon de raisonner. Ne pas hésiter à traduire avec ses propres mots usuels, ça évite l'étape mentale de traduction qui vient parasiter la réflexion sur l'établissement de l'algorithme (à la fin on peut toujours retraduire dans la terminologie de l'énoncé).
    4. Bien connaitre ses bases. Informatique d'une part : ce qu'est une variable, à quoi servent et comment fonctionnent chaque structure (séquence, boucles, option/alternative, etc.). Mais aussi mathématiques.


    Pour le 3, personnellement, la première chose qui me vient à l'esprit quand je lis u(n+1) = U(n)/n+1 et de me dire qu'on peut écrire u(n) = u(n-1)/n, ce qui m'est plus évident à comprendre personellement. Ainsi, quand je cherche à calculer U(4) par exemple, je sais qu'il me faut U(3), la valeur "précédente", et que je n'ai qu'a la diviser par le "numéro d'étape" actuelle. Si j'écris [c] u = u / 4 [/u], je sais que le u à gauche du égal "représente" la nouvelle valeur, alors que le u à droite représente la valeur "avant". Or je sais qu'une variable étant là pour mémoriser quelquechose, donc je sais que je vais pouvoir utiliser une variable unique pour calculer chaque valeur pour chaque étape. Ensuite, on sait qu'on a U(0) et qu'on doit calculer les 10 valeurs suivantes (à ce sujet, j'estime qu'il y a une erreur dans l'énoncé : on ne calculer pas les 10 premiers termes (qui vont de U0 et U9) mais les 10 qui suivent le premier : parfois, il faut aussi reformuler le sujet par rapport à l'interprétation qu'on peut en faire). Le point 4 nous permet d'établir qu'il va nous falloir une boucle pour calculer 10 valeurs. Même si ça peut sembler évident, avoir en tête que l'exécution en séquence nous permet de faire une chose après l'autre, on sait qu'on doit afficher le résultat après l'avoir calculé.

    Donc on a la base de algorithme :
    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pour n de 1 à 10
       u = u / n
       afficher u
    fin pour
    Reste juste à se dire qu'à chaque itération on fait un calcul à partir d'une valeur "précédente", donc il faut bien que u est une valeur au départ, ce que nous donne l'énoncé par UO = 1 :
    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    u=1
    pour n de 1 à 10
       u = u / n
       afficher u
    fin pour

    Bien sûr ici le problème est simple, donc la résolution est simple, et l'application des principes que j'ai exprimés est simple. Pour les problèmes plus complexes, seule la pratique et l'entrainement permettront de les résoudre. Commence donc par des problèmes simples au début, et tu verras que petit à petit, résoudre ces problèmes deviendra un réflexe, et t'aideront à resoudre des problèmes de plus en plus complexes (surtout si tu découpes ces problèmes complexes en plusieurs problèmes plus simples).

    Une dernière chose pour conclure : pour de très nombreux procédés classiques et redondants, il existe des algorithmes déjà établis. Avant de se lancer tête baissée dans l'établissement d'un algorithme, toujours chercher (sur Internet, et en particulier sur Developpez.net) avant si quelqu'un n'a pas déjà résolu le problème.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre confirmé
    Avatar de Jacques Beauregard
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2015
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2015
    Messages : 231
    Points : 595
    Points
    595
    Par défaut
    Citation Envoyé par Ratator Voir le message
    Apres je pouver écrire des algorithmes sur tout type de problème que j'avais bien compris.
    Heureusement que ce n'était que des algorithmes ..car ton français...

    Sinon je suis tout à fait d'accord avec DonQuiche : tu dois persévérer pour progresser ! Les difficultés rencontrées sont normales.
    Bon courage
    Il ne faut jamais prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...

    Le guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Quel logiciel (EDI) pour débuter en programmation ?
    Par mimosa69 dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 17/01/2016, 16h45
  2. Débat : quelle distribution Linux choisir pour débuter ?
    Par Anonymous dans le forum Distributions
    Réponses: 227
    Dernier message: 18/02/2015, 10h09
  3. Difficulté à débuter
    Par pitu69 dans le forum MkFramework
    Réponses: 20
    Dernier message: 09/04/2013, 20h50
  4. Comment débuter en prog quand on est aveugle
    Par Rataf dans le forum Débuter
    Réponses: 2
    Dernier message: 04/04/2003, 22h13
  5. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29

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