Quelle est la bonne façon de résoudre les problèmes de programmation ?


vierge

Lorsque nous proposons de résoudre des problèmes de programmation, nous nous rendons toujours directement à l’ordinateur et commençons à écrire du code sans avoir analysé le problème au préalable. C’est ce que font la plupart des programmeurs.

Ou bien parfois nous l’analysons et directement nous écrivons le code et dans certains cas cette pratique fonctionne, bien sûr lorsque les problèmes sont simples ou lorsque vous êtes un programmeur expérimenté.

Parfois, nous pensons qu’en faisant les choses directement, nous gagnerons plus de temps, mais en réalité, ce n’est pas le cas, la plupart du temps, un problème a été programmé directement sans avoir fait une analyse préalable, est deux ou trois fois plus important que si nous avions fait une analyse préalable, généralement de nombreuses erreurs sont commises, ce qui à long terme nous fait perdre du temps.

Une bonne habitude des programmeurs est de porter une méthodologie pour résoudre un problème, aussi minime soit-il. C’est pourquoi nous allons voir cette fois-ci les étapes à suivre pour résoudre un problème de programmation et l’idée de base est d’en faire une habitude chaque fois que nous allons voir un programme.

  1. Analyse précédente du problème

À ce stade, il faut définir et clarifier ce que le programme doit faire ainsi que les tâches qu’il doit accomplir pour mettre en œuvre la solution, les données dont j’ai besoin pour accomplir les tâches, le format que les données d’entrée doivent avoir, leur provenance.

Les données d’entrée, la manière dont ces données sont obtenues, la manière dont les données interagissent entre elles pour obtenir le résultat, il est très important d’être clair sur ce que sera le résultat que vous voulez obtenir, ni de laisser de côté les restrictions qui peuvent exister lors du traitement des données. Comme dans le cas des modèles bootstrap, vous devez bien connaître le fonctionnement du cycle d’analyse des problèmes.

De la même manière, tous les scénarios qui peuvent se produire doivent être analysés puisqu’un changement de scénario peut modifier le résultat final du programme, il vaut toujours la peine de se demander et de se demander : et si cela se produit ? Quel serait le comportement du programme.

Pour dissiper les doutes, vous devez demander des formats (manières de présenter les données ou d’où les données sont obtenues lorsqu’elles sont faites manuellement), des formules, faire des exemples et vérifier les résultats.

Fondamentalement, à ce stade ou à cette phase, toutes les exigences et spécifications du problème doivent être collectées.

Ce point devrait être l’un des plus importants et des plus critiques dans le dépannage, car une mauvaise analyse conduit à une mauvaise conception et plus tard à un mauvais résultat.

Personnellement, peu importe la durée de cette étape, l’idée est que tout est clair. La première fois, cela peut vous prendre beaucoup de temps, mais au fur et à mesure que vous le pratiquerez, vous gagnerez de l’expérience et si vous prenez l’habitude de le faire les fois suivantes, vous le ferez encore plus rapidement.

  1. Conception de l’algorithme

Une fois que nous avons bien cerné le problème, après avoir défini toutes les entrées et sorties que le programme aura, ainsi que les tâches à effectuer, il est temps de concevoir l’algorithme et qu’il aille selon toutes les spécifications précédentes et qu’il soit ensuite implémenté dans un langage de programmation à exécuter par l’ordinateur.

L’algorithme peut être réalisé de n’importe quelle manière : Pseudocode ou Flow Diagram, l’idée principale est qu’il doit être compréhensible, et pas seulement par celui qui l’a conçu, mais par n’importe qui.

Ce qui est important dans cette conception, c’est qu’elle est compréhensible pour le programmeur qui va la mettre en œuvre.

  1. Mise en place de l’environnement de codage et de développement

Cette étape consiste à transcrire ou à adapter l’algorithme à un langage de programmation, toutes les étapes conçues dans l’algorithme devront être adaptées avec des phrases et la syntaxe du langage lui-même.

Vérifier les erreurs, organiser le code et le commenter sont de bonnes pratiques qui rendent les programmes plus lisibles et facilitent le débogage.

Avant de coder, vous devez faire configurer l’environnement de travail : IDEs, bibliothèques, Frameworks (bien que je ne recommande pas ce dernier si vous commencez à programmer, il vaut mieux apprendre les choses les plus élémentaires, les fondamentaux, tout à la main d’abord et ensuite les frameworks) et ensuite passer l’algorithme au langage de programmation.

  1. Compilation et tests

La phase de compilation permettra de détecter les erreurs lors de la compilation, de l’exécution et des moments logiques, et dans le cas de Java, un ou plusieurs fichiers bytecode seront générés qui seront exécutés par l’ordinateur.

