Ferramentas do usuário

Ferramentas do site


prog2:planilha_ascii

Planilha ASCII

Este projeto consiste em construir uma planilha eletrônica em modo texto, usando a biblioteca NCurses para a gestão do terminal. A interface da planilha deve ser similar à figura abaixo:

Funcionalidades

  • ler e escrever arquivos em formato CSV (deve ser capaz de ler/escrever arquivos simples compatíveis com o LibreOffice Calc ou Microsoft Excel);
  • suportar matrizes de até 100 linhas × 26 colunas (a tela deve “deslizar” na horizontal e vertical para mostrar parte visível da planilha);
  • cada coluna da planilha ocupa 8 caracteres na tela;
  • implementar corte/cópia/cola de grupos de células contíguas;
  • ser capaz de calcular fórmulas simples;
  • se adaptar às dimensões do terminal ao iniciar.

Formato CSV

  • campos delimitados por vírgula
  • linhas delimitadas por enter (\n)
  • campos representados por valores textuais (não em binário)
  • qualquer valor/campo pode ser envolto por aspas duplas (“)
  • campos contendo vírgulas devem ser envoltos por aspas duplas
  • números reais usam ponto ”.“ para a parte fracionária
  • cada campo pode ter até 255 caracteres (mostrar até 8 na tela)
  • ignorar campos contendo “\n” ou aspas como parte do valor

Valores nas células

  • números inteiros e reais, positivos e negativos
  • strings
  • fórmulas simples: strings no formato = A op B, onde A e B são números ou referências de células e op é uma operação algébrica simples (+, -, *, /).

Células podem ser referenciadas usando suas coordenadas: por exemplo, a string A5 referencia o valor da célula na coluna A e linha 5.

Controles

  • Setas (←↑↓→): mover cursor (para selecionar a célula ativa)
  • Enter: editar a célula corrente (selecionada)
  • Arquivos:
    • ^S : salvar arquivo corrente
    • ^R: ler novo arquivo
  • Cortar/Copiar/colar:
    • ^space : fixar âncora (define um retângulo junto com o cursor)
    • ^C: copiar retângulo para o clipboard
    • ^X: cortar retângulo para o clipboard
    • ^V: colar conteúdo do clipboard a partir da posição do cursor
  • ^Q: encerrar o programa (quit); perguntar se deseja salvar antes!

Forma de chamada

  • texcel : abre uma planilha em branco (sem nome)
  • texcel arq1.csv: abre o arquivo arq1.csv

Requisitos do código-fonte

  • Ser escrito em C padrão C99
    • não gerar warnings ao usar flags -Wall
    • o executável deve se chamar texcel (de Text Excel)
  • ser estruturado em vários arquivos. Por exemplo:
    • texcel.c (programa principal)
    • csvfile.c, csvfile.h (lê/escreve arquivos CSV)
    • formula.c, formula.h (funções para analisar e calcular fórmulas)
  • Ter um Makefile:
    • alvos all, clean e purge
    • compilação e ligação devem ser separadas
  • Ler e calcular estes arquivos de teste:

Material de apoio

Ncurses:

Instalação da biblioteca NCurses no Linux (Ubuntu, Debian, Mint):

sudo apt-get install libncurses-dev

O código de inicialização da biblioteca NCurses, com as configurações necessárias para este projeto, é o seguinte:

  initscr () ;		// inicializa a biblioteca ncurses
  raw () ;		// permite tratar teclas de controle (^C, ^Z, etc)
  keypad (stdscr, TRUE) ; // habilita leitura de teclas de setas, Fn, etc
  noecho () ;		// não escreve as teclas lidas na tela
  curs_set (0) ;	// esconde o cursor do terminal

Projetos similares a este:

prog2/planilha_ascii.txt · Última modificação: 2019/08/01 16:58 por maziero