Se connecter

Informatique

Programmation

Sujet : Besoin de conseil pour s'entraîner en C++
1
Aygo-69
Niveau 17
17 octobre 2017 à 16:08:24

Bonjour alors voilà je debute en programmation et pour l'instant on apprend du C++ ! On vient d'apprendre les tableau 1D et 2D donc bon je suis pas si loin que ca mais jai deja beaucoup de difficulté !

Vous auriez une méthode pour apprendre plus vite et bien ? Parceque je veut pas avoir trop de retard la !

Je suis à votre écoute pour tout conseils :)

tbol
Niveau 19
17 octobre 2017 à 18:33:39

Programmer des projets par toi même, par exemple des petits jeux 2D c'est le mieux.

Aygo-69
Niveau 17
17 octobre 2017 à 22:03:44

C'est pas un peu trop difficile ça pour un début ? Je vais essayer quand même si sa peut m'aider mais pour me sortir du pétrin lorsque je bloque je fait comment ?

_ninjadefuse_
Niveau 7
17 octobre 2017 à 22:23:13

stackoverflow

chupadu84_2
Niveau 11
17 octobre 2017 à 22:46:49

Essaye de chercher sur internet. Par exemple si ton compilateur te donne une erreur que tu ne comprends pas cherche le message d'erreur sur internet ça pourrait te permettre d'où vient ton problème

aAardvark
Niveau 57
17 octobre 2017 à 23:36:01

Le mieux est effectivement de programmer des jeux, et peut-être avant/pendant suivre un tutoriel qui enseigne quelques bases

Après le C++ peut être relativement complexe car c'est probablement un des langage les plus riches à ma connaissance (si ce n'est le langage) ; il requiert presque la maitrise du C, avec une surcouche orientée objet qui peut être complexe. Je ne suis pas spécialiste C++ je précise :hap: Après apprendre les bases c'est pas beaucoup plus compliqué que pour un autre langage

Mais faire un petit jeu en 2D (morpion, démineur, snake, etc) c'est le must pour apprendre, même si ça peut impliquer d'apprendre une bibliothèque graphique - et donc pour un débutant de devoir s'accrocher. Mais crois moi quand on voit qu'on peut maitriser des petits carrés sur l'écran on apprend rapidement :noel:

aAardvark
Niveau 57
17 octobre 2017 à 23:38:08

Le 17 octobre 2017 à 22:03:44 Aygo-69 a écrit :
C'est pas un peu trop difficile ça pour un début ? Je vais essayer quand même si sa peut m'aider mais pour me sortir du pétrin lorsque je bloque je fait comment ?

si tu ne vois pas trop par où commencer / comment structurer ton programme / d'éventuels algorithme, je pense que ce topic est fait pour ça :hap: Par contre c'est à toi de voir comment retranscrire tout ça en code en étant le plus autonome possible

Aygo-69
Niveau 17
17 octobre 2017 à 23:43:45

D'accord je vais suivre tout vos conseils le plus possible et je compterais sur vous pour me venir en aide quand je bloquerait vraiment même en recherchant ou quoi :)

Encore merci ! J'espère vite progresser :ange:

tbol
Niveau 19
18 octobre 2017 à 00:22:59

Et c'est ou ou on vous propose C++ comme premier langage ?

Aygo-69
Niveau 17
18 octobre 2017 à 00:53:19

En L1 Mathématique-Informatique :)

Pourquoi c'est trop tôt ?

89ron
Niveau 10
18 octobre 2017 à 01:55:41

Ce lancer dans le C++ en premier langage sans la bonne pedagogie c'est suicidaire et aller trop vite c'est un coup a te faire arretter la programmation.

Dis toi que la pluspart des classes en premiere annees tu as 90% des eleves qui ont du mal avec les tableaux a 2 dimensions et là on parle de ceux qui font de la programmation imperative avec java/python en IUT.

Vu que vous etes ou tableau 1D et bientot 2D c'est que vous n'avez pas vu encore la programation orientee objet, bref votre prof vous fait faire du C avec un compilateur C++ tout au plus.

Vu sa pedagogie, a tout les coup c'est du vieux C++ de papa qui n'as pas ete mise a jour depuis au moins 20 ans et qui ne respecte meme pas les standard actuels.

Le C++ comme le C demande une tres tres bonne conaissance de l'architecteure PC sinon c'est mort de chez mort tu vas etre perdu dans la richesse de ce langage.

