CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Programmation d'une calculatrice en C

Carmageddon_
Carmageddon_
Niveau 11
28 novembre 2005 à 22:30:38

J´ai un projet dont le but est la programmation d´une calculatrice en langage C.

Voici l´énoncé:
"REALISATION D´UN ANALYSEUR D´EXPRESSIONS MATHEMATIQUES
L´objectif est de calculer une expression mathématique fournie par l´utilisateur, constituée des symboles suivants: +, -,(opérateur unaires et binaires), *, /, %, ^, (, ), ainsi que d´identificateurs de variables qui devront être initialisés par l´utilisateur.

Vous développerez ainsi:
-un analyseur lexical:capable de reconnaître les symboles (ex: *=>MULT; -=> MOINS BINAIRE ou MOINS UNITAIRE selon le cas), et les identificateurs.
-un analyseur syntaxique:de préférence <<ascendant>>, vous construirez l´arbre syntaxique à partir duquel l´expression sera calculée.

Vous implémenterez ensuite:
-le calcul de l´expression (si la syntaxe est correcte!)
-sa simplification (retrait des espaces et parenthèses inutiles)
-son développement"

Le problème c´est que je suis nul en programmation. Donc si quelqu´un l´aurait déjà fait ou connaîterait un site ou le programme serait semblable....

Merci.

godrik
godrik
Niveau 30
28 novembre 2005 à 23:01:32

je ne dirai qu´une seule chose...
"grammaire"
tout est dit! :)

dnob700
dnob700
Niveau 10
29 novembre 2005 à 16:26:13

Ce qui est sur, c´est que personne ne te donnera de code source tout près pour faire celà.

C´est sur que ça doit exister sur le net, mais vu que ça n´a aucun interet (de faire du copier coller de source je veux dire) on ne t´aidera pas.

Si tu décide de le programmer toi même, et que tu as des questions, ou des problèmes (mais il faut déjà chercher par soi même à les résoudre) alors là on t´aidera.

lag-it
lag-it
Niveau 10
29 novembre 2005 à 18:06:10

Exemple typique du problème qui se résoud ultra-simplement en CAML (oui je deviens très pro-CAML :-d )

godrik
godrik
Niveau 30
29 novembre 2005 à 18:10:29

exemple typique du probleme qui se resoud tres bien dans tous les langages...

mais si tu tiens vraiment a preciser un langage ou c´est simple... forth

le_duche
le_duche
Niveau 10
30 novembre 2005 à 16:49:42

:non: dnob !
moi j´en ai fait une de calculatrice ! :-)

lag-it
lag-it
Niveau 10
30 novembre 2005 à 18:38:42

godrik > Je maintiens que la réalisation d´une calculatrice (formelle pour que ca présente un minimum d´intérêt) est extrêment simple en CAML (allez 50 lignes de code, pour la définition d´un type récursif de formule et une fonction d´évaluation + des surcharges de quelques opérateurs).
Par contre pour l´écrire en C (de manière à ce qu´une phrase telle que "(-1)^(n+1)/n" soit compréhensible directement), voire en assembleur, je pense que le problème est beaucoup plus ardu...

L´important en programmation est aussi de choisir le langage adapté à ses besoins, c´est pour ca que je précisait à titre d´information :-)

dnob700
dnob700
Niveau 10
30 novembre 2005 à 19:37:11

mais tu implémente aussi rapidement que ça l´analyseur syntaxique et lexical ? parce que finalement, c´est ça le gros morceau. Pas l´évaluation en elle même, où effectivement le Caml est d´une surprenante efficacité.

lag-it
lag-it
Niveau 10
30 novembre 2005 à 20:38:50

"mais tu implémente aussi rapidement que ça l´analyseur syntaxique et lexical"

Oui et non.
Si l´objectif est d´écrire un programme autonome, la tâche est un petit peu plus longue. Faut voir avec Lex et yacc...

Mais en restant sous l´invite de CamlLight ou OCaml, il suffit :
1/ De définir un type formule, avec constantes, variables, operateurs, fonctions...
2/ Pour que ce soit plus simple à utiliser, surcharger les opérateurs avec "prefix"
3/ Et ecrire toutes les fonctions qu´on veut : simplification, developpement, substitution, resolution etc...

