Java code

Modérateur : Michel Quercia

Errys
Messages : 181
Enregistré le : mer. oct. 04, 2017 3:58 pm
Classe : TS Spe math

Re: Java code

Message par Errys » jeu. oct. 26, 2017 4:11 pm

On ne le fait "jamais" en pratique parce que c'est quelque chose que l'on fait pendant qu'on apprend. Et il permet de prendre conscience des mechanique des langages qu'on utilise.
Je sais que quand j'ai commencé le C, j'ai pris un peu de temps à intégrer ce genre de mechanique et c'est des exercices comme ceci qui m'ont permis de progresser.

Après, le faire en java... L'intérêt est limité je suis d'accord. C'est plutôt intéressant pour voir le bas-niveau.
Lycée 2015-2018
LLG MPSI 2018-2019

Avatar du membre
fakbill
Messages : 11124
Enregistré le : mer. juil. 30, 2008 4:59 pm
Classe : Dr.-Ing

Re: Java code

Message par fakbill » jeu. oct. 26, 2017 6:56 pm

Non. Justement pas. Par exemple, beaucoup de cours de C++ demandent de coder une classe « matrice » qui de surcharger les opérateurs + - et *. Certes ça apprend à surcharger des opérateurs mais c’est exactement ce qu’il ne faut pas faire en C++. Déjà c’est une très mauvaise idée de coder une classe matrice. On apprend à trouver une bonne lib pour faire ça et on ne recode surtout pas ça à partir de rien. De plus, si on le fait, on ne le fait pas surtout pas comme ça car la perfo est à chier (pour des raisons propres au C++).
On peut parfaitement apprendre un langage tout en apprenant les BONNES pratiques. On peut très bien pondre un exo intéressant et **correct** utilisant la surcharge d’opérateurs. Faire des exo ridicules comparés à la vraie vie n’est jamais une bonne idée, surtout qu’on oublie souvent de bien préciser qu’ils le sont.
En C, c’est un peu différent car le C n’a presque rien dans la lib standard. De ce fait, il est assez difficile de coder une construction ridicule en C++. Ho certes on peut faire une boucle au lieu de prendre strlen mais il faut vraiment être tordu.

En java, en python et dans tous ces langages qui viennent avec une lib std énorme, une grande partie de l’apprentissage du langage réside dans le fait de ***savoir que tel truc existe dans la lib standard***. Surtout pas dans le fait de le recoder.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Errys
Messages : 181
Enregistré le : mer. oct. 04, 2017 3:58 pm
Classe : TS Spe math

Re: Java code

Message par Errys » jeu. oct. 26, 2017 10:12 pm

Je suis entièrement d'accord avec toi sur le fait que c'est débile de coder quelque chose soit même alors que ça existe déjà dans la lib. Pourquoi recoder une stack/file alors que la std en a déjà des plus optimisé et plus sécurisés ?

Mais d'un point de vue pédagogique, je ne suis pas d'accord avec toi, j'ai appris à coder en me servant de AUCUNE librairie, oui oui, je recodais strlen à la main quand j'en avais besoin.
Maintenant, j'utilise bien évidemment les fonctions de la librairie et les classes mais je sais toujours quel est la complexité d'une opération et comment ça marche derrière les coulisses.
Chose que tu n'acquiert pas en apprenant en python en te servant exclusivement de la librairie (et dans beaucoup d'autres langages).

Il suffit de voir la quantité de personnes qui pensent que certaines opérations de font en temps constant alors qu'elles ont une complexité linéaire...

Après je précise que j'ai commencé à coder cette année et que je n'ai pas forcément beaucoup d'expérience même si je commence à me débrouiller en code. en revanche, j'ai rencontré beaucoup de codeurs qui avaient plusieurs années d'expérience derrière eux et qui n'étaient pas au courant de pas mal de chose essentielles, qui auraient dû être apprise dès le départ.
Lycée 2015-2018
LLG MPSI 2018-2019

Errys
Messages : 181
Enregistré le : mer. oct. 04, 2017 3:58 pm
Classe : TS Spe math

Re: Java code

Message par Errys » jeu. oct. 26, 2017 10:14 pm

Et d'ailleurs, pourquoi la surcharge des opérateurs est mauvaise en C++? (Je demande ça pour en apprendre plus pas pour questionner ce que tu dis!)
Lycée 2015-2018
LLG MPSI 2018-2019

Avatar du membre
fakbill
Messages : 11124
Enregistré le : mer. juil. 30, 2008 4:59 pm
Classe : Dr.-Ing

Re: Java code

Message par fakbill » sam. oct. 28, 2017 2:53 pm

Errys : tu es un bon exemple de personnes qui a compris. Cependant, bcp de comprennent pas et c'est bien normal. En école plus ou moins généraliste, on leur donne un vague cours de C ou de C++ dans lequel on leur montre de mauvaises pratiques. Certains (peu) feront assez d'info pour comprendre que le cours oubliait de parler du principal. D'autres auront pour longtemps une vision biaisée de l'info. Je n'ai rien contre le fait de faire recoder un truc qui existe déjà dans la lib standard **à condition que le cours et le prof insiste bien sur le fait que c'est uniquement pédago et qu'en vrai ou fait std::XX

