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 :

Du mal a programmer en C


Sujet :

C

  1. #1
    Membre actif
    Homme Profil pro
    Etudiant à l'ESGI
    Inscrit en
    Mars 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant à l'ESGI
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 13
    Par défaut Du mal a programmer en C
    Bonsoir à tous,

    Voilà mon problème, je suis dans une école de programmation et le C est la base afin d'apprendre à programmer.

    Certe j'ai vraiment du mal à cerner la programmation, pou tous vous dire je ne comprends absolument rien, j'ai énormément de difficultés à avancer dans mes projets du coup je cherche un peu d'aide et de conseil sur ce forum pour pouvoir en savoir plus.

    Je n'arrive pas à crée mon propre algorithme, je ne me sens pas très à l'aise avec les tableaux et les pointeurs, macro j'ai l'impression de rien comprendre quand on me parle de code...je veux vraiment apprendre et être bon et ne pas copier sur les autres pour faire mon projets, je veux crée mon programme mais pour moi je ne vois qu'une masse de chiffre et des choses sans significations. c'est sur que c'est pas du français mais il doit bien y avoir un moyen d'apprendre cela...

    En vous remerciant d'avance.

  2. #2
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 661
    Par défaut
    Bonjour,

    Commencer la programmation n'est pas toujours facile, mais c'est beaucoup moins compliqué que ça peut le paraitre.

    Certe j'ai vraiment du mal à cerner la programmation, pou tous vous dire je ne comprends absolument rien
    Si tu trouves pas tes cours assez clair ou complet, tourne toi vers les cours et tutoriels de formation pour apprendre la programmation langage C. Tu peux aussi acheter un bon bouquin sur le C ou la programmation en général.

    Je n'arrive pas à crée mon propre algorithme, je ne me sens pas très à l'aise avec les tableaux et les pointeurs
    Si tu n'as pas encore assimilé le paradigme de la programmation, alors mets de coté pour l'instant les tableaux / pointeurs / etc ... Coder inclut beaucoup de nouvelles notions et il faut absolument que tu assimiles chacune d'entre elles avant de passer a la suivante.

    Il faut prendre ça petit bout par petit bout. C'est pour ça qu'on fait commencer les débutants avec le C, car c'est la base de quasi tout les langages et il n' y a pas de notion d'objets. C'est la programmation dans sa (presque) forme pure.

    Quelles sont tes difficultés précisement ? Qu'est ce que tu connais déja ?

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    c'est sur que c'est pas du français mais il doit bien y avoir un moyen d'apprendre cela...
    Et bien justement : il faut raisonner en français, écrire ses algo sur papier avec un stylo en français, et ensuite traduire cela en code. Je dis bien "en code" et pas "en C" car une fois l'étape dite de conception, de réflexion, tu peux adapter cela avec le langage de ton choix. Si tu choisis le C, il faut alors comprendre les notions de ce langage, les structures qu'il propose, et trouver les techniques pour traduire ton français en C.

    PixelJuice a tout à fait raison quand il te dit de mettre les notions compliquées de côté : tu ne pourras pas les comprendre si tu n'as pas bien compris les notions simples. Lis des cours (tu en as peut-être eu dans ton école), plusieurs cours pour avoir différentes approches, différentes façons d'expliquer. Fais des programmes simples (une fonction pour calculer un carré de 2 nombres, une fonction pour calculer la factorielle d'un nombre), passe à des choses plus compliqués en terme d'éléments de langages (trouver le minimum dans un tableau, trouver la position d'un caractère dans une chaine). Comprend les fonctions du C, en les utilisant comme en étant capable de les utiliser mais pourquoi pas en étant capable d'en recoder certaines (comme strlen()).

    Petit à petit, les morceaux feront connexion. Tu sembles motivé, c'est (presque) tout ce qu'il compte.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 478
    Par défaut
    Bonjour et bienvenue,

    Citation Envoyé par nashad Voir le message
    Voilà mon problème, je suis dans une école de programmation et le C est la base afin d'apprendre à programmer.
    Certe j'ai vraiment du mal à cerner la programmation, pou tous vous dire je ne comprends absolument rien, j'ai énormément de difficultés à avancer dans mes projets du coup je cherche un peu d'aide et de conseil sur ce forum pour pouvoir en savoir plus.
    C'est le bon endroit pour le faire.
    As-tu déjà commencé à écrire, malgré tout, quelques bribes de programme ? Si tu les déposes ici, on pourra essayer de les commenter.

    Je n'arrive pas à crée mon propre algorithme, je ne me sens pas très à l'aise avec les tableaux et les pointeurs, macro j'ai l'impression de rien comprendre quand on me parle de code...je veux vraiment apprendre et être bon et ne pas copier sur les autres pour faire mon projets, je veux crée mon programme mais pour moi je ne vois qu'une masse de chiffre et des choses sans significations. c'est sur que c'est pas du français mais il doit bien y avoir un moyen d'apprendre cela...
    En vous remerciant d'avance.
    Bktero t'a donné les meilleurs conseils qui soient mais malgré tout, il est vrai que pratiquer d'emblée permet de progresser assez vite. Chose vraie également, l'esprit « algorithmique » se développe assez vite.
    Le langage C, en revanche, est souvent présenté d'emblée alors que c'est loin d'être le plus facile. Par contre, il est non seulement très répandu, mais il est surtout très proche du fonctionnement réel de la machine, ce qui signifie que toutes les bizarreries que tu pourras y rencontrer ont en réalité une explication technique. Et à ce titre, connaître un tout petit peu l'architecture des ordinateurs permet de grandement accélérer l'assimilation du C. Ceux qui ont fait un peu d'assembleur auparavant s'y retrouvent parfaitement à l'aise. L'exemple le plus flagrant est celui des pointeurs, qui désarçonne énormément d'étudiants alors que dès lors que l'on sait ce qu'est une adresse mémoire, leur existence et leur utilisation deviennent évidentes.

    Tout cela pour dire, donc : pas d'inquétude, tout cela va finir par se mettre en place.

    As-tu déjà réalisé un premier « Hello world ? » ? Si oui, tu devrais partir de cette base pour le complexifier progressivement.

  5. #5
    Membre actif
    Homme Profil pro
    Etudiant à l'ESGI
    Inscrit en
    Mars 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant à l'ESGI
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 13
    Par défaut
    Alors déjà un grand merci à vous pour vos réponse !!

    Pour tout vous dire , j'ai lu des dizaines et des dizaines de fois mes cours, mais j'ai l'impression que rien n'est complet...Je voudrais vraiment comprendre ce paradigme de "Programmation" mais je ne vois pas comment le comprendre.
    J'ai essayer plusieurs tutoriel comme : openclasseroom, tuto sur le web... mais tout cela ne m'a pas permis d'avancer..

    Autre quand tu dis écrire en "code" et non pas en C, que cela signifie ?

    Pour détailler un peu ma difficulté je vais vous expliquer comment cela c'est passer :

    Alors j'ai rejoins l'école Epitech de Paris, du coup premier mois de piscine, bourrage de crane sur le code. A partir de ma piscine j'ai eu beaucoup de difficulté à comprendre car les notions etait assez vague et surtout je n'aime pas faire quelque chose sans en comprendre le principe et son fonctionnement. Du coup je foire ma piscine car j'ai voulu recommencer les notions du C en milieu de piscine pour essayer de comprendre mais jusqu’à maintenant, je ne comprends pas tous à fait ces notions... Je vous cache pas que niveau moral et bien ce n’était pas trop ça, je m'accroche mais je veux vraiment comprendre, je veux programmer je veux aimer ça ! je persévère mais j'ai l'impression que les fruits de ces efforts ne mène à rien pour le moment...j'aurais vraiment besoin d'un gros soutient pour avancer et pouvoir comprendre.

    Je remercie encore une fois la communauté pour ces réponses !!

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 478
    Par défaut
    Citation Envoyé par nashad Voir le message
    Alors j'ai rejoins l'école Epitech de Paris, du coup premier mois de piscine, bourrage de crane sur le code. A partir de ma piscine j'ai eu beaucoup de difficulté à comprendre car les notions etait assez vague et surtout je n'aime pas faire quelque chose sans en comprendre le principe et son fonctionnement.
    C'est une qualité chez un programmeur.

    Du coup je foire ma piscine car j'ai voulu recommencer les notions du C en milieu de piscine pour essayer de comprendre mais jusqu’à maintenant, je ne comprends pas tous à fait ces notions... Je vous cache pas que niveau moral et bien ce n’était pas trop ça, je m'accroche mais je veux vraiment comprendre, je veux programmer je veux aimer ça ! je persévère mais j'ai l'impression que les fruits de ces efforts ne mène à rien pour le moment...j'aurais vraiment besoin d'un gros soutient pour avancer et pouvoir comprendre.
    Je pense que tu as la fibre. Du coup, rien ne devrait te bloquer. Comme bien souvent en cours, et en particulier en mathématiques, il doit simplement te manquer « la première pièce du puzzle ». Dès que tu auras saisi le concept, tout le reste va en découler comme par magie.

    Autre quand tu dis écrire en "code" et non pas en C, que cela signifie ?
    Je pense qu'il voulait dire « en pseudo-code ». Autrement dit, écrire une liste de procédures et de conditions dans un langage humain et détaché des spécificités du C ou d'un autre langage en particulier, de façon à te faire focaliser sur l'algorithme en particulier et non sur la manière d'expliquer ça à ton PC. C'est extrêmement courant et c'est justifié mais personnellement, je trouve que ça peut être un mal comme un bien. Il n'y a pas de raison que le pseudo-code soit plus clair en soi qu'un langage donné. Par contre, certains langages informatiques sont plus adaptés que d'autres pour débuter.

    Je voudrais vraiment comprendre ce paradigme de "Programmation" mais je ne vois pas comment le comprendre.
    « programmer » une machine, que ce soit un ordinateur, une machine à laver ou le minuteur d'un thermostat, consiste à lui donner à l'avance une liste d'instructions pour qu'elle les exécute ensuite de façon autonome dès qu'on lui donnera l'ordre de commencer à le faire. À noter que ce sont des notions qui s'entendent au sens large : on pourrait faire la même chose avec un soldat, par exemple. :-)

    Il y a bien des façons de programmer une machine pour l'amener à faire ce que l'on souhaite la voir faire mais, la plupart du temps, il s'agit de programmation impérative : autrement dit, on lui donne une suite d'ordres qu'elle va exécuter les uns après les autres.

    Ceci implique qu'on va lui donner une liste d'ordre (d'ailleurs le BASIC des années 70 et 80 utilisait la commande « LIST » pour faire afficher le programme source), liste qui va avoir un « point d'entrée », c'est-à-dire l'endroit où l'automate va commencer à interpréter la liste en question : par défaut, c'est le début, mais il arrive fréquemment que ce soit en milieu de document, si des choses ont besoin d'être déclarées en préambule ou quand il s'agit de faire une itération qui ne finit pas là où elle commence.

    Il existe d'autre part des langages interprétés et d'autres compilés. Les programmes écrits avec les premiers sont directement lus par un logiciel qui s'exécute sur la machine cible et qui honore les demandes en temps réel, au fur et à mesure qu'elle les lit. C'est le cas du Basic, du Python, ou du Shellscript, par exemple.

    Les langages compilés, eux, sont faits pour être analysés en une fois par un logiciel (le compilateur) qui, lui, va produire un autre document à partir de ces informations. Dans le cas des langages de programmation, il va généralement s'agir d'un code binaire à l'intention d'un interpréteur donné, illisible pour les humains mais parfaitement adaptés aux machines à qui on les destine. Cela peut-être par exemple du bytecode dans le cas du Java mais, la plupart du temps, il va s'agir de langage machine, c'est-à-dire d'un code qui soit directement compréhensible par le micro-processeur lui-même, sans intermédiaire. Cela en fera aussi un exécutable autonome qui pourra (en principe) être distribué chez l'utilisateur sans nécessiter le framework qui a servi à le concevoir.

    L'unité chargé d'exécuter la liste d'instruction va donc les passer en revue les unes à la suite des autres dans l'ordre. Mais il est également possible de lui donner l'instruction de continuer sa lecture un peu plus loin : de la même façon qu'on peut lire parfois « suite en page 12 » dans les journaux, il est possible de lui demander de continuer à une adresse donnée. C'est le fameux GOTO. Seulement, c'est une instruction qui a été totalement proscrite en C et dans différents milieux pour favoriser la programmation structurée, de telle sorte qu'il devient difficile de simplement l'évoquer, même à titre pédagogique, alors que faire un saut reste une des opérations fondamentales des ordinateurs. Passons.

    Il est également possible de faire ce que l'on appelle des sous-programmes : c'est-à-dire sauvegarder l'emplacement courant du fil d'exécution, puis faire un saut vers une procédure qui se termine par return, laquelle instruction se charge de récupérer l'adresse sauvegardée et d'y retourner. Ceci te permet de faire un crochet par une procédure et de poursuivre normalement le fil de ton exécution par la suite, et cela permet à cette procédure d'être appelée depuis n'importe où.

    En langage C, on utilise également des fonctions : leur définition est en principe la même qu'en mathématiques : il s'agit d'une expression évaluable, mais dont ladite valeur dépend des paramètres qu'on lui adjoint. On pourrait la définir avec une simple formule algébrique (ça se fait en BASIC, d'ailleurs) mais le C permet de faire quelque chose de beaucoup plus puissant : y intégrer directement un authentique programme, chargé de calculer la valeur en question et de la renvoyer en fin de traitement. Ça veut dire que si j'incorpore cette fonction, doté de son paramètre, au sein d'une expression algébrique plus élaborée, à un moment donné, l'unité chargée du traitement va faire un crochet par le code de ma fonction, calculer la valeur, puis poursuivre son travail là où il l'avait laissé, muni du résultat nécessaire pour continuer.

    En C, donc, les notions de sous-programme et de fonction sont confondues. Mais ce n'est pas forcément le cas dans tous les langages…

    Toujours en langage C, il n'y a pas de code « global » : tout ordre doit être passé au sein d'une fonction. Ces fonctions pouvant elles-mêmes être invoquées depuis d'autres fonctions. Cela implique également que ces ordres doivent eux-mêmes être déclarés comme des fonctions. Cela signifie également qu'il nous faut un axiome, c'est-à-dire la fonction se trouvant au sommet de la chaîne des appels. Elle va donc former notre point d'entrée. Une telle fonction portera toujours, par convention, le nom « main » (« principal »).

    De fait, quand j'écris :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main (void)
    {
        printf ("Bonjour\n");
        return 0;
    }
    • Je déclare une fonction main, et je sais que c'est par elle que mon programme va commencer à être exécuté ;
    • Cette fonction appelle elle-même une fonction « printf » (Print with Format) en ignorant sa valeur de retour ! En effet, seuls nous intéressent ici les effets de bords, c'est-à-dire ce que la fonction va être obligé de changer pour parvenir à ses fins. En l'occurrence, elle va écrire quelque chose à l'écran ;
    • Le paramètre de cette fonction est une chaîne de caractères. C'est son contenu qui sera écrit à l'écran ;
    • Une fois cette tâche remplie, l'unité de traitement va passer à la suivante. Il s'agit d'un return, qui lui ordonne de renvoyer « 0 ». Ma fonction main vaudra donc ici toujours zéro, quoi qu'il se passe ;
    • Comme il s'agissait de la fonction de plus haut niveau, si j'en sors, je quitte mon programme, qui se termine ;
    • Le zéro renvoyé, lui, ne sera pas perdu mais récupéré par l'entité qui a lancé ton programme. La convention veut que cette valeur soit un code d'erreur. Un 0 signifie donc que tout s'est bien passé.

  7. #7
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut
    Pour commencer je te recommande les tuto d'open classroom, ils reprennent toutes les bases nécéssaire pour les non initiés.
    Ensuite si tu veux appronfondir certainnes notions viens sur des sites plus poussés comme ici sur developpez.

Discussions similaires

  1. Les Layout par programmation se positionnent mal
    Par ChPr dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 27/11/2014, 15h25
  2. Réponses: 2
    Dernier message: 18/04/2014, 16h32
  3. Mon programme Matlab tourne mal!
    Par halyins dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/06/2009, 17h25
  4. Réponses: 2
    Dernier message: 28/04/2008, 01h11
  5. Comment savoir qu'on programme mal ?
    Par kisitomomotene dans le forum Langages de programmation
    Réponses: 24
    Dernier message: 16/11/2005, 15h04

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