Une fois encore, si l´objectif est d´obtenir un système de calcul permettant d´évaluer des formules, l´efficacité est maximale, mais impose de rester sous l´invite CAML, certes...

Bigloo
Bigloo
Niveau 10
30 novembre 2005 à 20:40:43

(* Ca n´a rien à voir et je m´étonnerai pas qu´on supprime mon post *)

lag-it> Caml demande-t´il de grandes connaissances mathématiques, et est-il aussi "abstrait"que Scheme pour un élève de première S ?

godrik
godrik
Niveau 30
30 novembre 2005 à 20:57:41

caml demande tres peu de concept mathematiques,
juste savoir ce qu´est une fonction, un operateur, l´associativite et la commutativite...
sacahnt que toutes ces definitions sont disponible sur wikipedia.

En C, ca se fait vite... en 100 lines ca sera fait...

dnob700
dnob700
Niveau 10
30 novembre 2005 à 21:28:59

"(* Ca n´a rien à voir et je m´étonnerai pas qu´on supprime mon post *) "

bof, du HS comme ça, tu peut t´en permettre autant que tu veux.

Sinon, le Caml est un langage fonctionnel, ce qui peut lui donner ce coté abstrait du scheme.
Mais je le trouve bien plus clair que celui-ci : d´abord il est infixé pour les opérateur de bases (et en fait tu peut rendre n´importe quelle fonction infixe si je me souviens bien), donc c´est plus lisible que le mode préfixé du scheme.
De plus, Caml a quand même des capacité impérative que n´a pas le scheme à ma connaissance (for, while, etc.). D´après moi, il ne faut surtout pas les utiliser quand on fait du Caml parce que le langage n´est pas prévue pour ça, mais pour débuter ça permet de se racrocher simplement aux autres langages.

Mais en bref, Caml n´a pas vraiment "absrait".

Par contre, il manque d´une bonne interface pour programmer. Alors sous windows j´utilise le bloc note.

Au pasage, j´ai découvert il y a quelques jours le F#. C´est du OCaml vu par microsoft : ça se compile pour le .NET framework, mais surtout on peut se servir de VS pour coder et déboguer et ça, ça serait très bien, si c´était au point. Malheureusement ce n´est qu´une "expérience" (à télécharger là : http://research.microsoftt.com/projects/ilx/fsharp.aspx ) et donc ce n´est pas très fini. Mais ça marche quand même pas mal.

Bigloo
Bigloo
Niveau 10
30 novembre 2005 à 21:36:09

Encore un truc# ?

Enfin bref, merci.

dnob700
dnob700
Niveau 10
30 novembre 2005 à 21:53:54

oui encore un truc #.

Il y a une phrase sur le site de microsoft qui dit :
"F# : ML in .NET heaven."

Je ne suis pas forcement d´accord (je n´ais pas encore trouvé le "paradis .net à mon gout") mais bon, c´est l´idée. Une intégration très simple avec le reste des langages .NET à la clefs, etc.
Enfin, pour l´instant je m´en suis surtout servi pour taper du code plutot que pour le faire tourner.

godrik
godrik
Niveau 30
01 décembre 2005 à 14:49:09

la possibilité de faire de l´impératif en CaML en fait un langae tres puissant. Il dispose de la beauté de la programmation fonctionelle. Mais le fonctionnel ce n´est pas toujours efficace.
typiquement si tu es ammené a faire des opérations "pipelinées" sur de larges quantités de données, CaML va en faire des copies et tout le tintoin. Ce qui va te faire perdre plein de temps d´espace et cie...
la tu peux facilement utiliser le moteur impératif pour gerer l´interface de ton pipeline, et ecrire tes operations elementaires en fonctionnel.

Si tu veux faire du pur fonctionnel, autant prendre un langae qui est fait pour... haskell

Bigloo
Bigloo
Niveau 10
01 décembre 2005 à 17:48:03

Pour le moment j´essaie surtout de trouver un intérêt à la chose. Donc, hein, plus tard.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment