Está en la página 1de 15

CURSODEGAMBAS2.0.

0
(Nivel1)

Carpano,Marzode2008

ProgramacinEnGAMBAS2.0.0

QUEESGAMBAS? Gambasnoessolounlenguajedeprogramacin,estambinunentornodeprogramacin visualparadesarrollaraplicacionesgrficasodeconsola.Haceposibleeldesarrollode aplicacionescomplicadasmuyrpidamente.Elprogramadordisealasventanasdeforma grfica,arrastraobjetosdesdelacajadeherramientasyescribeelcdigoenBASICpara cadaobjeto. ESGAMBASSOFTWARELIBRE? Si.GambassedistribuyeconlalicenciaGPLGNU(GeneralPublicLicence).Significaque sedistribuyeconelcdigofuenteyrespetalascuatrolibertadesdefinidasporla Free SoftwareFundation. ELEMENTOSDEGAMBAS ParapoderdesarrollaryejecutarprogramasenGambas,sonnecesarioslossiguientes elementos:

Un compilador, que se encargar de transformar el cdigo fuente y archivos que formenpartedeunproyectohechoengambas,esunprogramaejecutable. UninterpretecapazdehacerquelosprogramashechosenGambasseanejecutados porelsistemaoperativo. Un entorno de desarrollo que facilite la programacin y diseo de las interfaces grficasdelosprogramas. Componentes que aaden funcionalidad al lenguaje. La palabra componente en Gambastieneunsignificadoespecifico,yaquenoaludeapartesgenricas,sinoa libreras especificas que le dotan de mas posibilidades. En la actualidad existen componentesparausarxml,conexionesdered,opengl,ODBC,distintasbasesde datos,escritoriosbasadosenqt,engtk,etc.

DESCARGAREINSTALARGAMBAS ExistendiferentesvasymtodosparalainstalacindeGambas.Enlaactualidadlas versionesmasrecientesson:Gambas2.0.0yGambas2.2.1.Porrazonesdeestabilidad


ProgramacinEnGAMBAS2.0.0 2

muchosprogramadoresutilizanlaversin2.0.0,colocadaenlosrepositoriosdeDebiany Ubuntu(K,X),enesperadelarevisinporpartedelosadministradoresdeestosproyectos de la nueva versin 2.2.1 con el fin de minimizar los Bugs y tratar de aumentar la documentacinysoporte. Paralainstalacinvarepositorios: En Debian: en consola modo superusuario, ubicarse en: root:/etc/apt#, y luego tipear: nanosource.list Dentrodeestearchivocolocarlasiguienteslineas: debhttp://apt.linex.org/linex/gambas/stable/./ debhttp://apt.linex.org/linex/gtk2.10/./ Guardarloscambiosyactualizarlosrepositoriosdelasiguientemanera. Aptgetupdate aptgetinstallgambas2 Existenotrosmtodosdeinstalacinentreellosdescargarelarchivofuentedesdeelsitio oficialdeGambas,peroestetipodeinstalacinimplicaunretomayoryaqueimplicala bsquedadedependenciadelibreras,compilacindelasmismas,paraluegoprocedera compilareinstalarloscdigosfuentesdeGambas. DECLARACINDEVARIABLES Haydoslugaresdondesepuedendeclararlasvariables,dependiendodelmbitoenel quesevayanausar.Sisedeclarandentrodeunasubrutinaofuncin,estndisponibles paraserusadassolodentrodeesasubrutinaofuncin.Sisedeclaraalprincipiodel archivo de cdigo (un modulo o clase) estn disponibles para todo el cdigo de ese archivo,entodassussubrutinas. Sintaxisdedeclaracindeunavariable: DIMnombre_variableastipo_variable tipo_variable: hace referencia al tipo de dato de la variable: numero entero, cadena, decimal,boleano,etc. Lasvariablesquesedeclarenenunsubrutinaofuncinsoloseusarandentrodeellas.
ProgramacinEnGAMBAS2.0.0 3

