'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 siguiente |