Posté le 09/05/2018 17:27
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 81 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 13/11/2018 10:38 | #
Par contre, c'est dans la ram statique ça non ? Du coup j'ai tenté de faire :
mais ça me fait une erreur chelou :
Tu as tout à fait raison, et la RAM statique fait 8 ko, donc c'est pas terrible. Pour ton problème, il te suffit d'écrire const char *heap; au début du fichier et ensuite heap = malloc(20000) tout au début de main(). S'il y a des constructeurs, fais-en un constructeur de plus haute priorité.
Citer : Posté le 13/11/2018 19:39 | #
@Zezombye C'est stable, tu mets à jour ?
Hâte de tester si diverses choses marchent maintenant, et auquel cas ça méritera une annonce.
Citer : Posté le 13/11/2018 19:41 | #
Pas stable du tout : j'ai réussi pour l'instant à allouer 30 ko, mais y'a une grosse fuite de mémoire qui est apparemment que, quand on retourne sur l'éditeur après avoir exécuté un script, il alloue une 2ème fois la mémoire nécessaire pour l'éditeur.
Je ferai une release quand j'aurai réussi à faire tourner les 2 scripts du triconcours, là je pense que j'aurai un peu tout.
(et pour l'instant c'est la seule chose que j'ai faite depuis 2 mois )
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 13/11/2018 19:46 | #
Ok, merci pour ta réponse.
Outre suffisamment de mémoire (quelques Ko devraient suffire, après tout ça marche sur NumWorks) il te faudra la gestion des entiers longs pour le script de Force.
Sur le script de Courage, il faudra aussi de préférence la gestion des flottants en double précision, pour que ça ne réponde pas n'importe quoi.
En plus d'un module graphique, mais ça tu peux toujours mettre en commentaire.
Citer : Posté le 13/11/2018 19:56 | #
Je suppose que tu as mis des double partout Zezombye non ? Avec Python c'est plus simple...
Citer : Posté le 15/11/2018 19:45 | #
C'est sûr que, si je fais un malloc(30000) mais pas de free(), y'a une très grosse fuite de mémoire.
Du coup je commence les floats, en parallèle je fais aussi les MPZ (les entiers à taille infinie) mais me faut de l'aide du forum parce que selon MPy, c'est pas compatible : https://forum.micropython.org/viewtopic.php?f=3&t=5074&start=40#p31851
Ajouté le 15/11/2018 à 20:13 :
J'ai trouvé pour les MPZ (c'était juste un truc à modifier dans le makefile), du coup je peux calculer la factorielle de 50 sans problème (par contre faut pas trop en abuser : fact(100) fait une system error, et fact(69) a l'air de faire planter la calto )
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 15/11/2018 20:58 | #
Bah, euh, la factorielle de 100 ne fait "que" 158 chiffres de long, ça devrait être calculable quand même x)
Citer : Posté le 16/11/2018 18:08 | #
C'est aussi peut-être un problème de récursion (même si dans ce cas il devrait mettre une erreur dans python et pas faire crasher le système...), je regarderai après les floats.
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 16/11/2018 18:52 | #
Ce n'est pas un problème de récursion ! Une récursion de profondeur 100 c'est rien du tout.
Citer : Posté le 16/11/2018 19:18 | #
Voilà le problème des floats est réglé :
(je crois que c'est le 2ème truc le plus sale que j'ai fait, après avoir passé 2 variables dans une seule avec du bit shifting)
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 16/11/2018 19:42 | #
2**3.14
Ajouté le 16/11/2018 à 19:43 :
Pour être plus précis :
<built-in function pow>
>>> pow(2, 3.14)
8.815240927012887
>>> 2**3.14
8.815240927012887
Citer : Posté le 16/11/2018 21:01 | #
Euh, ouais Darks a raison, pow() prend les exposants flottants, tu peux pas faire ça.
D'ailleurs tu as des float ou des double ? À ce stade il faut vraiment te poser des questions parce qu'il est probable que MICROPY_FLOAT_C_FUN(pow) soit là pour utiliser uniquement des float.
Citer : Posté le 16/11/2018 21:06 | #
Rah mais dans ce cas précis, je remplace pow(10^x) avec x entier, ce qui est faisable avec une boucle for
Mais bon en fait je dois toujours implémenter pow(), vu que l'opérateur puissance (**) l'utilise. Par contre j'ai trouvé le saint graal : dans lib/libm_dbl y'a plein d'implémentations de fonctions de math.h standalone (c'est à dire exactement ce dont j'ai besoin), j'ai déjà repris leur implémentation de pow et ça marche parfaitement. (du coup j'ai viré mes boucles for alakon)
Là vu que le modulo sur les floats marchent toujours pas, j'en ai conjecturé que fmod() marchait pas non plus, et donc peut être le reste de math.h, du coup j'ai ajouté tous les fichiers de libm_dbl, j'essaie de compiler et normalement tout ce qui concerne les floats devrait marcher.
(MICROPY_FLOAT_C_FUN c'est un macro qui sélectionne la fonction en fonction de float/double, là j'ai mis double donc ça donne pow() mais si j'avais mis float ça aurait donné powf())
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 16/11/2018 21:14 | #
(MICROPY_FLOAT_C_FUN c'est un macro qui sélectionne la fonction en fonction de float/double, là j'ai mis double donc ça donne pow() mais si j'avais mis float ça aurait donné powf())
Ok, tout va bien alors. Bien joué jusque-là !
Citer : Posté le 26/11/2018 18:03 | #
Du coup j'aimerais mettre un module graphique avec comme fonctions :
- line(x1, y1, x2, y2, color=1)
- pxl(x, y, color=1)
- rect(x1, y1, x2, y2, color=1)
- circle(x1, y1, r, color=1)
et en gros toutes les fonctions de MonochromeLib (avec peut être même les BMP s'ils marchent).
Par contre, comment je fais pour switcher entre le shell (mode texte) et le mode graphique ? Toute fonction graphique bascule en mode graphique (et un print/input rebascule en mode texte), ou j'utilise des fonctions spéciales pour entrer/sortir du mode graphique ? Ca marche comment sur la numworks ?
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 26/11/2018 18:04 | #
Je crois que ça dessine par-dessus l'écran, ça fait bizarre. Regarde les tests de Critor sur la fractale de Mandelbrot.
Je serais d'avis que tu fasses deux VRAMs avec une commande pour passer de l'une à l'autre.
Citer : Posté le 26/11/2018 18:26 | #
Sur la NumWorks, toute commande graphique fait basculer l'affichage en mode graphique, initialement un écran blanc.
Une fois le script terminé, la touche [annul] du clavier permet de revenir à l'affichage console.
Mais tu es libre de faire un autre choix.
Citer : Posté le 26/11/2018 18:29 | #
Les deux ! Les deux ! Les deux !
(Pas la solution de facilité please)
Citer : Posté le 26/11/2018 18:29 | #
Et on ne peut pas revenir au mode texte entre temps ?
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 26/11/2018 18:43 | #
Pas à ma connaissance.
Ni avec print() ni avec input() en tous cas.
Citer : Posté le 26/11/2018 18:50 | #
Je trouve ça bof ça pourrait être utile.
Bon du coup :
- Toute utilisation d'une fonction graphique basculera sur le mode graphique
- Toute utilisation de print() ou input() basculera sur le mode texte
- Il y aura des fonctions pour basculer manuellement (c'est aussi pour faire plaisir à lephé, mais de toute façon j'allais les mettre parce que ça me coûte pas grand chose).
Ecrivez vos programmes basic sur PC avec BIDE