Cuandoterminensedestruirn.Estopermiteutilizarelmismonombredevariabledentro dedistintassubrutinasysuvalornuncaseconfundiromezclar.

ParadeclararunavariablealprincipiodelModulooClaseseusalasintaxis: [STATIC](PUBLIC|PRIVATE)nombre_variableAStipo_variable

SiDefine PRIVATE: estardisponibledentrodetodoelfichero,peronoseraccesible desdeotrosficherosdelmismoproyecto. SiDefinePUBLIC:sepodraccederalavariabledesdeunficherodelproyectodistintoa dondesedeclar. SidefineSTATIC:Seusaenlosarchivosdeclase,noenlosMdulos.Sirveparadefinir uncomportamientoespecialentodoslosobjetosdeunamismaclase. SUBRUTINASYFUNCIONES Subrutina:Esunprocedimientoqueejecutaalgo,peronodevuelveningnvalor. Funcin:Esunprocedimientoquedevuelvesiempreunvaloralterminarsuejecucin.

TIPOSDEDATOS LostiposdedatossoportadosporGambas,sonlossiguientes:

Boolean:SoloaceptavaloresTrueoFalse. Byte:Representaunnumeroenteropositivoentre0y255. Short:Representaunnumeroenteroconvaloresposiblesentre32.768y+32.767 Integer: Representa un numero enterocon valores posibles entre2.147.483.648 y +2.147.483.647. Long:

Representa un numero entero con valores posibles entre:

9.223.372.036.854.775.808y+9.223.372.036.854.775.807

Single: Representa un numero real, con decimales, con valors posibles entre 1.7014118E+38y+1,7014118E+38. Float: Representa un numero real, con decimales, con valores posibles entre

ProgramacinEnGAMBAS2.0.0

8,98846567431105E+307y+8,98846567431105E+307.

Date: Almacena valores de fecha y hora. Internamente la fecha y la hora se almacenanenformatoUTC. String:Seusaparaalmacenarunacadenadetexto. Variant:Significacualquiertipodedato,esdecir,sepuedealmacenarinteger,single, boolean,etc. Object:representacualquierobjetocreadoenGambas.

CONVERSINDETIPOSDEDATOS SerealizanmedianteunasfuncionesqueestnGambas.

Cbool(expresin):Conviertelaexpresinaunvalorbooleano. Cshort(expresin),Cint(expresin)oCinteger(expresin),yClong(expresin):convierte respectivamente,laexpresinenunnumerodetipoShort,IntegeryLong.

Cdate(expresin):conviertela expresin enuna fecha. Debe tener cuidado porque soloadmiteformatodefechaeninglesmes/dia/aohora:minutos:segundos.Ejemplo: Cdate(09/06/1972)01:45:12),donde06seraeldia06ynoelmes06.

CStr(expresin):Conviertelaexpresinenunacadenadetextosintenerencuentala configuracinlocal. Str$(expresin):conviertelaexpresinenunacadenadetexto,teniendoencuentala configuracinlocal.ejemplo.Str$(CDate(09/06/197201:45:12))devuelve:06/09/1972 01:45:12

Val(expresin): Convierteunacadenadetextoenuntipo Boolean,Date oalgunode lostiposnumricos,dependiendodelcontenidodelaexpresin.

MATRICES EnGambassepuedendefinirmatricesquecontengancualquiertipodedatos,peroconla condicindequetodosloselementosdelamatrizseandelmismotipo.Noexistemas limite en la dimensin de la matriz que la memoria del ordenador y la capacidad del programadordeoperarmatricesdedimensionesgrandes.

ProgramacinEnGAMBAS2.0.0

