Está en la página 1de 10

1

I. NOTACIN HUNGARA

En programacin informtica, la notacin hngara es un sistema usado
normalmente para crear los nombres de variables. Tambin se utiliza para
nombrar las instancias de objetos en lenguajes de programacin visuales, como
por ejemplo Delphi. El nombre de la notacin proviene del hecho de que su
inventor, Charles Simonyi, naci en Hungra.

Esta convencin es muy poco utilizada en las viejas versiones de Delphi
pero es muy utilizada por los programadores de Microsoft y, en particular, en la
programacin del sistema operativo Windows.

Consiste en prefijos en minsculas que se aaden a los nombres de las
variables y que indican su tipo. El resto del nombre indica, lo ms claramente
posible, la funcin que realiza la variable.

NOTACIN HUNGARA EN VISUAL BASIC
Puesto que a la hora de realizar proyectos se suelen establecer
previamente unas Coding Style Guidelines (Guas de estilo de programacin), no
conviene hacerlas distintas para cada lenguaje y se podra definir un estndar de
notacin hngara que tenga un ligero compromiso con la facilidad de
reconocimiento de tipos, sin que llegue a suponer un infierno sobre la complejidad
de lectura de cdigo.

Se trata de una lista de prefijos de control y objeto de Visual Basic
proporcionada como referencia para el uso coherente de la notacin hngara. Esta
lista le ayudar en la estandarizacin de la estructura, estilo y lgica de una
aplicacin de codificacin.

2
Object Prefix Example
---------------------------------------------------------------------
Form frm frmFileOpen
Check box chk ReadOnly
Combo box cbo cboEnglish
Data-bound combo box dbc dbcEnglish
Command button cmd cmdCancel
Data dat datBiblio
Directory list box dir dirSource
Drive list box drv drvTarget
File list box fil filSource
Frame fra fraLanguage
Grid grd grdPrices
Data-bound grid dbg dbgPrices
Horizontal scroll bar hsb hsbVolume
Image img imgIcon
Label lbl lblHelpMessage
Line lin linVertical
List box lst lstPolicyCodes
Data-bound list box dbl dblPolicyCode
Menu mnu mnuFileOpen
OLE container ole oleObject1
Option button opt optFrench
Picture box pic picDiskSpace
Shape shp shpCircle
Text box txt txtGetText
Timer tmr tmrAlarm

Database Objects Prefix Example
--------------------------------------------------------------------------
ODBC Database db dbAccounts
ODBC Dynaset object dyn dynSalesByRegion
Field collection fld fldCustomer
Field object fld fldAddress
Form frm frmNewUser
Index object idx idxAge
Index collection idx idxNewAge
Macro mcr mcrCollectUsers
QueryDef object qry qrySalesByRegion
Query qry qrySalesByRegion
Report rpt rptAnnualSales
Snapshot object snp snpForecast
Table object tbl tblCustomer
TableDef object tbd tbdCustomers






3
Object Prefix Example
------------------------------------------------------------------------
Vertical scroll bar vsb vsbRate
Animation button ani aniMailBox
bed Pen Bedit bedFirstName
Checkbox chk chkReadOnly
Picture clip clp clpToolbar
Communications com comFax
Control ctl ctrCurrent
Data control dat datBiblioDirectory
Directory list box dir dirSource
Common dialog ctrl dlg dlgFileOpen
Drive list box drv drvTarget
File list box fil filSource
Form frm frmEntry
Frame (3d) fra fraStyle
Gauge gau gauStatus
Group push button gpb gpbChannel
Graph gra graRevenue
Grid grd grdPrices
Pen Hedit hed hedSignature
Horizontalscrollbar hsb hsbVolume
Image img imgIcon
Pen Ink ink inkMap
Keyboard key status key keyCaps
Label lbl lblHelpMessage
Line lin linVertical
MDI child form mdi mdiNote
MAPI message mpm mpmSentMessage
MAPI session mps mpsSession
MCI mci mciVideo
Menu mnu mnuFileOpen
Object obj objUserTable
Option Button (3d) opt optRed
Outline control out outOrgChart
3d Panel pnl (3d) pnlTitleList
Report control rpt rptQtr1Earnings
Shape controls shp shpCircle
Spin control spn spnPages
Timer tmr tmrAlarm
Vertical scroll bar vsb vsbRate








