Topic schoolique

Libre à vous de parler de ce que vous souhaitez.

Messagepar Salepate » 10 Juin 2008, 00:14

Ouais mais un truc qui te prend 5minutes en algorithme (dans ton cas là) il en faut 30secondes en langage.

Personnellement je trouve ça lourd et moche. Ok ça fera office d'intermédiaire entre l'utilisateur et celui qui n'y pige rien. Mais personnellement j'ai plus de facilité à comprendre un programme en C (dans le cadre d'un programme léger) que en algorithme.

Pour les trucs complexes, je ne sais pas à quel niveau tu fais référence, mais il y aura aussi un certain niveau ou l'algorithme, n'est pas du tout efficace.

Et quand je disais 2 définitions différentes, je parlais de deux usagers différents qui travaillent sur un même objectif.

Bien sûr en programmation ça sera pareil, mais ça restera plus joli !

Et c'est ce que je pense, au premier semestre on nous a bien saoulé avec l'algorithmie et je pense que ça rentre dans le cadre de l'étudiant débutant en matière de programmation.
Avatar de l’utilisateur
Salepate
Raging Skies
 
Message(s) : 1662
Inscrit(e) le : 09 Août 2007, 12:10

Messagepar Poilon » 10 Juin 2008, 03:37

je comprend rien à ce que tu dis, un mec qui code sans avoir l'algo dans sa tete fait nimporte quoi. Une fois que tu as compris l'algo tu l'écrit super facilement en langage algo. En C, va falloir tester, et tu fais souvent de la merde dans la syntaxe enfin c'est over plus chiant.
--
Poilon
Avatar de l’utilisateur
Poilon
Drogué du CF
Drogué du CF
 
Message(s) : 3278
Inscrit(e) le : 09 Fév 2006, 17:46
Localisation : Reims

Messagepar zebdal » 10 Juin 2008, 05:29

tu veux dire "or else" ?

or else c'est pas "ou alors", c'est "ou sinon"
je crois que "ou sinon" c'est l'équivalent de "alors" mais chuis pas sur.

Ouais mais un truc qui te prend 5minutes en algorithme (dans ton cas là) il en faut 30secondes en langage.

je te donne 30 secondes pour me faire un programme en C qui s'exécute, et qui vérifie qu'un arbre binaire passé en paramètre est un arbre de recherche ou non et retourne le résultat à l'écran.

Personnellement je trouve ça lourd et moche. Ok ça fera office d'intermédiaire entre l'utilisateur et celui qui n'y pige rien.

utilisateur ==> celui qui lance l'application
celui qui n'y pige rien ==> celui qui lance l'application
a moins que ca soit le programeur qui ne pige rien à ce qu'il fait.

non, ca ne fait pas office d'intermédiaire entre qui que ce soit puisque seul le programmeur le lit. Ca sert juste au programmeur pour coder plus facilement des trucs compliqués.

Pour les trucs complexes, je ne sais pas à quel niveau tu fais référence, mais il y aura aussi un certain niveau ou l'algorithme, n'est pas du tout efficace.

si c'est un lourd projet comme faire un jeu vidéo, je pense qu'il faudra quand même un minimum écrire sur papier avant de faire planter le travail de 10 autres programmeurs derrière, donc dire que l'algo n'est pas du tout efficace ca reste à prouver.

Et quand je disais 2 définitions différentes, je parlais de deux usagers différents qui travaillent sur un même objectif.

je ne vois pas de quoi tu parles...

je pense que ça rentre dans le cadre de l'étudiant débutant en matière de programmation.

c'est ce que j'arrete pas de dire depuis le début que c'est censé permettre de mieux coder.

je comprend rien à ce que tu dis, un mec qui code sans avoir l'algo dans sa tete fait nimporte quoi. Une fois que tu as compris l'algo tu l'écrit super facilement en langage algo. En C, va falloir tester, et tu fais souvent de la merde dans la syntaxe enfin c'est over plus chiant.

bah c'est lui qui fera planter ses applications avant de se rendre compte qu'il aura tout à recommencer et ainsi il aura perdu une journée de travail pour rien.
bon après y a des génies qui rien qu'en voyant le code savent qu'est ce que va faire le programme, mais faut etre taré de la vie dans ce cas.
on peut très bien coder du C comme ca direct mais à un certain niveau, non.

Et sinon, il faudrait que tu saches qu'un utilisateur UTILISE un programme, d'où son nom.
tu pourrais dire de lui aussi qu'il lance ou exécute un programme.

un programmeur quand à lui PROGRAMME un programme, doù son nom.
tu pourrais dire de lui aussi qu'il écrit du code, qu'il fait le code source.

mais l'utilisateur sera bien souvent DIFFERENT du programmeur.
je te dis ca parce que tu utilises bien trop souvent le terme utilisateur à tort et à travers.

Toi tu trouves que pour TOI, l'algo n'est pas utile, OK.
Mais pour d'autres ca l'est, donc cesse de dire que c'est carrément inutile.
je ne te reproche rien à part ce petit détail.
Image
Avatar de l’utilisateur
zebdal
Véritable accro du CF
Véritable accro du CF
 
Message(s) : 1114
Inscrit(e) le : 26 Mai 2007, 22:37

Messagepar Radek » 10 Juin 2008, 10:58

J'ai eu mes notes. :P

Programmation impérative (du C) : 19/20 (écrit) 19.5/20 (TP)
Dynamique Newtonienne (la mécanique de base, on est allé jusqu'à la résonance) : 19/20
Méthodes et outils de la physique (calcul différentiel, géométrie différentielle, déterminants, etc) : 15.5/20
Optique géométrique : 0/20 (bon, allez, en fait, j'étais absent, j'me suis trompé de date <_<')
Les autres matières, des notes moins extrêmes : 14/20, 13/20, 10.5/20, 10/20.

La procrastination vaincra.
Faut quand même que j'essaie de travailler l'an prochain (cette année j'ai lu plus de bouquins hors programme que ce que j'ai travaillé sur les cours, c'est pas très rentable, du moins pas à court terme... mais bon, la légèreté des cours de la fac le permet). ;_;

PS : Pour ceux qui ne me connaissent pas beaucoup (ou qui m'auraient oubliés), j'étais en L1 de physique fondamentale. Ca change du lycée, c'est beaucoup mieux (surtout que j'étais en ES :lol:).





Sinon, pour mettre mon petit grain de sel à la conversation en cours : les pseudo-langages algorithmiques, ça peut aussi être pratique si on veut traduire un programme en un autre langage non ? Par exemple, une entreprise vous demande de faire un programme, vous commencez tout de suite à le faire dans un langage donné, puis l'entreprise vous recontacte pour vous dire qu'elle ne le veut pas dans ce langage. Ca va être beaucoup plus difficile de traduire le programme si vous ne l'avez pas en langage algorithmique, directement à partir du langage dans lequel vous l'avez écrit. :P Après, je ne sais pas si ce genre de situations se produisent souvent.

Et je rejoins Poilon, de toute manière, il est nécéssaire d'avoir l'algorithme en tête, puisque l'algorithme n'est rien d'autre que la procédure, qui est indispensable, presque quoi qu'on fasse (pas qu'en programmation, et en programmation encore plus qu'ailleurs... Depuis cette année je vis en voyant des algorithmes partout. :lol:). Et si on n'a pas une mémoire permettant d'avoir tout l'algorithme en tête sans oublier le début lorsqu'on arrive à la fin, c'est bien de le noter... D'où l'intérêt du pseudo-langage algorithmique en programmation, nan ?

J'avoue qu'en C, je ne passe pas par là, parce que ce qu'on nous demande est assez simple en première année (je faisais tout de suite sur la copie, au propre, en C, au partiel), mais je pense que ça a quand même son utilité, ça me semble évident.
Ah non, en fait on a inventé un pseudo-langage qui sert à rien et on perd un semestre à l'enseigner aux élèves, tout en leur demandant de continuer à l'utiliser par la suite pour les embêter à chaque fois qu'ils veulent faire de la programmation. Suis-je bête. Où avais-je la tête !? :D



Sinon, toujours en parlant d'algorithmes et de programmation, je trouve qu'il y a quelque chose d'assez bizarre. Quand je travaille sur un problème, parfois, un peu comme je viens de le dire, j'ai du mal à garder le début du problème en tête lorsque je pense à la fin (en lisant l'énnoncé), et ça donne quelque chose de très confus. Parfois, je ne sais même plus sur quoi je travaille, ce que je dois faire, et j'ai littéralement le sentiment d'être bêtement assis à réfléchir sans savoir ce que je pense. C'est comme si je ne comprenais plus rien au problème, et que mon cerveau faisait tout le travail à ma place ! (Evidemment, le cerveau fait toujours tout le travail, mais ici, je veux dire que j'en ai pas trop conscience). Donc je suis devant un problème, à force de réfléchir j'y comprend plus rien et j'arrive plus à voir comment sont liés les différents éléments, je me gratte la tête, je me tire les cheveux, puis pouf, mon cerveau me chuchotte la bonne réponse, qui est entièrement cohérente et qui résoud le problème, sans que j'ai eu l'impression que c'est moi qui ai trouvé cette solution. :D Et à chaque fois, je suis très étonné. Ca ne le fait pas pour les problèmes très simples dont la solution est immédiate ou presque, mais je trouve ça vraiment amusant (ou bizarre). Ce doit être prace qu'on trouve une solution élaborée en un clin d'oeil, alors que de longues réflexion se sont révélées infructueuses que ça donne ce sentiment bizarre.

J'imagine qu'on a chacun sa manière de penser les choses et de les voir dans un problème, donc je ne sais pas si vous travaillez de la même façon, mais je pose quand même la question. Vous avez la même impression en faisant de la programmation ? :D
Avatar de l’utilisateur
Radek
SIA
 
Message(s) : 669
Inscrit(e) le : 07 Fév 2006, 19:45

Messagepar zebdal » 10 Juin 2008, 13:20

moi quand j'essaie de programmer quelque qu'à la base je ne trouve pas simple, j'essaie d'étudier tous les cas possibles (en m'aidant parfois de dessins horribles mais qui me sont très utiles) et commencer à faire les spécifs m'aide à me poser les bonnes questions "qu'estce qui arrive si je fais ca?", du coup j'arrive à résoudre des problèmes plus gros que je n'aurais pu imaginer. c'est d'ailleurs le cas sur l'exo 3 de mon partiel.
pour l'instant, j'oublie pas le début quand chuis à la fin du programme.
mais quand je dois trouver l'erreur sur mon programme, faut tout que je recommmence dans ma tête afin de la trouver parce que lire comme ca un programme, ca m'aide peu.
Image
Avatar de l’utilisateur
zebdal
Véritable accro du CF
Véritable accro du CF
 
Message(s) : 1114
Inscrit(e) le : 26 Mai 2007, 22:37

Messagepar Shloub » 11 Juin 2008, 06:22

zebdal a écrit:
euh dans ta solution tu utilise le signe *
A+A*(B-1) donc j'sait pas si on peux appeler ça une solution (ou alors j'ai mal compris ce que tu voulais dire).


fonction fois (a, b) retourne entier
début
si a ou b = 0 alors retourne 0
sinon retourne: A + fois (A, B-1)
fin


où tu vois le signe * là, y a que des + et des -

le A+A*(B-1), c'était juste pour montrer la gueule qu'aurait ma fonction (c'est des spécifs quoi)


Ok, tu utilises pas le signe "fois" mais la fonction "fois()" :')
Deux questions me viennent alors en tête :
Pourquoi ne pas directement utiliser fois(A,B) ?
Pourquoi cette condition avec a ou b nul ?

Ton exo était avec des A et B entiers ? Tu voulais pas faire une petite boucle while/for avec un C qui va de 1 (voire 0) à B et un ajout de A à chaque fois ?
Image
Avatar de l’utilisateur
Shloub
Drogué du CF
Drogué du CF
 
Message(s) : 4275
Inscrit(e) le : 11 Nov 2007, 14:00
Localisation : 28

Messagepar Doraki » 11 Juin 2008, 09:04

Shloub a écrit:Pourquoi ne pas directement utiliser fois(A,B) ?
Pourquoi cette condition avec a ou b nul ?

C'est une fonction récursive, elle s'appelle elle-même pour calculer a*b, et il faut bien qu'elle retourne un résultat un jour.

Une boucle c'est moins bien si tu veux prouver que ta fonction vérifie les spécifications
Ici c'est facile t'as juste à vérifier que en effet 0*b = a*0 = 0 ; a*b = a+(b-1)*a ; et que si b est positif, la fonction termine.
Si t'as une boucle quelquepart faut deviner l'invariant de la boucle et tout de suite, pour une machine, c'est moins pratique et ça demande des techniques spécifiques.

Et puis les boucles c'est pas assez expressif et ça devient moche par rapport aux fonctions récursives.
Essaye donc de coder la fonction d'Ackermann avec des boucles.
Ashura a écrit:No offense dans mes prono, chaque personne classée a été mise là pour une raison et il reflète pas totalement mon opinion réelle
Avatar de l’utilisateur
Doraki
*pounce*
 
Message(s) : 2386
Inscrit(e) le : 14 Fév 2006, 02:25
Localisation : Yvelines / Paris

Messagepar zebdal » 11 Juin 2008, 12:04

Pourquoi ne pas directement utiliser fois(A,B) ?

parce que fois(a,b), il faut bien la définir avant.
Le but de l'exercice n'était pas d'utiliser la fonction mais de définir ce qu'il y avait dedans.
Sinon, j'aurais posté la procédure principale créant les variables a et b et utilisant la fonction afin d'afficher le résultat retourné.
Sur ta calculatrice, tu tapes bien le *
tu t'es jamais demandé comment le * marchait, et bien quand tu tapes a*b, ta calculette fait a+a+a+a+a+a..+a+a b fois.
là c'est le meme principe, tu enleves 1 à b à chaque fois que tu fais +a et quand b atteint 0 ca veut dire que la somme des a est fini, suffit ensuite de retourner le résultat, al récursivité fait le reste.
comme je l'ai dit a*b revient à faire a+a*(b-1)
tu remarqueras que ma fonction a cette forme.

Pourquoi cette condition avec a ou b nul ?

tu ne devines pas?
a*0=0
0*b=0
0*0=0
on l'apprend au cp.
et si je ne fais pas cette vérification alors b va passer à -1 puis -2 puis -3 à l'infini jusqu'à ce que b repasse en positif ou que l'utilisateur arrete le programme avant la fin de son exécution.
et si b repasse en positif (-32768 - 1 = 32767 si c'est un integer en ADA) jusqu'à atteindre 0 alors le résultat sera faux de toute facon puisqu'au lieu de retourner 0 il retournerait 65536*a or si a est différent de 0 alors 65536*a est différent de 0.

et que si b est positif, la fonction termine.

il était défini dans l'énoncé que a et b étaient supérieurs ou égals à 0.
même si je suis d'accord que si a était négatif, la fonction marcherait quand même (mais pas pour b).

et sinon, la récursivité c'est une boucle aussi, on n'en sort une fois qu'une condition nécessaire et suffisante a été vérifiée pour retourner un résultat.
le truc qui change avec la récursivité c'est qu'on fait une décomposition canonique du problème, cad réduire le problème en sous problèmes pour traiter le problème plus facilement.
par exemple mon problème se divise facilement en 2 sous problèmes:
_b=0 ou a=0 alors a*b=0 donc retourne 0
_b/=0 alorsa*b/=0 donc retourne a+a*(b-1)

voilà, je crois que j'ai tout dit.
ma fonction marche très bien. chuis un pgm 8)
Image
Avatar de l’utilisateur
zebdal
Véritable accro du CF
Véritable accro du CF
 
Message(s) : 1114
Inscrit(e) le : 26 Mai 2007, 22:37

Messagepar Doraki » 11 Juin 2008, 12:16

zebdal a écrit:tu t'es jamais demandé comment le * marchait, et bien quand tu tapes a*b, ta calculette fait a+a+a+a+a+a..+a+a b fois.

Je pense plutot qu'elle fait appel à son processeur, qui doit faire un truc qui ressemble à une multiplication en base 2 comme on apprend au primaire.

Sinon, ta fonction marche et est correcte pour b négatif aussi (mais c'est pas efficace et t'as ptetre un stack overflow pour le coup).
Ashura a écrit:No offense dans mes prono, chaque personne classée a été mise là pour une raison et il reflète pas totalement mon opinion réelle
Avatar de l’utilisateur
Doraki
*pounce*
 
Message(s) : 2386
Inscrit(e) le : 14 Fév 2006, 02:25
Localisation : Yvelines / Paris

Messagepar zebdal » 11 Juin 2008, 12:31

non, pour que ca marche avec un b négatif il faudrait faire la condition que si b<0 alors au lieu de faire b-1 tu fais b+1 jusqu'à tomber sur 0, et tu retournes cette fois non pas a+fois(a,b-1) mais -a+fois(a,b+1) ce qui donnerait un truc légerement plus compliqué.

comme je l'ai expliqué plus haut, si b est négatif la fonction ne marche pas puisqu'elle va retourner un mauvais résultat.
y a pas d'overflow excepté si trop de threads ont été créé pendant la récursivité. pour une addition ou une soustraction qu'elle quelle soit, y aura jamais d'overflow, par contre le résultat ne sera pas forcément celui qu'on attendait à la base si on dépasse -32768 ou +32767.
Image
Avatar de l’utilisateur
zebdal
Véritable accro du CF
Véritable accro du CF
 
Message(s) : 1114
Inscrit(e) le : 26 Mai 2007, 22:37

Messagepar Djoss » 11 Juin 2008, 12:58

Vous voulez pas créer un autre topic sérieux ?
C'est vraiment chiant d'avoir des trucs aussi "pointus" sur un topic comme celui-là
Image
Avatar de l’utilisateur
Djoss
Drogué du CF
Drogué du CF
 
Message(s) : 4056
Inscrit(e) le : 07 Fév 2006, 19:07
Localisation : Toulouse

Messagepar Shloub » 11 Juin 2008, 14:42

zebdal a écrit: égals à 0 [...] chuis un pgm 8)


lolololol troll on voit ça au CP !§11

Ok, en fait j'avais pas compris la définition de la fonction, maintenant je vois, merci de m'avoir expliqué...Doraki, et merci zebdal d'avoir pris un air aussi peu supérieur =)

Au fait, pour le a*b=a+a+a+...+a b fois je crois pas vraiment que ce soit le mécanisme de la touche "*" mais plutôt la définition de la multiplication dans N.
Image
Avatar de l’utilisateur
Shloub
Drogué du CF
Drogué du CF
 
Message(s) : 4275
Inscrit(e) le : 11 Nov 2007, 14:00
Localisation : 28

Messagepar John » 11 Juin 2008, 14:43

zebdal a écrit:voilà, je crois que j'ai tout dit.


La j'ai enfin compris ( faut dire que j'savais pas ce que c'était une fonction récursive ).
Image
Avatar de l’utilisateur
John
Cuber accro
Cuber accro
 
Message(s) : 254
Inscrit(e) le : 16 Jan 2008, 15:19
Localisation : Hanches (Eure et loir)

Messagepar zebdal » 11 Juin 2008, 17:23

Au fait, pour le a*b=a+a+a+...+a b fois je crois pas vraiment que ce soit le mécanisme de la touche "*" mais plutôt la définition de la multiplication dans N.

bah c'est mon prof de prog qui m'a dit que la calculatrice faisait les multiplications comme ca.
à partir de là, vu que c'est un enseignant chercheur, j'aurai plus tendance à le croire.
de plus ca expliquerait pourquoi les multiplications prennent plus de temps que les additions.

Vous voulez pas créer un autre topic sérieux ?
C'est vraiment chiant d'avoir des trucs aussi "pointus" sur un topic comme celui-là

bah je parle de ce que j'ai fait à mon partiel (topic school) et on me pose des questions, donc j'y réponds . maintenant qu'ils ont compris, c'est bon.

aujourd'hui j'ai eu architecture des ordis, partiel auquel je m'attendais à etre acculé de tous les cotés, puis finalement non.
3 exos, 3 programmes déja écrits.
en gros, soit on avait à dire en détail ce que le programme faisait, soit modifier légerement le programme pour qu'il retourne tel résultat.
1er exo sur les tubes (pipes), 2ème sur les threads, 3 ème sur les sémaphores. vu que j'ai bossé à fond les sémaphores, c'était pas vraiment compliqué.
et l'après midi j'ai eu partiel de communication et là MDR, j'avais révisé une partie qu'on a pas fait cette année (on était en retard sur le programme) et c'est quand même tombé au partiel, et ca comptait pour 8 points (sur 20).
tout le monde a été niqué, sauf moi (et quelques autres rares personnes, genre les redoublants). j'entendais tout le monde dire "mais qu'est ce que c'est ce truc? on l'a pas vu" :D .
cette question c'était "définir une tâche effective, une activité et une tâche chaisplusquoi. donner un exemple dans la vie réelle".
pour l'exemple, j'ai pris la création d'un jeu vidéo en décrivant chaque étape de sa conception en disant "ca c'est la tâche effective", etc...
donc la journée a bien été sympa aujourd'hui.

pour demain, il ne me reste plus que la base de données et la comptabilité.
Image
Avatar de l’utilisateur
zebdal
Véritable accro du CF
Véritable accro du CF
 
Message(s) : 1114
Inscrit(e) le : 26 Mai 2007, 22:37

Messagepar Kinbay » 11 Juin 2008, 22:35

...

Je passe en première S 8)
Avatar de l’utilisateur
Kinbay
Maniaque du CF
Maniaque du CF
 
Message(s) : 843
Inscrit(e) le : 08 Fév 2006, 14:23
Localisation : Grotte

PrécédentSuivant

Retour vers Général

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)

cron