Elejemploqueacontinuacinsemuestraeselmtododeordenacinconocidocomo mtododelaburbuja,paraelsiguienteprogramaabraunprogramabajoconsola.
PUBLICSUBMain() DIMColumnaASInteger DIMN,i,j,AuxASInteger DIMLimiteASInteger DIMvectorASInteger[] vector=NEWInteger[] PRINT"Ingreseellimitemaximoaleerelvector:" INPUTLimite FORColumna=0TOLimite PRINT"IngresaunNumero" INPUTN vector.Add(N) NEXT 'EsteeselProcedimientoBurbuja 'paraordenarlosdatosquecontieneelvector FORi=0TOLimite1 FORj=0TOLimite1 IFVector[j]>vector[j+1]THEN 'Enestaparteserealizaelintercambio Aux=vector[j] vector[j]=vector[j+1] vector[j+1]=Aux ENDIF NEXT NEXT PRINT'Haceunsaltodelinea 'Porultimoprocedemosaimprimirelvector FORj=0TOLimite PRINTvector[j] NEXT END

OPERADORESMATEMTICOS Adicional a los operadores matemticos ya conocidos en casi todos los lenguajes de programacin,citamoslossiguientes:

ProgramacinEnGAMBAS2.0.0

^eseloperadordepotencia.Ejemplo:4^3=64 Para la divisin hay dos operadores adicionales, DIV y MOD, que revuelven respectivamente, la parte entera del resultado de la divisin y el resto. Ejemplo: 9DIV2=4,9y9MOD4=1P.

Existentambinfuncionesmatemticaspararealizarclculosmascomplejos:

Abs(numero):calculaelvalorabsolutodeunnumero. Dec(numero):decrementaunnumero. Frac(numero):devuelvelapartedecimaldeunnumero. Inc(numero):Incrementaunnumero. Int(numero):devuelvelaparteenteradeunnumero. Max(numero1,numero2,...):devuelveelnumeromayor. Min(numero1,numero2,...):devuelveelnumeromenor. Round(numero,decimales):redondeaunnumeroconlosdecimalesdeseados. Rnd([mnimo],[mximo]):devuelveunnumeroaleatoriocomprendidoentremnimoy mximo.

MANEJODECADENAS Existeunmanejadordecadenasdetextoquepermiteconcatenardirectamente,setrata delsmbolo&.Ejemplo: DimnombreASString DimApellidosASString Nombre=Manuel Apellidos=AlvarezGomez PRINTApellidos&,&Nombre Lasalidaenconsolasera: AlvarezGomez,Manuel Veamosahoraellistadodelasfuncionesdisponiblesparamanejarcadenasdetexto:

ProgramacinEnGAMBAS2.0.0

Asc(cadena,[Posicin]):devuelveelcodigoASCIIdelcaracterqueestaenlaposicin indicadaenlacadenadada.Sinosedalaposicindevuelveelcdigodelprimer caracter. Chr$: devuelve un caracter a partir de su cdigo ASCII. Esta funcin es util para aadorcaracteresespecialesaunacadenadetexto.Ejemplo:

PRINTManuel&Chr$(10)&Antonio Insertarunatabulacinentrelosdosnombres,yaqueenlatablaASCIIelcdigo10 correspondeaunavancedelinea(LineFeed).

InStr(cadena, subcadena [, Inicio]): busca la subcadena dentro de la cadena y devuelveunnumeroconlaposicindondelaencontr.Sisedaelvalordeinicio,la bsquedaempezarenesaposicin.

Ejemplo: PRINTInstr(Gambasesbasic,bas,5) devuelveun11,mientrasque: PRINTInstr(Gambasesbasic,bas) devuelveuncuatro. CONTROLDEFLUJO If...Then...Else:Eslasentenciamascomnparatomarunadecisin: SintaxisBasica: IFexpresinTHEN .... ENDIF

Siseejecutaunasolainstruccin:IFexpresinTHENsentencia_a_ejecutar. Ejemplo: DIMedadASInteger ..... IFEdad>20THEN PRINTAdulto


ProgramacinEnGAMBAS2.0.0 8

