Cours de programmation et d'algoritmique

Bonsoir tout le monde !
Je me présente, je m'appelle Robin, et j'aimerai bien participer au concours de l'année prochaine.
Dans ce cas, où est le problème ?!
En fait, je n'ai que très peu de connaissances dans le domaine de la programmation ; j'ai commencé par Python, pour comprendre les "grandes bases d'un langage" (qu'en mode "commande", j'ai pas trop étudié Tkinter) et là je suis à fond dans le C.
Ce que je voudrais auprès de vous : que vous me donniez des liens de cours dans les différents langages recquis lors du conocours (PHP, C, Perl, etc.) des cours qui m'enseignent certes les bases, mais aussi qui poussent un peu si vous voyez ce que je veux dire :)
Mais aussi des cours algorithmiques, qui puissent là encore me faire acquérir un niveau suffisant pour le concours... Sachez que je n'ai AUCUNE connaissance dans ce domaine...
Voilà, j'espère que certains pourront m'aider :)
Merci par avance :)

Pour l'algo oui, pour le C c'est un peu n'importe quoi (en tout cas, pour ce dont je me souviens). Surtout qu'ils sortent des personnes qui utilisent printf en C++ ... o_O'
(Non, ce n'est pas un troll envers jaloyan et nos nombreuses discussions sur ce sujet.)

Plutôt http://siteduzero.com/ pour la programmation à la base, tu choisis un langage supporté et tu l'apprends.
Et, pour l'algorithmique, s'entraîner sur les QCM / demi-finales prologin des années précédentes suffit, à condition de bien pousser chaque exercice et de chercher un moment (sauf pour les exercices 4 des deux derniers QCM par exemple, qui sont vraiment *très* tordus, et pour lesquels il est possible de simplement chercher l'algorithme qu'il faudrait implémenter), et en observant les bases grâce à wikipédia (notion de complexité, etc.).

J'ai en tout cas fait comme ça sans trop de soucis.

Juste que c'est lourd de devoir apprendre un tableau des %d/%s/%05d/[...] ...
(Dis, tu serais pas un fake de jaloyan ? *regard suspicieux* ... Quoi que non, lui il me dirait qu'un benchmark réalisé sur un ordinateur d'il y a 10 ans avec le standard C++65 a prouvé que printf était plus rapide que cout d'un facteur 0,0001% ... =p)

Le prenez pas mal mais j'ai pas trop compris ce dont vous parliez... la seule chose que je pense avoir compris, c'est que beacoup d'entre vous me déconseille C pour les algo... (quel langage dans ce cas ?).
Moi je voudrais juste que vous me conseilliez des cours qui me permettent d'acquérir un niveau suffisant pour participer au concours l'année prochaine ; dans les différents domaines qui seront abordés... (qui sont ?).
Voilà, j'espère que cette fois, je me serais mieux fait comprendre :)

@Equinoxe : faut avouer, le C a un gros désavantage face au C++ pour ce qui est de l'algo (vecteurs, piles, files, tas, etc.). Pourquoi quelqu'un qui connaît le C et veut profiter des avantages du C++ devrait apprendre à utiliser cin/cout, et puis plein de trucs propres au C++ ? J'ai pas dit qu'il fallait apprendre printf quand on fait du C++, hein. Puis chacun voit midi à sa porte d'abord...

Ouaip (question claire qu'il me semblera, sera parfaitement compréhensible et ne laissera pas de doutes à ce cher iRobin).
Le C++, c'est du C, mais en plus complet. Donc commence par le C , pour apprendre un peu la théorie des structures (listes, files etc...) puis continue avec le C++, qui te facilitera la tache. Z'etes d'accord?

Vous auriez des sites à me conseilliez ? Pour le C et le C++, je le fais sur le site du zero. Vous pensez que c'est assez complet ?

« Le C++, c'est du C, mais en plus complet. Donc commence par le C , pour apprendre un peu la théorie des structures (listes, files etc...) puis continue avec le C++, qui te facilitera la tache. Z'etes d'accord? »

Non. Pour prendre de bonnes habitudes en C++, vaut mieux ne pas commencer par le C mais plutôt se plonger direct dans le C++. C'est un des gros problèmes du SdZ d'ailleurs.
Après, y'a moyen de voir des cours de C pour apprendre comment on fait des structures de base. Et des cours de C++ pour apprendre comment on fait les mêmes structures mais plus joliement. :)

« Le C++, c'est du C, mais en plus complet. Donc commence par le C , pour apprendre un peu la théorie des structures (listes, files etc...) puis continue avec le C++, qui te facilitera la tache. Z'etes d'accord? »
Je connais des personnes qui te tueraient pour avoir dit ça.

Le site du zéro ? J'ai jamais vu un cours C++ sans fautes sur leur site (j'ai pas beaucoup cherché certes). C'est à cause du site du zéro qu'on retrouve des « pro du C++ » qui savent même pas à quoi sert le mot clef virtual (base de l'OOP) ou template (base de la prog générique), car oui, ce n'est même pas dans leur « cours ».

Il y a un problème à utiliser printf en C++ (pas type safe, etc) mais pas en C & stdlibc++. Quand à la lenteur supposée des flux en C++, c'est completement dépendant du compilateur, parce qu'en théorie c'est l'inverse (avec cout, le type à afficher est connu à la compilation, pas de format string à parser).

Pour l'algorithmique on voit souvent du C & stdlibc++ qui est largement suffisant pour un exo de 20 lignes de codes. Si tu apprends un langage juste pour un concours d'algorithmique, le C & stdlibc++ ça va, mais après, s'il te plait ne cherche pas à coder autre chose, le résultat est affreux.

http://www.france-ioi.org/

-Cours sans superflu et de qualité, on apprend très vite à programmer.
-Aucune installation, on peut tester ses programmes directement sur le site.
-Il y a des exercices pour s'entraîner efficacement et maîtriser les notions rapidement.
-Courbe de progression individuelle qui motive vachement.
-En cas de blocage sur un exercice, tu peux demander de l'aide à un parrain ou un entraîneur.
-etc

Le cours C de france-ioi est pas complet, mais il est loin d'être mauvais pour autant.
Le mieux c'est d'apprendre le C et de compléter avec quelques trucs de la stl du c++.
Par contre dire que y'a que Jaloyan pour vanter les mérites de printf par rapport à cout, ralala...
scanf > cin et printf > cout, c'est tout :p

Enfin bon, le mieux c'est de se plonger dans l'algorithmique (sur france-ioi par exemple), et voilà :p
(ps : quel est ton prénom Equinoxe ?)
(ps2 : pfff Thomas...)

cout c'est moche et std:: aussi.
Il faut avoir un esprit tordu pour les écrire et encore plus tordu pour les mettre en pseudo-code.

Bah, au lieu de foutre des std:: partout faut avoir la présence d'esprit de caser un "using namespace std" au début du programme. Par contre sur ces histoires de cin/cout vs scanf/printf ... je sais pas trop. Personnellement je trouve cin plus pratique à utiliser quand on te file des entrées sous formes de "listes d'entier", mais pas quand on te file un truc plus compliqué du style un arbre écrit avec une syntaxe "[1,[2,3]]" ...

Quant à cout ... pour l'utilisation qu'on en fait, c'est souvent aussi simple que d'utiliser printf. Là où printf est plus intéressant par contre, c'est quand on veut afficher un double avec k chiffres après la virgule par exemple. Mais j'utilise de préférence cout par consistance avec le reste du programme.

Et enfin epsilon je ne comprends pas trop ton argument sur le typage des données avec cout. Quand tu fais printf d'un truc, le parsing de ta string est aussi fait au moment de la compilation non ? Car il faut connaître au moment de la compilation quels arguments va recevoir printf pour savoir comment les mettre sur la pile et où aller les récupérer ensuite. Enfin quand je fais un "printf(argv[0])" par exemple, le compilateur râle un peu, mais ça a l'air de passer quand même.

Par contre je veux bien que tu me donnes un exemple de programme où l'utilisation de cout est plus performante que printf. Parce que bon, c'est joli de dire qu'en théorie ça change rien, mais si les compilo qu'on utilisent sont pas foutus de faire mieux que printf, je vois pas pourquoi on devrait quand même utiliser cout ?

PS : Par contre les template sapu. Et les mots-clefs const volatile virtual extern static tout ça, bwarf ça complique la vie plus qu'autre chose, le compilateur devrait détecter automatiquement ce genre d'attribut (dans les cas les plus généraux je pense, notamment pour ce qui est de l'inline ou des mots-clefs const).

Répondre au sujet

Vous devez vous enregistrer ou vous connecter pour poster des messages.