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

 C Discussion :

méthodologie programmation en c


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut méthodologie programmation en c
    Bonjour,

    Voilà je suis en premier bac science en informatique, n'étant pas trop attentif en cours je sais que ce n'est pas très bien je dois repasser mes exam dans la partie informatique et en étudiant mon cour il y a une partie que je ne comprend pas très bien c'est la partie méthodologie, c'est à dire le prof explique de façon (ce n'est que mon avis la dessus) assez sommaire comment découpé un problème en sous problème et comment faire un invariant de boucle.
    J'aimerais bien si possible que quelqu'un me l'explique.
    D'avance merci beaucoup pour l'aide.
    PS: voici le lien du chapitre de son cours : http://www.montefiore.ulg.ac.be/~bdo...thodologie.pdf

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Je trouve seulement que soit il y a une fixation sur les boucles soit des termes pas géniaux (parler de sous problème pour une énumération)

    Mais si c'est sommaire, c'est normal:

    Je vois ce cours comme une introduction à comment réfléchir pour ensuite introduire "le gros des troupes"
    1. La complexité: O, théta, ... - linéaire, exponentielle, ... voire NP difficile, NP Complet, ...
    2. Les structures de données et les algos "pour les hommes qui ont du poil": arbres, graphes, réseaux, ... (*)
    3. Les méthodologies: Cycle en V, méthode incrémentale, méthode itérative, méthodes agiles (XP, Scrum), La RACHE, ...
    4. Cahier de charges, UML, ... et tous les "à côtés": bases de données par exemple
    5. Éventuellement (mais c'est plus à l'étudiant à faire le lien), les langages: paradigme procédural, fonctionnel, objet, ... les différences comme les typages, le ramasse-miettes, ...
    6. Éventuellement (mais c'est plus à l'étudiant à faire le lien), les entrailles: la mémoire, les systèmes préemptifs, les threads, ...


    Un exemple précis: en eXtrem Programming, les tests sont l'analyse et la maintenance [en partie] - régression

    (*) -> dans ces cas, il n'y pas systématiquement des boucles

    Édit: le deuxième point et les 2 "Éventuellement"

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Le point de départ consiste à se souvenir qu'un ordinateur est un truc super con. Tout ce qu'il sait faire, c'est additionner des valeurs, les stocker et les comparer.

    A partir de là, il faut arriver à lui "expliquer" comment résoudre un problème complexe à partir de ces ordres simples. A la limite, si tu arrives à faire le travail avec un simple crayon et que tu arrives à détailler ce que tu fais alors tu as résolu les 9/10° de ton problème

    Exemple 1: vérifier si un nombre est premier ou pas
    Principe général: il n'a pas d'autre diviseur. A l'inverse, si on trouve un diviseur autre, alors il n'est pas premier.
    Comment faire avec un crayon: prendre 2, regarder s'il divise le nombre. Si oui alors c'est fini, il n'est pas premier. Sinon prendre le nombre suivant (3) et recommencer. Si on arrive à tout faire jusqu'au nombre en question sans avoir trouvé de diviseur alors il est premier.
    Pseudo code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    entrer n
    i <- 2
    tant que i < n
    faire
        si i divise n alors
            n pas premier
            sortie boucle
       fin si
       i <- i+1
    fin faire
    n premier
    Rien que ça ça fonctionne. Bien entendu, rien n'interdit ensuite de trouver et utiliser des raccourcis. Par exemple si la division de n par i donne un nombre plus petit que i, alors on sait qu'on peut s'arrêter et que n est premier (pour la simple raison que si on trouvait un nombre x résultant de la division de n par i et plus petit que i, alors on aurait forcément testé en amont la division de n par x qui donne i). Mais même sans raccourci, un algo qui fonctionne suffit.

    Exemple 2 (ton exo): afficher la table de multiplication des nombres de 1 à 10
    Principe général: la table de multiplication d'un nombre x (ou y) est toujours la même chose: partir de i=1 jusqu'à 10 et afficher x*i (ou y*i)
    Avec un crayon: positionner x à 1, positionner i à 1, afficher i*x puis incrémenter i. Une fois i arrivé à 10, alors incrémenter x et recommencer le i

    Donc grosso-modo la méthodologie c'est ça...

    Sinon pour l'invariant de boucle je n'ai rien compris. Je comprends les mots mais je n'arrive pas à me représenter le concept. Sûrement que je le fais sans savoir que cela se nomme comme ça...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Sinon pour l'invariant de boucle je n'ai rien compris. Je comprends les mots mais je n'arrive pas à me représenter le concept. Sûrement que je le fais sans savoir que cela se nomme comme ça...
    Si j'ai bien compris le truc pour le tri rapide (quick sort), l'invariant de boucle (lorsqu'on parcourt notre portion de tableau) est:

    • Tous les nombres entre la position du début incluse et la position du pivot exclu sont inférieurs au pivot
    • Tous les nombres entre la position du pivot exclu et la position courante incluse sont supérieurs au pivot

  5. #5
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Je vais être un peu hors sujet je préviens , mais je reste sur le domaine de la méthodologie.
    Bon je que je suis sur c'est que ce qui fait une bonne différence c'est que si tu as la bonne méthode (mentale) tu programmera plus facilement donc apprendre un langage a coté c'est accessoire.
    Ton prof a raison le principe et réduire le problème de isolé et aussi que chaqu'un de ces problème soit indépendant les un des autres donc que chaque fonction marche sur un autre programme , mais je m'oppose et j'assume que de vouloir répondre a cette technique (parce que oui cela devient une technique) soit purement représenter de manière mathématique c'est certes un langage formel , mais aussi c'est un langage dont il est difficile t'en interpénétrer je prendrais exemple extrême de la mécanique quantique les calculs sont bon mais que veulent -t - il dire ? et la il y a de grand débat la dessus.
    Pour ma part autre difficulté c'est qu'on ne prend pas on compte que le problème est mal posé souvent , alors que le premier souci vient de la , je prend un exemple simple si on dit "va me chercher une baguette de pain" , implicitement on dit beaucoup de chose , d'aller d'un point A a un point B ,d’éviter les obstacle , interagir avec le/la vendeur/vendeuse ect , on posant cette 'énoncé' évidemment on suppose que son interlocuteur connait certaines choses , ce qui n'est pas la cas d'un ordinateur qui ne sait rien.
    Mais aussi en gros on dit des choses qui sont implicites alors qu'elle devrait être le plus explicite possible , et aussi formel ( éviter d'utiliser des mots qui laisse une ambigüité ).
    Le point suivant c'est qu'il faut bien connaitre ce qu'on a (niveau technologie) , on peut pas être trop explicite , si je dis "je dois dessiner un carré rouge" , soit tu as la fonction carré rouge et tu l'appel , soit il faudra être explicite et le coder.
    Je que je dis peut être évident , mais comme quelque fois certaine personne dise "comment faire ceci" , et qu'on fait juste pas une réponse quelque fois lié a la programmation , mais plus d'ordre de la sémantique.

    J'ai pas de conclusion a proprement parlé mais si tu arrive a décrire énoncé correctement , en général le reste suit , si on décrit comment aller chercher une baguette de pain , interaction avec le/la vendeur/vendeuse , et évité les obstacle sont 2 problème différent , il n' y a pas effort en particulier pour en faire la distinction.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    bonjour à tous,

    si j'ai bien compris le problème,voici les étapes à suivre pour résoudre un problème informatique: (extrait d'un cours)
    -Analyser le problème: de finir avec précision les résultats a obtenir, les informations d'entrée dont on dispose.
    -Déterminer les méthodes de résolution: trouver une solution efficace du problème en déterminant la suite des opérations a effectuer pour atteindre le résultat voulu(Cette suite d’opérations constitue un Algorithme).
    -Formuler un algorithme définitif : faciliter la résolution sur ordinateur par l'expression de l'algorithme dans un formalisme adéquat.
    -Traduire l'algorithme : réécrire l'algorithme dans un langage de programmation bien adapté.

    et pour l'algorithme, quatre phases principales sont a la base de sa mise en oeuvre:
    -analyse du problème.
    -expression d'une solution en langage courant.
    -expression d'une solution en pseudo-langage.
    -tests et vérification de l’adéquation de la solution.

    je crois que c'est en quelque sorte la méthodologie.

Discussions similaires

  1. Méthodologie de programmation
    Par funtix dans le forum C
    Réponses: 20
    Dernier message: 16/03/2017, 09h09
  2. Réponses: 4
    Dernier message: 20/09/2007, 09h35
  3. Méthodologie pour intégrer une BDD dans un programme
    Par dahtah dans le forum Débuter
    Réponses: 1
    Dernier message: 18/09/2007, 10h47
  4. [Méthodologie] Comment s'organiser pour programmer?
    Par Donaldo dans le forum Méthodes
    Réponses: 5
    Dernier message: 04/05/2006, 00h38

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