\input cwebmac
% Zé Augusto 8/98

\documentclass[language=brazil,structure=flat]{cweb}

%% Escrevendo em português:
\usepackage[brazil]{babel}
\usepackage[T1]{fontenc}
%----------------------------

\setlength{\topmargin}{-0.5in}
\setlength{\textheight}{9in}
\setlength{\oddsidemargin}{-.125in}
\setlength{\evensidemargin}{-.125in}
\setlength{\textwidth}{6.75in}

\begin{document}




\title{{\small Exemplo de Uso do Stanford GraphBase usando \texttt{CWEB}-\LaTeX%
\\
MAC 328 --- Introdução à Teoria dos Grafos --- 1998 \\}
Leitura de um Grafo de um Arquivo}
\author{Zé Augusto}

\maketitle

\tableofcontents


\N{3}{1}Descrição.
Este programa em \texttt{CWEB} lê e imprime na tela o arquivo
$\\{circuito}.\\{gb}$ que foi criado com o programa \\{cria\_circuito}.

\fi

\N{3}{2}Estrutura geral do programa.
Aqui vai a estrutra geral do programa \\{le\_circuito}.

\Y\B\X3:Arquivos a serem incluídos\X\6
\X4:Programa Principal\X\par
\fi

\M{3}Precisamos incluir as definições da estrutura de dados do Stanford
GraphBase.

\Y\B\4\X3:Arquivos a serem incluídos\X${}\E{}$\6
\8\#\&{include} \.{"gb\_graph.h"}\C{ A estrutura de dados para criar o grafo }\6
\8\#\&{include} \.{"gb\_save.h"}\C{ \\{restore\_graph} }\6
\8\#\&{include} \.{"mostra\_grafo.h"}\C{ rotina para mostrar o grafo na tela }%
\par
\U2.\fi

\N{3}{4}Programa principal.
Agora vamos definir o programa \\{main} em linhas gerais.

\Y\B\4\X4:Programa Principal\X${}\E{}$\6
\&{int} ${}\\{main}(\\{argc},\39\\{argv}){}$\1\1\6
\&{int} \\{argc};\C{ o número de argumentos na linha de comando do {\small
UNIX} }\6
\&{char} ${}{*}\\{argv}[\,]{}$;\C{ os argumentos propriamente dito, um array de
strings }\2\2\6
${}\{{}$\1\6
\X8:Variáveis locais de \\{main}\X\6
\X5:Tenta fazer a leitura do grafo em disco\X\6
\X6:Imprime os vértices e arestas do grafo lido\X\6
\X7:Finalização\X\6
\4${}\}{}$\2\par
\U2.\fi

\M{5}\B\X5:Tenta fazer a leitura do grafo em disco\X${}\E{}$\6
$\\{printf}(\.{"grafo\ =\ \%s\\n"},\39\\{argv}[\T{1}]);{}$\6
${}\\{grafo}\K\\{restore\_graph}(\\{argv}[\T{1}]);{}$\6
\&{if} ${}(\\{grafo}\E\NULL){}$\5
${}\{{}$\1\6
${}\\{fprintf}(\\{stderr},\39\.{"Não\ foi\ possível\ a\ }\)\.{leitura\ do\
grafo!\ (c}\)\.{ódigo\ de\ erro\ \%ld)\\n}\)\.{"},\39\\{panic\_code});{}$\6
\&{return} ${}({-}\T{1});{}$\6
\4${}\}{}$\2\par
\U4.\fi

\M{6}\B\X6:Imprime os vértices e arestas do grafo lido\X${}\E{}$\6
\\{mostra\_grafo}(\\{grafo});\par
\U4.\fi

\M{7}\B\X7:Finalização\X${}\E{}$\6
\\{gb\_recycle}(\\{grafo});\C{ Libera memória que foi alocada para criar o
grafo }\6
\&{return} (\T{0});\C{ Saída normal }\par
\U4.\fi

\M{8}Vamos agora definir as variáveis locais do \\{main}.

\Y\B\4\X8:Variáveis locais de \\{main}\X${}\E{}$\6
\&{Graph} ${}{*}\\{grafo}{}$;\C{ o grafo a ser lido }\par
\U4.\fi

\M{9}

\cwebIndexIntro{%
Aqui vai uma lista de identificadores usados e onde eles aparecem.
Entradas grifadas indicam os lugares de definições. Mensagens de erros
também são mostradas.
}

\end{document}

\fi


\inx
\fin
\con
