Programa informático

Anuncio
' 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
Descargar