ENDIF IFedad>20THENPRINTAdulto IFEdad<2ANDedad>0THEN PRINTBebe ELSEIFEdad<12THEN PRINTNio ELSEIFedad<18THEN PRINTJoven ELSE PRINTAdulto ENDIF ControlSELECTCASE. Estasentenciaproduceuncodigolimpioycomododeleer.Susintaxiseslasiguiente: SELECT[CASE]Expresin [CASEexpresin[TOexpresin#2][,...] ...] [CASEexpresin[TOexpresin#2][,...] ...] [{CASEELSE|DEFAULT} ...} ENDSELECT Ejemplo: DIMedadASInteger ... SELECTCASEedad CASE0TO2 PRINTBebe CASE2TO12

ProgramacinEnGAMBAS2.0.0

PRINTNio CASE18 PRINTBingo,yapuedesvotar CASE13TO17 PRINTJoven CASEELSE PRINTAdulto ENDSELECT ControlFOR Generalmente usado cuando se necesita contar o realizar una accin un numero determinadodeveces. Sintaxis: FORvariable=ExpresinTOExpresin[STEPexpresin] ... NEXT Ejemplo: DIMnASInteger FORn=10TO1STEP1 PRINTn NEXT ControlWHILEyREPEAT Cuandoserequiererepetirlaejecucindeunaporcindelcdigoenvariasocasiones dependiendodeunacondicin,tenemosdosinstruccionesdistintas:WHILEyREPEAT. Sucomportamientoescasiidntico.Ladiferenciaestribaenquesilacondicinnecesaria paraqueseejecuteelcdigoesfalsadesdeelprincipio,conREPEATseejecutaruna vezyconWHILEnoseejecutarnunca.Lasintaxisdeambases: WHILECondicin

ProgramacinEnGAMBAS2.0.0

10

...instrucciones WEND y REPEAT ...instrucciones UNTILCondicin En el caso del bucle WHILE existe una variante que permite sustituir WHILE por DO WHILEyWENDporLOOP.Esexactamentelomismo. Ejemplo: DIMaASInteger a=1 WHILEa<=10 PRINTHolaMundo;a INCa WEND

a=1

REPEAT PRINTHolaMundo;a INCa UNTILa>10 EVENTOSCONELTECLADO Loseventos KeyPress y KeyRelease realizanlafuncindecontrolsobreelteclado.La claseestticaKeyproporcionalainformacinnecesariaparacontrolareltecladodentrode estoseventos. El evento KeyPress es cancelable con la instruccin STOP EVENT, de modo que se

ProgramacinEnGAMBAS2.0.0

11

puedeimpedir,porejemplo,queunacadadetextoseimprimandeterminadoscaracteres. Ejemplo: En este ejemplo se bloquea un TextBox, de forma que solo permita la entrada de numeros,lapulsacindelasteclasSupr(borrar)yBackSpace(Barradohaciaatras)yel tabuladorparapasarelfocoaotrocontrol. PUBLICSUBTextBox1_KeyPress() SELECTCASEKey.Code CASE48TO57'CodigosASCIIdelosnumeros CASEKey.BackSpace'Retroceso CASEKey.Delete'Borrado CASEKey.Tab'Tabulador CASEELSE STOPEVENT

ENDSELECT END GALERIADECONTROLES

Label: Esunaetiquetasimplequecontieneunalineadetextodepocalongitud.Su funcinesmostraruntextoenunaposicindentrodeunformulario. TextLabel:SimilaralLabel,peropuedemostrartextoformateadoconHTML. TextLabel1.Text=<b>TextoconHTML</b><br>Dentrodeuna<i>etiqueta.

Ejemplo:

TextBox:Esunacajadetexto,deunasolalinea,enlacualelusuariopuedemodificar, copiar,cortaroborrartexto. TextArea:Setratadeunacajadetextoqueescapazdecontenermltipleslineas. PictureBox: Tienelafuncindemostrarunaimagen.Respondeaeventosdelratn, porloquepuedeserempleadocomocomobotnpersonalizado. ListBox: Es una listasimple. Se aaden oeliminan elementos que se representan comounalineadetextocadauno.LapropiedadModedeterminasielusuariopuede

ProgramacinEnGAMBAS2.0.0

12

nopuedeseleccionarninguno,solounoovarios.

ListView:SimilaralListBox.Puederepresentaruniconojuntoconcadaelementodela lista, y cada uno de ellos est identificado por una clave nica de texto, que nos permitehacerbsquedasdeloselementosporsucable. ComboBox:Esunalistadesplegable.Elusuariosoloveelelementoseleccionadoen cadamomentoypuededesplegarlalistaparaseleccionarunouotro.

OTROSCONTROLES TreeView:Sirvepararepresentarelementosdeunrbol,deformaquecadanodopuede tenerotrosnodoshijos. ColumView:SimilaralTreeView,perocadanodopuededisponerdecolumnas. GridView: Sirvecomorepresentacindeparrilla,deformaquedisponemosderegistros agrupadosenfilasycolumnas.Generalmenteseutilizaparainteractuarconbasesde datos. DIALOGOS(Mensajes) La clase Message se encarga de mostrar una ventana modal al usuario, en la cual podemos definir un texto, que ser una informacin o una pregunta, y una serie de botonesparaelegirunaopcin.

Message.Info:seutilizaparamostrarunmensajemeramenteinformativo.Solopermite definir un botn que normalmente tendr un texto como OK o Aceptar. Ejemplo: Messaje.info(estoesunmensaje)

Message.Delete:seutilizaparaindicarquesevaaprocederaeliminaralgo(archivos, registrosdeunatabla,etc,),ysesolicitaalusuariosuconfirmacin. Message.Error:Seempleaparaindicarunmensajedeerror. Message.Question: es una pregunta al usuario, generalmente para confirmar una accinounaopcindeconfiguracin. Message.Warning: adviertealusuariodequelaaccinquevaarealizarsuponeun ciertopeligro,porejemplo,perdidadedatosdeunatablaquepodransertilesaun.

ProgramacinEnGAMBAS2.0.0

13

MENSAJESPERSONALIZADOS LosmtodosdelaclaseMessagedevuelvenunnumeroenteroquedenotaelbotnqueel usuariopuls.Enestesentido,podemospersonalizarlosmensajes,conlacantidadde botonesquequeramosyelmensajequedeseemos. Ejemplo: DimRespuestaasInteger Respuesta=Message.Warning(DeseaCerrarelPrograma?,Si,No,Derepente) IFRespuesta=1THEN Message.Info(GraciasporusarelPrograma) Me.close ELSE Message.Info(Aversitedecides...) ENDIF MENUS La creacin de Mens es realmente sencilla, ya que un asistente del IDE permite disearlos. Tan solo hay que situarse sobre un formulario, pulsar el botn derecho, y seleccionarlaopcinEditordeMen... Laspropiedadesmasimportantesson:

Nombre: queeselnombredelobjetomenyquecorresponderconsugestorde eventos. Titulo:queeseltextoqueaparecerenlapantalla. Icono:quepermiteelegirunaimagenparalaopcindelmen. TeclasdeAtajo:paralosaccesossinnecesidadderatn.

MENUCONTEXTUAL Siloquedeseamosescrearunmendelosquesemuestrancuandoelusuariopulsa, porejemplo,elbotnderechosobreunformularioocontrol,tendremosquecrearunmen

ProgramacinEnGAMBAS2.0.0

14

de primer nivel con su propiedad visible FALSE, y sus correspondientes hijos. Luego indicaremosanuestromenuinvisiblequedebemostrarsecomounmencontextual. Ejemplo: PUBLICSUBForm_Menu() MnuEditar.Popup() END

ProgramacinEnGAMBAS2.0.0

15

También podría gustarte