Commencer a programmer des jeux maintenant ? Euh non clairemant non... sauf des jeux textuels sous la console DOS en affichant des chaines de caracteres mais pas plus, sauter les etapes en C++ c'est ce degouter du langage.

Tu veux progresser vite et bien :
1. Tu es perfectioniste et anglophone : Deniche toi la derniere edition de "Programming: Principles and Practice Using C++" de Bjarne Stroustrup (le createur du C++), avec ca tu vas remetre ton prof a sa place et decrocher la note maximal. (Et pourtant c'est un livre pour debutant)

[[sticker:p/1jnf]]

2. Tu es anglophobes et tu aimes te prendre la tete : Programmer en langage C++, 9e édition de Claude Delannoy.
(Et apprend l'anglais sinon tu n'iras pas loin)

3. Tu veux rater ta carriere professionnel : Openclassrom. https://image.noelshack.com/fichiers/2017/22/1496583962-risisingecigarette.png

PS: L1 Mathematique-Informatique, c'est clairement trop tot a moins d'avoir de bonne base en alogrithmie et une tres bonne conaissance de l'architecture PC, sans ces prerequis faire du C++ c'est tout aussi efficasse que de developper en Python.

Aygo-69
Niveau 17
18 octobre 2017 à 16:08:04

Je sais pas trop si c'est bien ou pas mais de toute façon j'ai pas trop le choix si je veut passez cette année après c'est vrai que on commence à peine et on va à une vitesse c'est beaucoup trop...

On a bien fait les tableau en 2D, on a fait en 1D et 2D sur le même cour !

Puis j'ai l'impression que le C/C++ est un langage très important et très utilisé donc bon je peut pas trop me laisser allé et prendre trop de retard !

J'ai regardé les éditions que tu m'a proposer, je vais m'en servir merci :)

aAardvark
Niveau 57
18 octobre 2017 à 16:38:03

89ron :d) T'abuse un peu, c'est toujours mieux de commencer avec un langage de programmation carré qu'avec du Python par exemple de toute façon (après c'est les goûts et les couleurs, je ne dis pas que Python n'a pas son utilité)

Maintenant faut sans doute être un peu plus motivé pour commencer par du C++, même si je suis d'accord autant commencer par bien maitriser le C, quoique certains diront que ça donnera de mauvaises habitudes pour la POO ?

Mais je crois que l'OP veut juste apprendre la programmation à son niveau, pas devenir un crack tout de suite :noel:

Par contre qu'entends-tu quand tu dis "Le C++ [...] demande une tres tres bonne connaissance de l’architecture PC" ? Par ce que je suis désolé mais pour moi les notions de base requises sont loin d'être si compliquées (rôle des différents composants du PC, heap, stack, interface de programmation et sécurité de l'OS, etc)

godrik
Niveau 22
18 octobre 2017 à 16:54:37

Le 18 octobre 2017 à 16:08:04 Aygo-69 a écrit :
Je sais pas trop si c'est bien ou pas mais de toute façon j'ai pas trop le choix si je veut passez cette année après c'est vrai que on commence à peine et on va à une vitesse c'est beaucoup trop...

On a bien fait les tableau en 2D, on a fait en 1D et 2D sur le même cour !

Ce n'est pas forcement etonnant. La fac ca va vite.

Le conseil de regarder des petits jeux a du sens. Ca marche assez bien en pratique. Lapintade avait developpe NGCK a cet effet: https://m.jeuxvideo.com/forums/1-31-8582917-1-0-1-0-c-methode-ngck-exercices-debutants.htm

Il y a plein de jeu simple qui sont facil a ecrire. En jeux de tableau: morpion, dame. En jeu video, snake n'est pas particulierement difficile.

Puis j'ai l'impression que le C/C++ est un langage très important et très utilisé donc bon je peut pas trop me laisser allé et prendre trop de retard !

C'est a peu pres le seule langag de bas niveau qui valle la peine d'etre appris.

89ron
Niveau 10
18 octobre 2017 à 17:07:47

Le C++ est un langage particulier puisqu'il fait a la fois du bas et du haut niveau et c'est un langage qui c'est enrichi depuis 40 ans, avec des refontes majeurs ces dernieres annees.

Le problemes c'est que dans les cursus du public il est toujours aussi mal enseigner, exemple les pointeurs en premiere annees (ce qui oblige d'avoir des connaissance importante en architecture PC) devrait etre interdit a moins de vouloir casser de l'etudiant. (C'est comme si tu devait apprendre tout d'abord la reaction chimique du moteur a explosion, pour enfin arrvier a faire demarrer ta voiture)

