Cours c++

Nathalie -  
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'aimerais apprendre le c++.
J'aimerais commencer de suite en c++ sans passer par le c.
Connaitriez-vous un ebooks ou un tuto aussi cool que le site du zero qui propose d'apprendre le c++ sans devoir d'abord faire du c, svp?

Merci

9 réponses

mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   7 877
 
Le problème c'est que le C++ c'est du C plus quelques notions supplémentaires (template, héritage, etc...). Bref ça n'a pas vraiment de sens de dire que tu veux apprendre le C++ sans apprendre le C. Ensuite il y a bien l'apprentissage de certaines librairies C++ (par exemple la STL, boost, QT...) mais je ne sais pas si c'est ce que tu cherches.

En fait tu cites le site du zéro, excellent site pour démarrer, mais tu as l'air de dire qu'il ne t'apporte pas exactement ce que tu cherches. D'où ma question, quels points particulier souhaites-tu découvrir qui ne figurent pas sur le site du zéro ?

Bonne chance
0
Nathalie
 
Merci,
L'idéal serait un site, un ebooks ou un tuto comme celui du siteduzero en c mais qui ne parlerait que de c++
Par exemple: cout, cin, références, objets et non %d, printf, scanf etc...
A quoi bon apprendre une fonction (a,b) alors qu'en c++ in n'acceptera que (int a, int b).
Si je commence le tuto c++ du siteduzero, il considère que j'ai appris le 'c' et m'y renvoie sans cesse si non.
C'est gentil quand même de m'avoir répondue.
Depuis que j'ai posté, j'en ai trouvé 3 mais pas aussi cool que le siteduzero.
www.ebooks.gratuit.com.cours.cpp.rar, cours_cpp-1.4.0.4.html.rar, le troisième est sur ma partition Mandriva, je ne me rappelle plus du nom .
Il y a aussi le msdn de microsoft (visual-c++) mais j'ai lu qlqpart que le c++ de microsoft n'en était pas vraiment un... Alors, celui-là, je l'oublie.

Merci mamiemando
0
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   7 877
 
Petite précision par rapport à ce que tu dis. Il est normal que tout le monde se base sur un cours de C puisque toutes les fonctions C sont disponibles en C++. Par exemple en C++ pour utiliser fscanf il faut inclure <cstdio> au lieu de <stdio.h>. La plupart des headers C++ suivent cette convention quand ils déclarent des fonctions du C (ainsi tu as également <climits>, <cmath>, <cstdlib> etc...).

Ce que tu dois garder à l'esprit c'est que ces fonctions servent aussi en C++ (hormis peut être les malloc et autre free, on utilise plutôt new et delete en C++, et encore le moins possible). En particulier si tu as besoin de calculer une racine carrée, pas de mystère tu utilisera <cmath> et sqrt().

De plus le fait d'utiliser des flux ( >>, <<, std::cout, std::cerr, std::cin et plus généralement des std::ostream et std::istream) ne permet pas de tout faire ou n'est pas toujours pratique (en particulier parser un fichier pouvant comporter des erreurs est clairement plus facile avec des fscanf).

Je pense que ce que tu cherches c'est un cours sur la STL et sur les templates. J'ai commencé à rédiger quelques introductions sur ça, j'espère que ça t'aidera :
http://www.commentcamarche.net/faq/sujet 11250 les inlines en c
http://www.commentcamarche.net/faq/sujet 11194 les templates en c
http://www.commentcamarche.net/faq/sujet 11255 introduction a la stl en c standard template library
http://www.commentcamarche.net/faq/sujet 14440 la compilation et les modules en c et en c

Je t'invite également à te promener sur les sites présentant les différentes fonctionnalités (containers, fonctions...) de la STL. Personnellement j'utilise surtout celui-ci :
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583

Ensuite, ne perds pas de vu que le C++ ne s'arrête pas là. Il existe de très nombreuses librairies qui font plein de trucs géniaux (par exemple QT et boost).

Bonne chance
0
zxcoolman Messages postés 62 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour je rentre cette année en BTS IRIS (ancien BTS informatique industriel )
et nos profs nous enseignent le C++ sans passer par le C même si moi j'ai commencé par le C il y a de ça deux ans (j'ai juste fait le minimum) mais la je m'embrouille serait-il possible d'avoir un tuto qui récapitule tous depuis le début en C++


merci d avance....zxcoolman
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   7 877
 
Ben il suffit de chercher un cours sur google ? En ce qui me concerne j'aime bien ce qui cours :
https://www.nawouak.net/?doc=course.cpp+lang=fr

Bonne chance
0
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
j'avais moi aussi commencé directement par le C++ en IRIS (j'avais des bonnes bases de VB auparavant).
de toute facon, on était obligé de voir le C en meme temps, car comme dit plus haut, le C++ n'est qu'une évolution.

de plus, les printf, scanf se retrouvent en C++, notament en manipulant les chaines (sprintf, sscanf), et sont très puissant !

brefapprendre le C n'est pas du temps perdu
0
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   7 877
 
de plus, les printf, scanf se retrouvent en C++, notament en manipulant les chaines (sprintf, sscanf), et sont très puissant !

Ouais modulo les scanf, il est mieux d'utiliser les streams du C++ pour ce qui est de gérer les entrées sorties (et au lieu des scanf, mieux vaut utiliser la lib PCRE). Mais comme tu le dis, certaines fonctions de la lib C sont bien pratiques.

Bonne chance
0
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
en l'occurence, je faisait plutot allusion allusion au formatage des chaines de caractères avec sprintf, et au découpage avec sscanf.

puis de toute facon, c'est toujours interessant de connaitre les bases, pour savoir pourquoi le langage est devenu ce qu'il est maintenant
0
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   7 877
 
Oui c'est ce que je te dis pour construire une chaîne au lieu d'utiliser sprintf tu peux utiliser un std::ostringstream (pour print std::cout, pour fprintf un std::ofstream etc...).

#include <sstream>
#include <iostream>

int main(){
  std::ostringstream oss;
  oss << "plop" << 69;
  std::cout << oss.str() << std::endl;
  return 0;
}


Bonne chance
0
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
justement, c'est la que tu ne vois pas l'avantage du sscanf et du sprintf: tu peux dynamiquement changer de type, vu que la chaine définissant le format des données peut être changée dynamiquement
0
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   7 877
 
Un sprintf prend en paramètre un buffer qu'il faut dimensionner, allouer et désallouer. Toute la difficulté étant bien entendu de le dimensionner (et les ennuis commencent quand il est sous dimensionné). Si dans la majorité des cas on s'en sort, ce n'est pas toujours simple dans l'absolu de garantir que la chaîne qu'on va générer fera moins de n caractères, et bien souvent, on est obligé de largement surdimensionner n.

Ces aspects sont complètement transparents avec des streams, et c'est ce qui fait leur intérêt. Mais comme tu l'as dis les fonctions C sont disponibles en C++ donc tu utilises ce que tu préfères. Il faut juste veiller à inclure <cstdio> au lieu de <stdio.h>, <cstdlib> au lieu de <stdlib.h> et ainsi de suite.

Accessoirement, manipuler des streams est plus pratique que manipuler des printf puisqu'on n'a pas à construire une chaîne de format.

Bonne chance
0
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
il y a en effet des avantages et inconvénients aux 2 solutions.
Mais pour être un bon développeur, il faut connaitre tout ce qui peut se faire
0