AULA 0 2 AGO, SEG | 
NÃO HOUVE AULA.
 | 
AULA 0 5 AGO, QUI | 
NÃO HOUVE AULA.
 | 
AULA 1 9 AGO, SEG | 
 
"The philosophy behind CWEB is that programmers who want to provide  
the best possible documentation for their programs need two things
simultaneously:  
    a language like  TEX for formatting, and a language like C for programming."
 
 
D.E. Knuth and S. Levy 
"The CWEB System of Structured Documentation".
 
  -  Descrição da disciplina.
  
 -  Tarefas iniciais:
      
	-  Conhecer CWEB.
	
 -  Utilização de CWEB com GraphBase.
      
  
      O objetivo é conhecer um sistema de programação conhecido como
      "Literate Programming" (programas com pretensões de serem um trabalho
      literário).
      
   -  O sistema CWEB consiste de 2 programas: CWEAVE e CTANGLE.
  
 -  LATEX - conjunto de macros que facilitam o uso de  TEX.
  
 -  Estrutura de um documento LATEX.
  
 -  Estrutura de um documento CWEB.
  
 -  Trailer dos próximos episódios.    
  
   Aviso importante. Todos precisam inscrever-se o mais rápido
   possível na
  lista de discussão da disciplina (veja Lista de discussão desta disciplina).
 
 | 
AULA 2 12 AGO, QUI | 
   -  Resumo da aula anterior.
   
 -  Receita para criar os arquivos .dvi e bin a partir do documento em
   CWEB.
   
 -  O utilitário Make: regras de dependências; targets; comandos.
  
   
 -  Grafos não-dirigidos ou grafos simétricos (sem flechas) e grafos
   dirigidos (com flechas). Exemplos de grafos.
   
 -  Trailer dos próximos episódios.    
         
       
  
    
 | 
AULA 3 16 AGO, SEG | 
    
     -  Resumo da aula anterior.
     
 -  Exemplos de grafos simétricos e dirigidos.
     
 -  Representação de grafos: matriz de adjacência; lista de adjacência e
     matriz de incidência.
     
 -  Representação de grafos no SGB: os tipos Graph,
     Vertex  e Arc. 	 
     
 -  Trailer dos próximos episódios.
    
    	 
 | 
AULA 4 19 AGO, QUI | 
       
      -  Resumo da aula anterior.
      
 -  Um pouquinho de C: atribuição composta; o comando for;
	   vetores; estruturas (struct); Strings; uniões
	   (union); strings; definições de tipos (typedef);
	   alocação dinâmica de memoria (malloc e free).
      
 -  O campo util_types da estrutura Graph do SGB.
      
 -  Trailer dos próximos episódios.  
    
     
 | 
AULA 5 23 AGO, SEG | 
    
      -  Resumo da aula anterior.
      
 -  Uso dos campos util das estruturas Vertex e
	  Arc. Os campos util> usualmente recebem nomes
	  significativos através de macros, por exemplo 
 
	  #define source a.V.
	  
       -  Descrição do Stanford GraphBase.
      
 -  O módulo GB_GRAPH do SGB. 
 
	  #include < gb_graph.h > 
	   
	   Este módulo inclui rotinas para alocar e armazenar novos grafos,
	   novos arcos, novas strings e novas struturas de dados de todos os
	   tipos:
	   
	     -  Graph *gb_new_graph(long n). 
 
		 Um novo grafo é criado chamando-se gb_new_graph(n),
		 que retorna um pointer para um registro do tipo
		 Graph com n vértices e nenhum arco.
		 
	      -  void gb_new_arc(Vertex *u, Vertex *v, long
	     len). 
 
		  Cria um novo arco de comprimento len de u
		  até v. O arco passa a ser parte do grafo "corrente".
		  O novo arco será apontado por u->arcs.
		 
	      -  void gb_new_edge(Vertex *u, Vertex *v, long
	     len).
 
		  Similar a gb_new_arc. Registros para dois arcos são
		  criados, um de u a v e outro de v a
		  u. Os dois arcos aparecem em posições consecutivas na
		  memória: v->arcs é u->arcs + 1 quando
		  u < v .
	      -  char *gb_save_string (char *s). 
 
		  Faz uma cópia de s para ser usada no grafo
		  "corrente".
		 
	      -  void gb_recycle (Graph *g). 
 
		  Remove o grafo apontado por g da memória.
		 
	
	     
        -  O módulo GB_SAVE do SGB. 
 
	  #include < gb_save.h > 
	    
          Este módulo contém código para converter grafos da sua representação
          interna para uma representação simbólica e vice-versa:
	   
          
	    		 
	     -  long save_graph (Graph *g, char *filename). 
 
                 Converte o grafo apontado por g para formato texto e
                 salva o grafo no arquivo de nome filename.
		 
	      -  Graph *restore_graph (char *filename). 
 
		 Converte um grafo guardado no arquivo filename
		 do formato texto para a representação interna dp SGB. 
	      
       -  Trailer dos próximos episódios.   
    
  
 | 
AULA 6 26 AGO, QUI | 
    
      -  Resumo da aula anterior.  
 -  A página Grafos,
      preparada pelo Prof. Paulo
      Feofiloff para a disciplina
	  MAC 338,
	  contém conceitos de grafos, caminhos etc.
      
 -  Exemplo de documento CWEB usando o SGB, preparado pelo Prof.
	  José Augusto 
	  para a disciplina MAC
	  328,  para
      criar, salvar e recuperar um pequeno grafo. Uma cópia do exemplo se
      encontra em 
 
	 http://www.ime.usp.br/~coelho/mac328/sgb/exemplos/.
       -  O território X(s) de um vértice s é o
      conjunto de vértices acessível a partir de s, ou seja,
      X(s) é o conjunto de todos os vértices v para os quais
      existe um caminho de s até v.
	  
      
 -  Algoritmo TERRITÓRIO(Grafo D, Vértice s) que:
	  dados um grafo D e um vértice s de
	  D; devolve: o território de s.
      
 - 
      Trailer dos próximos episódios.
    
  
 | 
AULA 7 30 AGO, SEG | 
    
      -  Resumo da aula anterior.
      
 -  Distâncias
      em um grafo.
      
 -   Algoritmo DISTÂNCIA(Grafo D, Vértice s) que:
	  dados um grafo D e um vértice s de
	  D; devolve: a distância de  s a todos os
	  vértices de D.
	  
      
 -  Trailer dos próximos episódios. 
    
  
    
   Aviso importante. O Exercício-Programa 2 está disponível em
    http://www.ime.usp.br/~coelho/mac328/eps/ep2/).
	  
 |