Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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
#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 :
Corps :
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 :
Corps :
foreach var p in liste do
if p >= n then
compte += 1
fi
done;
compte
En-tête :
Corps :
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







