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 :

BB Développeur 😄


Sujet :

C

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Points : 3
    Points
    3
    Par défaut BB Développeur 😄
    Bonjour tout le monde. Je suis actuellement au J3 de la piscine 42. Je n'ai jamais codé de ma vie.
    Je trouve effectivement beaucoup de réponses sur internet, mais j'aimerai travailler ma logique et comprendre vraiment ce que je fais plutôt que recopier bêtement ce que je trouve, ou m'aider du code des copains. Super nulle en math, je ne me laisse pas abattre. Avez-vous des trucs et astuces ? J'ai lu dans un autre poste qu'on pouvait faire des tableaux au crayon pour mieux comprendre le fonctionnement ? Oui mais comment ? Merci d'avance pour vos retours 🙏

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 634
    Points : 43 617
    Points
    43 617
    Par défaut
    Si t'as pas vu regardes déjà du coté des algorigrammes. Voir les liens connexes.

    Un programme c'est une suite de petites actions qui peuvent être chronologiques, parallèles (cas d'un traitement multi-thread par exemple), interdépendantes ou non.

    Il faut avoir les bons réflexes dès le départ. Exemple : un fichier, il faut l'ouvrir avant de commencer à travailler dessus, et de la bonne façon : en lecture seule si tu n'as pas à écrire dedans par exemple. Une lecture ou une écriture, il faut en tester le résultat, idem pour les lectures/écritures console. Une saisie clavier doit être vérifié (si un nombre était attendu, est-ce bien un nombre ?, le nombre de caractères saisis ne risque t'il pas de créer un débordement ?) Avec des langages hauts niveaux orientés objets ça peut être différent et plus ou moins implicite ou explicite.

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 037
    Points
    31 037
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Programmer, c'est trouver un algorithme permettant, avec les instructions que tu disposes, de coder une action. Prenons un exemple: un petit jeu où il faut trouver un nombre.
    Tout d'abord l'ordinateur "choisit" un nombre. Il utilisera pour cela une fonction de génération aléatoire et stockera le retour de la fonction dans une variable X
    Ensuite il entame une boucle au travers d'une instruction de boucle afin de répéter diverses instructions qui seront
    • te demander de saisir un nombre qu'il stockera dans une variable Y => utilisation d'une fonction d'affichage de texte et d'une de saisie de valeurs (dans certains langages comme Python, la fonction de saisie peut aussi afficher un truc au préalable ce qui rend inutile la fonction d'affichage de texte mais pas en C)
    • comparer le nombre saisi (donc la variable Y) avec le nombre à trouver (donc la variable X). Utiliser pour cela une instruction de comparaison qui aboutira à deux possibilités
      • le nombre saisi est plus grand que le nombre à trouver
      • il est plus petit ou égal. Dans ce cas là, une autre évaluation aboutira à là encore deux possibilités
        • le nombre saisi est plus petit
        • le nombre saisi est égal
    • dans tous les cas, on affiche le résultat des évaluations et sauf s'il était égal, on repart en début de boucle.

    Eventuellement on peut rajouter un compteur d'essais, évaluer si le nb d'essais a atteint un nb d'essais max préalablement fixé, etc etc. Bref on apprend à résoudre le problème dans un langage simple ne contenant que des instructions simples (saisir, afficher, affecter, évaluer, incrémenter, ...) puis on instruit l'ordi avec les instructions équivalentes dans le langage.

    Prendre un papier est aussi une bonne idée car quand le truc devient plus complexe (plus de variables, plus de possibilités, etc) il permet de visualiser étape par étape les valeurs de tes variables et tableaux. Tu reproduis le code dans une technique dite "à la main" : ta main suis les lignes de code ligne par ligne et à chaque instruction, tu inscris les résultats dans des cases représentant les variables qui sont affectées par ces instructions. S'il y a une boucle tu repars sur la ligne correspondante, s'il y a une évaluation tu l'effectues dans ta tête puis tu continues dans la branche correspondant au résultat etc. Plus tard quand on a l'habitude on peut faire tout ça de tête.

    La question qu'on est maintenant en droit de te poser est "pourquoi tu veux programmer" et surtout "pourquoi le C"???
    "Pourquoi tu veux programmer" parce que, sauf si tu t'y mets à fond pendant plusieurs années, tu ne pourras jamais écrire des programmes élaborés comme par exemple un traitement de texte, un logiciel de compta, un pilote de drones, etc. (d'ailleurs bien souvent tous ces "grands programmes" sont issus d'une équipe où chacun s'occupe d'une petite partie). Tu te cantonneras à des trucs comme "calcul de factorielle", "plus petit/plus gand", "pendu", etc. Ce qui peut toutefois parfaitement te convenir.
    Mais "pourquoi en C" parce que ce langage n'est pas un langage facile, ni surtout pas fait pour ce que tu veux en faire. C'est un langage très bas niveau. Pour par exemple supprimer un élément d'un tableau, il te faudra coder tout le décalage du reste du tableau. Alors que dans d'autres langages plus riches en termes d'instructions, on écrira juste del tab[i] et c'est la suite du langage qui se chargera du reste. Le C c'est un langage fait pour programmer des systèmes d'exploitations, des contrôleurs robotique, des calculateurs de fusées, mais pas pour se faire plaisir à programmer en amateur parce que tu mettras 1 mois pour acquérir les bases et ensuite chaque programme te demandera des centaines de lignes pour faire le moindre petit truc.
    Si tu veux un langage te permettant de commencer plus rapidement, je te conseille plutôt Python que j'ai déjà cité et qui est disponible gratuitement. Tu trouveras dans ce forum des exercices avec corrigés, et tu pourras même programmer de petites IHM.

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 634
    Points : 43 617
    Points
    43 617
    Par défaut
    et surtout "pourquoi le C"???
    Je pense que le langage C esti mposé à l'école 42. C'est pas forcément le seul vu mais je pense que c'est le premier.

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Merci à tous pour vos réponses
    Tout d'abord merci d'avoir pris le temps de me répondre. Pourquoi le C et bien car je suis en reconversion professionnelle, j'ai déjà une expérience Web dans le marketing digital et le CM mais je ne connais pas du tout le dev. C'est en faisant différents stages et petites formations sur open classroom et live mentor, que je l'ai découvert, j'avais vu des centres de formation en distanciel, (open classroom, THP, le wagon etc.), mais ce mode d'apprentissage ne me convient pas vraiment. C'est sur LinkedIn que j'ai appris que 42 Paris faisait un stage découverte "piscine discovery" auquel j'ai participé, et j'ai vraiment beaucoup apprécié.
    Effectivement ils imposent le C lors du début de la formation en tronc commun, car ils partent principe que même si il est peu utilisé, si on arrive ale comprendre et à le coder, on peut s'orienter et comprendre n'importe quel langage par la suite beaucoup facilement.
    Voili voilou j'en suis aux boucles et aux pointeurs ☺️

    Cet aprem premier examen, je croise les doigts je serre les fesses !

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 634
    Points : 43 617
    Points
    43 617
    Par défaut
    Effectivement ils imposent le C lors du début de la formation en tronc commun, car ils partent principe que même si il est peu utilisé, si on arrive ale comprendre et à le coder, on peut s'orienter et comprendre n'importe quel langage par la suite beaucoup facilement.
    C'est normal, beaucoup de langages ont une syntaxe proche du C. Et être capable de passer d'un langage à l'autre démontre un certain niveau.

    Voili voilou j'en suis aux boucles et aux pointeurs
    Ah les pointeurs, sacré sujet.

    Cet aprem premier examen, je croise les doigts
    Comme dit l'expression, je te dit merde.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 648
    Points : 10 617
    Points
    10 617
    Par défaut
    Citation Envoyé par Izeetsu Voir le message
    Effectivement ils imposent le C lors du début de la formation en tronc commun, car ils partent principe que même si il est peu utilisé, si on arrive ale comprendre et à le coder, on peut s'orienter et comprendre n'importe quel langage par la suite beaucoup facilement.
    Je pense qu'apprendre le C ne sert à rien

    Parce lorsque que l'on travaille en C, c'est à 95% en embarqué avec 1 norme de codage. Et là, tu n'es pas prêt : 1 seul retour, travailler avec des buffers, code ré-entrant, ...

    Ensuite le C est complètement dépassé sur les sucres syntaxes (for range, l'opérateur virgule en python pour 1 retour multiple, ...), les nouveaux "outils" (les lambdas - fonctions anonymes avec la notion de fermeture - closure, les futures, ...) et les "outils" fonctionnels (map, reduce, ...)

    Sans parler que le C est quasi le seul language où la bibliothèque standard n'est pas omniprésente (elle est tellement minimale que ceci explique cela)
    Par exemple avec le C++ moderne (C++11, C++14, C++17, ...) on fait quasi tout avec la bibliothèque standard : tri de liste, concurrence, création de vue pour les chaînes de caractères, ...

    Et enfin, les habitudes de langages. Je pense par exemple au patron de conception "builder patern" en java avec des trucs genre Task task = new TaskBuilder(5).setDescription("Hello").setSummary("Test").build();.
    Je pense également aux optimisations obligatoires comme le "tail recursive reduce". Récemment sur le forum, 1 personne avait posté 1 recursion avec 1 variable static : tu peux chercher longtemps le pourquoi
    Avec tous les concepts qui manquent au C : surcharge des fonctions et foncteurs (C++), trait (PHP), mutable (go) ... qui font que le procédural du C est trop vieux/ classique.

    Donc voila, tu apprends le C pour apprendre à reconnaître 1 type, 1 variable, 1 fonction et 1 paramètre (et je pense que les notions de rvalue et lvalue vont être survolées)

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 037
    Points
    31 037
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Izeetsu Voir le message
    Voili voilou j'en suis aux boucles et aux pointeurs ☺️
    Bon courage. Pour les pointeurs surtout n'attend pas, c'est le coeur du C. A la moindre incompréhension tu viens de suite ici poser ta question sans attendre qu'il soit trop tard.

  9. #9
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Peut-être qu'il est dépassé, mais dans tous les cas j'y suis et je galère, cela fait 5j évidemment ce n'est pas facile, mais ça reste une belle expérience

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 388
    Points : 23 707
    Points
    23 707
    Par défaut
    Bonjour,

    Citation Envoyé par Izeetsu Voir le message
    Peut-être qu'il est dépassé, mais dans tous les cas j'y suis et je galère, cela fait 5j évidemment ce n'est pas facile, mais ça reste une belle expérience
    Les arguments de foetus sont valables et il y est vrai qu'il arrive un moment où il faut mettre un « horizon » (on ne va pas remonter jusqu'à la carte perforée) et que le langage C a fêté ses cinquante ans cette année.

    Mais pour le reste, je trouve toujours que c'est une bonne chose d'apprendre le C très tôt. D'abord, parce que ça permet de voir ensuite les langages dans l'ordre chronologique de leur apparition, ensuite parce que bon nombre d'entre eux dérivent du C, au moins dans leur syntaxe et enfin parce que si les langages plus avancées introduisent des concepts parfois plus compliqués, ils apportent également beaucoup de simplifications là où on peut en faire. Cela va concerner les sucres syntaxiques, mais également les concepts de références, etc. On comprend dès lors qu'il est beaucoup plus facile de voir les choses dans cet ordre plutôt que parcourir ensuite le chemin « à rebours » avec des concepts de plus en plus compliqués. Les fameux « pointeurs », par exemple, ne sont en réalité pas très difficiles quand on a compris le principe (et surtout le pourquoi de la chose). Mais si on a dix ans de développement avec des langages qui utilisent uniquement les références, ça peut devenir vraiment confus.

    Si tu n'as vraiment aucune expérience en programmation, je te recommande déjà de bien tirer au clair la différence entre un langage compilé et un langage interprété. Ça fait partie des fondamentaux. Pas que ce soit difficile en soi mais c'est tellement élémentaire que, bien souvent, on oublie de rappeler ces principes. Si on nous met « sur les rails » dès le départ, on peut avancer tout seul ensuite et aller très loin. Si on nous pose juste à côté, on ne parcourra pas dix centimètres en une décennie.

    Ne t'inquiète pas pour les maths. Même en étant « super nulle », tu possèdes forcément et malgré tout le minimum nécessaire. N'hésite pas à poser tes questions ici si tu as besoin d'éclaircissements et que tu cherches à comprendre par toi-même.

    Bon courage.

  11. #11
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Coucou ! Aujourd'hui je dois faire un carre ou rectangle, donc avec des while if else, voici le code que mon equipe a sorti, j'etais partie quand ils l'ont finalise, car mon cher directeur nous a fait des dingueries pour tester nos nerfs et je nai pas reussi cet exercic

  12. #12
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 037
    Points
    31 037
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Izeetsu Voir le message
    Coucou ! Aujourd'hui je dois faire un carre ou rectangle, donc avec des while if else, voici le code que mon equipe a sorti, j'etais partie quand ils l'ont finalise, car mon cher directeur nous a fait des dingueries pour tester nos nerfs et je nai pas reussi cet exercic
    Dans un forum, nouveau problème = nouveau topic.
    Qu'entends-tu par "faire un carré" ???

  13. #13
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 225
    Points : 10 168
    Points
    10 168
    Par défaut
    Je pense que tu devrais pas trop prendre à cœur la piscine de 42 , que tu n'y arrive pas trop c'est normal , mais surtout c'est un peu fait exprès pour "filtrer" à tort ou a raison.
    Je rejoins foetus que le C est dépassé.
    Pour moi le plus important c'est l'algorithmique, bien plus que la syntaxe , donc que tu sais faire un algo est bien plus important que connaître la syntaxe.
    Le C , c'est un peu comme le latin ,c'est cool , mais si tu sais pas t'exprimer , ça servira à rien pour le Français , l'italien , espagnol etc etc.
    Et sur ce coup je trouve le python bien plus pédagogique , parce que ça permet de se concentrer que sur un seul point : l'algo , pas sur les UB , segfault et compagnie.

    A titre personnel ,j'en peux plus des étudiants de 42 (pas contre les étudiants mais sur la pédagogie) , il y'a beaucoup trop d'étudiant de 42 qui sont sur les forums/discord.
    Parce que leur "prof" ne peut pas les aider , du coup ce sont les bénévoles des forums (ou Discord) qui sert de prof...
    Vu qu'on leur fait des mini cours sur le C ,ou qu'on leur donne des liens.

    Le second point est quand on tente d'essayer d'aider un élève de 42 , la réponse est :
    "On a pas le droit à la lib C"
    "Je compresse mon code parce que pas plus de 20 lignes"
    "Je dois faire de l'ANSI C"
    "je dois mettre des parenthèses dans le return"
    "je peux pas faire ça parce que la moulinette n'accepte pas ça"

    Bref ce qui me dérange c'est qu’il apprenne le C , mais aussi du mauvais C , on ne peut pas leur enseigner de bonne pratique ,parce que 42 a décidé de faire de l'ANSI C avec un style K&R , et c'est la pire chose.
    Et même en embarqué on code pas comme ça (encore heureux ).

  14. #14
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    J'entends vraiment vos messages croyez moi, mais maintenant j'y suis jy reste, et j'essaie de comprendre.

    Oui effectivement nos actions sont très limitees et nous n'avons pas réellement de cours mis a part les connaissances des uns et des autres, et Internet et surtout les forums et c'est pour ça que nous venons chercher des réponses ici.
    Ralez si vous voulez mais c'est comme ça.

    Donc aujourd'hui je dois faire un carré avec trois fichiers a rendre, dont voici les lignes ;

    Code C : 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
    #include <unistd.h>
     
    void    ft_putchar(char c);
     
    void    print(int ligne, char early, char mid, char end)
    {
            int lon;
            lon = 1;
     
            while(lon <= ligne)
            {
                    if (lon == 1)
                            ft_putchar(early);
                    else if (lon == ligne)
                            ft_putchar(end);
                    else
                            ft_putchar(mid);
                            lon++;
            }
    }
     
    void    rush(int x, int y)
    {
            int top;
            top = 1;
            if (y > 0  && x > 0)
            {
                    while (top <= y)
                    {
                            if (top == 1)
                            print(x, 'A', 'B', 'C');
                            else if (top == y)
                            print(x, 'C', 'B', 'A');
                            else
                            print(x, 'B', ' ', 'B');
                            top++;
                            ft_putchar('\n');
                    }
            }
    }

    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
    #include <unistd.h>
     
    void	ft_putchar(char c)
    {
    	write(1, &c, 1);
    }
     
     
     
     
    void    rush(int x, int y);
     
    int     main(void)
    {
            rush(5, 3);
            return (0);
    }
    ce qui donne :

    ABBBC
    B       B
    B       B
    B       B
    B       B
    B       B
    B       B
    CBBBA
    

    Donc dans l'ensemble, je comprends l'idée, mais je suis incapable de le réécrire, ni de l'expliquer correctement.
    Je suis a j7 de mes début de code et ce n'est vraiment pas fluide pour moi....

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 648
    Points : 10 617
    Points
    10 617
    Par défaut
    Citation Envoyé par Izeetsu Voir le message
    donc aujourd'hui je dois faire un carre avec trois fichiers a rendre, dont voici les lignes ;
    Je sais que tu débutes, mais il y a des trucs qui ne vont pas
    • les noms sont mauvais - variables, fonctions, paramètres
    • les if dans les while inutiles - il faut faire l'algo en 3 parties
    • les while non justifiés - on va de X à Y, ce sont des for qu'il faut
    • les types mais bon. 1 longueur n'est jamais négative.


    On ne connait pas l'enoncé : faire 1 forme c'est vague. On peut dessiner que le contour, que l'intérieur, les 2. On peut avoir 1 contour intérieur (qui "mange" l'intérieur) ou 1 contour extérieur (qui est rajouté à l'intérieur), ....

    Tiens pour l'amusement, j'ai remplacé ton ft_putchar pour faire du debug. Dessiner 1 carré/ triangle c'est trivial de ouf
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    #define ft_putchar(C) printf("%c", C);
     
    #define G_PRINT(FUNC1, FUNC2, FUNC3, NB) \
        size_t count; \
         \
        if (NB >= 1) { FUNC1(param1);  } \
        for(count=2; count < NB; ++count) { FUNC2(param2); } \
        if (NB >= 2) { FUNC3(param3);  }
     
     
    void print_side_left(char c)   { ft_putchar(c); }
    void print_side_middle(char c) { ft_putchar(c); }
    void print_side_right(char c)  { ft_putchar(c); }
     
    void print_one_line(size_t nb_columns, char param1 /*early*/, char param2 /*mid*/, char param3 /*end*/) {
        G_PRINT(print_side_left, print_side_middle, print_side_right, nb_columns)
    }
     
     
    void print_line_bottom(size_t nb_columns) { print_one_line(nb_columns, 'C', 'B', 'A'); ft_putchar('\n'); }
    void print_line_middle(size_t nb_columns) { print_one_line(nb_columns, 'B', ' ', 'B'); ft_putchar('\n'); }
    void print_line_top(size_t nb_columns)    { print_one_line(nb_columns, 'A', 'B', 'C'); ft_putchar('\n'); }
     
    void print_square(size_t nb_columns, size_t nb_lines) {
        size_t param1=nb_columns, param2=nb_columns, param3=nb_columns;
     
        G_PRINT(print_line_top, print_line_middle, print_line_bottom, nb_lines)
    }
     
     
    int main()
    {
        print_square(7, 5);
     
     
        return EXIT_SUCCESS;
    }

  16. #16
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 388
    Points : 23 707
    Points
    23 707
    Par défaut
    Citation Envoyé par Izeetsu Voir le message
    J'entends vraiment vos messages croyez moi, mais maintenant j'y suis j'y reste, et j'essaie de comprendre.
    Parfait, c'est ce qu'il faut faire. Les méthodes telles que la « piscine » (qui n'est pas propre à 42, soit dit en passant) est en fait basée sur l'immersion, de la même façon que le meilleur moyen d'apprendre une langue reste de s'installer pendant un temps dans le pays qui la parle. Bon évidemment, c'est à condition d'être proprement « tutorisé » à côté, sinon c'est des coups à prendre de mauvaises habitudes, mais ce n'est pas ta faute. ;-)

    En outre, la programmation ne s'assimile pas, selon moi, de la même façon que les mathématiques, par exemple. La manière de l'explorer et de la pratiquer n'est pas tout-à-fait la même. Donc quelqu'un qui y mettrait une rigueur militaire arriverait probablement à de bons résultats, mais pas forcément aux meilleurs.

    Ralez si vous voulez mais c'est comme ça.
    La remarque de Kannagi ne s'adressait pas directement à toi : c'est juste un effet délétère de l'approche utilisée par ce type d'école. Laisser les étudiants à eux-mêmes pendant un temps pour les raisons exposées ci-dessus, c'est une bonne chose au début, mais si on les laisse trop longtemps sans encadrement, autant pratiquer tout seul chez soi. Et si de l'autre côté on te fixe des objectifs qu'il faut impérativement respecter, alors effectivement les étudiants vont se tourner massivement vers les forums (ce qui en temps normal est censé être vertueux) et au final, ce sont bien les bénévoles des forums qui se substituent aux enseignants.

    Donc dans l'ensemble, je comprends l'idée, mais je suis incapable de le réécrire, ni de l'expliquer correctement.
    Je suis a j7 de mes début de code et ce n'est vraiment pas fluide pour moi....
    Eh bien c'est plutôt une bonne chose malgré tout.

    Dans un premier temps, essaie de faire la synthèse de ce que tu as compris (ou penses avoir compris) et ce qui est encore obscur. Ensuite, l'avantage d'un programme informatique est qu'on peut le lire aussi bien linéairement (comme un roman) que par blocs. Donc ici, tu peux déjà nous indiquer les numéros des lignes qui te posent problème.

    Ensuite, il peut être utile d'indiquer que par défaut, ton programme utilise la « console » et que celle-ci fonctionne comme une machine à écrire : on y lit ou envoie des codes qui vont être interprétés comme des caractères, ces caractères ont une hauteur et une largeur fixes, et on peut retourner à la ligne quand on le souhaite. Maintenant que l'on a dit ça : dessiner un carré sur la console d'un ordinateur, c'est exactement le même travail que le faire sur une machine à écrire : la première ligne forme le haut du carré (donc le côté supérieur), donc on matérialise une ligne horizontale en écrivant n caractères à la suite. Ensuite on cherche à tracer des traits verticaux, donc au lieu d'écrire une ligne de n caractères, on va écrire n lignes de un caractère par côté.

    Ça a peut-être l'air idiot dit comme ça, mais :
    • En faisant cela, je définis d'abord comment je souhaite que ma machine se comporte (même si ce n'était pas un ordinateur). Et seulement ensuite, je vais essayer d'expliquer ça au langage C ;
    • Il faut se rendre compte que le temps passe : les jeunes gens d'aujourd'hui savent parfaitement ce qu'est un smartphone mais n'ont jamais connu le mode texte sur un ordinateur ni vu une machine à écrire dans un bureau. Donc si on a des gens qui ne savent pas ce qu'est une fonte fixe alors qu'il y a moins de vingt ans, on savait pas afficher du texte autrement sur un automate, c'est sûr qu'il va y avoir un conflit de génération.


    Avant d'aller plus loin : es-tu au clair sur ce qu'est une « fonction », aussi bien au sens mathématique du terme qu'en programmation ?

  17. #17
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 397
    Points : 698
    Points
    698
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    est en fait basée sur l'immersion, de la même façon que le meilleur moyen d'apprendre une langue
    Je ne suis pas d'accord sur ce point. L'immersion est un moyen d'apprendre. La piscine n'a pas pour but d'aider à apprendre. Elle n'aide pas ceux qui ont des difficultés à les surmonter. C'est pas une méthode pédagogique.

    La piscine est un moyen de selection.

    Et c'est d'autant plus critiquable que la selection est faite non pas sur les compétences techniques comme d'autres concours, mais sur la capacité à supporter l'exploitation. En particulier, être dispo 24h/24, 7j/7, pendant toute la durée de la piscine, avec un volume de taches a faire impossible à suivre. Et devoir subir des règles arbitraires et idiotes (langage old school, guideline qui n'ont aucun sens, bot pour vérifier les exos).

    @Izeetsu

    Le problème avec l'auto-apprentissage (parce que c'est ce que tu fais au final), c'est souvent le manque de cohérence dans l'apprentissage. Apprendre des détails, en fonction des problématiques que l'on rencontre, sans avoir une vision (et donc une compréhension) globale et en laissant beaucoup de lacunes.

    Si tu veux t'en sortir, tu dois lire un cours de C (et d'algorithmique et d'architecture des ordinateurs et d'autres cours). Pas juste répondre aux problèmes que tu rencontres les uns après les autres.

    Si tu comprends l'anglais, je te conseille le cours CS50 d'introduction a la programmation (c'est gratuit). C'est le cours le plus pédagogique que j'ai rencontré. Sinon, un des cours dans la partie tutoriel : https://c.developpez.com/cours/. Prend un cours, pose toi une journée pour le lire entièrement et fais les exos de base proposés. Sinon, tu fonces dans le mur.

  18. #18
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 634
    Points : 43 617
    Points
    43 617
    Par défaut
    Je suis d'accord avec ton avis Mintho, mais je pense que la piscine a une utilité. c’a t'oblige à te débrouiller, rechercher l'info, avoir des deadlines .. enfin peut-être poussé à l’extrême Les deux sont complémentaires. Après je sais pas si à l'école 42 ils fournissent des cours (pas forcément magistraux).

  19. #19
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 397
    Points : 698
    Points
    698
    Par défaut
    Pas de cours et pas de prof. C'est des élèves qui donnent des "cours".

    c’a t'oblige à te débrouiller
    C'est une formation qui s'adresse a des personnes sans diplôme et/ou en reconversion et dont la majorite n'a pas de methodologie d'apprentissage.

    Apprendre l'autonomie, c'est une tres bonne chose. Mais comme c'est pas un apprentissage, mais une selection (avec a la cle se faire virer de 42), c'est se jeter en plein milieu de l'ocean sans savoir nager, sans bateau, sans personne pour t'aider, a 100 km de la cote. Et dans 99% des cas, sa se termine en noyade, pas en quelqu'un qui s'en sort et qui a appris l'autonomie.

    C'est juste une methode ultra brutale de selection.

  20. #20
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 366
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 366
    Points : 20 404
    Points
    20 404
    Par défaut
    Citation Envoyé par mintho carmo Voir le message
    La piscine est un moyen de selection.
    à ce que je sais ça dure un mois de sélection et un truc comme ça à passer je risque d'imploser.
    Comme je l'ai écris sur ce forum des trucs comme remplir un dossier de compétences pour une ESN c'est pareil je peux pas tellement ça me gave.
    Ou bien c'est comme les tests de personnalités que les ESN font passer mais bon je fais du H.S.
    pour moi les cursus de formation dans le système français sont trop longs mais bon c'est mon avis.

Discussions similaires

  1. Les logiciels indispensables pour Développeurs selon vous ?
    Par Straahd dans le forum Débats sur le développement - Le Best Of
    Réponses: 287
    Dernier message: 24/10/2010, 11h14
  2. Guide du développeur Delphi devant un problème
    Par Bestiol dans le forum Delphi
    Réponses: 0
    Dernier message: 24/03/2004, 22h51

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