Et comme je suppose que tu apprends avec le (mauvais) cours de C++ d'OC, trouve également un cours qui n'apprends pas d'âneries. Comme par exemple celui de @gbdivers. Pour les raisons pour lesquelles il ne faut pas suivre le tutoriel de C++ d'OC, quelques recherches sur le forum te donneront toutes les raisons et les meilleures alternatives qui existent.
Sinon, si tes deux questions sont "c'est quoi une classe ?" et "pourquoi main ?", ça veut dire que tu es arrivé aux classes sans comprendre ce qu'est la fonction "main". Autant dire que tu as sauté un sacré paquet d'étapes dans la compréhension des notions que tu apprends.
Pour la question "c'est quoi une classe ?", c'est un fournisseur de services (les fonctions membres publiques) associés à un état (l'objet) qui va évoluer par l'intermédiaire de ces fonctions.
- Edité par Ksass`Peuk 13 septembre 2015 à 11:59:29
Tu peux reprendre chapitre 1, ligne 1 , objectivement tu n'as rien compris du tout. Désolé si je suis brutal, mais le fait est que tu es totalement à la rue.
Parce que ce la vient du langage de base du C++, le C et que l'on a trouvé tout plein de moyen pour rendre utile cette signature de fonction après.
C'est une convention, et elle n'est pas toujours suivie. Par exemple sur les environnements Windows, où les cas d'utilisation qui ont présidés à la conception de cette signature (cf. laïus historique ci-après) ne sont plus pertinents, la signature du point d'entré du programme et très souvent bien différentes.
Le C est le langage qui à permit la construction du système d'exploitation UNIX, et l'un des point essentiel de sa conception est d'avoir un interpréteur de commandes : le shell, avec beaucoup d'utilitaires très simple mais qui pouvait être utilisés en chaine.
L'utilisateur ou le script appelant ces utilitaires devaient savoir si tout allait bien de manière univoque. Renvoyez un entier au script ou au shell appelant le programme permettait à ceux-ci de pouvoir réagir en fonction de l'entier retourné, d'où le int (pour entier) comme type de retour de la fonction point d'entré du programme.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
L'idée du code de retour est vieille comme mes robes, il y avait déjà ça sur les systèmes des années 60 pour faire le lien entre les programmes et le "JCL" (langage de commande)
https://fr.wikipedia.org/wiki/OS/360
et même beaucoup plus tot : dans le manuel de la première version de fortran en 1956 https://www.fortran.com/FortranForTheIBM704.pdf on voit que l'instruction STOP (page 20) avait un paramêtre qui se retrouvait affiché sur la console de l'opérateur.
on faite j'ai appris que int sgnifie entier alors pour qoui il faut la mettre est ce que le int main n'est pas comme le int variable
Grosso-modo,
dans le cas de "int variable;" tu dis à ta machine que tu vas utiliser une variable de type entier (integer) alors que dans le cas de "int ma_fonction(){}" tu lui dis que ta fonction va renvoyer une valeur de type int, cette valeur tu pourra éventuellement la stocker dans une autre variable afin de pouvoir tester le comportement de ta fonction par exemple.
int ma_fonction()
{
int une_variable;
//on fait tout un tas de truc ici qui vont modifier une_variable de manière x ou y
return une_variable;
}
int main()
{
int ma_variable;
ma_variable = ma_fonction();
//du coup ici ma_variable à pour valeur celle retournée par ma_fonction() (du coup celle de une_variable)
if (ma_variable == 1)
//fait un truc
else
//fait autre chose
return 0; //ici on dit au système que ton programme s'est terminé avec le code de retour 0, tu pourrai mettre -1 en cas d'erreur si tu veux, ça te permettrai de voir rapidement si ton programme a rencontré une erreur
}
Je te conseil de voir un bon tuto de C avant de te mettre au C++, personnellement je trouve qu'avoir de bonnes bases en C est un bon début avant d'entamer la programmation orienté objet.
- Edité par ZekkeSinj 15 septembre 2015 à 13:32:12
Je te conseil de voir un bon tuto de C avant de te mettre au C++, personnellement je trouve qu'avoir de bonnes bases en C est un bon début avant d'entamer la programmation orienté objet.
!!!!!!!!
Qu'est ce qu'il faut pas lire comme conneries des fois !
Commencer par apprendre C est un excellent moyen de ralentir son apprentissage de C++ (c'est ce qui se passe avec la très vaste majorité des apprenants). Outre le fait que ces deux langages n'ont absolument rien à voir, que ce soit en matière des gestions des ressources, des erreurs ou même dans la manière de concevoir et d'écrire, si quelqu'un veut apprendre C++, qu'il apprenne C++. Et pas C.
- Edité par Ksass`Peuk 15 septembre 2015 à 13:42:05
Je te conseil de voir un bon tuto de C avant de te mettre au C++, personnellement je trouve qu'avoir de bonnes bases en C est un bon début avant d'entamer la programmation orienté objet.
!!!!!!!!
Qu'est ce qu'il faut pas lire comme conneries des fois !
Commencer par apprendre C est un excellent moyen de ralentir son apprentissage de C++ (c'est ce qui se passe avec la très vaste majorité des apprenants). Outre le fait que ces deux langages n'ont absolument rien à voir, que ce soit en matière des gestions des ressources, des erreurs ou même dans la manière de concevoir, si quelqu'un veut apprendre C++, qu'il apprenne C++. Et pas C.
Ce que je voulais dire par là, c'est que commencer par comprendre les bases du C (un langage procédural donc pas de notions de classes, objets etc) ça t'évite de te poser la question de ce qu'est une classe alors que tu comprends pas la déclaration d'une variable. J'ai rencontré pas mal de gens qui ont perdu du temps à essayer de comprendre le concept de POO alors qu'ils ne maîtrisaient absolument pas les bases sous prétexte que "j'apprend le C++, c'est un langage orienté objet alors je dois tout de suite comprendre ça". Faire du C ça t'évite ce genre de confusions (encore une fois je parle de BASES, pas besoin de commencer à se prendre la tête sur l'allocation et la gestion de mémoire, mais peut-être que je me suis mal exprimé dans mon premier post). Après je trouve qu'avoir commencé par du C puis du C modulaire m'a permis une transition plutôt sereine vers le C++, c'est une façon d'aborder la chose, ce n'est pas la seule, mais de là à appeler ça une "connerie", je trouve ça plutôt fort x)
- Edité par ZekkeSinj 15 septembre 2015 à 13:52:19
Rien n'empêche de débuter en C++ sans voir les notions de classes et d'objets. D'ailleurs c'est ce que font les bons cours. De plus, en C, les bases vont très rapidement taper dans la notion de pointeur (dès qu'on a besoin d'un tableau et d'une fonction en fait), ce n'est pas le cas en C++ ce qui le rend de base plus facile à apprendre (encore une fois, avec un bon cours).
Et puis finalement, si c'est vraiment pour débuter la programmation, Python est très largement plus adapté que C qui est certainement un des pires langages pour débuter (d'ailleurs généralement les cours associés sont moisis d'exemples faux).
ZekkeSinj a écrit:
Après je trouve qu'avoir commencé par du C puis du C modulaire m'a permis une transition plutôt sereine vers le C++, c'est une façon d'aborder la chose, ce n'est pas la seule, mais de là à appeler ça une "connerie", je trouve ça plutôt fort x)
Du vrai modulaire en C implique l'utilisation de pointeurs, notion qu'il est possible de ne pas connaître en C++ pendant très longtemps. Et avec la norme C++17, ce sera encore plus vrai notamment avec l'arrivée de std::optional.
Or les pointeurs en C++, on veut en avoir que le strict minimum vital, pas à chaque appel de fonction et c'est un réflexe dont un programmeur C même débutant aura du mal à se débarrasser.
- Edité par Ksass`Peuk 15 septembre 2015 à 14:14:05
Apprendre le C pour bien comprendre le C++, si j'ai bien compris, c'est comme apprendre le latin pour comprendre le français, pas bête quand on fait des études supérieures en langues, pas super pour débuter.
Pour le int devant main, mon cours de C++ me disait "mettez le là sansdemander pourquoi pour l'instant", même chose pour le '0' après le return.
(Pour gagner du temps d'explication, on peut même ne pas faire le return 0 du main puisque c'est la seule fonction que la norme autorise explicitement à ne pas faire ce return).
- Edité par Ksass`Peuk 15 septembre 2015 à 14:04:56
Pour ce qui est du C modulaire, je parlais de mon expérience (après plus d'un an de C intensif, donc pointeurs, mémoire and co dans la poche).
Je suis d'accord avec toi, mais dans ce cas précis, l'OP à l'air de s'être perdu dans les différentes notions alors qu'un simple cours de C (les premiers chapitres sur la déclaration de variables, boucles et conditions) lui aurait expliqué les bases de la programmation (avec une syntaxe identique à celle du C++). A mes yeux, un petit cours en C évite de se polluer l'esprit avec les notions de POO, le mieux pour apprendre a courir, c'est de commencer par marcher, mais si tu commences sur un terrain de foot, tu vas vouloir courir trop tôt.
(Bien-sûr, tout cela n'est plus valable dans le cas ou tu fournis un BON cours de C++, bien organisé et que le lecteur accepte de prendre son temps sans sauter les étapes :p)
Apprendre le C pour bien comprendre le C++, si j'ai bien compris, c'est comme apprendre le latin pour comprendre le français, pas bête quand on fait des études supérieures en langues, pas super pour débuter.
Et surtout le latin c'est pas terrible comme langue maternelle pour apprendre à parler, si on doit le faire en français.
Pour le int devant main, mon cours de C++ me disait "mettez le là sansdemander pourquoi pour l'instant", même chose pour le '0' après le return.
Ce n'est pas une très bonne réponse, parce que ce n'est pas plus compliqué de dire: la fonction main retourne au système d'exploitation un entier qui indique si le déroulement du programme s'est bien ou mal passé. 0 = fin normale.
Ca règle le problème côté C et C++, et il n'y a plus besoin d'y retourner. La question de savoir comment on exploite ce code de retour, c'est côté système (langage de commande et/ou exec()).
Je suis d'accord avec toi, mais dans ce cas précis, l'OP à l'air de s'être perdu dans les différentes notions
Pour la simple et bonne raison qu'il n'a fait aucun exercice en chemin.
ZekkeSinj a écrit:
(Bien-sûr, tout cela n'est plus valable dans le cas ou tu fournis un BON cours de C++, bien organisé et que le lecteur accepte de prendre son temps sans sauter les étapes :p)
(Pour te rassurer je n'ai jamais vu non plus de bons cours de C, il y en a un qui est en bonne voie de le devenir mais c'est rare. Le problème pour apprendre le C, c'est qu'il faut déjà connaître le C. Accessoirement, s'il a sauté les étapes au début du cours de C++, il y a peu de raison qu'il ne fasse pas de même avec un cours de C).
- Edité par Ksass`Peuk 15 septembre 2015 à 14:22:19
Pour ce qui est du C modulaire, je parlais de mon expérience (après plus d'un an de C intensif, donc pointeurs, mémoire and co dans la poche).
Je suis d'accord avec toi, mais dans ce cas précis, l'OP à l'air de s'être perdu dans les différentes notions alors qu'un simple cours de C (les premiers chapitres sur la déclaration de variables, boucles et conditions) lui aurait expliqué les bases de la programmation (avec une syntaxe identique à celle du C++). A mes yeux, un petit cours en C évite de se polluer l'esprit avec les notions de POO, le mieux pour apprendre a courir, c'est de commencer par marcher, mais si tu commences sur un terrain de foot, tu vas vouloir courir trop tôt.
Un cours de C++ comme premier langage ne commence pas forcément par des considérations sur la conception orientée.Même si, techniquement, on en emploie de suite (comme cin / cout).
Tout comme en C, on est obligé d'utiliser des pointeurs dès les premiers programmes (lire deux nombres et afficher la somme), et dieu sait si cette notion est très mal comprise par les débutants. Et on se pollue gravement l'esprit dès qu'il s'agit d'utiliser des chaines de caractères, qui n'existent pas vraiment en C.
Par exemple on a des variables entières, flottantes, mais pas de variable chaine.
- Edité par michelbillaud 15 septembre 2015 à 15:04:27
Apprendre le C pour bien comprendre le C++, si j'ai bien compris, c'est comme apprendre le latin pour comprendre le français, pas bête quand on fait des études supérieures en langues, pas super pour débuter.
Ainsi donc on me pique sans vergogne mes analogies ??? je devrais demander des droits d'auteur, tiens
Ce qui me rassure, c'est que j'ai visiblement atteint mon objectif, vu qu'elle t'a marqué au point de la reprendre
- Edité par koala01 15 septembre 2015 à 15:03:42
Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
Apprendre le C pour bien comprendre le C++, si j'ai bien compris, c'est comme apprendre le latin pour comprendre le français, pas bête quand on fait des études supérieures en langues, pas super pour débuter.
Ainsi donc on me pique sans vergogne mes analogies ??? je devrais demander des droits d'auteur, tiens
Ce qui me rassure, c'est que j'ai visiblement atteint mon objectif, vu qu'elle t'a marqué au point de la reprendre
- Edité par koala01 il y a environ 6 heures
Je ne crois pas avoir lu ta version de l'analogie, je pensais ajouter un truc, me ferais-tu l'honneur d'être d’accord avant même sa publication...
Bon, il ne faut pas non plus trop tirer sur l'apprentissage du C, s'il y a peu d'entreprises modernes qui ont leurs archives en latin de la période romaine, en langues du moyen age en français de la renaissance..., j'ai cru comprendre qu'il y a de très bon produits créés il y a quelques années voir quelques décennies qui ont besoin de maintenance, donc de personnes formées sur ces langages.
Je ne crois pas avoir lu ta version de l'analogie, je pensais ajouter un truc, me ferais-tu l'honneur d'être d’accord avant même sa publication...
En fait, c'est une analogie que je fais très régulièrement pour justifier l'aberration que représente le fait de juger que C est un prérequis indispensable à l'apprentissage du C++
Et je suis sur de l'avoir utilisée il y a pas si longtemps sur ce forum
Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
En mathématiques on retrouve la notion de classe. Il faudrait que je mette à la théorie des ensembles d'ailleurs tant ses notions sont recoupées par l'informatique (avec des adaptations aux impératifs matériels bien sur) et ca pourrait habituer l'esprit à raisonner sur des choses abstraites.
Tu peux tout à fait voir les classes comme des ensembles (et l'héritage public comme du sous-typage -> des sous-ensembles). Dès lors en fait, le LSP devient d'une simplicité effarante et la question "quand ai-je le droit d'avoir un héritage en diamant ?" évidente, même si techniquement il y aura quelque impératifs du langage à respecter.
Le principal problème en C++, c'est que tu vas avoir la définition de classe valeur (hein @koala01) qui va foutre la merde et rendre le raisonnement un peu plus tordu. Parce que soit un auras un multi-ensemble (ce qui est moins drôle pour raisonner) soit ton ensemble d'instances de la classes sera différent de l'ensemble des objets représentables par la classe. Ce qui est moche, il faut le dire.
Tu peux tout à fait voir les classes comme des ensembles (et l'héritage public comme du sous-typage -> des sous-ensembles). Dès lors en fait, le LSP devient d'une simplicité effarante et la question "quand ai-je le droit d'avoir un héritage en diamant ?" évidente, même si techniquement il y aura quelque impératifs du langage à respecter.
Le principal problème en C++, c'est que tu vas avoir la définition de classe valeur (hein @koala01) qui va foutre la merde et rendre le raisonnement un peu plus tordu. Parce que soit un auras un multi-ensemble (ce qui est moins drôle pour raisonner) soit ton ensemble d'instances de la classes sera différent de l'ensemble des objets représentables par la classe. Ce qui est moche, il faut le dire.
Pourquoi le cour c++ d'openclassroom c'est de la merde parce que il s'utilise le namespace std; ? tu peut m'espliquer même si sa te fait chier
@BiczoSamuel : tu trouveras vraiment tous les arguments très rapidement par quelques recherches sur le forum. Le "using namespace std;" n'est pas un problème (même si ce n'est pas très recommandé). Les problèmes qu'on pointe généralement sont de vrais problèmes.
× 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.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
git is great because Linus did it, mercurial is better because he didn't.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C