4
Objects Prefix Example
---------------------------------------------------------------------
Alarm(Microhelp) almm almmAlarm
Animate(Microhelp) anim animAnimate
Callback(Microhelp) calm callback
Combo Box(Pioneer) cbop cbopComboBox
Combo Box(Sheridan) cbos cbosComboBox
DB_Check(Pioneer) chkp chkpCheckBox
chart(Microhelp) tm tmChart
Clock(Microhelp) clkm clkmClock
Command Button(Microhelp) cmdm cmdmCommandButton
DB_Command(Pioneer) cmdp cmdpCommandButton
Command Button(Group)(Microhelp) cmgm cmgmBtton
Command Button (icon) (Microhelp) cmim cmimCommandButton
CardDeck(Microhelp) crdm crdmCard
Dice(Microhelp) dicm dicmDice
SSDir(Sheridan) dirs dirsDirList
SSDrive(Sheridan) drvs drvsDriveList
File List(Microhelp) film filmFileList
SSFile(Sheridan) fils filsFileList
Flip(Microhelp) flpm flpmButton
Form Scroll(Microhelp) fsrm fsrmFormScroll
Gauge(Microhelp) gagm gagmGauge
Graph(Other) gpho gphoGraph
Q_Grid(Pioneer) grdp grdpGrid
Horizontal Scroll Bar(Microhelp) hsbm hsbmScroll
DB_Hscroll(Pioneer) hsbp hsbpScroll
Histo(Microhelp) hstm hstmHistograph
Invisible(Microhelp) invm invmInvisible
Icon Tag(Microhelp) itgm itgmListBox
Key State(Microhelp kstm kstmKeyState
Label (3d) (Microhelp) lblm lblmLabel
Line(Microhelp) linm linmLine
DB_List(Pioneer) lstp lstpListBox
SSList(Sheridan) lsts lstsListBox
MDI Control(Microhelp) mdcm mdcmMDIChild
SSMenu(Sheridan) mnus mnusMenu
Marque(Microhelp) mrqm mrqmMarque
OddPic(Microhelp) odpm odpmPicture
Picture(Microhelp) picm picmPicture
DB_Picture(Pioneer) picp picpPicture
Property Vwr(Microhelp) pvrm vrmPropertyViewer
DB_RadioGroup(Group)(Pioneer) radp radqRadioGroup
Slider(Microhelp) sldm sldmSlider
Spinner(Microhelp) spnm spnmSpinner
Spreadsheet(Microhelp) sprm sprmSpreadsheet
Stretcher(Microhelp) strm strmStretcher
Screen Saver(Microhelp) svrm svrmSaver
Switcher(Microhelp) swtm swtmSwitcher
Tag(Microhelp) tagm tagmListBox
Timer(Microhelp) tmrm tmrmTimer
ToolBar(Microhelp) tolm tolmToolBar
Tree(Microhelp) trem tremTree
Input(Microhelp) (Text) txtm inpmText
DB_Text(Microhelp) txtp txtpText

5
II. EJEMPLO NOTACIONES DE 1 CARCTER

Prefijo Significado
a
'array'. Para vectores/matrices/listas de n dimensiones ordenadas
escalarmente.
b 'booleano'. Para variables que tomen slo dos tipos de valores.
c 'char'. Para el tipo primitivo de carcter alfanumrico individual.
d 'double'. Para tipos numricos de alta precisin, como double o float.
e 'event'. Para eventos.
f 'funcin'. Slo la utilizaremos delante de funciones cuando se traten de
funciones que se aadan como observadores de un evento (ya que usar
esta notacin para cualquier mtodo o funcin sera bastante engorroso).
g 'delegated'. Para tipos delegados.
h 'hashtable'. Colecciones ordenables mediante clave hash
(hUsuarios[juan23]).
i 'int'. Para nmeros enteros en general, tanto enteros normales como
aquellos tipos enteros de ms capacidad (como long).
l 'lock'. Para objetos de control que nos faciliten el uso de exclusiones
mutuas, candados y semforos.
n 'enum'. Para tipos enumerados.

6
o 'objeto'. Para objetos en general (no se debe usar la notacin hngara
para distinguir entre tipos de objetos, salvo escasas excepciones).
p 'puntero'. Para lenguajes con aritmtica de punteros.
s 'string'. Para variables de tipo cadena de texto, ya sean nativos o arrays
de chars. Este tipo de datos es muy habitual en lenguajes sin lgica de
punteros. Si se usara el objeto de tipo String en estos casos,
acudiremos a este identificador en lugar de al o de objeto.
t 'struct'. Similar al 'o' de objetos, ste se usara para variables de tipo
struct en general (es decir, objetos de tipo primitivo).
v 'variable'. Para variables que adquieran diferentes tipos de valores.
Normalmente slo acudiremos a esta opcin en lenguajes no tipados
(como JavaScript/EcmaScript). La usaremos cuando no estemos seguros
del tipo de valor que albergar una variable. Tambin puede valer para
objetos que tengan un tipo genrico T.
y 'byte'.

III. FUNCIONES VAL() STR()

LA FUNCIN VAL
En Visual Basic una peticin de datos al usuario no necesitar ser dispuesta
en el cdigo, sino que se obtendr a travs de un objeto prefabricado: un TextBox.
Con frecuencia el dato que queremos obtener ser un valor numrico, mientras
que sin embargo el contenido de los TextBox es tipo texto. Por ello deberemos
realizar una conversin. La funcin Val nos permite obtener el contenido de un
TextBox en formato numrico (Integer, Single, Double, etc.).


7
El contenido que introduce un usuario a travs de un TextBox tiene carcter de
texto. Para convertir un nmero en formato texto a una variable numrica se usa la
funcin Val. La sintaxis a emplear es:





Ejemplo:






Supone que la variable A, que ha sido definida como tipo Single, adopta el
contenido numrico del TextBox denominado TextBox1.

La funcin Val deja de leer la cadena en el primer carcter que no puede
reconocer como parte de un nmero. Los espacios en blanco, los tabuladores y
los avances de lnea se eliminan. Val(" 38205 (Distrito Norte)") devuelve 38205
como valor numrico. Los espacios en blanco se eliminan, y el resto de cadena a
partir de donde no se puede reconocer un valor numrico se ignora. Si la cadena
empieza con un contenido no numrico Val devuelve cero. Por ejemplo Val ("
(Distrito Norte) 38205 " devuelve cero.

La funcin Val slo reconoce el punto (.) como separador decimal vlido
(aunque esto puede verse afectado por la configuracin regional de tu ordenador).
Cuando se usa un separador decimal diferente, debe realizarse un tratamiento
previo de la cadena o utilizarse una funcin de conversin de tipos como CSng
CDbl para convertir la cadena a un nmero.

VARIABLE = VAL(CADENA)
Dim A As Single
A = Val(TextBox1.Text)

8

FUNCIN STR

Convierte una expresin numrica en una expresin de caracteres. Su
sintaxis es Nombre_variable = Str(nmero) donde nmero es cualquier expresin
numrica vlida y nombre_variable es una variable de caracteres. Si nmero es
positivo, el signo mas (+), est presente o no, es sustituido durante la conversin
por un espacio en blanco. El signo menos (-) queda tal cual.

Ejemplo:
a = 20: b = 30
Print Str(a) + Str(b) 'escribe: 20 30
Print Str(a - b) 'escribe: -10

La funcin Str slo reconoce el punto (.) como separador decimal vlido.
Cuando el separador decimal pueda ser otro (por ejemplo, en aplicaciones
internacionales), se debe utilizar CStr para convertir un nmero a una cadena.

IV. TIPOS DE ESTRUCTURAS DE CONTROL
a) De seleccin
Las estructuras de control de seleccin, ejecutan un bloque de instrucciones
u otro, o saltan a un subprograma o subrutina segn se cumpla o no una
condicin.
Select-Case

Esta sentencia permite ejecutar una de entre varias acciones en funcin del
valor de una expresin. Es una alternativa a if then else cuando se compara la
misma expresin con diferentes valores. Se evala la expresin, dando como
resultado un nmero. Luego, se recorren los "Case" dentro de la estructura
buscando que el nmero coincida con uno de los valores.
Es necesario que coincidan todos sus valores. Cuando se encuentra la
primera coincidencia, se ejecuta el bloque de sentencias correspondiente y se sale
de la estructura Select-Case. Si no se encuentra ninguna coincidencia con ningn
valor, se ejecuta el bloque de sentencias de la seccin "Case Else".

9

Ejemplo:
SELECT (Expresin)
CASE Valor1
(Bloque de sentencias 1)
CASE Valor2
(Bloque de sentencias 2)
CASE Valor n
(Bloque de sentencias n)
CASE ELSE
(Bloque de sentencias "Else")
END SELECT


b) De control iterativas
Las estructuras de control iterativas o de repeticin, inician o repiten un
bloque de instrucciones si se cumple una condicin o mientras se cumple una
condicin.


Do-While: Mientras la condicin sea verdadera, se ejecutarn las sentencias del
bloque.
DO WHILE (Condicin)
(Bloque de sentencias)
LOOP

Que tambin puede expresarse:
WHILE (Condicin)
(Bloque de sentencias)
WEND


Estructuras anidadas
Las estructuras de control bsicas pueden anidarse, es decir pueden
ponerse una dentro de otra.


10



Estructura For-Next dentro de una estructura If-Then-Else

IF A > B THEN
FOR X = 1 TO 5
(Bloque de sentencias 1)
NEXT
ELSE
(Bloque de instrucciones 2)
END IF

También podría gustarte