Juste en retirant les raw pointeurs et en utilisant la STL des les premiers cours le C++ devient aussi simple que du Java en gardant toute ca puissance : https://www.youtube.com/watch?v=YnWhqhNdYyk

Bah la simple notion de heap / stack, la pagination, le linkage c'est pas clair souvent pour des personnes avant plusieurs annees, les temps d'acces a la cache, etc. + la localité des variables etc, les concepts d'interblocage... etc.

godrik
Niveau 22
18 octobre 2017 à 17:10:26

Bon, j'ai hesite longtemps a repondre a 89ron. Mais finalement, je pense que ca en vaut la peine.

Ce lancer dans le C++ en premier langage sans la bonne pedagogie c'est suicidaire et aller trop vite c'est un coup a te faire arretter la programmation.

Mouais, ca je suis d'accord.

Dis toi que la pluspart des classes en premiere annees tu as 90% des eleves qui ont du mal avec les tableaux a 2 dimensions et là on parle de ceux qui font de la programmation imperative avec java/python en IUT.

En meme temps que ca soit en C++ ou en java python, ce n'est pas tres different.

Vu que vous etes ou tableau 1D et bientot 2D c'est que vous n'avez pas vu encore la programation orientee objet, bref votre prof vous fait faire du C avec un compilateur C++ tout au plus.

En meme temps, c'est comme ca que tu apprends le C++. Tu pars des constructions les plus simples et tu montes en abstraction.

Vu sa pedagogie, a tout les coup c'est du vieux C++ de papa qui n'as pas ete mise a jour depuis au moins 20 ans et qui ne respecte meme pas les standard actuels.

La tu supposes un peu quand meme non ? En plus, les standard de 97 fonctionnent toujours aujourd'hui. Et encore une fois, tu commences toujours comme ca. Tu parles d'imperatif comme tu le ferais en C, tu montes en objet avec les moves constructors. Apres tu parles de template et tu parles d'auto et de lambda (tu pourrais le faire avant, mais ce n'est pas super utile avant) en meme temps que tu parles de structures de donnees et d'abstraction de type. A un moment tu parleras d'exception.

Le C++ comme le C demande une tres tres bonne conaissance de l'architecteure PC sinon c'est mort de chez mort tu vas etre perdu dans la richesse de ce langage.

Heu... non. Tu n'as pas besoin de savoir comment marche le decodage d'instruction dans un processeur, caching, dma pour comprendre le langage.

Commencer a programmer des jeux maintenant ? Euh non clairemant non... sauf des jeux textuels sous la console DOS en affichant des chaines de caracteres mais pas plus, sauter les etapes en C++ c'est ce degouter du langage.

Bah bien sur que si. J'ai ecrit des jeux en premiere annee. Naturellement il faut un peu de scaffolding. Mais ce sont de tres bon exercice. Lapintade avait ecrit NGCK et ca marche du feu de dieu.

PS: L1 Mathematique-Informatique, c'est clairement trop tot a moins d'avoir de bonne base en alogrithmie et une tres bonne conaissance de l'architecture PC, sans ces prerequis faire du C++ c'est tout aussi efficasse que de developper en Python.

Ca veut dire quoi "efficace de faire du C++"? Tu te poses la mauvaise question (comme tous les gens qui pensent etre meileur prof que les prof.) Tu ne te poses pas al question de pourquoi ils font du C++ et pas autre chose. Pour commencer a apprendre le langage n'est pas important. Si tu regardes la litterature pedagogique, ils sont a peu pres tous d'accord. Si tu ne comprends vraiment rien, un langage comme alice ou scratch sont de tres bonne introduction. Apres ce qui est important c'est de prendre un langage et de rester un peu dessus.

Le choix du langage originel depend souvent de ce qui va etre fait dans le cours d'apres. Si le cours d'apres c'est architecture, alors tu veux que les etudiants aient fait du C (ou C++, quasiment personne ne fait purement que du C de nos jours de toute facon). Parcequ'ils vont pouvoir compiler leur C vers de l'assembleur MIPS pour comprendre comment marche un processeur au niveau utilisateur. Si le cours d'apres c'est systeme d'exploitation, la encore tu vas vouloir qu'ils aient fait du C pour qu'ils puisse regarder les appels systemes UNIX, peut etre lire des petits bout du kernel linux. Ou peut etre faire du MINIX.

Si le cours d'apres c'est analyse de donne. La clairement du python ca aurait ete mieux.

89ron
Niveau 10
18 octobre 2017 à 17:35:15

Vu la popularité du C++ a l'heure d'aujourd'hui la pedagogie dite ascendante c'est avairé totalemant desastreuse, ce qui a obliger ces fondateurs a quasiment changer de nom : Modern C++.

Quand je dit aussi efficasse que Python, bon c'etais un chouilla exagerrer, je l'avoue.
Mais bon si la complexité de ces algorithmes est comme tout developpeur qui n'as pas conscience de ces notions, est souvent catastrophique O(N^2), etc.

Par exemple, la fameuse double boucle imbriquer [[sticker:p/1lmk]]

Les mecs qui font des boucles de code qui tape directement dans le tas ( heap ), bonjour la geule des temps d'acces... (bah oue dans ce cas vaux mieux commencer en python, d'ailleurs c'est ce qui ce fait au MIT il me semble pour les L1)

Les deux seules raison pour lesquels sont prof fait du C++ :
1. C'est comme ca qu'il as appris et bah il as pas envie de se mettre a jour. (Et si cela a marcher pour lui de cette maniere, les autres doivent en faire tout autant, sinon ils n'ont pas leur place dans son cour.)
2. Il ne connait surement qu'une seule ou deux librairie qu'il utilise chaque jour dans son lab de recherche et qu'il souhaite transmettre au cour de l'annee.

[[sticker:p/1kkl]]
aAardvark
Niveau 57
18 octobre 2017 à 18:00:21

Bah la simple notion de heap / stack, la pagination, le linkage c'est pas clair souvent pour des personnes avant plusieurs annees, les temps d'acces a la cache, etc. + la localité des variables etc, les concepts d'interblocage... etc.

Je trouve ça un peu abusif, alors je reconnais que moi même je suis loin de connaître tout ça, mais il ne me semble pas par exemple que connaitre le mécanisme de pagination de la mémoire soit nécessaire pour programmer "correctement" en C++, vu que l'OS s'occupe justement de rendre cela invisible. Nul doute que quand on fait de grands projets vraiment complexes c'est nécessaire, mais ça, c'est plus l'expérience professionnel qui le donnera plus tard.

Pareil la localité des variables je ne sais pas comment c'est implémenté par l'OS / le compilo (bien que je me suis souvent posé la question), mais pour le coup ça n'empêche pas de programmer correctement en faisant attention à leur portée

Le 18 octobre 2017 à 17:35:15 89ron a écrit :
Les mecs qui font des boucles de code qui tape directement dans le tas ( heap ), bonjour la geule des temps d'acces... (bah oue dans ce cas vaux mieux commencer en python, d'ailleurs c'est ce qui ce fait au MIT il me semble pour les L1)

Tu parles en C++ ?

Par contre quand j'ai regardé en Python, j'ai vu qu'à chaque fois qu'on faisait un i += 1 ça recréait une variable :hap: Ma petite expérience de programmeur en C m'empêche du coup de vouloir utiliser ce langage :fou: (même si je me doute qu'en fait ça changera pas grand chose pour des petits projets que je peux faire)

Aygo-69
Niveau 17
18 octobre 2017 à 18:10:45

Merci beaucoup pour les petits jeux d'entd'entraînement de Lapinade c'est très utile ! Je vais utiliser ça je pense !

Parcontre je comprend tellement rien à ce que vous raconter :rire: j'ai l'impression d'être a des années lumière de ça :rire:

Parcontre notre prof je pense vraiment pas qu'elle n'y connaisse pas grand choses sachant que la totalité de nos PROF sont des CHERCHEURS :hap:

Dites moi c'est long à progresser ou pas ?

89ron
Niveau 10
18 octobre 2017 à 18:15:20

En L1 tant que tu n'as pas de bonne notion d'algorithmie, tu programmeras aussi mal en Python qu'en C++ et c'est pas la centaine d'instruction suplementaire du i += 1 de Python qui ferra la difference. La seule difference c'est qu'avec l'un tu aurs les petites roues et pas l'autres.

Le C++ avec la pedagogie ascendante c'est comme la selection des Ninja à la naissance : On prend le bébé et on le jette dans le puits, s'il ne coule pas il fera l'affaire.

1
Sujet : Besoin de conseil pour s'entraîner en C++
   Retour haut de page
Consulter la version web de cette page