Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 21-05-2021 20:59:18

Gilbert
Membre
Inscription : 21-05-2021
Messages : 3

Algorithmes faciles : la "programmatrice"

Bonjour,

Après 40 ans d'expérience de la programmation, selon des approches diverses et variées, me voilà à la retraite. Toujours aussi passionné d'informatique, je suis en train de développer ce que j'ai appelé une "programmatrice", c'est-à-dire une "calculatrice" un peu évoluée qui permet d'aborder la programmation tout en douceur. C'est en quelque sorte une synthèse des différents concepts de programmation que j'ai été amené à utiliser dans un logiciel le plus simple possible. Typiquement, cette "programmatrice" permet d'écrire facilement des algorithmes comme ceux qui sont présentés sur ce site (et codés en Python surtout). Elle apporte une approche originale de l'écriture des programmes. J'ai commencé à diffuser ce logiciel sur le site : https://gilbertlandais.wixsite.com/programmatrice en parsemant son mode d'emploi d'exemples empruntés aux mathématiques.

Pour l'instant toutefois, le site est très sommaire et la « programmatrice » est en chantier, incomplète et éventuellement buggée. C’est surtout l’approche et la logique d’interaction qu’il faut regarder à ce stade. Car j'aimerais trouver des partenaires pour m’aider à améliorer et promouvoir mon projet totalement désintéressé à visée à la fois pédagogique et informatique, en cherchant 1) à faciliter l'accès à la programmation pour donner le goût de la logique et en même temps des mathématiques et 2) à apporter une contribution humble à la mise au point d'une nouvelle façon de programmer.

Par ce message, je tente donc de trouver des contacts ou des pistes qui me permettront d'avancer dans ces deux voies. Merci d'avance pour les conseils que vous pourrez me donner et la diffusion de cette demande.

Et n'hésitez pas à me contacter pour plus de précisions ou une aide technique au cas où vous vous lanceriez dans les manipulations proposées sur le site.

Cordialement,
Gilbert Landais, Ingénieur-chercheur en informatique (retraité)

Hors ligne

#2 23-05-2021 07:41:57

LEG
Membre
Inscription : 19-09-2012
Messages : 790

Re : Algorithmes faciles : la "programmatrice"

Bonjour
ta "programmatrice" pour être utilisée ou faire de la programmation, demande une connaissance en programmation mais elle ne permet  en aucun d'apprendre à programmer.
si tu ne sais pas taper une ligne de programme je doute fort qu'elle te dise ce qu'il faut faire ...non ?
si tu tapes une ligne de programme en Python , par exemple un petit programme python, l'algorithme d'Ératosthène:


import math

def eratostene(n):
  m = (n-1) // 2
  b = [True]*m
  i = 0
  p = 3
  premiers = [2]
  while p*p < n:
    if b[i]:
      premiers.append(p)
      j = 2*i*i + 6*i + 3
      while j < m:
        b[j] = False
        j = j + 2*i + 3
    i += 1
    p += 2
  while i < m:
    if b[i]:
      premiers.append(p)
    i += 1
    p += 2
  return premiers

def compteInfN(liste, n):
  lenListe = len(liste)
  compte = 0
  for i in range(0, lenListe):
    if(liste[i] >= n):
      compte += 1
  return compte

def premiersNa2N(n):
  liste = eratostene(2*n)
  compte = compteInfN(liste, n)
  print("> On prend N = "+str(n)+" , donc 2N = "+str(2*n))
  print("> "+str(n)+" / log("+str(2*n)+") = "+str(n/math.log(2*n)))
  print("> On compte "+str(compte)+" nombres premiers entre "+str(n)+" et "+str(2*n))
  print("> Voici la liste des nombres premiers entre "+str(n)+" et "+str(2*n)+" :")
  print(liste[len(liste)-compte:])

n = int(input("Donnez la valeur de N : "))
premiersNa2N(n)
input()
 

Quel résultat donne ta machine, si on ne peut pas importer la première ligne du programme : import math ...?
Peux tu donner l'image de cet exemple...?

Hors ligne

#3 23-05-2021 20:58:38

Gilbert
Membre
Inscription : 21-05-2021
Messages : 3

Re : Algorithmes faciles : la "programmatrice"