Dans cette phase, il est également nécessaire de tester une grande quantité de données pour trouver et corriger d’éventuelles erreurs.

  1. Documentation et maintenance

Enfin, vous devez avoir une documentation de toutes les étapes jusqu’à ce que vous arriviez à la solution du problème, parfois cette phase est un peu fastidieuse mais elle est aussi très importante car souvent des changements se produisent au fil du temps et ceux-ci sont faits dans certains cas par d’autres programmeurs différents de ceux qui l’ont créé (que même quand vous allez modifier vous-même, vous ne vous souvenez plus de ce qui s’est passé avec ce code, ça m’est arrivé), et quand un programme est pauvre en documentation, ce processus de modification est totalement complexe.

Allons droit au but, résolvons un problème en appliquant les étapes précédentes

  1. Analyse précédente du problème : définir ce que le programme devrait faire

Pour cet exemple j’ai pris une exigence simple et réelle, c’est un petit problème d’une entité bancaire, le directeur commercial de cette entité a besoin d’un rapport (évidemment le rapport doit être dans le système bancaire) dans lequel le pourcentage de délinquance est indiqué (ou l’indice de délinquance) pour chacune des agences que l’entité a.

Il existe plusieurs lignes de crédit offertes par l’entité, par exemple, Consommation, Microcrédits, Commercial et Immobilier, pour considérer un crédit en retard ; le nombre maximum de jours pour chaque ligne est pris en compte, après ce nombre de jours le crédit est considéré comme en retard.

Gardez à l’esprit que pour chaque ligne de crédit, il y a un nombre de jours maximum différent avant de considérer le crédit comme étant en retard.

L’objectif de ce rapport est de permettre au directeur commercial d’évaluer la délinquance et de prendre des décisions concernant les crédits accordés par la banque.

Nous obtenons les exigences détaillées :

  • Calculer le taux de délinquance par agence et consolidé pour toutes les agences

Des données pour comprendre le problème :

Le ratio ou pourcentage de NPL est le quotient du total des soldes de prêts en souffrance et du total des soldes de prêts. Supposons que si vous souhaitez résoudre un problème lié au marketing, vous pouvez consulter les services de référencement à Abu Dhabi pour obtenir de meilleurs résultats.

Pour calculer le taux de délinquance, la formule suivante est prise en compte :

% NPL Portefeuille en retard / Portefeuille total

Portefeuille en retard=Portefeuille des crédits à la consommation + Portefeuille des microcrédits + Portefeuille des crédits commerciaux + Portefeuille des prêts immobiliers

Total du portefeuille=Solde de la dette du crédit à la consommation+Solde de la dette du microcrédit+Solde de la dette du crédit commercial+Solde de la dette du crédit immobilier

Les lignes de crédit et les jours maximums pour chacune d’entre elles sont indiqués ci-dessous.

Portefeuille de crédits à la consommation arrivés à échéance

  • Pour le calcul du portefeuille de crédits à la consommation en retard, on considère le solde débiteur de toutes les opérations en retard de plus de 15 jours (à partir du 16e jour)

Portefeuille de microcrédits périmés

  • Pour calculer le portefeuille de microcrédits en retard, on considère le solde débiteur de toutes les opérations en retard de plus de 15 jours (à partir du 16e jour)

Portefeuille de crédits commerciaux arrivés à échéance

  • Pour le calcul du portefeuille de crédits commerciaux en souffrance, le solde de la dette de toutes les opérations en souffrance depuis plus de 30 jours est pris en compte (à partir du 31e jour)

Crédits immobiliers de portefeuille en retard

  • Pour calculer le portefeuille de crédits immobiliers en souffrance, on considère le solde de toutes les opérations en souffrance depuis plus de 60 jours (à partir du 61e jour)
  1. Conception de l’algorithme

Jusqu’à présent, nous avons défini le problème et nous disposons des informations nécessaires pour le résoudre. Nous devons maintenant prendre les mesures nécessaires pour le résoudre, ces mesures qui suivent une séquence d’étapes s’appellent un algorithme, dans cette phase, nous pouvons trouver plusieurs moyens de résoudre le problème. Nous essaierons d’utiliser la méthode la plus efficace, cette phase n’a pas de format établi car elle dépend beaucoup de la logique de chaque développeur, au même problème plusieurs programmeurs peuvent donner des solutions différentes.

Au début, nous pourrions utiliser n’importe quelle solution, puisque le but est d’obtenir le résultat, mais comme nous l’avons vécu, il vaut la peine de chercher la solution la plus efficace.

