Traitement d'une feuille de calcul



Documents pareils
1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Conventions d écriture et outils de mise au point

Bases de programmation. Cours 5. Structurer les données

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Java Licence Professionnelle CISII,

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

I. Introduction aux fonctions : les fonctions standards

Introduction au langage C

Poker. A rendre pour le 25 avril

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Programme Compte bancaire (code)

Algorithmique et Programmation, IMA

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Programmation impérative

Plan du cours. Historique du langage Nouveautés de Java 7

Les arbres binaires de recherche

Compression de Données - Algorithme de Huffman Document de Conception

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Introduction à la programmation concurrente

Les structures. Chapitre 3

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d initiation à la programmation en C++ Johann Cuenin

PROJET ALGORITHMIQUE ET PROGRAMMATION II

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

UE C avancé cours 1: introduction et révisions

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

Les chaînes de caractères

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Arguments d un programme

Initiation à la programmation en Python

as Architecture des Systèmes d Information

Programmation Orientée Objet Java

Programmation en langage C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Manuel d'installation

Les structures de données. Rajae El Ouazzani

TD3: tableaux avancées, première classe et chaînes

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Langage Java. Classe de première SI

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Cours 6 : Tubes anonymes et nommés

OS Réseaux et Programmation Système - C5

Algorithmique, Structures de données et langage C

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Cours de Programmation 2

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Programmation en Java IUT GEII (MC-II1) 1

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

TP 1. Prise en main du langage Python

Travaux Dirigés n 1 : chaînes de caractères

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Programmation par les Objets en Java

Auto-évaluation Programmation en Java

Analyse de sécurité de logiciels système par typage statique

Chap III : Les tableaux

Chapitre 2. Classes et objets

Structurer ses données : les tableaux. Introduction à la programmation

Le prototype de la fonction main()

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~ cours de 3 heures)

ACTIVITÉ DE PROGRAMMATION

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Programmer en JAVA. par Tama

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Programmation Objet Java Correction

Cours Programmation Système

SUPPORT DE COURS. Langage C

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Utilisation d objets : String et ArrayList

Généralités sur le Langage Java et éléments syntaxiques.

Chapitre 10. Les interfaces Comparable et Comparator 1

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Présentation du langage et premières fonctions

INF 321 : mémento de la syntaxe de Java

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Chapitre 1 : La gestion dynamique de la mémoire

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Introduction à l héritage en C++

Derrière toi Une machine virtuelle!

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Cours 14 Les fichiers


Exécutif temps réel Pierre-Yves Duval (cppm)

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Ecole Préparatoire SNV Université d Oran Semestre /2015 Matière : Travaux d Initiative Personnelle Encadrés (TIPE) Prof. M. Z.

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Premiers Pas en Programmation Objet : les Classes et les Objets

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Machines virtuelles fonctionnelles (suite) Compilation ML Java

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Claude Delannoy. 3 e édition C++

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Transcription:

Traitement d'une feuille de calcul TABLE DES MATIÈRES Traitement d'une feuille de calcul...1 1.Introduction......2 2.Utilisation du programme......2 1.Principe général......2 2.Test du programme......2 3.Fonctionnement du tableur......3 1.Description d'une feuille de calcul......3 2.Structures de données particulières......3 1.Les cellules......3 2.Les expressions......3 3.Fonctions particulières......4 1.Référence a une autre cellule......4 2.Recherche d'une cellule.....5 3.Autres fonctions......5 4.Limites du programme et problèmes rencontrés......5 1.Limites......5 2.Problèmes rencontrés......5 Gaël Cuenot Année 2006 / 2007 Page: 1

1.Introduction Ce projet consiste à écrire un langage qui permet d'écrire des feuilles de calcul. Le but du programme est donc de représenter en mémoire le contenu de la feuille de calcul (cellules, expressions, valeurs...) et d'afficher les différentes cellules de la feuille avec l'évaluation de la valeur de l'expression contenue dans chaque cellule de la feuille. 2.Utilisation du programme 1. Principe général La compilation du programme génère un fichier exécutable: tableur. Pour traiter une feuille de calcul, il suffit d'exécuter: $./tableur < feuille_calcul.txt Le résultat de toutes les cellules s'affichera alors à l'écran. 2. Test du programme Pour faciliter les test, une feuille de calcul de test est fournie dans mon archive. Il s'agit du fichier feuille_test.txt, il contient quelques cas de test permettant d'évaluer le fonctionnement de mon programme et de voir la structure que doit avoir une feuille de calcul pour fonctionner. Les règles d'écriture d'une feuille de calcul seront détaillée dans le chapitre suivant de cette documentation. Pour exécuter la feuille de test, il faut procéder comme expliquer dans le point précédent, en exécutant la ligne suivante: $./tableur < feuille_test.txt Année 2006 / 2007 Page: 2

