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 de programmation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Par défaut Méthodologie de programmation
    Hello,
    En C existe t'il une méthode de conception pour éviter les problèmes ?

    Quand je debute un projet, je commence par reflechir aux données et types que je vais manipuler. Tout mes efforts portent sur ca. Mais ca ne suffit pas...
    En programmation objet, on se concentre sur les futurs objets, les interactions entre eux...
    Le C est un language procedurale, est ce que ce sont les fonctions ou les données qui determine le devenir du programme...

    Avez vous des liens, des livres ou des conseils a donner?
    Merci

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    Moi je fais plus ou moins du C objet de temps à autres sauf pour des routines précises. Je pense qu'il faut que tu t'adaptes à ce que tu veu faire. Si jamais c'est les données qui sont importante ou bien si c'est les opérations

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par funtix
    En C existe t'il une méthode de conception pour éviter les problèmes ?
    Oui

    http://bien-programmer.blogspot.com/

  4. #4
    Membre chevronné Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Par défaut
    Données ou fonctions? Les deux, Le C fonctionne aussi en approche objet.
    Compiles le plus souvent possible, suis une bonne démarche de programmation, printtf est ton sensei. GTK+ est un bon exemple.

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Pour ce qui est de la logique purement procédurale (et on se comprend sur le fait que, meme en Orienté Objet, le corps d'une fonciton membre tombe dans ce cas de figure: une suite de choses à faire dans un ordre logique...) la méthode qui est, selon moi, la plus adaptée, et surtout la plus facile à tranfsormer en code par la suite (quel que soit le langage utilisé) est sans doute le =>nassichneiderman<=.

    Bien que peu connue, elle présente l'énorme avantage de permettre la représentation logique des boucles et des tests, là où le flowchart se transforme en "plat de spagetti" dés que les boucles et/ou les tests commencent à s'imbriquer.

    L'idée générale est de se dire que, hormis les test (de type "vrai faux" ou "à choix multiple") et les boucles, tout n'est jamais "qu'action", meme si on se prévoit la possiblité de représenter les appels à nos fonctions personnalisée de manière différente, et de regrouper ces "actions" dans l'ordre logique d'exéctution au sein d'une "pince" représentant la fonction que l'on crée.

    Par exemple, l'algorithme de résolution d'une tour de hannoï en nassichneiderman pourrait ressemler à

    Ou celui, non récursif, d'ajout d'un élément en fin de liste pourrait ressembler à

    avec, bien entendu, les variables et les types qui vont bien avec

    L'une des seules limites, qui vient plus de la difficulté que le programmeur a à s'assurer de la gestion correcte, est ce que l'on appelle la gestion de ruptures.

    Mais en préparant le travail avec la méthode jackson et en traduisant le résultat obtenu sous forme de nassichneiderman (ce qui n'est pas bien compliqué), meme la gestion des ruptures devient un jeu d'enfant...

    [EDIT] le nassichneiderman présente, en outre, l'avantage de permettre une "traduction automatique" en code (et ce, encore une fois, quel que puisse etre le langage de programmation envisagé), dés le moment où l'on a compris qu'il faut travailler par "colone"[/EDIT]
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    C'est la première fois que j'entend parler du nassichneiderman. Il faudra que je regarde ça un jour, mais je trouve tout de même l'utilisation de pseudo-code plus lisible pour la description des algorithmes.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  7. #7
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par mujigka
    C'est la première fois que j'entend parler du nassichneiderman. Il faudra que je regarde ça un jour, mais je trouve tout de même l'utilisation de pseudo-code plus lisible pour la description des algorithmes.

    Thierry
    C'est un avis qui se vaut, si ce n'est que, tant qu'à commencer à écrire du code, pourquoi le faire en "pseudo", et non, directement dans le langage utilisé

    A titre perso, je seul avantage que je trouve au pseudo code, c'est qu'il ne nécessite aucun dessin...

    Mais, d'un autre coté, une fois que l'on est habitué au nassichneiderman (car, comme toute méthode d'algorithmie, il faut un "temps d'adaptation") il est aussi facile à traduire en code qu'un pseudo code et aussi "parlant" qu'un flowchart, le plat de spagetti en moins...

    Tu remarqueras en outre au travers de ces deux exemples choisis que tu retrouves "simplement" sous forme graphique tout ce que tu pourrais retrouver dans un pseudo code

    Ceci dit, c'est mon avis perso, et je ne forcerai jamais personne à y adhérer... mais je le partage
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Invité de passage
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Salut,

    Pour ce qui est de la logique purement procédurale (et on se comprend sur le fait que, meme en Orienté Objet, le corps d'une fonciton membre tombe dans ce cas de figure: une suite de choses à faire dans un ordre logique...) la méthode qui est, selon moi, la plus adaptée, et surtout la plus facile à tranfsormer en code par la suite (quel que soit le langage utilisé) est sans doute le =>nassichneiderman<=.

    Bien que peu connue, elle présente l'énorme avantage de permettre la représentation logique des boucles et des tests, là où le flowchart se transforme en "plat de spagetti" dés que les boucles et/ou les tests commencent à s'imbriquer.

    L'idée générale est de se dire que, hormis les test (de type "vrai faux" ou "à choix multiple") et les boucles, tout n'est jamais "qu'action", meme si on se prévoit la possiblité de représenter les appels à nos fonctions personnalisée de manière différente, et de regrouper ces "actions" dans l'ordre logique d'exéctution au sein d'une "pince" représentant la fonction que l'on crée.

    Par exemple, l'algorithme de résolution d'une tour de hannoï en nassichneiderman pourrait ressemler à

    Ou celui, non récursif, d'ajout d'un élément en fin de liste pourrait ressembler à

    avec, bien entendu, les variables et les types qui vont bien avec

    L'une des seules limites, qui vient plus de la difficulté que le programmeur a à s'assurer de la gestion correcte, est ce que l'on appelle la gestion de ruptures.

    Mais en préparant le travail avec la méthode jackson et en traduisant le résultat obtenu sous forme de nassichneiderman (ce qui n'est pas bien compliqué), meme la gestion des ruptures devient un jeu d'enfant...

    [EDIT] le nassichneiderman présente, en outre, l'avantage de permettre une "traduction automatique" en code (et ce, encore une fois, quel que puisse etre le langage de programmation envisagé), dés le moment où l'on a compris qu'il faut travailler par "colone"[/EDIT]
    Merci pour avoir ramené cette représentation des algorithmes particulièrement adapté à la programmation structurée. Je l'utilisais alors que j'étais étudiant en DUT Informatique de Gestion dans les années 95 (j'étais bien le seul d'ailleurs) et je me suis retrouvé comme vous face à l'incrédulité de mes professeurs (sans parler des autres étudiants). J'ai pourtant toujours trouvé cette représentation très efficace. Je l'avais découverte (sous le nom de graph-NS) dans un livre sur la programmation en assembleur 8086 qui présentais cette méthode comme plus efficace qu'un algorigramme et résultant des travaux sur la programmation structurée.

Discussions similaires

  1. [C][méthodologie]Mettre en mémoire les images d'un programme 2d
    Par yetimothee dans le forum Développement 2D, 3D et Jeux
    Réponses: 15
    Dernier message: 05/06/2008, 23h21
  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