@! wiwaxia: Ceux qui savent lire savent à quoi s'en tenir sur ce dont on parle.
@! wiwaxia: Ceux qui savent lire savent à quoi s'en tenir sur ce dont on parle.
Savoir pour comprendre et vice versa.
Autre point problématique, sources d'échecs répétés: tu abordes des sujets très difficiles (chacun l'a fait de temps à autre) que faute de moyens tu es incapable de cerner clairement (ce que l'on ne saurait te reprocher - et tu n'es pas le seul dans ce cas); mais le recours au pseudo-code est pour toi une échappatoire systématique, parce que tu le perçois comme une révélation qui dissiperait par sa seule vertu d'illumination tous les sombres mystères présents dans les programmes.
L'obscurité d'un langage peut effectivement produire des difficultés supplémentaires; cependant un algorithme complexe conduira forcément à un pseudo-code difficile à comprendre, même si l'on y trouve des instructions plus claires: c'est la structure logique même de la tâche envisagée qu'il faut percevoir.
D'autre part le pseudo-code est une version très appauvrie du langage courant, et quiconque ayant quelque goût littéraire peut à bon droit le percevoir comme une abomination.
Il est lourd, répétitif, et à partir d'un certain stade la concision mathématique d'un langage devient préférable - avec l'avantage décisif de pouvoir exécuter le programme, et de vérifier la conformité des résultats.
C'est au pied du mur, dit-on, qu'on voit le maçon: que dirait-on d'un apprenti du bâtiment qui n'aurait jamais préparé du béton ? ou d'un apprenti électricien qui n'aurait jamais réalisé de montage ?
Lorsque des jeunes sont confrontés à un exercice d'algorithmique, je leur en montre immédiatement la traduction sur calculatrice programmable: il faut voir leur contentement lorsqu'ils observent la réalisation des instructions, aussi simples soient-elles, et de toutes les variantes que l'on peut y mettre.
Le pseudo-code est fait pour expliquer les instructions élémentaires, et les programmes simples; mais si l'on veut poursuivre, il faut s'investir dans le langage de son choix en commençant par acquérir les notions de base.
C'est seulement après que tu te seras longuement confronté aux difficultés de la programmation que commencera l'assimilation du langage, et que tu pourras envisager une tâche de plus haut niveau.
Et moi, j'ai deux questions :
1- Ce scan, en haut, ligne 2, c'est du Basic
Si "oui", ça produit quoi comme résultat ?
2- c'est quoi ces deux commentaires commençant par 'mod dont le 1er nous dit de décommenter quelque chose sans nous dire quoi, quand le second nous dit de commenter quelque chose sans nous dire quoi, pour voir les résultats dont on voit bien qu'ils sont visibles sans toucher à rien.
Vieux commentaires oubliés ici lors du copier/coller d'un code trouvé quelque part ?
Merci,
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
@: wiwaxia: Le pseudo-code c'est juste l'explication (la description) de ce qui se passe en langage courant et compréhensible sans aucune notion d'informatique . Je veux bien admettre qu'à l'instar de la mécanique quantique certaines subtilités ne sont pas explicables en langage courant; et il serait pertinent d'en dresser une liste.
@: Jipété: Le "scan" ne renvoie rien ça scanne les entrées (clavier -souris); ce n'est pas "du" Basic, c'est "un" Basic.
Pour les deux commentaires on peut les interpréter comme:
Pas de sortie pour le time start; sortie pour résultats. (après c'est de l'anglais, hein...).
Savoir pour comprendre et vice versa.
À partir du moment où tu écris c'est un Basic comme dans la première fois où tu l'as utilisé, je traduis ça par c'est un Basic parmi tant d'autres, donc c'est du langage Basic (un langage connu, comme Pascal ou Fortran).
Maintenant, si ce n'est pas ça que tu as voulu dire, je ne suis pas dans ta tête pour décoder.
À la lecture de ta réponse, j'imagine cependant (peut-être à tort) que tu as voulu dire "c'est un langage basique (sans majuscule)", mais rien n'est moins sûr, rien n'est compréhensible, et j'ai horreur de supposer ce que les autres ont bien pu vouloir dire, d'autant plus que le reste du code ressemble fort à du... Basic !
Il n'empêche que "comment out" et "comment in" sont des indications données à l'utilisateur, et qu'on ne sait toujours pas ce qu'il faudrait mettre en commentaires ou pas...
C'est un grand classique en programmation, une indication donnée au(x) lecteur(s) :
Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 // commentez la ligne ci-dessous pour ne pas avoir de logs (par exemple). SendDatasToLogSystem(computed_datas);
Oui, c'est de l'anglais, et donc ?
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Là, c'est une contradiction dans les termes: on ne peut pas prétendre avoir accès (ou donner accès) à une compréhension - même superficielle - d'un domaine sans un minimum de notions élémentaires spécifiques: variables, tableaux, affectation, mémoire - ce que découvre en somme tout lycéen curieux de sa calculatrice.
Et je ne parle pas du bagage arithmétique indispensable.
Il ne s'agit pas de phénomènes contraires à l'intuition courante, mais de volume de données: à partir d'un certain seuil, il faut bien recourir aux indices, donc renoncer au langage courant - à l'instar de la description codée d'une partie d'échecs.
Et quitte à se lancer, autant passer directement au langage adopté; une fois qu'on l'a suffisamment travaillé, une correspondance automatique s'établit entre l'idée que l'on veut mettre en oeuvre, et le bloc d'instructions approprié - on "pense" alors dans ce langage, le pseudo-code est alors devenu inutile.
C'est après avoir renoncé à ces béquilles que l'on peut avancer plus rapidement dans la maîtrise du langage.
Je ne dis pas qu'il faille s'interdire l'usage d'une feuille de papier: la fatigue, l'agitation ambiante peuvent limiter la concentration. On peut toujours griffonner quelques lignes, pour détailler un passage difficile et soulager l'effort de mémoire.
Le jour où je serai président, j'imposerai le pseudo-code en préalable à toute production algorithmique.
Y en a qui vont avoir du soucis...
Savoir pour comprendre et vice versa.
Pour moi, le code en Basic posté par Valentin03 n'est ni plus ni moins lisible que le code Python du début...
Mais pour Valentin03, ce code est limpide, alors que le code en Python est incompréhensible.
Normal, c'est un peu comme si on postait un message en allemand pour demander la traduction ... sur un forum où il peut par le plus grand des hasards trainer un type qui parle allemand.
Puis finalement conclure : c'est bon, j'ai trouvé un texte en italien sur le sujet qui m'intéresse, et je comprend l'italien.
Tout le quiproquo vient du fait qu'au début, la question aurait dû être postée sur le forum python.
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
Que nenni, le pseudo-code est pour l'informatique le langage universel, dans le cadre de la langue parlée, qui sur ce forum est le français.
Et le Basic c'est ce qui se rapproche le plus du pseudo-code.
Savoir pour comprendre et vice versa.
As-tu lu mon message, avant de répondre "que nenni" ?
Je ne crois pas. Vraiment pas.
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
Bien sûr que je l'ai lu ton message;Je suis d'accord que le code Python j'aurais dû le poster chez Python. Mais tu compare les langages informatiques aux langues vernaculaires; le pseudo-code n'est pas l'espéranto, il est le père de tous les langages, il est la première pensée de tout algorithme; même si certains affirment penser directement dans leur langage en oubliant ses origines. Quand on ne peut plus revenir au pseudo-code c'est qu'on a été "enfermé" par son langage, que le langage a corrompu l'esprit.
ça peut te paraître excessif, mais ça mérite réflexion.
Savoir pour comprendre et vice versa.
Je rédige des programmes qui fonctionnent, et il en va de même pour les autres intervenants de ce forum ... tandis que toi, qui te préserves soigneusement de toute corruption par quelque langage que ce soit, tu n'a jamais présenté une seul bloc d'instructions compréhensibles et correctement exécutables ...
D'où ton acrimonie, et ta propension à la caricature.
Je ne reviendrai pas sur les précédents messages , suffisamment explicites.
Simplement, puisque tu as tendance à zapper les idées exprimées sur ce forum:
1°) L'apprentissage du pseudo-code doit aller de pair avec celle d'un langage, sinon il perd tout intérêt.
L'expérience sans théorie est aveugle, mais la théorie sans expérience, n'est qu’un simple jeu intellectuel. (Emmanuel Kant).
2°) Une pratique prolongée d'un langage permet l'assimilation de la technique, et libère l'esprit de tous les détails; celui-ci peut alors aller à l'essentiel du projet, et se concentrer sur les points les plus difficiles. La rédaction du pseudo-code est inutile.
Et pour aggraver mon cas, j'avouerai que je n'ai jamais appris le pseudo-code: il faut croire que le collègue dont j'ai suivi la formation d'initiation au Pascal était particulièrement doué, puisque je m'en suis très bien porté, et que cinq séances m'ont donné l'autonomie.
Il m'est arrivé d'écrire du pseudo-code sur les forums de ce site, pour expliquer quelques blocs d'instructions.
Je m'y résous comme à un moindre mal, et le ressens toujours comme du baragouin.
À chacun ses excès.
# Au fait, t'arrive-t-il de rouler en vélo ?
Et dans l'affirmative, ton engin est-il équipé des deux roues latérales fixées à l'arrière, et qui l'empêchent de verser ?
Non ? Eh bien, c'est pareil pour le pseudo-code
J'entends tes arguments; mais pourquoi à la suite de ton code, tu a eu recours à l'analogie de la boite et des post-it, plutôt qu'au pseudo-code qui n'aurait pas prit plus de place; si ce n'est que tu n'a pu décrire en termes courants ce que fait ton code ?
(Des softs certes modestes mais fonctionnels j'en ai une quarantaine à mon actif; certes construits avec des bouts d'algos pompés à droite et à gauche; mais que je m'efforce de comprendre; d'où mes questions)
Savoir pour comprendre et vice versa.
C'est pas moi, c'est tbc92, qui a très bien expliqué la différence entre langage de programmation et langage ordinaire.
Ok, pardon pour l'erreur de personne; mais ce qui s'adresse à l'un s'adresse à tous; et jusqu'à preuve du contraire (loin de moi l'idée de te provoquer); tu n'a pas décris en langage courant et en détails ce que fait ton code. Pardonne moi de vouloir connaître la composition des ingrédients qui entrent en cuisine.
Savoir pour comprendre et vice versa.
Je ne suis pas responsable des messages de X ou Y , et les intervenants concernés savent mieux que moi ce qu'ils ont voulu exprimer !
Je n'ai proposé aucun programme ou bloc d'instructions sur ce forum, alors je serais bien en peine d'en donner un aperçu, sous quelque forme que ce soit ... J'ai réagi à ton attitude et à quelques unes de tes déclarations (#22, #27, #33).
# Pour prendre un exemple récent - hors sujet, bien que relevant de la combinatoire - je m'intéresse à l'histogramme des (9!) valeurs de la fraction composée:
Q = a + b/(c + d/(e + f/(g + h/i)))
utilisant les neuf chiffres autres que le zéro.
Rien de bien difficile, d'autant qu'un sujet voisin a été débattu il y a peu.
Les combinaisons ont été complètement inventoriées, et je n'ai eu nul besoin de recourir à un pseudo-code long, fastidieux et forcément bourré d'erreurs puisque non exécutable.
Il suffisait de réfléchir un peu à ce qu'il fallait faire, et aux types et nombres de variables nécessaires:
a) énumérer les 9 chiffres tous mutuellement différents, donc monter 9 boucles imbriquées, qui peuvent se répartir en 3 groupes de 3, faciles à gérer;
b) prévoir des listes de 10 entiers (*, *, ..., 0) dont certains termes peuvent s'annuler par glissement des affectations, et des listes qui n'en comportent que 9 et correspondent aux séquences temporaires ou définitives;
c) rassembler le tout dans une liste suffisamment longue d'enregistrements.
Voilà ce que cela donne au départ:
Il n'y a qu'à se lancer ensuite, cela n'est pas sorcier ... on commence bêtement par l'initialisation des variables et des tableaux:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CONST NmaxF = 362900; TYPE Lst09E = ARRAY[1.. 9] OF Byte; Lst10E = ARRAY[1..10] OF Byte; Fr_9ch = RECORD t: Lst09E; w: Reel END; LstNmF = ARRAY[1..NmaxF] OF Fr_9ch; CONST Tzero: Lst09E = (0, 0, 0, 0, 0, 0, 0, 0, 0);
puis on passe à la première énumération qui concerne les trois derniers chiffres (g, h, i) puisque le calcul de la fraction composée commence par le bas (g + h/i).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 VAR Fmin, Fmax: Fr_9ch; ListeF: LstNmF; L9E: Lst10E; PROCEDURE InitF_Lf(VAR F_1, F_2:Fr_9ch; VAR L_f: LstNmF; VAR L_9: Lst10E); CONST F00: Fr_9ch = (t:(0, 0, 0, 0, 0, 0, 0, 0, 0); w:0); VAR k: Z_32; BEGIN F_1.t:= F00.t; F_1.w:= 20; F_2:= F00; FOR k:= 1 TO NmaxF DO L_f[k]:= F00; FOR k:= 1 TO 10 DO L_9[k]:= k MOD 10 END; BEGIN InitF_Lf(Fmin, Fmax, ListeF, L9E); END.
Le filtrage des erreurs s'obtient par le recours systématique au compilateur, en commençant par des procédures vides, qui ne font rien:
puis on commence à les meubler en déclarant les variables dont on a besoin:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 PROCEDURE EnumIghi; BEGIN END; BEGIN InitF_Lf(Fmin, Fmax, ListeF, L9E); EnumIghi; END.
pour parvenir progressivement au bloc final, qui agrège évidemment le plus grand nombre de variables:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 PROCEDURE EnumIghi(Max: Byte); VAR u, v, w: Byte; BEGIN E(0010); // Max = 9 FOR u:= 1 TO Max DO FOR v:= 1 TO Max DO IF (u<>v) THEN FOR w:= 1 TO Max DO IF ((w<>u) AND (w<>v)) THEN END; BEGIN InitF_Lf(Fmin, Fmax, ListeF, L9E); EnumIghi(9); END.
Le contrôle des inévitables erreurs de toutes sortes est fait tout au long de la croissance du texte source.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 PROCEDURE EnumIghi(Max: Byte; L_9: Lst10E; T_0: Lst09E; VAR T_3: Lst09E; VAR P1_, Q1_: Z_32); VAR u, v, w: Byte; Tghi: Lst09E; BEGIN E(0010); // Max = 9 FOR u:= 1 TO Max DO FOR v:= 1 TO Max DO IF (u<>v) THEN FOR w:= 1 TO Max DO IF ((w<>u) AND (w<>v)) THEN BEGIN Tghi:= Tzero; Tghi[Max]:= L_9[u]; Tghi[Max - 1]:= L_9[v]; Tghi[Max - 2]:= L_9[w]; T_3:= Tghi; Supp3T(9, u, v, w, L9E, L6E); P1_:= Tghi[Max - 2] * Tghi[Max]; Inc(P1_, Tghi[Max - 1]); Q1_:= Tghi[Max]; AffL(2, L6E, T3E); EnumIdef(6, L6E, T3E, T6E, P2, Q2) END END;
Il faut bien sûr avoir sous les yeux l'expression complète de la fraction pour effectuer le calcul progressif de sa valeur, où n'intervient qu'un seul quotient:
Il intervient en plus, insérées dans l'énumération, des instructions d'affichage des listes successives d'entiers, qui permet de s'assurer du déroulement correct du programme. On obtient ainsi en fin d'énumération:
Et rien n'exclut de brefs commentaires rappelant la nature ou le rôle des variables, procédures & fonctions.
# Soit dit à ta décharge: la transparence du Pascal permet de lire le texte comme du pseudo-code; avec un autre langage tel que Python (que j'ai peu utilisé), c'est sans doute moins évident.
@ wiwaxia: Après m'être bien explosé le cerveau, j'ai un peu confusé entre tbc92 et toi.
Belle démonstration. Pascal est en effet plutôt clair comme langage; mais comme ton code restait pour moi obscur dans son but. Je l'ai compilé avec "Free pascal.
Il m'est sorti: "Illegal parameter: -Opentium3".
J'avais fait une permutation qui marchait avec autant de boucles imbriquées que d'items d'entrée; mais quand j'ai voulu généraliser pour N items; j'ai coincé et je suis venu demander (maladroitement) de l'aide.
Savoir pour comprendre et vice versa.
Problème de configuration et d'utilisation des options de ce compilo (que je ne connais pas), faut fouiller, ou alors poster une demande d'aide dans le bon forum.
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager