Visual Basic y Lenguaje C
Visual Basic y Lenguaje C
Errores de sintaxis: Los errores de sintaxis son aquellos que aparecen mientras se escribe el código. Visual Basic comprueba el
código mientras se escribe en la ventana Editor de código y alerta si se comete un error, por ejemplo, si se escribe mal una
palabra o se usa un elemento del lenguaje de forma incorrecta. Los errores sintácticos son los errores más frecuentes. Se pueden
corregir fácilmente en el entorno de codificación en cuanto se producen.
Errores en tiempo de ejecución: Los errores en tiempo de ejecución son aquellos que aparecen solamente después de la
compilación y la ejecución del código. Pueden darse errores de este tipo, por ejemplo, en fragmentos de código aparentemente
correctos, por no presentar errores sintácticos, pero que no se ejecutan correctamente. Por ejemplo, podría escribir correctamente
una línea de código que abre un archivo. Pero, si el archivo está dañado, la aplicación no podrá ejecutar la función Open y se
detendrá su ejecución. La mayoría de los errores de este tipo pueden corregirse modificando el código que presenta errores, para
después compilarlo y volver a ejecutarlo.
Errores lógicos: Los errores lógicos son aquellos que aparecen cuando la aplicación está en funcionamiento. Son a menudo
resultados no deseados o inesperados en respuesta a acciones del usuario. Por ejemplo, una clave mal escrita u otra influencia
externa podrían hacer que la aplicación dejase de funcionar aún siendo correctos los parámetros, o que simplemente no
funcionase. Por lo general, los errores lógicos son los más difíciles de corregir, puesto que no siempre está claro dónde se
originan.
Cuando se produce un error, si hay un símbolo debajo del lado derecho del subrayado ondulado, al colocar el mouse sobre la
línea ondulada o al hacer doble clic en el mensaje de error en la lista de tareas, el símbolo se convierte en un panel de etiquetas
inteligentes. Al hacer clic o colocar el puntero del mouse sobre el panel de etiquetas inteligentes, se abre la ventana auxiliar
Opciones de corrección de errores, que muestra una descripción del error junto con un conjunto de sugerencias para corregirlo.
Cuando sea necesario, la ventana auxiliar le permite obtener una vista previa de la corrección en una ventana independiente.
Puede deshacer los cambios una vez aplicados con una operación Deshacer (CTRL+Z).
Para desechar la ventana auxiliar Corrección automática de compilación inteligente, haga clic en cualquier otra parte del editor.
Esta tabla muestra y explica los elementos mostrados en la ventana Corrección automática de compilación inteligente:
Elemento Descripción
Mensaje de error Muestra el mensaje asociado al error.
Corrección sugerida Muestra posibles maneras de corregir el error. Haga clic en uno para que se aplique a su código.
Vista previa Muestra una vista previa del código corregido. En situaciones donde la corrección no afecta al
código, no se muestra una vista previa.
Expandir todas las vistas Al activar esta casilla, se expandirán todas las vistas previas.
previas
3. Puede deshacer cambios que se han aplicado con una operación Deshacer (CTRL+Z). Para cerrar la ventana de aplicación auxiliar
Opciones de corrección de errores, haga clic en otra parte del editor.
En ocasiones, el compilador proporciona lógica adicional en nombre del usuario para que éste pueda centrarse en la tarea actual en lugar de
dedicarse a anticipar posibles errores. En versiones anteriores de Visual Basic, se utilizaba Option Strict para limitar la lógica adicional que
proporciona el compilador de Visual Basic. La configuración de las advertencias permite limitar esta lógica de una manera más específica,
en el nivel de las advertencias individuales.
Puede personalizar su proyecto y desactivar algunas advertencias que no afectan a su aplicación o convertir otras advertencias en errores.
Esta página explica cómo activar y desactivar las advertencias individuales.
La ficha Compilar de la página Diseñador de proyectos permite activar y desactivar las advertencias. Active la casilla Deshabilitar todas las
advertencias para deshabilitar todas las advertencias; active Considerar todas las advertencias como errores para tratar todas las advertencias
como errores. Algunas advertencias individuales se pueden alternar como errores o advertencias en la tabla mostrada.
Cuando Option Strict se establece como Off, las advertencias relacionadas con Option Strict no se pueden tratar como independientes entre
sí. Cuando Option Strict se establece como On, las advertencias asociadas se tratan como errores, independientemente de su estado. Si
Option Strict se establece como Custom mediante la especificación de /optionstrict:custom en el compilador de la línea de comandos, las
advertencias de Option Strict se pueden activar y desactivar de manera independiente.
También se puede utilizar la opción de la línea de comandos /warnaserror del compilador para especificar si las advertencias se tratan como
errores. Puede agregar una lista delimitada por comas a esta opción para especificar qué advertencias se deben tratar como errores o
advertencias, utilizando + o -. En la tabla siguiente se especifican las opciones posibles.
Ejemplos
Esta tabla de ejemplos de argumentos de la línea de comandos describe qué hace cada argumento.
Argumento Descripción
vbc /warnaserror Especifica que todas las advertencias se deben tratar como errores.
vbc /warnaserror:42024 Especifica que la advertencia 42024 se debe tratar como un error.
vbc /warnaserror:42024,42025 Especifica que las advertencias 42024 y 42025 se deben tratar como errores.
vbc /nowarn Especifica que no se deben indicar advertencias.
vbc /nowarn:42024 Especifica que no se debe indicar la advertencia 42024.
vbc /nowarn:42024,42025 Especifica que no se deben indicar las advertencias 42024 y 42025.
Tipos de advertencias
A continuación se muestra una lista de advertencias que podría tratar como errores.
Id: 42016
Id: 42017
Id: 42020 (declaración de variable), 42021 (declaración de función) y 42022 (declaración de propiedad).
Advertencia de posible excepción de referencia NULL
Se genera cuando se utiliza una variable antes de ser asignada a un valor. Habilitado de forma predeterminada para nuevos proyectos.
Id: 42024
Id: 42025
Id: 42028
Advertencia de bloques Catch duplicados o superpuestos
Se genera cuando no se alcanza un bloque Catch debido a su relación con otros bloques Catch definidos. Habilitado de forma
predeterminada para nuevos proyectos.
El cuadro de diálogo Agregar error de validación de las importaciones tiene las siguientes opciones para corregir el problema.
Elemento Descripción
Importar espacio de nombres , y calificar los Inserta una instrucción del Importsespacio de nombres en el archivo. Cada
identificadores afectados nombre de tipo que no se define en el archivo pero se define en el espacio de
nombres se enlazará a su definición en el espacio de nombres importado. Se
incluyen todas las apariciones del nombre de tipo que produjo el error.
Cada tipo de nombre que ya está definido en el archivo y que cambiaría esta
instrucción Imports, lleva el prefijo del nombre del espacio de nombres, del
módulo o de la clase para conservar su significado original.
No importe el espacioDeNombres, pero Cambia el nombre del tipo no definido a
cambie el nombreDeTipo a espacioDeNombres.nombreDeTipopara especificar la ubicación de la
espacioDeNombres.nombreDeTipo definición del nombre de tipo. De esta forma, sólo se cambia la instancia
actual del nombre de tipo no definido. El resto del archivo no se ve afectado.
Cancel Cierra el cuadro de diálogo.
Ejemplo
En un proyecto de aplicación de consola de Visual Basic denominado ConsoleApplication1, el siguiente código provoca un error
porque la definición de la clase C2 no está en el ámbito cuando se usa en Main.
VB
Imports ConsoleApplication1.Ns2
Module Module1
Sub Main()
Dim instance1 As New C1
' The following line will show an error for C2. C2 is defined
' in namespace Ns1, but only Ns2 is imported.
Dim instance2 As New C2
End Sub
End Module
Class C2
End Class
End Namespace
Class C1
End Class
End Namespace
Deje el puntero del mouse sobre C2 en Main y haga clic en el signo de exclamación de Opciones de corrección de errores. Verá
estas dos opciones para corregir el problema:
Import ConsoleApplication1.Ns1
Change 'C2' to 'Ns1.C2'
Si elige la segunda opción, C2 se cambia a Ns1.C2 en el código y se resuelve el error. Sólo se cambia la instancia actual de C2.
Si elige la primera opción, la situación es más complicada en este ejemplo. El compilador detecta que agregando la instrucción
Imports provocaría otros cambios de significado del código y aparece el cuadro de diálogo Agregar error de validación de las
importaciones. Específicamente, importar ConsoleApplication.Ns1 para corregir el problema con C2 produce un error nuevo
para C1 en la primera línea de Main: Dim instance1 As New C1. Dos definiciones de clase C1 ahora están en el ámbito: el que se
define en el espacio de nombres Ns1 y que se define en el espacio de nombres Ns2.
El cuadro de diálogo Agregar error de validación de las importaciones proporciona dos opciones:
Si elige la primera opción, Imports ConsoleApplication1.Ns1 se agrega en la parte superior del archivo y Dim instance1 As New
C1 se cambia a Dim instance1 As New ConsoleApplication1.Ns2.C1 para conservar el enlace original de C1.
Nota
Esta es una buena solución cuando aparece el nombre de tipo sin definir muchas veces en el archivo o cuando es probable que
sean útiles otros elementos del espacio de nombres.
Si elige la segunda opción, C2 se cambia a Ns1.C2 en el código y se resuelve el error. Sólo se cambia la instancia actual de C2.
Nota
Se recomienda esta solución limitada cuando el nombre de tipo no definido aparezca sólo una o dos veces en el archivo; o bien,
cuando el espacio de nombres en el que se define el nombre de tipo sea largo.
Agregar error de validación de las importaciones (Métodos
de extensión) (Visual Basic)
El cuadro de diálogo Agregar error de validación de las importaciones (métodos de extensión) aparece cuando el compilador
determina que la adición de una instrucción Imports para definir un nombre de tipo no reconocido cambiaría el significado de
otras partes de código del archivo. Específicamente, se han producido los eventos siguientes.
El cuadro de diálogo Agregar error de validación de las importaciones (métodos de extensión) contiene las opciones siguientes
para corregir el problema.
Elemento Descripción
Haga clic en Aceptar para corregir Cambia el nombre del tipo no definido a espacioDeNombres.nombreDeTipopara
nombreDeTipo cambiándolo a espacio especificar la ubicación de la definición del nombre de tipo. De esta forma, sólo se
de nombres.nombreDeTipo cambia la instancia actual del nombre de tipo no definido. No se importa el espacio
de nombres.
Cancel No realice ningún cambio y cierre el cuadro de diálogo.
Ejemplo
En un proyecto de aplicación de consola de Visual Basic denominado ConsoleApplication1, el siguiente código provoca un error
porque la definición de la clase C2 no está en el ámbito cuando se usa en Main.
VB
Imports System.Runtime.CompilerServices
Imports ConsoleApplication1.Ns1
Class Base
End Class
Public Class C1
End Class
Module M1
<Extension()>
Sub exampleSub(ByVal caller As Base)
Console.WriteLine("exampleSub in Ns1")
End Sub
End Module
End Namespace
Public Class C2
End Class
Module M2
<Extension()>
Sub exampleSub(ByVal caller As Base)
Console.WriteLine("exampleSub in Ns2")
End Sub
End Module
End Namespace
Module Module1
Sub Main()
Dim a As New C1
' The following line will show an error for C2. C2 is
' defined in namespace Ns2, but only Ns1 is imported.
Dim b As New C2
Dim c As New Base
c.exampleSub()
End Sub
End Module
Se produce un error en Sub Main cuando se hace referencia a C2. El error notifica que C2 no es un tipo reconocido. Deje el
puntero del mouse sobre C2 y haga clic en el signo de exclamación de Opciones de corrección de errores. Verá estas dos
opciones para corregir el problema:
Importar ConsoleApplication1.Ns2
Cambiar 'C2' a 'Ns2.C2'
Como se dijo, se utiliza generalmente en el evento Click par ejecutar alguna acción cuando se produce dicho evento, y es
precisamente el evento Click, el que por defecto añade Visual Basic al control
Por ejemplo, si colocamos un control Command1 en un formulario, y le damos DobleClick para que se abra la ventana de
código de visual basic, podemos ver la siguiente rutina:
Texto planoImprimir
Todas las instrucciones que estén dentro de este procedimiento, llamado Command1_Click, se ejecutarán cuando presionemos
el botón. Por ejemplo si ejecutamos el siguiente código, lo que haría sería mostrar la fecha del sistema en la barra de título del
formulario, utilizando la función Date de Visual Basic
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4. ' -- Establecemos en la barra de título del formulario la fecha del Pc
5. Me.Caption = Date
6.
7. End Sub
Este otro ejemplo, al presionar el botón, termina el programa utilizando la función End de vb. Colocar un Botón en el form
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4. End
5. End Sub
6.
7. Private Sub Form_Load()
8. Command1.Caption = "Salir"
9. End Sub
Propiedades
Las propiedades que posee el control CommandButton son prácticamente las que poseen el resto de controles estandar de visual
basic, salvo algunas exclusivas como la propiedad Style.
Propiedad Style
La propiedad Style tiene 2 valores, 0 - Standar y 1 - Graphical. La primera es del clásico botón y este valor es el asignado por
defecto. En cambio Graphical permite utilizar CommandButton para poder mostrar imágenes, cambiarle el color del fondo, el
tipo de fuente, y utilizando el Api de windows, se puede cambiar por ejemplo el color de la fuente, es decir el ForeColor que este
control no lo posee.
Esta imagen muestra, en el Command1 , una imagen, por medio de la propiedad Picture que la puedes cargar desde la ventana
de propiedades. El segundo, el Command2, no tiene imagen, pero muestra como se puede establecer el color de fondo, propiedad
Backcolor, siempre y cuando la propiedad Style sea de tipo gráfico, ya que si está en estándar no surtirá efecto.
Otro ejemplo sobre esta propiedad: Al pasar el mouse por encima del Commandbutton, se cambiará la fuente, en Negrita, el
Subrayado, y el color de fondo, al salir el puntero fuera del botón, se reestablecerá a la fuente normal, y se restaurará el color de
fondo usando el color por defecto que utiliza windows para los botones, mediante la constante VbButtonFace
Para el ejemplo, colocar un Command1, colocar la propiedad Style en Graphical y pegar estas líneas en el formulario:
Texto planoImprimir
1. Option Explicit
2.
3. ' -- Flag para que no se ejecute constantemente
4. ' -- el código del Form y del CommandButton
5. Dim Flag As Boolean
6.
7. Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
8.
9. ' -- Establecer la fuente del commandButton en negrita y con subrayado
10. If Flag Then
11. Command1.Font.Bold = True
12. Command1.Font.Underline = True
13. Command1.BackColor = vbWhite
14. Flag = False
15. End If
16.
17. End Sub
18.
19. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
20. ' -- Quita la negrita, el subrayado, y restaura el color de fondo
21. If Flag = False Then
22. Command1.Font.Bold = False
23. Command1.Font.Underline = False
24. Command1.BackColor = vbButtonFace
25. Flag = True
26. End If
27.
28. End Sub
Propiedad Default
Esta propiedad es muy útil en ciertas locaciones, sobre todo en formularios y programas que utilizan bases de datos, y opciones
para buscar.
Default puede tener dos valores , True o False. Si está en True, el botón será el botón por defecto que se ejecutará cuando se
presione la tecla enter. Por ejemplo hagamos de cuenta que nuestro programa contiene un botón. Ese botón ejecuta un código
para buscar datos en una base de datos. Si el usuario en un momento determinado, se encuentra escribiendo datos en un control
textbox, y presiona la tecla Enter, el CommandButton al tener la propiedad Default en True, ejecutará el código que tenga en el
evento click. En este caso , en el evento clic, contendría todo el código para realizar la búsqueda de registros.
Un simple ejemplo
1. Option Explicit
2.
3. Private Sub Command1_Click()
4. MsgBox "Se ejecutó el evento Click del commandButton", vbInformation
5. End Sub
6.
7. Private Sub Form_Load()
8. ' -- Establecer propiedad Default
9. Command1.Default = True
10.
11. MsgBox "Coloca el cursor en un control textbox para que tome el foco, " & _
12. "y luego, presiona la tecla enter, y verás como de todas formas " & _
13. "se ejecutó el evento click ya que es el control por defecto del" & _
14. "formulario. ( Nota .Solo puede haber un solo botón con la propiedad " & _
15. "Default en un formuario)", vbInformation
16.
17. End Sub
Propiedades de posición
Las propiedades de posición son las que permiten cambiar el tamaño y la posición en el objeto que lo contiene. estas propiedades
son cuatro : Left, Top, Height y Width.
El siguiente ejemplo muestra como usar estas propiedades. Supongamos que nuestro formulario contiene un botón "Salir" en la
parte inferior:
Ahora bien ¿ como hacer para que al presionar el botón de maximizar del formulario o cambiar de tamaño el formulario, el botón
continúe situado en la esquina inferior derecha ? Para ello hay que modificar la propiedad Left y Top del botón. ¿ Pero donde
colocar el código? para ello se debe colocar en el evento Resize del formulario.
Texto planoImprimir
1. Option Explicit
2.
3. ' Valores para márgenes - Prueba cambiando estos valores
4. Private Const MARGEN_IZQUIERDO As Single = 60
5. Private Const MARGEN_INFERIOR As Single = 60
6.
7. Private Sub Command1_Click()
8. Unload Me
9. End Sub
10.
11. Private Sub Form_Load()
12. Command1.Caption = "Salir"
13. End Sub
14.
15. ' -- Posicionar el botón al cambiar de tamaño la ventana de formulario
16. Private Sub Form_Resize()
17. Command1.Left = (Me.ScaleWidth - Command1.Width) - MARGEN_IZQUIERDO
18. Command1.Top = (Me.ScaleHeight - Command1.Height) - MARGEN_INFERIOR
19. End Sub
Propiedad Enabled
Esta propiedad lo que hace es habilitar o deshabilitar el botón. Es una propiedad que la poseen casi todos los controles, tanto los
de Visual basic, como otros controles de terceros ( controles ocx o Activex )
Supongamos que nuestro programa contiene un un control de texto donde se ingresan datos para buscar registros en una base de
datos. Y también tenemos un botón que contiene el código que debe ejecutar para realizar la búsqueda dentro de la base de datos.
Si en algún momento el control de texto no contiene datos, es decir no contiene texto valga la redundancia, no sería necesario
que el botón se encuentre habilitado, por el contrario, deberíamos deshabilitarlo.
Puedes probar este simple ejemplo, colocando un control Textbox , un botón y pegando el siguiente código en el formulario
principal
Texto planoImprimir
1. Option Explicit
2.
3.
4. Private Sub Command1_Click()
5. MsgBox Text1.Text, vbInformation
6. End Sub
7.
8. Private Sub Form_Load()
9. Text1.Text = ""
10. Command1.Caption = "Buscar .."
11. End Sub
12.
13. ' -- El evento Change se produce cuando cambia el contenido
14. ' -- de la caja de texto
15. Private Sub Text1_Change()
16. If Text1.Text = "" Then
17. Command1.Enabled = False
18. Else
19. Command1.Enabled = True
20. End If
21. End Sub
Si en el algún momento se necesita, por ejempo, habilitar o deshabilitar todos los botones que hay en el formulario, o por
ejemplo camabiarle y establecerle otras propiedades que se deseen, puedes utilizar un bucle For Each para recorrer todos los
controles del formulario,y utilizando el operador TypeOf de Visual basic, comprobar si el control dentro del bucle es de tipo
CommandButton.
Nota. El ejemplo no tiene ninguna utilidad especifica, solo muestra el uso del ejemplo.
Debes colocar dos controles textBox. Text1 y Text2, y todos los botones que desees, por ejemplo 4 como mustra la imagen de
abajo
Al colocar el cursor en el Text1 se habilitarán todos los botones, luego al colocar el cursor en el Text2, es decir cuando recibe el
foco, se deshabilitarán todos los botones.
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Form_Load()
4. Command1.Caption = "Opción 1"
5. Command2.Caption = "Opción 2"
6. Command3.Caption = "Opción 3"
7. Command4.Caption = "Opción 4"
8. End Sub
9.
10. ' \\ -- Procedimiento para activar y desactivar los botones
11. Sub EnabledDisabled(ByVal bValue As Boolean)
12.
13. ' -- Recorrer todos los objetos y controles del form
14. Dim xCtrl As Control
15. For Each xCtrl In Me.Controls
16. ' xCtrl ¿ es un Command Button ?
17. If TypeOf xCtrl Is CommandButton Then
18. ' si lo es, entonces habilitarlo o deshabilitarlo
19. xCtrl.Enabled = bValue
20. End If
21. Next
22. End Sub
23.
24. '\\ -- Deshabilitar
25. Private Sub Text2_GotFocus()
26. Call EnabledDisabled(False)
27. End Sub
28.
29. '\\ -- Activar
30. Private Sub Text1_GotFocus()
31. Call EnabledDisabled(True)
32. End Sub
Estas dos propiedades son muy simples de usar y son comunes a la mayoría de objetos y controles de vb
Mousepointer devuelve o establece el tipo de puntero del mouse mostrado al pasar por encima de un objeto
Ejemplo. Colocar un control ListBox y un botón. Pegar el siguiente código fuente en el formulario
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Form_Load()
4.
5. With Command1
6. ' -- Puntero de mouse personalizado - Pasar usar con íconos
7. .MousePointer = 99
8. ' --
usar el ícono del formulario ( Puedes especificar el que desees cargandolo desde la ventana de propiedades o utilizando la función
LoadPicture)
9. .MouseIcon = Me.Icon
10. End With
11.
12. ' -- Cargar la lista de punters de mouse para el botón
13. With List1
14. .AddItem "0 - Default"
15. .AddItem "1 - Arrow"
16. .AddItem "2 - Cross"
17. .AddItem "3 - Beam"
18. .AddItem "4 - Icon"
19. .AddItem "5 - Size Ne SW"
20. .AddItem "6 - Size Ne SW"
21. .AddItem "7 - Size N S"
22. .AddItem "8 - Size NW Se"
23. .AddItem "9 - Up Arrow"
24. .AddItem "10 - HourGlass"
25. .AddItem "Custom"
26. End With
27.
28. End Sub
29.
30. Private Sub List1_Click()
31. ' -- Cambiar la propiedad MousePointer
32. With List1
33. If .ListIndex <> -1 Then
34. Command1.MousePointer = .ListIndex
35. End If
36. If .ListIndex = .ListCount - 1 Then
37. Command1.MousePointer = 99
38. Command1.MouseIcon = Me.Icon
39. End If
40. End With
41. End Sub
Métodos y funciones
Este control prácticamente no contiene métodos o funciones. El mas importante y el mas utilizado es el método SetFocus, que
también lo posen muchos otros controles.
Lo que hace el método setFocus, es poder establecer el enfoque a un objeto especifico, en este caso al botón. Su uso es muy
simple, solo basta con ejecutarlo desde alguna parte de nuestro programa para que el Commandbutton pase a tener el foco.
Una cosa muy importante a tener en cuenta , es que para poder establecer el foco a cualquier control de visual basic, el objeto se
debe encontrar visible, y también se debe encontrar habilitado. Es decir, si la propiedad Visible o la propiedad Enabled del objeto
se encuentran en False, esto producirá un error en tiempo de ejecución. Por ello siempre se debe colocar una rutina de error para
poder controlar esto, o comprobando estas propiedades mediante una instrucción If Then
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command2_Click()
4. ' -- Esta instrucción generará un error, ya que le intentará pasar el foco
5. ' -- al command1, que se encuentra deshabilitado
6. Command1.SetFocus
7. End Sub
8.
9. Private Sub Form_Load()
10. ' -- Deshabilitamos el Command1
11. Command1.Enabled = False
12. MsgBox "Presiona el Botón Command2", vbInformation
13. End Sub
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command2_Click()
4. With Command1
5. ' -- Si está visible y esta habilitado, entonces .. pasar el foco
6. If .Visible And .Enabled Then
7. .SetFocus
8. End If
9. End With
10. End Sub
11.
12. Private Sub Form_Load()
13. MsgBox "Presiona el Botón Command2", vbInformation
14. End Sub
Evento GotFocus y LostFocus : Se disparan dichos eventos cuando el control recibe o pierde el foco
MouseMove, MouseDown y MouseUp: El primero se dispara cuando el puntero del mouse se mueve encima del botón,
MouseDown cuando el botón está abajo y cuando está arriba MouseUp
Por ejemplo para probar el uso de los métodos GotFocus y LostFocus (recibe y pierde el foco) colocar 3 CommandButton,
Command1, Command2 y Command3. Luego un Label1 que mostrará el control que recibe el foco (GotFocus) y un Label2
que mostrará el control que pierde el foco (LosFocus)
Nota: en la ventana de código podés ver que tenés 2 combos o listas desplegables:
El combo de la izquierda muestra los objetos que tiene el formulario, es decir los controles, rutinas y funciones, y la lista de la
derecha los eventos y métodos del objeto seleccionado en la lista izquierda.
En la captura del ejemplo anterior, se puede ver que cuando el cursor se encuentra dentro de la ventana de código está situado en
un procedimiento determinado, las listas se actualizan mostrándote dicho objeto, por ejemplo el cursor está en el control u objeto
llamado Command3 en el evento Gotfocus, y las listas desplegables muestran esto mismo.
Siguiendo el ejemplo anterior, para escribir código en el evento MouseMove del Command1 para que muestre un mensaje
cuando pasa el mouse encima del botón, se tendría que seleccionar de la lista izquierda el Command1 de esta forma:
y después seleccionar el evento que se quiera utilizar disponible en el otro combo desplegable, en este caso el MouseMove
Al hacer esto en la ventana de código visual basic te agrega un procedimiento vacío:
Ahora el código que escribas dentro de este procedimiento se va a disparar cada vez que pases el mouse encima del Command1.
Por ejemplo para mostrar un mensaje con la función MsgBox cada ves que pases el puntero encima, agrega lo siguiente:
Texto planoImprimir
1. Option Explicit
2.
3. ' -- \\ Evento MouseMove
4. Private Sub Command1_MouseMove( _
5. Button As Integer, _
6. Shift As Integer, X As Single, Y As Single)
7.
8. MsgBox "Estás encima del botón", vbInformation
9.
10. End Sub
Operadores de C y C++
Esta es una lista de los operadores de los lenguajes de programación C y C++. Todos los operadores listados existen en C++. La
tercera columna indica si también están presentes en C. También hay que tener en cuenta que C no permite la sobrecarga de
operadores.
Los siguientes operadores son puntos de secuencia en ambos lenguajes (cuando no están sobrecargados): &&, ||, ?:, y , (el
operador coma).
C++ también incluye los operadores de conversión de tipos const_cast, static_cast, dynamic_cast y reinterpret_cast, que no están listados
en la tabla por brevedad. El formato de estos operadores significa que su nivel de precedencia no es importante.
La mayoría de los operadores presentes en C y C++ (con la excepción del operador coma y el operador flecha) también se
encuentran disponibles en los lenguajes de programación Java, Perl, C# y PHP con la la misma precedencia, asociatividad y
semántica. Con una única excepción: la asociatividad del operador ternario en PHP es de izquierda a derecha.
Tabla
Para los objetivos de esta tabla a, b y c representan valores válidos (literales, valores de variables o valores de retorno), nombres
de objetos o valores según el caso.
Operadores de comparación
Nombre del operador Sintaxis Sobrecargable Incluido en C
Menor que a<b Sí Sí
Menor o igual que a <= b Sí Sí
Mayor que a>b Sí Sí
Mayor o igual que a >= b Sí Sí
Diferente de a != b Sí Sí
Igual que a == b Sí Sí
Negación lógica !a Sí Sí
AND lógico a && b Sí Sí
OR lógico a || b Sí Sí
Otros operadores
Nombre del operador Sintaxis Sobrecargable Incluido en C
Asignación básica a=b Sí Sí
Llamada a función a() Sí Sí
Índice de Array a[b] Sí Sí
Indirección (Desreferencia) *a Sí Sí
Dirección de (Referencia) &a Sí Sí
Miembro de puntero a->b Sí Sí
Miembro a.b No Sí
Desreferencia a miembro por puntero a->*b Sí No
Desreferencia a miembro por objeto a.*b No No
Conversión de tipo (tipo) a Sí Sí
Coma a,b Sí Sí
Condicional ternario a?b:c No Sí
Resolución de ámbito a::b No No
Puntero a función miembro a::*b No No
Tamaño de sizeof a No Sí
sizeof(tipo)
Identificación de tipo typeid(a) No No
typeid(tipo)
Asignar almacenamiento new tipo Sí No
Asignar almacenamiento (Vector) new tipo[n] Sí No
Desasignar almacenamiento delete a Sí No
Desasignar almacenamiento (Vector) delete[] a Sí No
Negación y asignación !!a Sí SíCout<<.h>>
Una tabla de precedencias, aunque adecuada, no puede resolver todos los detalles. Por ejemplo, el operador ternario permite
expresiones arbitrarias como operador central independientemente de la precedencia del resto de operadores. Así a ? b , c : d es
interpretado como a ? (b, c) : d en vez de (a ? b), (c : d). También hay que tener en cuenta que el resultado sin paréntesis de una
expresión de conversión en C no puede ser el operando de sizeof. Por eso sizeof (int) * x es interpretado como (sizeof(int)) * x y no
como sizeof ((int) *x).
Palabras Claves
Las palabras clave son identificadores predefinidos y reservados que tienen un significado especial para el compilador. No se
pueden utilizar como identificadores en un programa a menos que incluyan el carácter @ como prefijo. Por ejemplo, @if es un
identificador válido pero if no lo es porque if es una palabra clave.
En la primera tabla de este tema se enumeran las palabras clave que son identificadores reservados en cualquier parte de un
programa de C#. En la segunda tabla de este tema se enumeran las palabras clave contextuales en C#. Las palabras clave
contextuales solamente tienen un significado especial en un contexto de programa limitado y se pueden utilizar como
identificadores fuera de ese contexto. Normalmente, al agregarse nuevas palabras clave al lenguaje C#, éstas se agregan como
palabras clave contextuales para evitar errores en programas escritos en versiones anteriores.
Operadores y porcentajes
C# proporciona muchos operadores, que son símbolos que especifican las operaciones (matemáticas, indización, llamada de
función, etc.) que se realizan en una expresión. Puede sobrecargar muchos operadores para cambiar su significado al aplicarlos a
un tipo definido por el usuario.
Las operaciones en tipos enteros (como ==, !=, <, >, &, |) se suelen permitir en tipos de enumeración (enum).
En las secciones se enumeran los operadores de C# desde la precedencia más alta a la más baja. Los operadores de cada sección
comparten el mismo nivel de precedencia.
Operadores principales
Estos son los operadores de precedencia más alta. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas
de detalles con ejemplos.
x.y: acceso a miembros.
x?.y: acceso a miembros condicional null. Devuelve null si el operando izquierdo es null.
x++: incremento de postfijo. Devuelve el valor de x y, a continuación, actualiza la ubicación de almacenamiento con el valor de
x que es uno mayor (normalmente agrega el entero 1).
x--: decremento de postfijo. Devuelve el valor de x; a continuación, actualiza la ubicación de almacenamiento con el valor de x
que es uno menos (normalmente resta el entero 1).
Unchecked: deshabilita la comprobación de desbordamiento para operaciones con enteros. Este es el comportamiento
predeterminado del compilador.
default(T): devuelve el valor inicializado predeterminado de tipo T, null para tipos de referencia, cero para tipos numéricos y
cero o null en miembros para tipos de struct.
Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que
puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
++x: incremento de prefijo. Devuelve el valor de x después de actualizar la ubicación de almacenamiento con el valor de x que
es uno mayor (normalmente agrega el entero 1).
--x: decremento de prefijo. Devuelve el valor de x después de actualizar la ubicación de almacenamiento con el valor de x que es
uno menos (normalmente resta el entero 1).
*x: desreferenciación.
Operadores multiplicativos
Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que
puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x * y: multiplicación.
x / y: división. Si los operandos son enteros, el resultado es un entero que se trunca hacia cero (por ejemplo, -7 / 2 is -3).
x % y: módulo. Si los operandos son enteros, devuelve el resto de dividir x entre y. Si q = x / y y r = x % y, entonces x = q * y +
r.
Operadores aditivos
Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que
puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x + y: suma.
x – y: resta.
Operadores de desplazamiento
Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que
puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x >> y: desplaza los bits a la derecha. Si el operando izquierdo es int o long, los bits de la izquierda se rellenan con el bit de
signo. Si el operando izquierdo es uint o ulong, los bits de la izquierda se rellenan con cero.
Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que
puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
Is: compatibilidad de tipos. Devuelve true si el operando izquierdo evaluado se puede convertir al tipo especificado en el
operando derecho (un tipo estático).
As: conversión de tipos. Devuelve el operando izquierdo convertido al tipo especificado por el operando derecho (un tipo
estático), pero as devuelve null donde (T)x produciría una excepción.
Operadores de igualdad
Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que
puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x == y: igualdad. De forma predeterminada, para los tipos de referencia distintos de string, devuelve igualdad de referencia
(prueba de identidad). Sin embargo, los tipos pueden sobrecargar ==, por lo que si su intención es probar la identidad, es mejor
usar el método ReferenceEquals en object.
x != y: distinto de. Vea el comentario de ==. Si un tipo sobrecarga ==, debe sobrecargar !=.
Este operador tiene mayor precedencia que el de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede
hacer clic en el operador para ir a la página de detalles con ejemplos.
x & y: AND lógico o bit a bit. El uso con tipos enteros y tipos enum suele estar permitido.
Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede
hacer clic en el operador para ir a la página de detalles con ejemplos.
x ^ y: XOR lógico o bit a bit. Por lo general puede usarlo con tipos enteros y tipos enum.
Operador lógico OR
Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede
hacer clic en el operador para ir a la página de detalles con ejemplos.
x | y: OR lógico o bit a bit. El uso con tipos enteros y tipos enum suele estar permitido.
Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede
hacer clic en el operador para ir a la página de detalles con ejemplos.
Operador condicional OR
Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede
hacer clic en el operador para ir a la página de detalles con ejemplos.
Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede
hacer clic en el operador para ir a la página de detalles con ejemplos.
Operador condicional
Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede
hacer clic en el operador para ir a la página de detalles con ejemplos.
Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que el de la anterior. Tenga en cuenta que
puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x = y: asignación.
x += y: incremento. Agregue el valor de y al valor de x, almacene el resultado en x y devuelva el nuevo valor. Si x designa un
event, y debe ser una función adecuada que C# agregue como un controlador de eventos.
x -= y: decremento. Reste el valor de y del valor de x, almacene el resultado en x y devuelva el nuevo valor. Si x designa un
event, y debe ser una función adecuada que C# quite como un controlador de eventos.
x *= y: asignación y multiplicación. Multiplique el valor de y por el valor de x, almacene el resultado en x y devuelva el nuevo
valor.
x /= y: asignación y división. Divida el valor de x por el valor de y, almacene el resultado en x y devuelva el nuevo valor.
x %= y: asignación y módulo. Divida el valor de x por el valor de y, almacene el resto en x y devuelva el nuevo valor.
x &= y: asignación y AND. AND el valor de y con el valor de x, almacene el resultado en x y devuelva el nuevo valor.
x |= y: asignación y OR. OR el valor de y con el valor de x, almacene el resultado en x y devuelva el nuevo valor.
x ^= y: asignación y XOR. XOR el valor de y con el valor de x, almacene el resultado en x y devuelva el nuevo valor.
x <<= y: asignación y desplazamiento a la izquierda. Desplace el valor de x a la izquierda y lugares, almacene el resultado en x
y devuelva el nuevo valor.
x >>= y: asignación y desplazamiento a la derecha. Desplace el valor de x a la derecha y posiciones, almacene el resultado en x
y devuelva el nuevo valor.
Desbordamiento aritmético
Los operadores aritméticos (+, -, *, /) pueden producir resultados fuera del rango de valores posibles para el tipo numérico
implicado. Para obtener detalles debe ir a la sección del operador en cuestión, pero en general:
El desbordamiento aritmético de enteros produce una OverflowException o descarta los bits más significativos del resultado.
La división de enteros por cero siempre produce una DivideByZeroException.
El desbordamiento aritmético de punto flotante o la división por cero nunca producen una excepción, porque los tipos de punto
flotante se basan en el estándar IEEE 754 y por tanto tienen disposiciones para representar el infinito y NaN (No es un número).
El desbordamiento aritmético decimal siempre produce una OverflowException. La división decimal por cero siempre
produce una DivideByZeroException.
Cuando se produce el desbordamiento de enteros, lo que suceda dependerá del contexto de ejecución, que puede ser comprobado
o no comprobado. En un contexto comprobado, se produce una OverflowException. En un contexto no comprobado, se
descartan los bits más significativos del resultado y la ejecución continúa. Por lo tanto, C# ofrece la posibilidad de controlar u
omitir el desbordamiento.
Además de los operadores aritméticos, las conversiones de tipo entero a tipo entero también pueden provocar un desbordamiento
(por ejemplo, la conversión de un long a un int) y están sujetas a ejecución comprobada o no comprobada. Sin embargo, los
operadores bit a bit y los de desplazamiento nunca producen desbordamiento.
Los operadores aritméticos se utilizan para realizar muchas de las operaciones aritméticas habituales que implican el cálculo de
valores numéricos representados por literales, variables, otras expresiones, llamadas a funciones y propiedades, y
constantes. También se clasifican como operadores aritméticos los operadores de desplazamiento de bits, que actúan al nivel de
bits individuales de los operandos y cambian sus modelos de bits a la izquierda o la derecha.
Operaciones aritméticas
Puede sumar dos valores en una expresión con el + (Operador, Visual Basic) o restar un valor de otro con el - (Operador, Visual
Basic), como se muestra en el siguiente ejemplo.
VB
Dim x As Integer
x = 67 + 34
x = 32 - 12
La negación también utiliza el - (Operador, Visual Basic), pero con un solo operando, como se puede ver en el ejemplo siguiente.
VB
Dim x As Integer = 65
Dim y As Integer
y = -x
La multiplicación y la división utilizan los * (Operador, Visual Basic) y / (Operador, Visual Basic), respectivamente, como se
muestra en el ejemplo siguiente.
VB
Dim y As Double
y = 45 * 55.23
y = 32 / 23
La exponenciación utiliza el ^ (Operador, Visual Basic), como se puede ver en el ejemplo siguiente.
VB
Dim z As Double
z = 23 ^ 3
' The preceding statement sets z to 12167 (the cube of 23).
La división de enteros se lleva a cabo con el \ (Operador, Visual Basic). La división de enteros devuelve el cociente, es decir, el
número entero que representa el número de veces que puede se puede dividir dividendo entre el divisor sin tener en cuenta el
valor del resto. El divisor y el dividendo deben ser tipos enteros (SByte, Byte, Short, UShort, Integer, UInteger, Long y
ULong) para este operador. Todos los demás tipos deben convertirse antes a tipos enteros. El ejemplo siguiente ilustra la
división de enteros.
VB
Dim k As Integer
k = 23 \ 5
' The preceding statement sets k to 4.
El módulo aritmético se calcula con el Mod (Operador, Visual Basic). Este operador devuelve el resto después de dividir el
divisor por el dividendo un número integral de veces. Si tanto el divisor como el dividendo son tipos enteros, el valor devuelto
es entero. Si el divisor y el dividendo son tipos de punto flotante, el valor devuelto es una variable de punto flotante. En el
siguiente ejemplo se muestra este comportamiento.
VB
La división por cero produce resultados diferentes dependiendo de los tipos de datos que se utilicen. En divisiones de enteros
(SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong), .NET Framework inicia una excepción
DivideByZeroException. En operaciones de división del tipo de datos Decimal o Single, .NET Framework también produce una
excepción DivideByZeroException.
En las divisiones de punto flotante que impliquen el tipo de datos Double, no se produce ninguna excepción y el resultado es el
miembro de clase que representa NaN, PositiveInfinity o NegativeInfinity, dependiendo del dividendo. La siguiente tabla
resume los diferentes resultados de intentar dividir un valor Double por cero.
Tipo de datos del dividendo Tipo de datos del divisor Valor del dividendo Resultado
Double Double 0 NaN (no es un número definido matemáticamente)
Double Double >0 PositiveInfinity
Double Double <0 NegativeInfinity
Cuando se detecta una excepción DivideByZeroException, puede utilizar los miembros de la excepción para controlarla. Por
ejemplo, la propiedad Message contiene el texto del mensaje de la excepción. Para obtener más información, vea Instrucción
Try...Catch...Finally (Visual Basic).
El tipo de datos del operando del modelo debe ser SByte, Byte, Short, UShort, Integer, UInteger, Long o ULong. El tipo de
datos del operando de cantidad de desplazamiento debe ser Integer o se debe ampliar a Integer.
Los desplazamientos aritméticos no son circulares, lo que significa que los bits desplazados a un extremo del resultado no se
vuelven a introducir en el otro extremo. Las posiciones de bits que quedan vacantes debido a un desplazamiento se establecen de
la siguiente manera:
VB
El operador de % calcula el resto después de dividir el primer operando por el segundo.Todos los tipos numéricos han
predefinido a operadores del resto.
class MainClass6
{
static void Main()
{
Console.WriteLine(5 % 2); // int
Console.WriteLine(-5 % 2); // int
Console.WriteLine(5.0 % 2.2); // double
Console.WriteLine(5.0m % 2.2m); // decimal
Console.WriteLine(-5.2 % 2.0); // double
}
}
/*
Output:
1
-1
0.6
0.6
-1.2
*/
Bibliotecas de Funciones
El lenguaje C, C++ contiene numerosas funciones, cuando se emplean funciones de esta biblioteca estandar, se incrementa la
transportabilidad de los programas.
Las funciones estandar se dividen en grupos, todas las funciones que pertenecen al mismo grupo estan declaradas en el archivo
de cabecera (aquel que dice xxx.h), la letra "h" significa header en inglés y es lo que se llama cabecera.
Para incluir alguna función perteneciente a estas cabeceras debemos escribir líneas de código como se muestra de ejemplo:
#include
He disenado esta tabla para que estudiemos las bibliotecas de funciones, obviamente son las que he encontrado en mis libros y
sistemas.
Bibliotecas y Descripciones de Uso
Nombre de Descripcion
Biblioteca
assert.h Es proporcionar una definicion de la macro assert, que imprime un mensaje de error y aborta el programa
alloc.h Existen funciones para asignar, liberar memoria, u obtener informacion de bloques de memoria.
ctype.h Son funciones que nos permiten conocer la naturaleza de un caracter, o bien para convertir de mayusculas a
minusculas y viceversa; y valores enteros a codigos ASCII.
dir.h Esto permite ordenar, crear, modificar, mover y eliminar directorios
errno.h Representa los numeros de error, despues que ocurre un error se puede consultar el valor de la varianble del
sistema deerrno para obtener mas informacion sobre ese error.
float.h Define los limites de los tipos de coma flotante
limits.h Define los limites de los diferentes tipos de enteros
math.h Contiene las funciones matematicas estandar utilizadas en C y C++
setjmp.h Define el tipo de jmp_buf para algunas funciones.
signal.h Contiene funciones de estado.
stdarg.h Define funciones que pueden ser llamadas con diferentes numeros de argumentos, de modo que se pueda
escribir f(a) y f(a,b).
stdef.h Se definen algunos tipos especiales
stdio.h Incorporan las funciones de Entrada - Salida E/S estandar, tipos y macros
stlib.h Declara funciones que son utiles para diferentes propositos, en especial de busqueda y ordenacion.
string.h Este archivo contiene funciones para manejo de cadenas de caracteres.
time.h Contiene funciones relativas a fechas y horas
Abre para
"r"
lectura
Abre un
"w" archivo vacio
para escritura
Abre para
escritura al
"a"
final del
archivo
Abre para
"r+" lectura/escrit
ura
Abre un
archivo vacio
"w+" para
lectura/escrit
ura
Abre para
"a+" lectura y
anadir
Abre un
archivo
"rb"
binario para
lectura.
Abre un
archivo
"wb"
binario para
escritura
Abre un
archivo
"ab"
binario para
anadir
Abre un
archivo
"rb+
binario para
"
lectura/escrit
ura.
Abre un
archivo
"wb
binario para
+"
lectura/escrit
ura
24 fprintf(f, int stdio.h int fprintf(FILE *f, Escribe datos en el fprintf(f1, "El resultado es
...) const char *formato archivo f (el resto de los %f\n",result);
[,arg,...]); argumentos
25 fputc(c, int stdio.h int fputc(int c, FILEEscribe un caracter en el fputc(*(p++), stdout);
f) *f); archivo f
26 fputs(s, int stdio.h int fputs(const char Escribe una cadena de fputs("esto es una prueba", f1);
f) *cad, FILE *f) caracteres en el archivo f
27 fread(s, int stdio.h size_t fread(void *b,Lee i2 elementos, cada fread(buf, strlen(msg)+1, 1, flujo);
i1, i2, f) size_t t, size_t n, FILE
uno de tamano i1 bytes,
*f); desde el archivo f hasta
la cadena s
28 free(p) void malloc.h o void free(void Libera un bloque de char *cad;
stdlib.h *dir_memoria); memoria reservada cuyo // asignar memoria a la cadena
principio esta indicado cad=(char *)malloc(50);
por p. ...
free(cad); // liberar memoria
29 fscanf(f, int math.h int fscanf(FILE *f, Lee datos del archivo f ( fscanf(flujo, %s%f, cad, &f);
...) const char *formato, [, el resto de los
direccion,... ]); argumentos
30 fseek(f, l, int stdio.h int fseek(FILE *f, long Mueve el puntero al fseek(f1,OL,SEEK_SET); // ir al
i) desplaza, int origen); archivo f una distancia principio
de 1 bytes desde la
posicion i (i puede
representar el principio
del archivo, la posicion
actual del puntero o el
fin del archivo.
Notas
Significa
Origen
do
Principio
SEEK_SE
de
T
archivo
Posicion
SEEK_C
actual
UR
puntero
31 ftell(f) long int stdio.h long int ftell(FILE *f); Devuelve la posicion ftell(fichen)
actual del puntero dentro
del archivo f
32 fwrite(s, int stdio.h size_t fwrite(const void Escribe i2 elementos, num=fwrite(lista,sizeof(char),25,flujo);
i1, i2, f) *p, size_t i1, size_t i2, cada uno de tamano 1
FILE *f); bytes, desde la cadena s
hasta el archivo f
33 getc(f) int stdio.h int getc(FILE *f); Lee un caracter del while(c=getc(fx) !=EOF {
archivo f print ("%c",c);
}
34 getchar( int stdio.h int getchar(void); Lee un caracter desde el int c;
) dispostivo de entrada while((*c=getchar()) != '\n')
estandar print ("%c",c);
35 gets(s) char(punter stdio.h char *gets(char *cad); Lee una cadena de gets(nombre);
o) caracteres desde el
dispositivo de entrada
estandar
36 isalnum( int ctype.h int isalnum(int c); Determina si el carac=getch();
c) argumento es if (isalnum(carac))
alfanumerico. Devuelve print("%c letra|digito \n",carac);
un valor disitinto de cero else
si es cierto; en otro caso printf("%c no letra|digito \n", carac);
devuelve 0
37 isalpha(c int ctype.h int isalpha(int c); Determina si el int c;
) argumento es alfabetico. if (isalpha(c)) printf("%c es letra\n",c);
Devuelve un valor
distinto de cero si es
cierto; en otro caso
devuelve 0.
38 isascii(c) int ctype.h int isascii(int c); Determina si el int c;
argumento es un caracter if (isascii(c)) printf('%c es un ascii\n",c)
ASCII. Devuelve un
valor disitinto de cero si
es cierto; en otro caso
devuelve 0
39 iscntrl(c) int ctype.h int isacntrl(int c); Determina si el if(iscntrl(c)) printf"%c es un caracter de
argumento es un caracter control\n",c);
ASCII de control.
Devuelve un valor
distinto de cero si es
cierto; en otro caso
devuelve 0
40 isdigit(c) int ctype.h int isdigit(int c); Determina si el numero if(isdigit(c)) printf"%c es un
es un digito decimal. digito\n",c);
Devuelve un valor
disitinto de cero si es
cierto; en otro caso
devuelve 0
41 isgraph( int ctype.h int isgraph(int c); Determina si el if(isgraph(c)) printf"%c es un caracter
c) argumento es un caracter imprimible(no espacio)\n",c);
ASCII grafico (hex 0x21
-0x7e; octal 041 -176).
Devuelve un valor
distinto de cero si es
cierto; en otro caso
devuelve 0
42 islower(c int ctype.h int islower(int c); Determina si el if(islower(c)) printf"%c es una letra
) argumento es ua minuscula\n",c);
minuscula. Devuelve un
valor distinto de cero si
es cierto; en otro caso
devuelve 0
43 isodigit(c int ctype.h int isodigit(int c); Determina si el if(isodigit(c)) printf"%c es un digito
) argumento es un digito octal\n",c);
octal. Devuelve un valor
distinto de cero si es
cierto; en otro caso
devuelve 0
44 isprint(c int ctype.h int isprintint c); Determina si el el if(isprint(c)) printf("\n"c
) argumento es un caracter imprimible\n",c);
ASCII imprimible (hex
0x20 -0x7e; octal 040 -
176). Devuelve un valor
distinto de cero si es
cierto; en otro caso
devuelve 0
45 ispunct(c int ctype.h int ispunct(int c); Determina si el if(ispunct(c)) printf"%c es un caracter
) argumento es un caracter de puntuacion\n",c);
de puntuacion. Devuelve
un valor distinto de cero
si es cierto; en otro caso
devuelve 0
46 isspace(c int ctype.h int isspace(int c); Determina si el if(isspace(c)) printf"%c es un
) argumento es un espacio espacio\n",c);
en blanco. Devuelve un
valor distinto de cero si
es cierto; en otro caso
devuelve 0
47 isupper( int ctype.h int isupper(int c); Determina si el if(isupper(c)) printf"%c es una
c) argumento es una mayuscula\n",c);
mayuscula. Devuelve un
valor distinto de cero si
es cierto; en otro caso
devuelve 0
48 isxdigit(c int ctype.h int isxdigit(int c); Determina si el ifisxdigit(c)) print"%c es un digito
) argumento es un digito hexadecimal\n",c)
hexadecimal. Devuelve
un valor distinto de cero
si es cierto; en otro caso
devuelve 0
49 labs(l) long int math.h long int labs(long int Devuelve el calorlong lx=-51654,ly;
l); absoluto de 1 ly=labs(lx);
50 log(d) double math.h double log(double d); Devuelve el logaritmo hdouble x,y;
natural de d x=10;
y=log(x);
51 log10(d) double math.h double log10(double Devuelve el logaritmno hdouble x,y;
d); (en base 10) de d x=10;
y=log10(x);
52 malloc(u void(punter stdlib.h void *malloc(size_t u); Reserva u bytes de cadena=malloc(MAX_CHR);
) o) memoria. devuelve un
puntero al principio del
espacio reservado
53 pow(d1, double math.h double pow(double d1, Devuelve d1 elevado a la double x=2.0, y=4.0, z;
d2) double d2); potencia d2 z=pow(x,y); //z sera 1.60
54 printf(...) int stdio.h int printf(const char Escribe datos en print("producto %d y %d es
*formato[,argumento,.. dispositivo de salida %d\n",x,y,x*y);
.]); estandar.
Codig
Formato
o
%c Caracter
Entero
%d
Decimal
Real
(double o
%e float),
notacion
cientifica.
Coma
%f
flotante
Cadena de
%s
caracteres
Hexadecim
%x
al sin signo
%c Caracter
Enetero
%d
Decimal
Hexadecim
%x
al
Entero
%i
Decimal
Numero
%f
Real
%o Octal
%p Puntero
%s Cadena
http://www.recursosvisualbasic.com.ar/htm/tutoriales/control_commandbutton.htm
https://es.wikipedia.org/wiki/Anexo:Operadores_de_C_y_C%2B%2B
https://msdn.microsoft.com/es-es/library/6a71f45d.aspx
https://msdn.microsoft.com/es-es/library/x53a06bb(v=vs.100).aspx
http://www.data-2013.cl/DOCS/INFORMATICA/PROGRC/cap-c9.html