Les opérateurs en C++ pour les matrices? Simplement car, si on code + et = de façon raisonnable (il y a une façon de faire autrement mais c'est *très* compliqué (voir par exemple la lib eigen)), A+B=C s'exécute en faisant A+B dans temp puis temp dans C. C'est catastrophique en termes de performance car on passe son temps à faire des recopies mémoire pour rien.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Errys
Messages : 181
Enregistré le : mer. oct. 04, 2017 3:58 pm
Classe : TS Spe math

Re: Java code

Message par Errys » dim. oct. 29, 2017 1:32 am

Ah je comprends mieux ton point de vue maintenant. Il est clair que pour quelqu'un qui fait de l'info par contrainte en école c'est pas top.

Et merci pour l'explication par rapport à la surcharge des opérateurs, il est clair que c'est atroce niveau performance. Surtout que ça fausse l'évaluation de la complexité de ton programme ducoup.
Lycée 2015-2018
LLG MPSI 2018-2019

Avatar du membre
siro
Messages : 2842
Enregistré le : dim. mai 01, 2016 8:09 pm
Classe : Cassandre

Re: Java code

Message par siro » dim. oct. 29, 2017 11:04 am

Pour compter le nombre de chiffres, compter la taille de la chaîne de caractères est de loin le plus naturel pour un être humain. Je ne vois pas comment il en serait autrement pour une machine.
Chaque vénérable chêne a commencé par être un modeste gland. Si on a pensé à lui pisser dessus.

Errys
Messages : 181
Enregistré le : mer. oct. 04, 2017 3:58 pm
Classe : TS Spe math

Re: Java code

Message par Errys » dim. oct. 29, 2017 11:43 am

On demande ici le nombre de chiffres distincts.
Lycée 2015-2018
LLG MPSI 2018-2019

Avatar du membre
siro
Messages : 2842
Enregistré le : dim. mai 01, 2016 8:09 pm
Classe : Cassandre

Re: Java code

Message par siro » dim. oct. 29, 2017 12:50 pm

Tu fais quoi comme différence entre nombre de chiffres et nombre de chiffres distincts ?
Chaque vénérable chêne a commencé par être un modeste gland. Si on a pensé à lui pisser dessus.

Errys
Messages : 181
Enregistré le : mer. oct. 04, 2017 3:58 pm
Classe : TS Spe math

Re: Java code

Message par Errys » dim. oct. 29, 2017 2:52 pm

123 a 3 chiffres distincts et 3 chiffres donc il n'y a pas de différence dans ce cas la.
En revanche: 122 a 2 chiffres distincts mais 3 chiffres donc il y a bien une différence.
Lycée 2015-2018
LLG MPSI 2018-2019

Avatar du membre
siro
Messages : 2842
Enregistré le : dim. mai 01, 2016 8:09 pm
Classe : Cassandre

Re: Java code

Message par siro » dim. oct. 29, 2017 3:50 pm

D'accord.
Bah c'est juste prendre le nombre, le transformer en str, prendre les éléments de la chaîne et jouer avec en les comptant. C'pas extrêmement difficile et QUE VIENT FAIRE LE LOG DEDANS non de serfùongùn.
Chaque vénérable chêne a commencé par être un modeste gland. Si on a pensé à lui pisser dessus.

Errys
Messages : 181
Enregistré le : mer. oct. 04, 2017 3:58 pm
Classe : TS Spe math

Re: Java code

Message par Errys » dim. oct. 29, 2017 4:31 pm

Le log faisait référence à un exercice qu'il devait faire avant où il devait bien compter le nombre de chiffres :p
Mais sinon oui, ce n'est pas bien difficile.
Lycée 2015-2018
LLG MPSI 2018-2019

Avatar du membre
fakbill
Messages : 11124
Enregistré le : mer. juil. 30, 2008 4:59 pm
Classe : Dr.-Ing

Re: Java code

Message par fakbill » dim. oct. 29, 2017 4:48 pm

Ha compter le nombre de chiffres distincts ça devient plus fun.
On peut voir comment vous faites ça?
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Errys
Messages : 181
Enregistré le : mer. oct. 04, 2017 3:58 pm
Classe : TS Spe math

Re: Java code

Message par Errys » dim. oct. 29, 2017 5:16 pm

En C++ je le ferais comme ça, même si je n'aime pas utiliser le do while: https://pastebin.com/G2DZZJ85
Lycée 2015-2018
LLG MPSI 2018-2019

Lily1998
Messages : 225
Enregistré le : jeu. févr. 16, 2017 8:16 pm
Classe : PC*

Re: Java code

Message par Lily1998 » dim. oct. 29, 2017 11:28 pm

En Python :

L = []
for i in str(nombre):
if i not in L : L.append (i)
print (len (L))

Forcément travailler avec des chaînes de caractère ça simplifie énormément et ça contourne le problème, mais bon ;)

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité