Java code

Messages : 11287

Enregistré le : 30 juil. 2008 16:59

Classe : Dr.-Ing

Re: Java code

Message par fakbill » 25 oct. 2017 09:31

C'est le genre de questions douteuses.
Trouver le nombre de chiffres d'un entire...c'est soit le caster en chaine et c'est une question de java pure ou alors c'est écrire un algo avec des entiers (enfin algo est un grand mot...log10 est autorisé? si on se dit que "non" alors ça deviant ridicule et on en vient à faire des /10 en boucle...)

bref, la question est idiote.
Soit on pose une question de langage pure demandant comment on caste un int en chaine, soit on demande du pseudo code sur des entiers.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 64

Enregistré le : 22 juil. 2017 21:15

Classe : l1

Re: Java code

Message par [Matthieu] » 25 oct. 2017 11:11

On avait même pas le droit au log et on doit le faire avec un tableau d'entiers de 1 à 10 et des modulo.

Messages : 64

Enregistré le : 22 juil. 2017 21:15

Classe : l1

Re: Java code

Message par [Matthieu] » 25 oct. 2017 11:14

Le tableau de bool était la solution mais j'ai pas le droit de changer en chaîne de caractere

Messages : 313

Enregistré le : 04 oct. 2017 15:58

Classe : MP

Re: Java code

Message par Errys » 25 oct. 2017 18:38

Bonjour, dans ce cas là, des divisions successives par 10 suffiraient amplement pour cela :)
Lycée Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020

Messages : 11287

Enregistré le : 30 juil. 2008 16:59

Classe : Dr.-Ing

Re: Java code

Message par fakbill » 26 oct. 2017 12:44

en ayant bien conscience que c'est un exo *idiot* et qu'on ne fait **jamais** ça en pratique.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 313

Enregistré le : 04 oct. 2017 15:58

Classe : MP

Re: Java code

Message par Errys » 26 oct. 2017 16:11

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 Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020

Messages : 11287

Enregistré le : 30 juil. 2008 16:59

Classe : Dr.-Ing

Re: Java code

Message par fakbill » 26 oct. 2017 18:56

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é.

Messages : 313

Enregistré le : 04 oct. 2017 15:58

Classe : MP

Re: Java code

Message par Errys » 26 oct. 2017 22:12

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 Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020

Messages : 313

Enregistré le : 04 oct. 2017 15:58

Classe : MP

Re: Java code

Message par Errys » 26 oct. 2017 22:14

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 Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020

Messages : 11287

Enregistré le : 30 juil. 2008 16:59

Classe : Dr.-Ing

Re: Java code

Message par fakbill » 28 oct. 2017 14:53

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é.

Répondre