Cara o que eu posso fazer é comentar o código e dai você procura as 
"traduções". valeu?

Os meus comentários estarão entre {}. É tudo muito intuitivo.

******************

Attribute VB_Name = "Module1"  {nome do módulo com as funções}
{aqui começa a declaração de variáveis globais e como você pode ver, são todas 
públicas.}
{Após os 'As', vem o tipo de variável}
Public dist() As Single 'Array bidimensional para armazenar a matriz de 
distancia
Public adj() As Integer 'Array bidimensional para armazenar a matriz de 
adjacencia
Public adjprod() As Integer 'Array bidimensional para armazenar a matriz de 
caminhos
Public num_vert As Integer 'Numero de vertices do grafo
Public i, j As Integer 'indices para as matrizes
Public allcells As String
Public Fnum, num_linhas As Integer
Public TxtBoxGotFocus As Boolean 'flag para controlar o foco na apresentação de 
FormDados
Public Shortest() As Single 'Array bidimensional para armazenar as distancias 
calculadas pelo algoritmo de Floyd
Public Caminho As String 'String para armazenar o caminho
Public para() As Single 'Array para armazenar o caminho temporario de um 
vertice i ate um
'vertice j
Public lim_inferior As Integer
Public lim_superior As Integer

{aqui temos uma única função que deve retornar um inteiro e termina em 'End 
Function'}
'Funcao para determinar a existencia de caminho entre os vertices do grafo
'Não foi necessária neste contexto
Function Determina_Caminho( n As Integer) As Integer
{'Dim' é uma forma de declarar variáveis}
Dim k As Integer
{'ReDim' (abaixo) é uma função que até onde eu sei, não existe no Delphi e 
chega a ser um ponto crítico}
{na tradução deste código. está função redefine uma variável já declarada}
'Redimensionamento da matriz de adjacencia
ReDim adjprod(n, n)
{dois loops FOR, encadeados. 'Next' marca o fim do loop}
'Inicialização das matrizes
For i = 1 To n
For j = 1 To n
adjprod(i, j) = adj(i, j)
Next j
Next i
'Multiplicação boolena
For k = 1 To n
For i = 1 To n
For j = 1 To n
adjprod(i, j) = adjprod(i, j) Or (adjprod(i, k) And
adjprod(k, j))
Next j
Next i
Next k
End Function

{aqui começa os procedimentos, ou procedure. 'End Sub' marca o fim da procedure}
'Sub-rotina para inicialização da matriz de distancia
Sub init_mtDistancia( n As Integer)
'Redimensionamento da matriz de distancia
ReDim dist(n, n)
For i = 1 To n
For j = 1 To n
dist(i, j) = 3.402823E+38
Next j
Next i
End Sub
'Sub-rotina para inicialização da matriz de adjacencia
'Sub init_mtAdjacencia( n As Integer)
'Redimensionamento da matriz de adjacencia
' ReDim adj(n, n)
' For i = 1 To n
' For j = 1 To n
' adj(i, j) = 0
' Next j
' Next i
'End Sub

{outra procedure}
'Sub-rotina para desalocação de memória
Sub destrutor()
{limpa os arrays}
Erase dist
Erase adj
End Sub

{outra procedure}
'Sub-rotina para acrescimo de um arco.
Sub Add_Arco(d As Single, nodo_1 As Integer, nodo_2 As Integer)
'Ao ser acrescentado um arco, sera atribuido o valor 1 na matriz de adjacencia 
para indicar que existe um caminho entre os dois arcos e o valor deste arco na 
matriz de distancias
'adj(nodo_1, nodo_2) = 1 'nao foi necessaria neste contexto
dist(nodo_1, nodo_2) = d
End Sub

{outra procedure}
'Sub-rotina para remocao de um arco
Sub Rem_Arco(nodo_ 1 As Integer, nodo_2 As Integer)
'Ao ser removido...
'adj(nodo_1, nodo_2) = 0
dist(nodo_1, nodo_2) = 3.402823E+38 'flag para distancia infinita
End Sub

{outra função}
'Funcao para determinar o menor caminho pelo algoritmo de Floyd
Function Floyd(n As Integer) As Single
Dim u, v, w As Integer
Dim changed As Integer
'array bidimensional auxiliar
changed = 1
Max = num_vert
ReDim Shortest(n, n)
ReDim para(n, n)
For v = 1 To n
For w = 1 To n
Shortest(v, w) = dist(v, w)
para(v, w) = w
Next w
Next v
{o nosso conhecido 'while' finalizado em 'Wend'}
While changed 'Testa o valor de changed
changed = 0
For u = 1 To n
For v = 1 To n
For w = 1 To n
{o nosso conhecido 'If' finalizado em 'End If'}
If Shortest(v, u) + Shortest(u, w) < Shortest(v, w) Then
Shortest(v, w) = Shortest(v, u) + Shortest(u, w)
para(v, w) = para(v, u)
changed = 1
End If
Next w
Next v
Next u
Wend
End Function


{outra função}
'Funcao para imprimir a rota
Function print_shortest( a As Integer, b As Integer) As String
Dim rota As String
Dim aux As String
While a <> b
rota = "->" + CStr(para(a, b))
aux = aux + rota
a = para(a, b)
Wend
print_shortest = aux
End Function

****************

__________________________________________________
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]

Responder a