'TextBox1.Text =
variabledeclaradasiono1
'TextBox2.Text =
variabledeclaradasiono2
'TextBox3.Text =
cadenavariabledeclaradasiono1
'TextBox4.Text =
cadenavariabledeclaradasiono2
'TextBox5.Text =
arreglovariablesenteras(1)
'TextBox6.Text =
arreglovariablescadena(1)
'TextBox7.Text =
Val(provisional1)
'TextBox8.Text =
Val(provisional3)
'TextBox9.Text =
variableenteraencontradaenlaasignacion
'TextBox1.Text =
variableenteraencontradaenlaasignacion
'TextBox2.Text =
variablecadenaencontradaenlaasignacion
'TextBox3.Text =
arreglovariablesenteras(1)
'TextBox4.Text =
arreglovariablescadena(1)
'TextBox1.Text = arreglo(1)
'TextBox2.Text = arreglo(2)
'TextBox3.Text = arreglo(3)
'TextBox4.Text = arreglo(4)
'TextBox5.Text = arreglo(5)
'TextBox6.Text = arreglo(6)
'TextBox7.Text = arreglo(7)
'TextBox1.Text = value
'TextBox1.Text =
contadordepalabrasporlinea
'TextBox2.Text = arreglo(1)
'TextBox3.Text = arreglo(5)
'TextBox6.Text = arreglo(4)
'TextBox7.Text = arreglo(5)
'TextBox8.Text = arreglo(6)
'TextBox9.Text = arreglo(7)
'TextBox10.Text = arreglo(8)
'TextBox1.Text = provisional1
'TextBox2.Text = provisional2
'TextBox3.Text = provisional3
'TextBox1.Text =
Strings.Right(arreglo(3), 1)
'TextBox1.Text =
arreglo(numero)
'TextBox1.Text = enter(1)
'TextBox2.Text = enter(2)
'TextBox3.Text = enter(3)
'TextBox4.Text = enter(4)
'TextBox1.Text =
Strings.Right(Strings.Left(arreglo(4), Strings.Len(arreglo(4)) –
2), Strings.Len(arreglo(4)) – 3)
'TextBox1.Text =
arreglovariablescadena(1)
'TextBox2.Text =
arreglovariablescadena(2)
'TextBox3.Text =
arreglovariablescadena(3)
'TextBox1.Text =
arreglovariablesenteras(1)
'TextBox2.Text =
arreglovariablescadena(1)
'TextBox3.Text =
contadordevariablesenteras
'TextBox4.Text =
contadordevariablescadena
'TextBox6.Text =
numerodepalabras
'TextBox1.Text = arreglo(1)
'TextBox2.Text = arreglo(2)
'TextBox3.Text = arreglo(3)
'TextBox4.Text = arreglo(4)
'TextBox5.Text = arreglo(5)
'TextBox8.Text =
arreglovariablesenteras(1)
'TextBox9.Text =
arreglovariablesenteras(2)
'If Len(arreglo(i)) = 4 And arreglo(i –
1) = "leer" Then 'Hay un paréntesis de apertura, una
variable, un paréntesis de cierre y un punto y coma al
final de línea. Antes de eso hay un read.
'arreglovariablesenteras(numeroarreglovariablesenteras)
= Mid(arreglo(i), 2, 1) 'Se están metiendo variables de
tipo entero al arreglo de variables.
'contadordevariablesenteras =
contadordevariablesenteras + 1
'numeroarreglovariablesenteras =
numeroarreglovariablesenteras + 1
''Else
'' If Len(arreglo(i)) = 2 Then 'Hay una
variable y un punto y coma al final de linea, se ha hecho una
asignacion.
''arreglovariablesenteras(numeroarreglovariablesenteras)
= Mid(arreglo(i), 1, 1)
''End If
'Else
' If Len(arreglo(i)) = 4 And arreglo(i –
1) = "leerl" Then
'arreglovariablescadena(numeroarreglovariablescadena) =
Mid(arreglo(i), 2, 1) 'Se están metiendo variables de tipo
cadena al arreglo.
'contadordevariablescadena =
contadordevariablescadena + 1
'numeroarreglovariablescadena =
numeroarreglovariablescadena + 1
' End If
'End If
'If caracter = Chr(10) Then 'No se
está trabajando con esto.
'enter(enternumero) = otrocontador 'No
se está trabajando con esto.
'enternumero = enternumero + 1 'No se
está trabajando con esto. 'enternumero almacena el
número de enter que hay en el RichTextBox1.Text. Osea el
número de líneas.
'otrocontador = 0 'No se está
trabajando con esto.
'End If 'No se está trabajando
con esto.
'arreglovariablescadena(numeroarreglovariablescadena) =
arreglo(i – 4)
'contadordevariablescadena =
contadordevariablescadena + 1
'For ii As Integer = 1 To
numeroarreglovariablescadena
'If provisional1 =
arreglovariablescadena(ii) Then 'De x + y guardarlo_en a;
provisional1 almacenaría x. Con esto se está
comparando con cada una de las variables cadena almacenadas en el
arreglo para ver si ya se ha inicializado con leer (variable)
ó dándole valores.
'cadenavariabledeclaradasiono1 = 1
'Cuando cadenavariabledeclaradasiono1 valga 1, entoncees las
variables utilizadas en la asignación ya han sido
declaradas. De lo contrario no han sido declaradas y se
mandará un mensaje más adelante en el código
donde se hará saber que se está utilizando una
variable sin haberla declarado antes.
'End If
'If provisional3 =
arreglovariablescadena(ii) Then 'De x + y guardarlo_en a;
provisional3 almacenaría y. Con esto se está
comparando con cada una de las variables cadena almacenadas en el
arreglo para ver si ya se ha inicializado con leer (variable)
ó dándole valores.
'cadenavariabledeclaradasiono2 = 1
'Cuando cadenavariabledeclaradasiono2 valga 1 , entonces las
variables utilizadas en la asignación ya han sido
declaradas. De lo contrario no han sido declaradas y se
mandará un mensaje más adelante en el código
donde se hará saber que se está utilizando una
variable sin haberla declarado antes.
'End If
'Next
'numeroarreglovariablescadena =
numeroarreglovariablescadena + 1
'arreglovariablesenteras(numeroarreglovariablesenteras)
= arreglo(i – 4)
'contadordevariablesenteras =
contadordevariablesenteras + 1
'For ii As Integer = 1 To
numeroarreglovariablesenteras 'Ciclo para determinar si las
variables utilizadas dentro de una asignación ya han sido
inicializadas o se están utilizando sin haberlas antes
declarado o sin haberles dado valores.
'If provisional1 =
arreglovariablesenteras(ii) Then 'De x + 3 guardarlo_en x;
provisional1 almacenaría x. Con esto se está
comparando con cada una de las variables enteras almacenadas en
el arreglo para ver si ya se ha inicializado con leer (variable)
ó dándole valores.
'variabledeclaradasiono = 1 'Cuando
variabledeclaradasiono valga 1, entoncees las variables
utilizadas en la asignación ya han sido declaradas. De lo
contrario no han sido declaradas y se mandará un mensaje
más adelante en el código donde se hará
saber que se está utilizando una variable sin haberla
declarado antes.
'End If
'If provisional3 =
arreglovariablesenteras(ii) Then 'De x + 3 guardarlo_en x;
provisional3 almacenaría 3. Con esto se está
comparando con cada una de las variables enteras almacenadas en
el arreglo para ver si ya se ha inicializado con leer (variable)
ó dándole valores.
'variabledeclaradasiono = 1 'Cuando
variabledeclaradasiono valga 1, entoncees las variables
utilizadas en la asignación ya han sido declaradas. De lo
contrario no han sido declaradas y se mandará un mensaje
más adelante en el código donde se hará
saber que se está utilizando una variable sin haberla
declarado antes.
'End If
'Next
'numeroarreglovariablesenteras =
numeroarreglovariablesenteras + 1
'If (variabledeclaradasiono1 <> 1
Or variabledeclaradasiono2 <> 1 Or
cadenavariabledeclaradasiono1 <> 1 Or
cadenavariabledeclaradasiono2 <> 1) And lineade5palabras =
1 Then 'Porque si no es igual a uno la variable
lineadecincopalabras significa que no hubo ninguna
asignación, entonces variabledeclaradasiono1 siempre
sería diferente de uno y por lo tanto todo el tiempo se
estaría diciendo que se ha utilizado una variable sin
haberla declarado, incluso cuando ni siquiera se haya hecho una
asignación. Por lo tanto hay dos condiciones en este if
para que se llegue a decir que se ha utilizado una variable sin
haberla asignado antes.
'RichTextBox2.Text = ""
'MsgBox("Está utilizando una
variable que no ha sido declarada", MsgBoxStyle.OkOnly,
"Error")
'RichTextBox1.Focus()
'End If
End Sub
Private Sub
SalirDelProgramaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
SalirDelProgramaToolStripMenuItem.Click
Dim mensaje
As Integer
mensaje = MsgBox("¿Quieres realmente salir del programa?", vbYesNo,
"Cerrando…")
If mensaje = 6
Then
Form3.Show()
Me.Hide()
End If
End Sub
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
RichTextBox1.Text = ""
RichTextBox2.Text = ""
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim mensaje
As Integer
mensaje = MsgBox("¿Quieres realmente salir del
programa?", vbYesNo, "Cerrando…")
If mensaje = 6
Then
Form3.Show()
Me.Hide()
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim ejemplo1nino
As String
Dim ejemplo1pascal
As String
ejemplo1nino = "inicio" & Chr(10) &
"leer (numero1);" &
Chr(10) & "leerl
(palabra1);" & Chr(10) & "leers (numero2);" & Chr(10)
& "leerls (palabra2);"
& Chr(10) & "numero1 +
3 guardarlo_en nuevonumero;" & Chr(10)
& "fin"
ejemplo1pascal = "program
lenguaje_para_ninos (input, output);" & Chr(10)
& "var numero1 :
integer;" & Chr(10) & " numero2 : integer;" & Chr(10)
& " palabra1 : string;"
& Chr(10) & " palabra2
: string;" & Chr(10) & "begin" & Chr(10) &
"read (numero1);" &
Chr(10) & "read
(palabra1);" & Chr(10) & "readln (numero2);" & Chr(10)
& "readln (palabra2);"
& Chr(10) & "nuevonumero := numero1 + 3;" &
Chr(10) & "end"
RichTextBox1.Text = ejemplo1nino
RichTextBox2.Text = ejemplo1pascal
End Sub
Private Sub
Ejemplo1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Ejemplo1ToolStripMenuItem.Click
Dim ejemplo1nino
As String
Dim ejemplo1pascal
As String
ejemplo1nino = "inicio" & Chr(10) &
"leer (numero1);" &
Chr(10) & "leerl
(palabra1);" & Chr(10) & "leers (numero2);" & Chr(10)
& "leerls (palabra2);"
& Chr(10) & "numero1 +
3 guardarlo_en nuevonumero;" & Chr(10)
& "fin"
ejemplo1pascal = "program
lenguaje_para_ninos (input, output);" & Chr(10)
& "var numero1 :
integer;" & Chr(10) & " numero2 : integer;" & Chr(10)
& " palabra1 : string;"
& Chr(10) & " palabra2
: string;" & Chr(10) & "begin" & Chr(10) &
"read (numero1);" &
Chr(10) & "read
(palabra1);" & Chr(10) & "readln (numero2);" & Chr(10)
& "readln (palabra2);"
& Chr(10) & "nuevonumero := numero1 + 3;" &
Chr(10) & "end"
RichTextBox1.Text = ejemplo1nino
RichTextBox2.Text = ejemplo1pascal
End Sub
Private Sub
BorrarTodoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
BorrarTodoToolStripMenuItem.Click
RichTextBox1.Text = ""
RichTextBox2.Text = ""
End Sub
Private Sub
TraducirALenguajePascalToolStripMenuItem_Click(ByVal
sender As
System.Object, ByVal
e As
System.EventArgs) Handles
TraducirALenguajePascalToolStripMenuItem.Click
Dim longituddecadena
As Integer
Dim caracter
As String
Dim cadena
As String
Dim
caractersiguiente As
String
Dim contador
As Integer
Dim arreglo(1000)
As String
Dim enter(1000)
As String 'No se está
trabajando con esto.'Cada elemento de este arreglo contiene el
número de palabras por línea. Por ejemplo,
enter(5)=3 significa que hay tres palabras en la línea
5.
Dim numero
As Integer
Dim numerodepalabras
As Integer
Dim palabra
As String
Dim programa
As String
Dim enternumero
As Integer
Dim otrocontador
As Integer
Dim
arreglodeclararvariablesenteras(1000) As String
Dim
arreglodeclararvariablescadena(1000) As String
Dim
arreglovariablesenteras(1000) As String
'arreglo que guarda las
variables.
Dim
numeroarreglovariablesenteras As Integer
Dim
arreglovariablescadena(1000) As String
Dim
numeroarreglovariablescadena As Integer
Dim
contadordevariablesenteras As Integer
Dim
concatenardeclaraciondevariablesenteras As String
Dim
contadordevariablescadena As Integer
Dim
concatenardeclaraciondevariablescadena As String
Dim
contadordepalabrasporlinea As Integer
Dim provisional1
As String
Dim provisional2
As String
Dim provisional3
As String
Dim
variabledeclaradasiono1 As Integer
Dim
variabledeclaradasiono2 As Integer
Dim lineade5palabras
As Integer 'Para evaluar si
hubo línea de asignación y ver si se ha utilizado
variable sin que antes haya sido declarada.
Dim
ambiguedaddeoperadores As Integer
Dim
variableenteraencontradaenlaasignacion As Integer
'Se le pondrá el valor de 1 a
esta variable cuando en una asignación se estén
utilizando variables de tipo entero, es decir variables que se
hayan declarado como enteras.
Dim
variablecadenaencontradaenlaasignacion As Integer
'Se le pondrá el valor de 1 a esta
variable cuando en una asignación se estén
utilizando variables de tipo cadena, es decir variables que se
hayan declarado como cadena.
Dim
cadenavariabledeclaradasiono1 As Integer
Dim
cadenavariabledeclaradasiono2 As Integer
Randomize() 'Inicializa el
generador de números random.
Dim value
As Integer = CInt(Int((6 * Rnd()) + 1))
'Genera un número random entre 1 y
6. Esto se ocupará más adelante para darle colores
aleatorios al RichTextBox1.Text y al
RichTextBox2.Text.
concatenardeclaraciondevariablesenteras =
"var "
concatenardeclaraciondevariablescadena =
""
numeroarreglovariablesenteras = 1
numeroarreglovariablescadena = 1
enternumero = 1
palabra = ""
numero = 1
cadena = LCase(Trim(RichTextBox1.Text))
longituddecadena = Len(RichTextBox1.Text)
For i As Integer =
1 To
longituddecadena
caracter = Mid(cadena, i, 1) 'La variable caracter evalúa caracter por
caracter desde el primero hasta el último.
If caracter =
" " Or
caracter = Chr(10) Then
'Si el caracter que se está
evaluando es un espacio en blanco o un enter, entonces tomamos
eso como parámetro para evaluar si lo que sigue es otro
espacio en blanco, y si no fuera así, se concluye que ya
hay una palabra.
caractersiguiente = Mid(cadena, i + 1, 1)
'variable que evalúa lo que hay
después del carácter evaluado por el for, para saber si
hay dos o más espacios juntos y no tomarlos en cuenta como
palabra.
If caractersiguiente
<> " " And caractersiguiente <>
Chr(10) And
caractersiguiente <> Chr(13) Then 'Osea que NO hay dos
o más espacios en blanco juntos.
contador = contador + 1 'El
CONTADOR DE PALABRAS incrementa en uno hasta que lo que hay
después de un espacio en blanco ya no es otro espacio en
blanco, sino que una letra.
otrocontador = otrocontador + 1 'No se está trabajando con esto.
End If
End If
If caracter <>
" " And
caracter <> Chr(10) Then
palabra = palabra + caracter 'La variable palabra almacena palabras
completas.
arreglo(numero) = palabra 'AQUI SE METEN PALABRAS A CADA ELEMENTO DEL ARREGLO DE
PALABRAS. La variable numero es el número de elemento del
arreglo.
Else
If caractersiguiente
<> " " And caractersiguiente <>
Chr(10) And
caractersiguiente <> "" Then
palabra = ""
'Palabra vuelve a valer nada porque
terminó una palabra, y hay que comenzar de cero para
almacenar otra nueva palabra.
numero = numero + 1 'Aumenta para que el elemento del arreglo cambie de
número porque se quiere almacenar una siguiente o una
nueva palabra.
End If
End If
Next
numerodepalabras = contador + 1 'Almacena el número total de palabras que hay en
el RichTextBox.Text
For i As Integer =
1 To
numerodepalabras 'Este For
sirve exclusivamente para capturar las variables de tipo entero,
pero no sirve para cambiar palabras, sino que eso lo hace el For
que viene después.
If arreglo(i) =
"leer" Or arreglo(i) = "leers" Then
arreglovariablesenteras(numeroarreglovariablesenteras) =
Strings.Right(Strings.Left(arreglo(i + 1), Strings.Len(arreglo(i
+ 1)) – 2), Strings.Len(arreglo(i + 1)) – 3)
contadordevariablesenteras = contadordevariablesenteras
+ 1
numeroarreglovariablesenteras =
numeroarreglovariablesenteras + 1
Else
If arreglo(i) =
"leerl" Or arreglo(i) = "leerls" Then
arreglovariablescadena(numeroarreglovariablescadena) =
Strings.Right(Strings.Left(arreglo(i + 1), Strings.Len(arreglo(i
+ 1)) – 2), Strings.Len(arreglo(i + 1)) – 3) 'Tomando la variable sin incluir el punto y coma final
ni el paréntesis de apertura ni de cierre.
contadordevariablescadena = contadordevariablescadena +
1
numeroarreglovariablescadena =
numeroarreglovariablescadena + 1
End If
End If
Next
For i As Integer =
1 To numero
'Todo lo que se hace dentro de este For es
para cambiar el orden de asignación, pues el niño
pone x + 3 guardarlo_en x; y el programa debe generar x = x +
3;.
contadordepalabrasporlinea = contadordepalabrasporlinea
+ 1
If arreglo(i) =
"inicio" Or arreglo(i) = "entonces" Or
arreglo(i) = "hacer"
Or arreglo(i) =
"de_lo_contrario" Or Strings.Right(arreglo(i), 1) =
";" Then 'Cualquiera de estos
casos se daría con una palabra que marca el final de
una línea.
If
Strings.Right(arreglo(i), 1) = ";" Then
If
contadordepalabrasporlinea = 5 Then 'Porque en x + 3
guardarlo_en x; hay 5 palabras, y se cambiará mediante lo
que hay dentro del if a x = x + 3;
lineade5palabras = 1 'Para
evaluar si hubo línea de asignación y ver si se ha
utilizado variable sin que antes haya sido declarada.
provisional1 = arreglo(i – 4)
provisional2 = arreglo(i – 3)
provisional3 = arreglo(i – 2)
arreglo(i – 4) = Strings.Right(Strings.Left(arreglo(i),
Strings.Len(arreglo(i)) – 1), Strings.Len(arreglo(i)) – 1)
'Con esto se cambia de x + 3 guardarlo_en
x; a x = x + 3, cambiando el elemento x; por x en otra
posición del arreglo.
arreglo(i – 3) = arreglo(i – 1)
arreglo(i – 2) = provisional1
arreglo(i – 1) = provisional2
arreglo(i) = provisional3 & ";" 'Como se ha cambiado
de la forma x + 3 guardarlo_en x; a la forma x = x + 3;, entonces
ya con los arreglos modificados hay que poner un punto y coma al
final del 3 para tener x = x + 3; y ya queda todo
listo.
For a As Integer =
1 To
contadordevariablesenteras
If arreglo(i – 2) =
arreglovariablesenteras(a) Then 'La a irá
cambiando valor desde 1 hasta contadordevariablescadena, que
contiene el número de elemento de la última
variable de tipo entero almacenada en el arreglo de variables
enteras.
variableenteraencontradaenlaasignacion = 1
'Con darle el valor de 1 se sabrá
que efectivamente en la asignación hay una variable
entera.
End If
If provisional3 =
arreglovariablesenteras(a) Then 'No se le pone
arreglo(i) sino que provisional3, porque a estas alturas ya
llevaría concatenado un punto y coma al final.
variableenteraencontradaenlaasignacion = 1
End If
Next
For b As Integer =
1 To
contadordevariablescadena
If arreglo(i – 2) =
arreglovariablescadena(b) Then 'arreglo(i-2) es lo
mismo que provisional1
variablecadenaencontradaenlaasignacion = 1
End If
If provisional3 =
arreglovariablescadena(b) Then 'No se le pone
arreglo(i) sino que provisional3, porque a estas alturas ya
llevaría concatenado un punto y coma al final.
variablecadenaencontradaenlaasignacion = 1
End If
Página anterior | Volver al principio del trabajo | Página siguiente |