Bonjour LEG,
Merci pour ce retour.
Ma "programmatrice" n'apprendra pas à programmer d'elle-même, c'est bien évident. Elle ne dispensera pas de suivre un cours, tutoriel ou autre. Je veux simplement dire que ce sera un peu plus facile et direct qu'avec Python (ou un autre langage).
La principale particularité de mon logiciel, c'est le fait de placer l'utilisateur "dans le programme" : on peut se déplacer dans la structure arborescente modulaire du programme, y créer des variables, des fonctions etc. et les utiliser de façon interactive. L'espace du programme et celui de l'exécution ne sont pas séparés.
Avec Python, on garde l'approche classique d'un programme textuel dans un fichier .py et on lance l'exécution par une commande python. On peut aussi avoir des environnements un peu plus sympa mais ça reste dans la même logique.
Bon OK, c'est peut-être un peu subtil. Et celui qui aura pris l'habitude d'employer un autre outil n'en verra peut-être pas l'intérêt. Mais pour un tout débutant, il devrait y avoir quelques barrières en moins.
Et sur le plan informatique, c'est surtout le moteur d'évaluation qui est innovant. Mais là, OK, on s'intéresse plus aux applications mathématiques qu'à la conception informatique.
Sinon, pour ce qui est de l'algorithme d'Ératosthène, avec la programmatrice, ça va s'écrire à peu près de la même façon en définissant les 3 fonctions. Je vais rajouter cet exemple sur mon site.
On peut aussi importer un module mathématique, un peu comme import math en Python. Toutefois, pour l'instant, celui-ci n'a pas la richesse et la puissance de la librairie de Python. Ce n'était pas ma priorité mais je compte compléter ce point et le documenter sur le site.
Mais je dois vous prévenir : ça attendra un peu car je serai probablement indisponible pendant les 2 mois à venir. Mieux vaut donc se donner rendez-vous en septembre.
En attendant, il est toutefois possible à ceux que ça intéresserait d'essayer la programmatrice, dans l'état où elle est aujourd'hui, et les quelques exemples fournis. Et surtout de m'en faire un retour. Merci d'avance.
Cordialement

Hors ligne

#4 24-05-2021 10:44:49

LEG
Membre
Inscription : 19-09-2012
Messages : 790

Re : Algorithmes faciles : la "programmatrice"

Bonjour
j'ai bien essayé hier mais étant sous linux débian, impossible de télécharger la programmatrice avec le lien que tu as indiqué..mais  je ne suis pas du tout  programmeur .

Hors ligne

#5 13-07-2021 14:24:16

Gilbert
Membre
Inscription : 21-05-2021
Messages : 3

Re : Algorithmes faciles : la "programmatrice"

Bonjour,

J'ai finalement trouvé le temps avant septembre de compléter le module Math de ma "programmatrice". On peut télécharger la nouvelle version (v1.2 pour Windows) sur le site : https://gilbertlandais.wixsite.com/programmatrice. Avant de relancer le setup, il est préférable de désinstaller la version précédente (si elle était installée) depuis les Paramètres Windows. Au cas où vous auriez des avertissement de sécurité au téléchargement et à l'exécution, vous pourrez choisir "Conserver quand même" et "Exécuter quand même".

L'algorithme proposé autour du crible d'Eratosthène s'écrit d'une façon très analogue aux fonctions Python. Les 3 fonctions doivent être définies interactivement grâce à la commande define. Ex : define eratosthene

En-tête :

eratosthene (n:int):{int}

Corps :

var m = (n-1)//2;
var b = {};
for var k=0 to m-1 do
   b[k] = true
done;
var i = 0;
var p = 3;
var premiers = {2};
while p*p < n do
   if b[i] then
      premiers |= p;
      var j = 2*i*i + 6*i + 3;
      while j < m do
         b[j] = false;
         j = j + 2*i + 3
      done
   fi;
   i += 1;
   p += 2
done;
while i < m do
   if b[i] then premiers |= p fi;
   i += 1;
   p += 2
done;
premiers

En-tête :

compteInfN(liste:{int}, n:int):int

Corps :

var compte = 0;
foreach var p in liste do
    if p >= n then
      compte += 1
    fi
done;
compte

En-tête :

premiersNa2N (n:int);

Corps :

var liste = eratosthene(2*n);
var compte = compteInfN(liste, n);
write "> On prend N = " ++ n ++ " , donc 2N = " ++ 2*n;
write "> " ++ n ++ " / log(" ++ 2*n ++ ") = " ++ (n/Math.log(2*n));
write "> On compte " ++ compte ++ " nombres premiers entre " ++ n ++ " et " ++ 2*n;
write "> Voici la liste des nombres premiers entre " ++ n ++ " et " ++ 2*n ++ " :";
write liste.middle(liste.length-compte)

Et pour lancer le calcul, il suffit de taper, par exemple, la commande : premiersNa2N(200)

Pas grande différence avec le code Python, donc, si ce n'est une plus grande interactivité. Le code n'est pas tapé dans un fichier mais directement dans la Programmatrice. On peut appeler les fonctions directement. Exemple : eratosthene(100)
Et la syntaxe n'est pas basée sur des caractères invisibles (sauts de ligne et tabulations) ;-)

J'espère, si vous essayez ces manipulations, que tout se passera sans problème.
Gilbert

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
soixante sept plus vingt cinq
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums