Algoritmos em Grafos  |  Livros  |  WWW  |  Índice de Termos

 

CWEB

"Programming is best regarded as the process of creating works of literature,
which are meant to be read."
- D.E. Knuth, Literate Programming


"If you are in the software industry and do not use CWEB
but your competitors do,
your competitors will soon overtake you--
and you'll miss out on a lot of fun besides."
- D.E. Knuth

 

O que é CWEB?   O CWEB é um software que permite escrever programas C bem documentados, em pequenos pedaços interligados.

De onde vem o sigla?   C é o nome da linguagem de programação e WEB significa teia (de pequenos pedaços interligados).  O sistema WEB foi criado por Donald Knuth;  Silvio Levy adaptou o sistema à linguagem C.

Exemplo?   Preparei uma amostra de documento CWEB.  Se você tiver dificuldade em entender a amostra, veja a nota Como ler programas CWEB.

O que isso tem a ver com a teoria dos grafos?   Quase nada.  Eu só preciso do CWEB para entender os programas de manipulação de grafos do Stanford GraphBase.

Quanto CWEB será preciso aprender?   Pouco. Basta aprender a ler um documento CWEB, o que é muito fácil.  Mas encorajo todos os leitores a aprender mais que esse mínimo e usar CWEB nos seus projetos de programação em C. Consulte minha página sobre programação letrada

 

Arquivos .w, .c, .tex, .dvi

O código-fonte de todo programa CWEB fica em um arquivo com sufixo ".w". Tomemos  isort.w  como exemplo. Esse arquivo será submetido a dois programas diferentes:

  1. O programa  ctangle  (to tangle = entrelaçar, embaraçar) transforma  isort.w  em um arquivo  isort.c,  que está pronto para ser submetido a um compilador C

  2. O programa  cweave  (to weave = tecer) transforma  isort.w  em um arquivo  isort.tex,  que será transformado em um arquivo  isort.dvi  pelo programa  TeX.  O arquivo isort.dvi  (que pode ser facilmente transformado em isort.ps ou isort.pdf)  contém o documento CWEB pronto para ser impresso.

 

Exercícios

  1. Escreva um pequeno ensaio criticando meu programa isort.

  2. Escreva um pequeno ensaio criticando meu programa mdp.

  3. Faça uma copia do arquivo  mdp.w.  Em seguida, use um editor de texto para simular o efeito de  ctangle  sobre o arquivo.

 


Algumas observações sobre documentação de programas

O CWEB é uma ferramenta que ajuda o programador a escrever programas legíveis e bem documentados. Mas o que é "bem documentado"? Para produzir uma boa documentação, basta fazer o seguinte:

para cada função do seu programa, escreva, de maneira curta, grossa e exata, o que a função faz:  diga o que a função recebe, o que devolve, e qual a relação entre as duas coisas.

Em outras palavras, escreva um pequeno manual-do-usuário para cada função do seu programa.  Exemplo: Digamos que meu programa tem uma função ord que ordena vetores. Digamos que o protótipo da função é

void ord (int a[], int p, int r);

Eis uma boa documentação: "A função ord recebe um vetor a[p..r] e rearranja os seus elementos de modo que eles fiquem em ordem crescente, ou seja, de modo que  a[p] < a[p+1] < ... < a[r];  a função supõe que p < r."

É muito mais importante dizer o que a função faz de que explicar como ela faz o que faz.  Assim, não é obrigatório explicar se ord usa o método heapsort, ou o quicksort, ou outro qualquer, para fazer o serviço.

 


URL of this site:  www.ime.usp.br/~pf/algoritmos_em_grafos/
Last modified: Wed Oct 7 13:39:32 BRT 2009
Paulo Feofiloff
IME-USP