3.Fonctionnement du tableur 1. Description d'une feuille de calcul Une feuille de calcul est composé de cellules. Une et une seule cellule peut être décrite sur chaque ligne de la feuille. Chaque cellule est identifiée par des coordonnées (2 entiers: abscisse, ordonnée), suivies du signe "=" puis une valeur, opération, fonction... La fin d'une cellule est identifiée par le caractère ";". Chaque ligne de la feuille doit impérativement se terminer par les trois "caractères" suivants: point-virgule, espace, retour chariot. Exemple: [1,1]=2; [1,3]=2-4; 2. Structures de données particulières 1. Les cellules Structure de donnée permettant de stocker une cellule en mémoire: struct cell { struct cell * prec; enum cell_type type; struct coord co; /* coordonnnes */ union cellv { char * str; double nbr; } v; }; Une cellule contient donc au final un type permettant d'identifier le contenu de la cellule, des coordonnées permettant de connaître la position de la cellule et les 2 types de données qu'elle peut contenir: un nombre (double) et une chaîne de caractères (char *). Enfin chaque cellule contient un pointeur vers la cellule précédente (prec) qui permet de remonter l'ensemble des cellules pour en chercher une en particulier. Dans la première cellule de la feuille, prec est à la valeur NULL. 2. Les expressions Une expression est une structure qui peut contenir n'importe quelle donné de la feuille avant qu'elles soient identifiées ou stockées dans une autre structure plus précise. Année 2006 / 2007 Page: 3

struct expr { enum expr_type type; union expru { char * chaine; double nombre; struct expropun opun; struct expropbin opbin; struct expropsousch opsousch; struct coord co; /* coordonnees */ int absco; /* valeur d'une abcisse ou ordonnee absolue */ enum coord_type xtyp; /* type de coordonnes pour l'abscisse */ enum coord_type ytyp; /* type de coordonnes pour l'ordonnee */ } u; }; Un peu comme une cellule, une expression contient une variable type permettant d'identifier le type de données contenues. Puis un type ou une structure permettant de stocker les différents type de données possibles. Elle possède des types spéciaux lui permettant de stocker des coordonnées avec toute la gestion que cela nécessite. La variable co permet de stocker des coordonnée (x/y). absco permet de stocker une valeur d'abscisse ou d'ordonnée, cette variable est utilisée lors de la définition de coordonnées absolues. Enfin, dans le cas ou l'expression définit les coordonnées d'une cellule, les variables xtyp et ytyp permettent de savoir si l'abscisse (x) ou l'ordonnée (y) rencontrée doit être utiliser pour identifier une cellule avec des coordonnées relatives ou absolues (valeurs possibles contenues dans enum coord_type. 3. Fonctions particulières 1. Référence a une autre cellule struct expr * cell_ref(struct expr * x, struct expr * y) Renvoi une expression contenant des coordonnées identifiées selon qu'elles soient relatives ou absolues pour chaque composante (x et y). Si une des coordonnée est négative, la valeur négative est calculée avant d'être stockée. void cell_eval_ref(struct expr * e, struct cell * c) Copie dans la cellule passée en paramètre la cellule à laquelle fait référence l'expression passée également en paramètre. Dans un premier temps, les coordonnées de la cellule cherchée sont calculées puis cette cellule est recherchée et recopiée. Année 2006 / 2007 Page: 4

2. Recherche d'une cellule struct cell * cell_backward_search(int x, int y, struct cell * c) Cette fonction effectue une recherche en arrière par rapport à la cellule ou on se trouve, c'est à dire de cette cellule jusqu'au début de la feuille de calcul. Les coordonnées de la cellule cherché sont passés en paramètres (x, y). La fonction s'appelle récursivement tant que la cellule n'a pas été trouvée ou tant qu'on n'est pas arrivé au début de la feuille de calcul. La cellule trouvée sera recopiée dans la cellule passée en paramètre de cette fonction. 3. Autres fonctions Les autres fonctions sont plus simples et peuvent être regroupées en trois catégories: Tri des données selon leur type ; évaluation de l'opération contenue dans la cellule ; fonctions d'accès aux données des différentes structures. 4.Limites du programme et problèmes rencontrés 1. Limites Mon programme se limite aux fonctions de base, par manque de temps, les opérations conditionnelles ne sont pas gérées. 2. Problèmes rencontrés Certaines fonctions du programme ne fonctionnent pas correctement, la référence à une cellule de la feuille de calcul notamment. J'ai rencontré des difficultés dans la fonction: struct expr * cell_ref(struct expr * x, struct expr * y) Pour une raison que je ne comprend pas, la valeur des coordonnées (surtout x) sont recopiées sans problème dans l'expression à l'intérieur d'une condition if mais ne sont plus accessibles une fois sorti de cette condition. Année 2006 / 2007 Page: 5

Je n'ai pas réussi à régler ce problème ce qui fait que mon programme n'arrive pas à récupérer une valeur ou opération d'une cellule dans une autre. Les erreurs sont en général gérées du moment que l'expression est reconnue par la grammaire du langage mis en place. Année 2006 / 2007 Page: 6