Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Apprenez à développer en C#

    5 mai 2015 à 15:52:44

    Bonjour à tous et bienvenue à tous ceux qui participent au cours "Apprenez à développer en C#" !
    Ce cours sera ouvert avec des exercices certifiants à partir du 9 juin, et vous y découvrirez les bases pour faire du développement avec le langage C#.
    Je vous invite à poster vos questions sur le cours ici. J'essaierai de répondre régulièrement, mais n'hésitez pas à discuter entre vous et à vous entraider. 
    À très bientôt !

    -
    Edité par Anonyme 27 mai 2015 à 15:16:42

    • Partager sur Facebook
    • Partager sur Twitter
      5 mai 2015 à 17:38:31

      Bonjour,

      Je tenais juste à signaler que je suivais le cours précédent et que ce changement me perturbe dans mon apprentissage.

      Mais bon rien de grave évidemment...

      En espérant que celui la m'apprennes plus de choses (:

      • Partager sur Facebook
      • Partager sur Twitter
        19 mai 2015 à 15:43:56

        Bonjour, 

        Je viens vers vous, car actuellement j'étudie le Csharp, plus précisément le cours sur le langage objet (voir : http://openclassrooms.com/courses/programmez-en-oriente-objet-avec-c/creez-votre-premier-objet)

        Quoi qu'il en soit, 

        j'ai ecrit le code suivant : 

        "

        using System;

        using System.Collections.Generic;

        using System.Linq;

        using System.Text;

        using System.Threading.Tasks;

        namespace LangageObjet

        {

            class Voiture

            {

        // Création de nos objets (ici 2 voitures Nicolas et Jeremie)

                Voiture voitureNicolas = new Voiture();

                Voiture voitureJeremie = new Voiture();

        // On créer notre action (appelé METHODE)   

                void klaxonner()

                {

                    Console.WriteLine("Pouet!");

                }

        // Utiliser l'action klaxonner desormais :

                voitureNicolas.klaxonner();  

            }

        }

        "

        Et lorsque je désire compiler, il me signale une erreur :

        " Erreur1Jeton '(' non valide dans la déclaration de membres de la classe, de la structure ou de l'interfacec:\users\dan\documents\visual studio 2013\Projects\LangageObjet\LangageObjet\Voiture.cs2533LangageObjet "

        Quelqu'un pourrait m'expliquer ce que je dois faire face à ce problème.
        Merci d'avance.
        • Partager sur Facebook
        • Partager sur Twitter
          21 mai 2015 à 9:08:56

          Bonjour,

          il y a plusieurs choses qui ne vont pas dans ce code. N'hésite pas à (re)voir le cours précédent qui présente les bases du C#.

          Première chose, il te faut une méthode Main, et c'est dedans que tu pourras instancier tes objets Voiture. Et puis il faut la classe Voiture. Tu auras un truc du genre :

          using System;
          using System.Collections.Generic;
          using System.Linq;
          using System.Text;
          using System.Threading.Tasks;
          
          namespace LangageObjet
          {
          	class Program
          	{
          		static void Main(string[] args)
          		{
          			// Création de nos objets (ici 2 voitures Nicolas et Jeremie)
          			Voiture voitureNicolas = new Voiture();
          			Voiture voitureJeremie = new Voiture(); // note ici voitureJeremie n'est pas utilisée
          
          			// Utiliser l'action klaxonner desormais :
          			voitureNicolas.Klaxonner();
          		}
          	}
          
          	class Voiture
          	{
          		// On créer notre action (appelé METHODE)   
          		public void Klaxonner()
          		{
          			Console.WriteLine("Pouet!");
          		}
          	}
          }



          • Partager sur Facebook
          • Partager sur Twitter
            26 mai 2015 à 17:17:26

            Bonjour, dans ce cours ci:

            http://openclassrooms.com/courses/apprenez-a-developper-en-c/creer-un-projet-avec-visual-c-2010-express

            Je n'ai pas le choix de créer une "application console", je ne peux que créer une "bibliotheque de classes" comme projet, quel est le probleme?

            • Partager sur Facebook
            • Partager sur Twitter
              28 mai 2015 à 14:53:31

              a quand la suite ? POO ?
              • Partager sur Facebook
              • Partager sur Twitter
                29 mai 2015 à 10:22:32

                Bonjour,

                logiquement, il devrait y avoir forcément la possibilité de créer une application. Tentez de réinstaller ?

                Pour la suite, la POO, c'est pour (très) bientôt... :)

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  31 mai 2015 à 11:01:58

                  Bonjour,

                  tout d'abord, merci pour ce cours. Et en effet je rencontre le même problème que Dhieen, ce qui m'embête. J'ai regardé dans la bibliothèque, on a le même code mais l'extension n'est pas pareil. J'ai téléchargé Visual le 31 mai.

                  Pouvez-vous m'éclairer? J'ai la version 2013 bien entendu.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    31 mai 2015 à 11:03:45

                    Voyez:

                    http://www.noelshack.com/2015-22-1433062994-capture.png

                    -
                    Edité par Anonyme 31 mai 2015 à 11:04:09

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      31 mai 2015 à 13:17:02

                      Tu utilises Visual Studio Express 2013 pour le Web, tu dois prendre VS 2013 pour Windows Desktop pour créer une application console.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        31 mai 2015 à 14:14:25

                        platinum0 a écrit:

                        Tu utilises Visual Studio Express 2013 pour le Web, tu dois prendre VS 2013 pour Windows Desktop pour créer une application console.


                        On peut le télécharger où?
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          31 mai 2015 à 16:09:17

                          Tu peux le trouver sur cette page : https://www.visualstudio.com/fr-fr/downloads/download-visual-studio-vs.aspx

                          -
                          Edité par Anonyme 31 mai 2015 à 16:10:02

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            31 mai 2015 à 16:31:32

                            platinum0 a écrit:

                            Tu peux le trouver sur cette page : https://www.visualstudio.com/fr-fr/downloads/download-visual-studio-vs.aspx

                            -
                            Edité par platinum0 il y a 21 minutes


                            Merci ^^
                            • Partager sur Facebook
                            • Partager sur Twitter
                              8 juin 2015 à 20:53:26

                              Bonsoir,

                              Je souhaite m'inscrire à ce cours. Par contre, j'ai un projet assez complet en tête et j'ai contacté le service clients d'OpenClassrooms afin d'établir un programme de formation logique en fonction de mes objectifs.

                              J'avais peur de me tromper dans le choix des cours. Une personne du service client m'a indiqué qu'un professeur m’appellerait pour mettre ça en place, il y a une semaine déjà, et aucune nouvelle...

                              Mon objectif est de maitriser le C# pour faire appli, logiciels et site Web. A priori je vais devoir suivre des cours sur BDD, C#, MVC etc. Mais j'aimerais bien mettre en place un suivi avec un professeur.

                              Une personne de l'équipe d'Openclassrooms pourrait m'aider ?

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                12 juin 2015 à 16:18:13

                                Bernardlf a écrit:

                                Bonsoir,

                                Je souhaite m'inscrire à ce cours. Par contre, j'ai un projet assez complet en tête et j'ai contacté le service clients d'OpenClassrooms afin d'établir un programme de formation logique en fonction de mes objectifs.

                                J'avais peur de me tromper dans le choix des cours. Une personne du service client m'a indiqué qu'un professeur m’appellerait pour mettre ça en place, il y a une semaine déjà, et aucune nouvelle...

                                Mon objectif est de maitriser le C# pour faire appli, logiciels et site Web. A priori je vais devoir suivre des cours sur BDD, C#, MVC etc. Mais j'aimerais bien mettre en place un suivi avec un professeur.

                                Une personne de l'équipe d'Openclassrooms pourrait m'aider ?

                                Bonjour Bernard,

                                Le support vous a répondu hier, si vous avez d'autres questions n'hésitez pas à faire suite au message qui vous a été envoyé !

                                Bonne journée,

                                Marine.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  15 juin 2015 à 16:48:36

                                  Est-il prévu de faire des vidéos pour ce cours comme cela a été fait pour le cours de Html 5 - Css 3 de Mathieu Nebra ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    15 juin 2015 à 17:08:58

                                    -_guigui_- a écrit:

                                    Est-il prévu de faire des vidéos pour ce cours comme cela a été fait pour le cours de Html 5 - Css 3 de Mathieu Nebra ?


                                    J'en serais vraiment ravi :)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      17 juin 2015 à 9:21:12

                                      Bonjour,

                                      je n'ai pas prévu encore de le faire. Vous y verriez des avantages par rapport à la version rédigée ?

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        17 juin 2015 à 11:33:15

                                        nico.pyright a écrit:

                                        Bonjour,

                                        je n'ai pas prévu encore de le faire. Vous y verriez des avantages par rapport à la version rédigée ?


                                        Et bien personnellement, j'ai fais deux fois le cours sur l'HTML: une fois avec le texte uniquement, et l'autre avec les vidéos. J'ai bien mieux réussi la deuxième fois. J'imagine qu'il irait de même avec le C#.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          17 juin 2015 à 23:44:47

                                          Personnellement, je trouve aussi que l'apprentissage par la vidéo est plus efficace. On fait fonctionner la mémoire auditive et visuelle en même temps. J'aime bien pouvoir me regarder une vidéo avant de me coucher et le problème avec la version rédigé c'est que la lecture à tendance à avoir un effet somnifère sur moi, ce qui est moi le cas de la vidéo. Ainsi, avec le cours Html 5 je me couchais en regardant des vidéos sur des choses que j'avais mal assimiler ou que je voulais retenir. Perso, le MOOC Html 5 a été validé en 5 jours ! :)

                                          J'ai bien conscience de la quantité de travail que peut être la réalisation d'un cours vidéo (surtout pour le pavé qu'est le C#^^) mais je pense vraiment que c'est un réel plus pour l'apprentissage.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            24 juin 2015 à 11:31:15

                                            Bonjour Nicolas,

                                            J'ai un petit souci pour utiliser votre code du chapitre 28 sur les énumérateurs de votre ouvrage paru sur le SDZ. Après avoir implémenté les interfaces IEnumerator et IEnumerable dans les classes de la liste chaînée, lors de l'appel du foreach dans le programme principal , j'obtiens une erreur de type : peut-être est-ce une erreur classique ?...

                                            Cordialement.

                                            Julien

                                            Error    1    Cannot convert type 'int' to 'ListeChainee.Element<int>'  

                                            (Appel : 

                                            foreach  ( Element<int> el in UneListe)
                                                        {
                                                            Console.WriteLine("Element " + el._Element);
                                                        }

                                            )

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              25 juin 2015 à 8:57:35

                                              Bonjour,

                                              comment est déclaré UneListe ?

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                25 juin 2015 à 9:07:49

                                                Pour les vidéos, c'est aussi une histoire de matériel, je ne suis pas du tout équipé pour :).

                                                Peut-être des screen-casts alors, mais il faudrait que j’achète un bon micro ^^

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Anonyme
                                                  25 juin 2015 à 10:06:47

                                                  N'allez tout de même pas vous ruiner pour nous ;)
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    27 juin 2015 à 13:26:46

                                                    Bonjour,

                                                    J'ai une petite question concernant la portée des variables.

                                                    Je sais qu'une variable locale d'un bloc enfant ne peut porter le même nom que celle d'un bloc parent, ex:

                                                    {
                                                      int i = 0;
                                                      ....
                                                      { 
                                                        int i = 3; // ici le compilateur n'est pas content
                                                        ...
                                                      }
                                                    }

                                                    C'est un comportement que l'on retrouve en Java, j'avoue ne pas saisir la subtilité puisqu'à priori un bloc est fait entre autres choses pour "minimiser" la portée des variables et là on observe bien une limite de portée de la variable au bloc mais tout se passe comme si le compilateur considérait le nom de variable i comme déjà "réservé" dans l'espace des noms de variables locales.

                                                    J'écris cela suite à la partie de cours sur les boucles, car j'ai l'impression qu'il y a une subtilité en C# que l'on a pas en Java, j'explique cela avec un exemple simple:

                                                    string[] jours = new string[] { "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato", "Domenica" };
                                                    for (int i = 0; i < jours.Length; i++)
                                                    {
                                                      Console.WriteLine("Jour " + i + " = " + jours[i]);
                                                    }
                                                    int i = 0; // <= Le compilateur n'est pas content
                                                    foreach (string jour in jours)
                                                    {
                                                      Console.WriteLine("Jour " + i++ + " = " + jour);
                                                    }

                                                    En Java, si on déclare la variable i avant la boucle for (int i = 0; i < jours.Length; i++) on applique bien la règle précédente (bloc parent-> bloc enfant) avec une variable locale de même nom, donc en collision.

                                                    Mais si on la déclare après la boucle, alors le compilateur accepte cette (re)déclaration et la considère bien  comme une nouvelle variable locale du bloc parent (à celui de la boucle). Autrement dit, l'exemple de code précédent serait correct en Java (j'ai testé avec succès).

                                                    En C# l'exemple de code précédent ne compile pas, en fait il semble que quel que soit l'endroit où l'on déclare une variable locale d'un bloc parent (avant ou après un bloc enfant) il y a "collision" de nom et l'on est obligé de changer le nom de la variable.

                                                    Autrement dit (après plusieurs essais dans tous les sens) les deux codes suivant génèrent une erreur à la compilation:

                                                    string[] jours = new string[] { "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato", "Domenica" };
                                                    for (int i = 0; i < jours.Length; i++)
                                                    {
                                                      Console.WriteLine("Jour " + i + " = " + jours[i]);
                                                    }
                                                    int i = 0; // <= Le compilateur n'est pas content
                                                    foreach (string jour in jours)
                                                    {
                                                      Console.WriteLine("Jour " + i++ + " = " + jour);
                                                    }

                                                     J'ai l'erreur:

                                                    Erreur    1    Une variable locale nommée 'i' ne peut pas être déclarée dans cette portée, car elle modifierait la signification de 'i', déjà utilisée dans une portée 'enfant' pour désigner autre chose

                                                    int i = 0; 
                                                    string[] jours = new string[] { "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato", "Domenica" }; for (int i = 0; i < jours.Length; i++) // <= Le compilateur n'est pas content { Console.WriteLine("Jour " + i + " = " + jours[i]); } foreach (string jour in jours) { Console.WriteLine("Jour " + i++ + " = " + jour); }

                                                     J'ai l'erreur:

                                                    Erreur    1    Une variable locale nommée 'i' ne peut pas être déclarée dans cette portée, car elle modifierait la signification de 'i', déjà utilisée dans une portée 'parent ou en cours' pour désigner autre chose

                                                    ______________________________________________

                                                    Pourriez-vous confirmer ce comportement? (en tout cas c'est ce que j'observe et les infos que j'ai trouvé sur le net semblent confirmer, mais j'aurais souhaité être sûr de cela car c'est un piège que je dois éviter, venant du monde Java...)

                                                    Si tel est le cas, peut-être que cela serait intéressant de rajouter une petite partie concernant ce point délicat dans le cours, cela éviterai de faire des erreurs ;). Cela ressemble à une subtilité mais reste un vrai "casse-tête" lorsqu'on a l'habitude d'autres langages.

                                                    Merci,

                                                    Eric.







                                                    -
                                                    Edité par EricQ 27 juin 2015 à 13:27:22

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      27 juin 2015 à 15:51:27

                                                      Bonjour,

                                                      Concernant l'activité Réalisez un tirage de loto, vous souhaitez uniquement le fichier Program.cs (et non la solution complète) ?

                                                      Peut-on fournir différentes versions (avec/sans optimisation)?

                                                      Merci beaucoup,

                                                      Eric.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        29 juin 2015 à 9:15:33

                                                        Bonjour,

                                                        effectivement ce sont des subtilités. Et je confirme le comportement que vous voyez. Cependant, en théorie ce n'est pas un problème car quand on souhaite créer un programme bien structuré, clair et maintenable, on a tendance à utiliser des noms de variables explicites et fortement différents, qui expriment bien l'intention d'un code. Ces erreurs de compilation auront d'ailleurs tendance à indiquer au développeur qu'une collision de nom est sans doute un problème de nommage peu explicite. :)

                                                        Pour l'activité, il est plus simple pour les correcteurs d'avoir un unique fichier contenant tout le code, même si c'est contraire à toute bonne architecture correcte de code. Vous pouvez fournir plusieurs implémentations, mais sachez que les optimisations ne font pas partie du barème de notation. J'ai d'ailleurs souvent tendance à déconseiller l'optimisation au détriment de la lisibilité du code (et au final sa maintenabilité).

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          29 juin 2015 à 12:12:17

                                                          Bonjour,

                                                          Merci pour votre réponse, quelques précisions complémentaires tout de même:

                                                          1/ Concernant l'activité

                                                          - C'est bien le fichier Program.cs compressé dans un fichier ZIP que vous demandez? le nom de l'archive?

                                                            Cette question peut paraître bête, mais à l'UPMC, en licence, on me demandait souvent de rendre le travail dans un format particulier (archive tar très souvent) et l'archive devait avoir un nom bien précis.

                                                          - Pour le cas de l'unique fichier, ici cela n'a pas d'impact puisqu'il n'y a qu'un seul fichier, si toutefois on parle bien de Program.cs.

                                                          - J'ai bien retenu que vous ne souhaitiez qu'une seule version de préférence non optimisée, toutefois je me suis quand même permis de ne pas "tomber" dans le code inutile.

                                                          - J'ai également ajouter les commentaires pour aider à la compréhension du code, ainsi:

                                                                  /// <summary>
                                                                  /// Cette fonction renvoie le nombre de secondes écoulée
                                                                  /// à partir de l'age de la personne
                                                                  /// </summary>
                                                                  /// <param name="age">Age de la personne (en années)</param>
                                                                  /// <param name="nom">Nom de la personne</param>
                                                                  /// <returns>Nombre de secondes liées à l'age</returns>
                                                                  static int exempleDeMethode(int age, string nom)
                                                                  {
                                                                      int result = 0;
                                                                      // code de ma méthode
                                                                      return result;
                                                                  }


                                                          J'espère que ces commentaires, censés aider à la compréhension du code, ne me vaudront pas un 0 !???

                                                          2/ Concernant le comportement "subtile" du C# que j'ai soulevé

                                                          Votre confirmation va donc dans le sens de mes constations, toutefois je suis partiellement d'accord avec vous, en particulier pour un cours pour débutant, je m'explique:

                                                          - Les noms des variables n'aident pas à la structure du programme mais à sa lisibilité et donc sa maintenance/évolution.

                                                          - Les blocs sont le plus souvent des "sous-ensembles" d'instructions groupées de façon logique, cette fois pour bien structurer le programme, et il n'est pas rare (pour ne pas dire fréquent) d'utiliser des variables locales au bloc pour parcourrir une boucle ou pour faire une passation par exemple. Dans ce cas précis le nommage conventionnel est l'utilisation des lettres de l'alphabet (je pense en particulier aux boucles), et donc Java permettant l'utilisation de noms identiques entre blocs enfants et parents l'on ne se gène pas pour utiliser une variable "i" dans ces deux blocs. Je vous accorde que dans l'absolu il serait parfois plus judicieux d'utiliser une autre lettre, mais lorsque cela n'est pas nécessaire pour la compréhension du code pourquoi le faire (on rejoint votre commentaire sur "l'homme est paresseux" dans votre cours.

                                                          Tout cela pour dire que je pense réellement qu'il faudrait rajouter un tout petit paragraphe là dessus, vous demandez l'avis de vos "élèves" afin de vous aider à améliorer votre cours, alors j'en profite. D'ailleurs un cours est une sorte de contrat entre l'enseignant/formateur et les apprenants.

                                                          De même attention à ne pas inverser la tendance, nommer les variables avec des noms à rallonge peut provoquer l'effet inverse et rendre le code illisible. Par exemple, une variable de boucle qui s'appellerait maVariableDeBouclePourLeParcoursDeMonTableauDentiers serait une catastrophe.

                                                          -
                                                          Edité par EricQ 29 juin 2015 à 12:13:47

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            30 juin 2015 à 1:01:40

                                                            Bonjour,

                                                            Je suis entrain de terminer ce cours et j'aurais besoin d'un complément d'information afin de pouvoir compléter le Quiz de la troisième et dernière partie.

                                                            En effet, à la question 6 (dernière question) il est demandé: Comment lire les paramètres de la ligne de commande ?

                                                            Or, sauf erreur de ma part et après avoir pris le temps de lire la documentation MSDN relative au passage et à la récupération des arguments d'une application, il semble qu'il y ait deux réponses possibles mais on ne peut en cocher qu'une seule (les réponses sont exclusives entre elles).

                                                            - Faut-il donner l'une des deux réponses possibles (qui sera donc compter comme juste) ce qui est contraire à la définition d'une Question à Choix Unique?

                                                            - Y a t-il une explication qui  m'échappe, mais votre cours et la doc MSDN fournissent la même information, à savoir:

                                                            Depuis l'application, pour récupérer les arguments transmis au programme on peut:

                                                            • Utiliser l'argument args de la méthode Main (point d'entrée du programme)
                                                            • Utiliser la méthode Environment.GetCommandLineArgs()


                                                            La différence étant une donnée complémentaire fournie dans le tableau de string par Environment.GetCommandLineArgs() et qu'il faut donc considérer le premier argument à l'indice 1, alors que le même argument est en indice 0 pour le paramètre args.

                                                            Je n'ai pour ma part trouvé aucune restriction d'usage (MSDN, StackOverflow, etc.), pouvez-vous confirmer cela?.

                                                            => Comment procède t-on dans ce cas là pour répondre à la question 6?

                                                            Je vais attendre au mieux votre réponse pour faire le Quiz et soumettre mon activité, en attendant je commence la partie POO.

                                                            Merci,

                                                            Eric.

                                                            -
                                                            Edité par EricQ 30 juin 2015 à 1:02:21

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              30 juin 2015 à 8:55:08

                                                              Bonjour,

                                                              peu importe le nom de l'archive, il faut juste qu'elle contienne le .cs.

                                                              Pour le quiz, je confirme qu'il n'y a qu'une seule bonne réponse ; une des réponse contient un piège grossier :)

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              MOOC Apprenez à développer en C#

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown