' PROGRAMA PARA EVALUAR UNA EXPRESION Dim igual, error_tipo, no_texto, abierto, cerrado As Integer Dim cadena, aux As String Dim vector(1 To 40) As String Private Sub Command1_Click() Command2.Visible = True Command1.Visible = False abierto = 0 cerrado = 0 error_tipo = 0 igual = 0 no_texto = 2 ya1 = 0 ya2 = 0 ya3 = 0 If (Text1.Text = Null) Then long_cad = 0 no_texto = 1 Else long_cad = Len(cadena) End If For i = 1 To long_cad vector(i) = Mid(cadena, i, 1) Next i 'INICIAEVALUACION 1 ' calculando posición del signo igual For i = 1 To long_cad If vector(i) = "=" Then igual = i Exit For End If Next i ' error tipo 1 If (vector(1) = "=") Then error_tipo = 1 MsgBox "ERROR 1 Ausencia de identificador", vbExclamation, "Mensaje de error" End If ' error tipo 2 For i = 2 To igual − 1 If (vector(i) = ".") Then error_tipo = 2 MsgBox "ERROR 2 No es correcto incluir un punto en el identificador", vbExclamation, "Mensaje de error" End If Next i ' error tipo 3 For i = 0 To 9 If (vector(1) = i) Then error_tipo = 3 MsgBox "ERROR 3 No es correcto iniciar un identificador con un numero", vbExclamation, "Mensaje de error" Exit For End If 2 Next i ' error tipo 4 If (igual <> 0) Then If (vector(1) = "*" Or vector(1) = "/" Or vector(1) = "+" Or vector(1) = "−" Or vector(1) = "(" Or vector(1) = ")" Or vector(1) = ".") Then error_tipo = 4 MsgBox "ERROR 4 No es correcto iniciar un identificador con un operador o un punto", vbExclamation, "Mensaje de error" End If End If ' error tipo 5 If (vector(igual + 1) = "=") Then error_tipo = 5 MsgBox "ERROR 5 No es correcto colocar más de un signo de igual consecutivo", vbExclamation, "Mensaje de error" End If ' error tipo 6 If (igual <> 0) Then If (vector(igual + 1) = "*" Or vector(igual + 1) = "/" Or vector(igual + 1) = "+" Or vector(igual + 1) = ")") Then error_tipo = 6 MsgBox "ERROR 6 No es correcto colocar un parentesis derecho o un operador diferente de −, despues del signo =.", vbExclamation, "Mensaje de error" End If End If ' error tipo 7 If (no_texto = 2) Then For i = igual + 1 To long_cad If (vector(i) = "(") Then 3 abierto = abierto + 1 If (ya3 = 0) Then If (vector(i + 1) = ")") Then error_tipo = 7 MsgBox "ERROR 7 Es incorrecto no colocar nada entre los parentesis ().", vbExclamation, "Mensaje de error" ya3 = 1 End If End If If (ya1 = 0) Then If (vector(i + 1) = "*") Or vector(i + 1) = "/" Or vector(i + 1) = "+" Then error_tipo = 7 MsgBox "ERROR 7.1 No es correcto colocar un operador diferente de −, despues de ""("", vbExclamation, ", "Mensaje de error" ya1 = 1 End If End If End If If (vector(i) = ")") Then cerrado = cerrado + 1 If (vector(i − 1) = "*" Or vector(i − 1) = "/" Or vector(i − 1) = "+" Or vector(i − 1) = "−") Then error_tipo = 7 MsgBox "ERROR 7.2 No es correcto colocar un operador antes de "")"", vbExclamation", "Mensaje de error" End If If (ya2 = 0) Then If (cerrado > abierto) Then error_tipo = 7 4 MsgBox "ERROR 7.3 No es correcto colocar un "")"" sin un ""("" previo.", vbExclamation, "Mensaje de error" ya2 = 1 End If End If End If Next i If (abierto <> cerrado) Then error_tipo = 7 MsgBox "ERROR 7.4 El número de parentesis que se abre es diferente a los cerrados.", vbExclamation, "Mensaje de error" End If End If ' error tipo 8 For i = igual + 1 To long_cad If (vector(i) = "*" Or vector(i) = "/" Or vector(i) = "+" Or vector(i) = "−") Then If (vector(i + 1) = "*" Or vector(i + 1) = "/" Or vector(i + 1) = "+" Or vector(i + 1) = "−") Then error_tipo = 8 MsgBox "ERROR 8 No es correcto colocar más de un operador consecutivo.", vbExclamation, "Mensaje de error" Exit For End If End If Next i ' error tipo 9 If (igual <> 0) Then If (long_cad <> 0) Then If (vector(long_cad) = "*" Or vector(long_cad) = "/" Or vector(long_cad) = "+" Or vector(long_cad) = "−") 5 Or vector(long_cad) = "=" Then error_tipo = 9 MsgBox "ERROR 9 No es correcto colocar un operador al final de la expresion", vbExclamation, "Mensaje de error" End If End If End If ' error tipo 10 If (no_texto = 2) Then If (igual = 0) Then error_tipo = 10 MsgBox "ERROR 10 No se escribio una ecuacion. Ausencia de signo igual.", vbExclamation, "Mensaje de error" End If End If ' EN ESTA SECCION SE EVALUA SI EXISTE UNA CADENA Y SI ES CORRECTA ' DE SER CORRECTA, SE VISUALIZA LA SEGUNDA IMAGEN If (error_tipo = 0) Then If (no_texto = 2) Then Label3.Visible = True 'image1.Visible = True End If End If End Sub Private Sub Command2_Click() Text1.Text = "" error_tipo = 0 6 Command1.Visible = True Command2.Visible = False Label3.Visible = True 'image1.Visible = True End Sub Private Sub text1_change() cadena = Text1.Text End Sub Private Sub Text1_keyPress(keyAscii As Integer) If (keyAscii = vbKeyReturn) Then Call Command1_Click End If If keyAscii = Asc(";") Or keyAscii = Asc(",") Or keyAscii = Asc(":") Or keyAscii > Asc("Z") Or keyAscii < Asc("(") Or keyAscii = Asc("_") Or keyAscii = Asc("<") Or keyAscii = Asc(">") Or keyAscii = Asc("?") Then keyAscii = 0 Beep End If End Sub 7