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 :

[Débutant] comprendre la signification de ce code


Sujet :

C#

  1. #1
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut [Débutant] comprendre la signification de ce code
    Bonjour,

    je voudrais avoir votre avit sur sa signification et/ou son utilité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    using System;
     
    namespace test_charp
    {
        class MainClass
        {
            const int UPCASE_VALUE = 27;
     
            /**
             * Constructeur par défaut
             * */
            public MainClass()
            { }
     
            /**
             * @parametre Str un sting de valeur Chifre.
             * Utiliser pour convertire un chiffre de type String en int + la constante dans un cas correcte
             * dans le cas contraire une exception est lever.
             * */
            public string GetUpperCasedName(string Str)
            {
              string Ret = null;
              int Letter = 0;
     
              Ret=Str;
              try{
                  Letter=int.Parse(Str)+UPCASE_VALUE; //si Str n'est pas un chiffre de type string une exception sera lever
                  Ret = Letter.ToString();
                 }catch(Exception e)
                       {
                        Console.WriteLine("Exception lever : "+ e.Message );
                       }
              return Ret;
            }
     
            /* test the function */
            public void testcode()
            {
                Console.Write("hello : " + this.GetUpperCasedName("hello") + "\n"); //this.GetUpperCasedName("11") 
            }
     
            public static void Main (string[] args)
            {    
                Console.WriteLine ("Methode Main.");
                MainClass o = new MainClass();
                o.testcode();
            }
     
     
        }
    }
    aussi selon vous manque t'il quelque chose pour ajoute une logique en plus a ce bout de code.

    Merci d'avance

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par geforce Voir le message
    Bonjour,

    je voudrais avoir votre avit sur sa signification e/out son utilisé
    Signification : ajoute 27 à la valeur numérique représentée par la chaine en entrée, retourne une chaine contenant la valeur. Le nom de la méthode ne correspond pas du tout à ce qu'elle fait.

    Utilité : aucune.

    Citation Envoyé par geforce Voir le message
    aussi se l'on vous manque t'il quelque chose pour ajoute une logique en plus a ce bout de code.
    Comme ce code n'a pas vraiment de logique, on imagine mal ce qu'on peut lui rajouter..

    Peut être mettre "+ 42", comme ça, au hasard ou une déclaration du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string gogo = "gloubiboulga";
    pour faire joli.

  3. #3
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Je suisa d'accord avec bluedeep : ça nesert à rien... et ee plus, c'est mal codé !

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Si tu remplaces la valeur de UPCASE_VALUE par 32, ton code à déjà plus de sens, il sert à mettre en majuscule une chaine caractère.

    Par contre il ne fonctionne pas, il faudrait ajouter UPCASE_VALUE à chaque caractère et pas directement à la chaine et remplacer int.Parse et ToString par des cast.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par Pierre Schaller Voir le message
    Bonjour,

    Si tu remplaces la valeur de UPCASE_VALUE par 32, ton code à déjà plus de sens, il sert à mettre en majuscule une chaine caractère.
    Non, relis le code : il test si la chaine contient quelque chose pouvant être converti en entier et y ajoute UPCASE_VALUE. Que ce dernier vale 27, 32 ou 10^185 ne changera rien au problème. Ca ne convertira rien du tout, et levera une exception pour tout ce qui ne contient pas du numérique entier dans la chaine.

    Par contre il ne fonctionne pas, il faudrait ajouter UPCASE_VALUE à chaque caractère et pas directement à la chaine et remplacer int.Parse et ToString par des cast.
    Et il n'y a pas à écrire de code pour convertir en majuscule, la méthode ToUpper de la classe string fait cela très bien.

  6. #6
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    initialement le code été comme suite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    /* sample code written in C# */
    /* please feel free to modify/rewrite for a better C# version */
    const int UPCASE_VALUE = 27;
     
    /* return the string passed as parameter with first letter upcased */
    string getuppercasedname(string Str)
    {
      string Ret;
      int Letter;
     
      Ret=Str;
      Letter=int.Parse(Str)+UPCASE_VALUE;
      Ret=Letter;
      return Ret;
    }
     
    /* test the function */
    void testcode()
    {
        Console.Write("hello " + GetUppercasedName("hello") + "\n");
    }
    Aprés met modification je les corrige pour ne plus avoir de bug (le code du 1er Post) mais je crois que j'ai perdu un peut de sa signification où logique.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par geforce Voir le message
    Aprés met modification je les corrige pour ne plus avoir de bug (le code du 1er Post) mais je crois que j'ai perdu un peut de sa signification où logique.
    Que ce soit en version initiale ou modifiée ce code n'a aucune logique et en tous cas ne fait pas du tout ce que le commentaire prétend.

    Le code pour faire ce que dit le commentaire serait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            public static string FirstLetterInUC(string s)
            {
                if (string.IsNullOrEmpty(s))
                {
                    return s;
                }
                char firstLetter = Char.ToUpper(s[0]);
                return s.Remove(0, 1).Insert(0, firstLetter.ToString());
            }

  8. #8
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    ma solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    using System;
     
    namespace test_charp
    {
        class MainClass
        {
            const int UPCASE_VALUE = 32; //27 //Escape en code ASCII (Peut étre utiliser pour supprimes des espaces)
     
            string Str;
     
            /**
             * Constructeur par défaut
             * */
            public MainClass()
            {
              Str = "hello";
            }
     
     
            /**
             * @parametre Str un sting de valeur Chifre.
             * une exéption est est lever l'orceque Str == "   ".
             * */
            private string GetUpperCasedName(string Str)
            {
              string Ret = null;
              int Letter, strLength, i=-1;
              char firstLetter;
     
              if (string.IsNullOrEmpty(Str)) return Str;
     
              Ret=Str; strLength = Str.Length;
     
                do
                {             
                 i++;
                 Letter = Str[ i ];    
                }while(Letter == UPCASE_VALUE && (i+1) < strLength);
     
              try{        
                   firstLetter = Char.ToUpper(Str[ i ]); //si Str n'est pas un chifre de type string une exception sera lever    
     
                   Ret = Str.Remove(i, 1).Insert(i, firstLetter.ToString());
                 }catch(Exception e)
                       {
                        Console.WriteLine("Exeption lever : "+ e.Message );
                       }
     
            return Ret;
            }
     
            /* test the function */
            public void testcode()
            {
                Console.Write("hello : " + this.GetUpperCasedName( this.Str ) + "\n"); 
            }
     
            public static void Main (string[] args)
            {    
                Console.WriteLine ("Methode Main....");
                MainClass o = new MainClass();
                o.testcode();
     
                //Console.ReadKey();
            }
     
        }
     
    }

  9. #9
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Décidément, je ne comprends pas l'objectif de ce code... C'est mal codé et on ne voit pas ce que ça fait !

    1/ pour faire des descriptions (doc) on utilise le /// qui ajoute summary, etc.
    2/ inutile de sauter des lignes à tord et à travers ! Ca rend le code moins lisible.
    3/ mannipule ta chaine de retour et non celle d'entrée !
    4/ à quoi sert ton ??? RIEN !!! Si Letter est <> 32, on sort ! ce qui risque d'arriver dès le premier tour de boucle...

    Sérieusement, j'espère ne jamais avoir à maintenir ton code... ça me donne envie de tout refaire ! (et c'est la première fois en lisant du code !)

    Si ton but est de sortir une chaine dont la première lettre est une majuscule, utilise le code de Bluedeep, c'est simple, clair et ça fait ce qu'on demande ! Sinon, explique nous ce que tu attends !

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

Discussions similaires

  1. [Simulink][Débutante] Erreur de compilation dans un code
    Par karamellati dans le forum MATLAB
    Réponses: 4
    Dernier message: 30/05/2007, 11h47
  2. [débutant] les quotes " et ' pour 3 codes différents
    Par Christophe93250 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/03/2007, 21h11
  3. Signification d'un code
    Par deubelte dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/02/2007, 19h05
  4. [DB400][Débutant]comprendre la gestion des processus actif
    Par horalass dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 12/12/2006, 09h26
  5. Réponses: 2
    Dernier message: 09/06/2006, 14h38

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