Un conseil pour concevoir un algorithme complexe est d’essayer de décomposer le problème en sous-problèmes plus petits et de les diviser en morceaux encore plus petits jusqu’à atteindre un niveau plus facile à résoudre. Cette méthode est techniquement connue sous le nom de conception descendante ou modulaire.

Comme je l’ai mentionné, la conception de l’algorithme n’est pas unique, et nous pourrions essayer de le faire de différentes manières.

En général, une solution pourrait être la suivante :

  1. Obtenez les données par agence, ligne de crédit, puis par crédits en retard selon les jours maximums (Consommation et Microcrédit> 15 jours, Commercial> 30 jours, Immobilier> 60 jours) pour chaque ligne de crédit.
  2. Conservez le solde du portefeuille en souffrance pour cette ligne de crédit (Résultat étape 1).
  3. Répétez les étapes 1 et 2 pour toutes les lignes de crédit (Consommation, Microcrédits, Commercial, Immobilier) pour la même agence.
  4. Additionnez les soldes de toutes les lignes de crédit obtenues.
  5. Additionnez les soldes de tous les prêts accordés par l’agence pour obtenir le portefeuille total.
  6. Obtenir l’indice de délinquance par l’agence avec les résultats obtenus aux points 4 et 5, selon la formule : % NPL = Portefeuille en retard / Portefeuille total
  7. Présentez dans un rapport le nom de l’agence, le portefeuille total, le portefeuille en retard et le taux de délinquance.
  8. Répétez les étapes 1 à 7 pour chaque agence.
  9. Pour obtenir le taux de délinquance consolidé, nous ajouterons le portefeuille en retard pour chaque agence et le même avec le portefeuille total, et nous utiliserons la formule du point 6

Jusqu’à présent, nous avons résolu le problème, bien que nous puissions affiner l’algorithme, par exemple en affectant les résultats à des variables, en utilisant des structures de contrôle en langage algorithmique, l’idée est de rendre le tout simple et clair pour tout programmeur afin qu’il soit facile à mettre en œuvre et de le laisser s’occuper des variables et des déclarations de contrôle dans l’étape suivante

Comme je l’ai mentionné, il n’y a pas de norme pour la conception et il se peut que dans d’autres cas il soit nécessaire de faire des diagrammes ou de faire du pseudocode, cela dépendra de la complexité du problème, mais en bref, l’important n’est pas de faire plus de diagrammes ou plus de pseudocode, mais plutôt que l’algorithme soit clair pour sa mise en œuvre

Une technique pour concevoir des algorithmes lorsque vous débutez et que vous n’avez pas beaucoup d’expérience, est de faire d’abord les étapes de manière générale et de les affiner ou de les polir jusqu’à ce que vous atteigniez la version optimale, la perfection et l’efficacité sont atteintes avec la pratique, C’est pourquoi la seule façon de s’améliorer dans cette phase est de s’entraîner et de pratiquer.

J’oubliais quelque chose, peut-être qu’à ce stade, des prototypes d’écrans sont également conçus avec lesquels l’utilisateur va interagir.

  1. Mise en place de l’environnement de développement pour le codage, la compilation et les essais

La prochaine étape consiste à configurer l’IDE, à charger les bibliothèques nécessaires, à réutiliser le code que vous pouvez avoir d’autres projets, à configurer un Framework s’il est utilisé.

Et plus tard, on passe la conception de l’algorithme au langage de programmation. Dans ce cas également, les écrans sont implémentés, la syntaxe est vérifiée, des tests sont effectués sur le codage par le programmeur et le programme est débogué.

  1. Documentation

Enfin, nous devons générer une documentation sur le fonctionnement de l’application afin que l’utilisateur puisse en manipuler les fonctionnalités, c’est ce qu’on appelle un manuel, un manuel technique, l’idée étant que l’utilisateur n’ait pas de problèmes avec l’utilisation des logiciels et des programmeurs pour effectuer des modifications.

Eh bien, comme vous pouvez le voir, il y a certaines choses que j’ai omis, comme le codage et les manuels, j’aurais aussi aimé montrer plus de formats, de même, l’algorithme pourrait être plus affiné, mais bon un peu pour des raisons de temps ce n’était pas possible, mais dans Si l’idée est que vous apprenez l’essentiel de là vous avec vos propres problèmes vous pouvez les polir plus.

Enfin, soulignez que c’est une bonne pratique de commencer à programmer pour avoir une bonne habitude, mais rappelez-vous que pour le faire de manière professionnelle et dans les équipes de programmation et avec les projets, on utilise généralement des méthodologies de développement de logiciels, ce qui sera également un autre sujet.

Soyez le premier à commenter

Poster un Commentaire

Votre adresse de messagerie ne sera pas publiée.


*