Salut,
j'aimerais savoir si quelqu'un connait très bien le C et pourrais m'aider dans mon projet.
Je lui enverrais le projet et ce que j'ai fait
Merci d'avance
moroccan a écrit:Bonjour,
J'ai étudié le langage C peandant 2 ans, mais depuis je ne travaille plus avec.. Ceci dit, tu peux toujours essayer de m'expliquer un peu plus à propos de ton projet.
Le but du projet est d'écrire une calculatrice "en ligne",on tape des expressions et des définitions des symboles au clavier,et la calculatrice est capable d'évaluer les expressions.
Pour faciliter l'analyse syntaxique des expressions dans le projet,on écrira les expressions en notattion préfixée.
Voici un exemple de ce que pourrait donner l'interface utilisateur du projet pour une session:
lien
les lignes qui commencent par set dans l'exemple définissent des symboles
I Environnement
Lenvironnement est lobjet (qui devra etre représenté par une structure)qui contient les noms des symboles et leurs definitions.
Les symboles peuvent etre de 2 types :
-des variables,qui possedent un nom et dont la valeur est nécessairement une constante réelle(type double).
-des fonctions,qui possedent aussi un nom,ont zero,un ou plusieurs paramètres(les parametres sont reelles),et qui sont definies par des expressions,dont nous parlerons en details plus loin .Les expressions dans le corps des fonctions peuvent le cas échéant contenir des symboles qui ne sont pas encore dans lenvironnement au moment de la définition de la fonction.
Les commandes agissant sur lenvironnement sont les suivantes :
-set = ,qui permet dajouter un symbole et sa définition dans lenvironnement.
-unset ,qui permet de retirer un symbole et sa definition de lenvironnement.
-env ,qui affiche le contenu de lenvironnement,cest à dire chaque symbole quil contient et sa definition.
-load ,qui permet de lire des symboles et leurs definitions à partie dun fichier binaire.
-save ,qui sauvegarde chaque symbole et sa definition dans un fichier binaire
Lenvironnement contient 2 symboles prédéfinis et dont la valeur est fixe :
-MIN,qui est la plus grande valeur négative que la calculatrice puisse manipuler
-MAX,qui est la plus grande valeur positive que la calculatrice puisse manipuler
II Commandes
Il existe 2 commandes en plus de celles agissant sur lenvironnement,qui sont détaillées dans la section 1 :
-eval ,qui evalue lexpression qui lui est fournie en argument.Lévaluation est partielle si tous les symboles contenus dans lexpression ne sont pas définis au moment de lévaluation.Si cest le cas ,la commande a pour effet dafficher une expression dans laquelle les seuls symboles restant sont ceux qui ne sont pas définis.Si ça nest pas le cas,la commande affiche la valeur réelle de lexpression.
-quit,qui permet de quitter le programme.
III Expressions
Les expressions sont construites à partir de symboles,dopérateurs et de constantes.
Les constantes sont toutes des réels(type double)
Les symboles sont des chaines de caractères,qui font référence par exemple à des symboles définis dans lenvironnement.
Les opérateurs sont les suivants :
- + est la somme binaire
- - est la différence binaire
- / est le quotient binaire
- * est le produit binaire
- @ est le plus unaire (un caractère différent de celui employé pour la somme binaire est utilisé pour faciliter lanalyse syntaxique des expressions)
- ~ est le plus unaire(meme remarque)
-lopérateur dapplication dune fonction à des arguments,qui nest représenté par aucun caractère.Bien que cet opérateur soit "invisible",il existe néamoins.Ainsi ,si f est un symbole de fonction qui à x associe x+1 alors lexpression f 3,qui signifie "applique f à 3" vaut 4
Les expressions sont évaluées "au mieux" .Ainsi par exemple,+ 1 2 donne 3.De meme,si x est un symbole défini dans lenvironnement avec pour valeur 3,alors + 1 x donne 4.Sil nest pas défini,alors + 1 x vaut + 1 x .Dune manière générale,lévaluation dune expression donne soit une constante,soit une expression plus complexe construite à partir dun opérateur et dautres expressions.
IV Définitions des fonctions
Il est possible de spécifier un "branchement" dans la définition des fonctions.Un branchement est repéré par le caractère | dans les définitions de fonctions.En voici un exemple simple :
set fact(x) = | x:[0,0] 1 x: default * x fact x 1
La signification de lexemple est :
-si x appartient à [0,0] alors fact(x) vaut 1
-sinon,fact(x) vaut x*fact(x-1)
La syntaxe [a,b] spécifie un intervalle de valeurs.
On peut en spécifier plusieurs,qui ne comprennent pas forcément leurs bornes comme dans lexemple précédent,qui sont nécessairement disjoints,et dont lunion contient toutes les valeurs réelles possibles :
set f(x) = | x:[0,1[ 0 x:[1,2[ 1 x:[2,10] + x 1 x:]10,MAX] * 2 + 1 x x: default 1
Lexemple définit une fonction f qui vaut :
- 0 si x appartient à [0,1[
- 1 si x appartient à [1,2[
- x+1 si x appartient à [2,10]
- 2*(1+x) si x appartient à ]10,MAX]
- -1 sinon
Le calculateur affiche une erreur sil existe des intersections entre les intervalles.
Le calculateur affiche une erreur s'il existe des intersections entre les intervalles.
Dans le cas ou la fonction a plusieurs parametres il est possible de faire des tests d'intervalles sur chaque paramètre,et de les combiner:
set g(x,y) = | x:[0,1] 0 x,y:[1,2[]-2,-1] 1 x,y:[2,10][-10,-2] + x y
x,y:]10,MAX][-MAX,-10[ * 2 + y x x,y: default * x y
L'exemple définit une fonction f qui vaut:
- 0 si x appartient à [0,1]
- 1 si x appartient à [1,2[ et y à]-2,-1]
- x+y si x appartient à [2,10] et y à [-10,-2]
- 2*(y+x) si x appartient à ]10,MAX] et y à [-MAX,-1[
- x*y sinon
Notons que dans le cas de fonctions à plusieurs parametres,il est possible de faire les tests d'intervalles sur un nombre quelconques d'arguments : dans l'exemple précédent ,le premier test ne porte que sur le premier argument de la fonction,alors que les autres portent sur les deux.
Les définitions de fonctions peuvent contenir des symboles,qui appartiennent à l'environnement au moment de la définition ou non,et qui peuvent etre des fonctions.Ainsi,une fonction peut en appeler une autre,comme dans l'exemple suivant:
Calc> set f(x) = | x:[0,2[ x x: default + f@1 - x 1 g@1 - x 2
qui doit afficher f(x) =
x:[0,2[ -> x
x: default -> f(x-1)+g(x-2)
Calc> set g(x) = | x:[0,2[ x x: default + g@1 - x 1 f@1 - x 2
qui doit afficher g(x) =
x:[0,2[ -> x
x: default -> g(x-1)+f(x-2)
Calc> eval g 4
g(4) = 3
Il est nécessaire,pour que l'analyse syntaxique puisse etre réalisée correctement,de spécifier l'arité de chacun des symboles utilisés dans les expressions.Par défaut,cette arité est 0: le symbole représente alors une valeur.Dans le cas ou elle n'est pas nulle,elle doit etre précisée après le caractère @ collé au nom du symbole.Ainsi dans l'exemple précédent,les symboles f et g sont des symboles d'arité 1:ce sont des fonctions,qui prennent un argument.
Dominique Lefebvre a écrit:Bonjour,
Si tu as toujours besoin d'aide, décrits moi ton projet. En cas exactement puis-je t'aider?
Je fais du C (et du C++) depuis... je ne sais plus.. 15 ans
C'est une appli de calcul, autre?
snake a écrit:j'aurais besoin d'aide pour creer un jeu de dames en C (voir C++).
sachant que nous n'avons pas le droit aux fonctions seul int main()![]()
donc si quelqu'un pouvait m'aider...
merci d'avance
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :