Está en la página 1de 746

Tras los pasos de un

Hacker

Nstor Marroqun
Tras los pasos de un
Hacker
Nstor Marroqun
Copyright-2.010

Reservados todos los derechos:

Ninguna parte de la historia narrada (la obra literaria) puede ser reproducida, grabada o recuperada
por ningn medio, transmitida de cualquier forma fsica o electrnica sin el permiso por escrito de
Nstor Marroqun.

El trabajo acadmico, as como los ejercicios resueltos y propuestos son de libre distribucin
conforme lo estipulan las mltiples licencias de acceso pblico a la informacin, siempre y cuando
usted reconozca y nombre a sus autores.

Todas las marcas y productos mencionados pertenecen a sus legtimos dueos y empresas
fabricantes.

Publicacin electrnica de:


NMC Research Ca. Ltda.
Inti Oe2-449 y Galo Molina.
Quito Ecuador

Marketing y Comercializacin:

Correo-e: sales@nmcresearch.com

Pgina web: http://www.nmcresearch.com

Soporte: support@nmcresearch.com

Informacin: info@nmcresearch.com

Obra registrada en el Instituto Ecuatoriano de la Propiedad Intelectual.


IEPI Trmite No: 001171. Certificado No: 033671.
Rev. 1.00 - 02 de julio del ao 2.010

ISBN(e-book): 978-9-942030-19-1
ISBN (book): 978-1-453850-43-5

Impreso en los Estados Unidos de Norte Amrica.

Rev. 1.1012 de agosto de 2.012

-2 -
DEDICATORIA

Dedico este, el trabajo sobre mi vida, en especial:

A mis padres Carlos y Cecilia, a mi esposa Anita, a mis hijos Daniel y Nstor por
haber soportado las locuras de este hombre y las consecuencias de las mismas,
por su cario y apoyo incondicional.

AJessenia quien con su visin y consejo propici que finalmente esta obra salga a
la luz, por su paciencia y por todo el tiempo que compartimos juntos revisando
este texto.

A mis amigos en general y de forma particular a mis compaeros militares de la


promocin de oficiales del Ejrcito Ecuatoriano correspondiente al ao 1.990.

A quienes han sido mis ocultos compaeros, ellos, los denominados CABALLEROS
DEL SILENCIO, personal del Servicio de Inteligencia de las Fuerzas Militares del
Ecuador, quienes en su momento marcaron mi vida, en primer lugar al
solicitarme colaboracin, luego al perseguirme y finalmente al permitir que
forme a algunos agentes en el arte del Hacking a todos ellos mi gratitud
entraable.

Nstor Marroqun
Autor

-3-
-4-
Un gran poder, conlleva una gran responsabilidad

Benjamn Franklin
(1.706-1.790, Estadista y cientfico Estadounidense)

-5-
-6-
CONTENIDO

Introduccin (I).......................................................................................................................................... - 29 -

Captulo I. Historia de la Computacin............................................................................................ - 35 -

1.1 Antecedentes Histricos.................................................................................................... - 35 -

1.2 Generaciones de las computadoras.............................................................................. - 43 -

Primera generacin................................................................................................................. - 43 -

Segunda Generacin................................................................................................................ - 44 -

Tercera Generacin................................................................................................................. - 46 -

Cuarta generacin.................................................................................................................... - 47 -

1.3 Las Computadoras................................................................................................................ -48

Supercomputadoras................................................................................................................ -48

Macrocomputadoras o Mainframes................................................................................. - 49 -

Minicomputadoras................................................................................................................... -50

Microcomputadoras o PC...................................................................................................... - 51 -

Estaciones de trabajo o Workstations............................................................................ -52 -

1.4 Lenguajes de Programacin............................................................................................. - 53 -

COBOL (1.951)........................................................................................................................... - 55 -

FORTRAN (1.954) .................................................................................................................... - 55 -

ALGOL (1.958)........................................................................................................................... - 56 -

LISP (1.959)................................................................................................................................ - 57 -

FORTH (1.960).......................................................................................................................... - 58 -

-7-
Tras los pasos de un... Hacker

BASIC (1.964)............................................................................................................................. - 59 -

PASCAL (1.970)......................................................................................................................... - 61 -

ADA (1.975)................................................................................................................................ - 62 -

LOGO (1.976).............................................................................................................................. - 62 -

C (1.978)....................................................................................................................................... - 63 -

JAVA (1.991)............................................................................................................................... - 64

Notas y Bibliografa....................................................................................................................... - 65 -

Introduccin (II)......................................................................................................................................... - 69 -

Captulo II. Nmeros y Sistemas de Numeracin ....................................................................... - 73 -

2.1 Concepto de nmero............................................................................................................ - 73 -

2.2 Concepto de Sistema de Numeracin........................................................................... - 73 -

2.3 Representacin de los nmeros..................................................................................... - 73 -

2.4 Transformacin de nmeros entre sistemas de numeracin ........................... - 77 -

2.4.1 De un sistema en base b al sistema decimal............................................. - 77 -

Ejercicios resueltos: .......................................................................................................... - 79 -

Ejercicios propuestos:...................................................................................................... - 83 -

2.4.2 Del sistema decimal a un sistema en base b............................................. - 85 -

Ejercicios resueltos: .......................................................................................................... - 87 -

Ejercicios propuestos:...................................................................................................... - 93 -

2.4.3 De un sistema en base b a un sistema en base c..................................... - 95 -

Caso especial......................................................................................................................... - 95 -

Ejercicios resueltos: .......................................................................................................... - 97 -

Ejercicios propuestos.....................................................................................................- 101 -

-8-
Contenido

2.5 Operaciones fundamentales en los sistemas de numeracin..........................- 103 -

2.5.1 Suma.........................................................................................................................- 103 -

Definicin.............................................................................................................................- 103 -

Elementos............................................................................................................................- 103 -

Propiedades........................................................................................................................- 104 -

a) Propiedad Clausurativa......................................................................................- 104 -

b) Propiedad Conmutativa.....................................................................................- 104 -

c) Propiedad Asociativa...........................................................................................- 104 -

d) Propiedad Modulativa.........................................................................................- 104 -

Procedimiento ...................................................................................................................- 105 -

Ejercicios resueltos: ........................................................................................................- 107 -

Ejercicios propuestos:....................................................................................................- 109 -

2.5.2 Resta.........................................................................................................................- 111 -

Definicin.............................................................................................................................- 111 -

Elementos............................................................................................................................- 111 -

Propiedades........................................................................................................................- 111 -

a) Propiedad Clausurativa......................................................................................- 111 -

b) Propiedad Asociativa...........................................................................................- 111 -

c) Propiedad Modulativa.........................................................................................- 112 -

Procedimiento ...................................................................................................................- 112 -

Ejercicios resueltos: ........................................................................................................- 114 -

Ejercicios propuestos:....................................................................................................- 117 -

2.5.3 Multiplicacin......................................................................................................- 119 -

-9-
Tras los pasos de un... Hacker

Definicin.............................................................................................................................- 119 -

Elementos............................................................................................................................- 119 -

Propiedades........................................................................................................................- 119 -

a) Propiedad Clausurativa......................................................................................- 119 -

b) Propiedad Conmutativa.....................................................................................- 119 -

c) Propiedad Asociativa...........................................................................................- 120

d) Propiedad Modulativa.........................................................................................- 120

e) Inverso Multiplicativo.........................................................................................- 120

Procedimiento ...................................................................................................................- 120

Ejercicios resueltos: ........................................................................................................- 122 -

Ejercicios propuestos:....................................................................................................- 127 -

2.5.4 Divisin...................................................................................................................- 129 -

Definicin.............................................................................................................................- 129 -

Elementos............................................................................................................................- 129 -

Propiedades........................................................................................................................- 129 -

a) Propiedad Clausurativa......................................................................................- 129 -

b) Propiedad Modulativa.........................................................................................- 129 -

Procedimiento ...................................................................................................................- 130 -

Ejercicios resueltos: ........................................................................................................- 134 -

Ejercicios propuestos:....................................................................................................- 141 -

Notas y Bibliografa.....................................................................................................................- 142 -

Introduccin (III).....................................................................................................................................- 145 -

Captulo III. Lgica Binaria.................................................................................................................- 147 -

- 10 -
Contenido

Ejercicios resueltos: ........................................................................................................- 148

Ejercicios propuestos:....................................................................................................- 151 -

3.1 lgebra de Boole.........................................................................................................- 153 -

Definicin.........................................................................................................................................- 153 -

3.2 Operaciones lgicas...................................................................................................- 153 -

No (NOT, ).................................................................................................................................- 153 -

a) Tabla de Verdad.................................................................................................- 154 -

b) Compuerta Lgica..............................................................................................- 154 -

O (Suma lgica, or, +)............................................................................................................- 154 -

a) Tabla de Verdad.................................................................................................- 154 -

b) Compuerta Lgica..............................................................................................- 155 -

Y (producto lgico, AND, )................................................................................................- 155 -

a) Tabla de Verdad.................................................................................................- 155 -

b) Compuerta Lgica..............................................................................................- 155 -

Onegado (NOR, +)...............................................................................................................- 156 -

a) Tabla de Verdad.................................................................................................- 156 -

b) Compuerta Lgica..............................................................................................- 156 -

Y negada (NAND, - ).............................................................................................................- 156 -

a) Tabla de Verdad.................................................................................................- 157 -

b) Compuerta Lgica..............................................................................................- 157 -

O exclusivo (XOR,).............................................................................................................- 157 -

a) Tabla de Verdad.................................................................................................- 158

b) Compuerta Lgica..............................................................................................- 158

- 11 -
Tras los pasos de un... Hacker

O exclusivo negado. (EQV, ) ...........................................................................................- 158


a) Tabla de Verdad.................................................................................................- 158

b) Compuerta Lgica..............................................................................................- 159 -

Ejercicios resueltos:....................................................................................................................- 159 -

Ejercicios propuestos:................................................................................................................- 165 -

3.3 Leyes del lgebra de Boole....................................................................................- 169 -

a) Ley Clausurativa..................................................................................................................- 169 -

b) Ley Conmutativa..................................................................................................................- 169 -

c) Ley Asociativa.......................................................................................................................- 169 -

d) Ley Distributiva...................................................................................................................- 170 -

3.4 Teoremas del lgebra de Boole ...........................................................................- 171 -

Ejercicios resueltos:....................................................................................................................- 172 -

Ejercicios propuestos:................................................................................................................- 175 -

Notas y Bibliografa.....................................................................................................................- 177

Introduccin (IV).....................................................................................................................................- 179 -

Captulo IV. La informacin................................................................................................................- 181 -

4.1 Definicin.......................................................................................................................- 181 -

4.2 Organizacin y ponderacin..................................................................................- 182 -

4.2.1 Bit......................................................................................................................................- 182 -

4.2.2 Byte...................................................................................................................................- 183 -

4.2.3 Mltiplos y submltiplos.........................................................................................- 184 -

4.2.4 Caracteres (smbolos)..............................................................................................- 185 -

4.2.5 Campo..............................................................................................................................- 185 -

- 12 -
Contenido

4.2.6 Registro...........................................................................................................................- 186 -

4.2.7 Archivo ............................................................................................................................- 186 -

4.2.8 Base de datos................................................................................................................- 186 -

4.3 Los datos.........................................................................................................................- 187 -

4.3.1 Definicin.......................................................................................................................- 187 -

4.3.2 Clases de datos.............................................................................................................- 187 -

4.3.3 Datos numricos.........................................................................................................- 187 -

a) Datos numricos enteros..........................................................................................- 188 -

b) Datos numricos reales.............................................................................................- 188 -

4.3.4 Datos no numricos...................................................................................................- 188 -

a) Datos no numricos tipo hilera..............................................................................- 189 -

b) Datos no numricos tipo lgico.............................................................................- 189 -

4.4 Los operadores............................................................................................................- 189 -

a) Operadores aritmticos.............................................................................................- 189 -

b) Operadores de relacin.............................................................................................- 190 -

c) Operadores lgicos......................................................................................................- 190 -

4.5 Funciones normalizadas en informtica..........................................................- 190 -

4.6 Errores............................................................................................................................- 191 -

a) Errores de sintaxis.......................................................................................................- 192 -

b) Errores de uso ...............................................................................................................- 192 -

c) Errores de lgica...........................................................................................................- 192 -

4.7 Expresiones informticas.......................................................................................- 192 -

Ejercicios resueltos:....................................................................................................................- 193 -

- 13 -
Tras los pasos de un... Hacker

Ejercicios propuestos:................................................................................................................- 199 -

Notas y Bibliografa.....................................................................................................................- 202 -

Introduccin (V).......................................................................................................................................- 205 -

Captulo V. Arquitectura de una computadora..........................................................................- 211 -

5.1 Dispositivo de control y proceso.........................................................................- 213 -

5.1.1 Unidad de Control......................................................................................................- 214 -

5.1.2 Unidad Aritmtico Lgica.......................................................................................- 215 -

5.1.3 Memoria para el uso del dispositivo de control y proceso ......................- 215 -

5.1.4 Interfaz de conexin con el camino de datos o bus.....................................- 215 -

5.1.4.1 Interfaz de conexin con los dispositivos de memoria.....................- 216 -

5.1.4.2 Interfaz de conexin con los dispositivos de entrada y salida.......-216 -

5.1.5 Reloj..................................................................................................................................- 216 -

5.2 El camino de datos.....................................................................................................- 217 -


5.3 Dispositivos de memoria.........................................................................................- 218

5.3.1. Memorias ROM .........................................................................................................- 218

5.3.2. Memorias RAM .........................................................................................................- 219 -

5.3.3. Unidades de almacenamiento masivo............................................................- 220

5.4 Dispositivos y unidades de entrada...................................................................- 221 -

5.5 Dispositivos y unidades de salida.......................................................................- 222 -

5.6 Programas de control de dispositivos...............................................................- 222 -

5.7 Programas del sistema.............................................................................................- 223 -

5.8 Programas de aplicacin.........................................................................................- 223 -

Notas y Bibliografa.....................................................................................................................- 224 -

- 14 -
Contenido

Introduccin (VI).....................................................................................................................................- 227 -

Captulo VI. Fundamentos de la programacin.........................................................................- 231 -

6.1 Algoritmo................................................................................................................................- 231 -

6.2 Caractersticas......................................................................................................................- 232 -

6.2.1 Finitud.....................................................................................................................- 232 -

6.2.2 Definibilidad.........................................................................................................- 232 -

6.2.3 Entrada...................................................................................................................- 232 -

6.2.4 Salida.......................................................................................................................- 233 -

6.2.5 Efectividad.............................................................................................................- 233 -

6.3 Teorema del programa estructurado.........................................................................- 233 -

6.4 Instrucciones que definen las estructuras de control en BASIC....................- 237 -

6.4.1 Estructuras de control secuencial...............................................................- 238 -

6.4.2 Estructuras de control condicional............................................................- 243 -

6.4.3 Estructuras de control iterativo..................................................................- 247 -

Notas y Bibliografa.....................................................................................................................- 252 -

Introduccin (VII)....................................................................................................................................- 255 -

Captulo VII. Elaboracin de algoritmos con BASIC................................................................- 261 -

Ejercicios resueltos:....................................................................................................................- 263 -

Ejercicios propuestos:................................................................................................................- 291 -

Notas y Bibliografa.....................................................................................................................- 293 -

Introduccin (VIII)..................................................................................................................................- 295 -

Captulo VIII. Bucles, funciones y subrutinas con BASIC........................................................- 299 -

8.1. Iteraciones y bucles...................................................................................................- 299 -

- 15 -
Tras los pasos de un... Hacker

8.1.1 Bucles determinados e indeterminados...........................................................- 299 -

8.1.2 Bucles anidados...........................................................................................................- 300 -

Ejercicios resueltos:....................................................................................................................- 301 -

8.2 Funciones.......................................................................................................................- 314 -

Ejercicios resueltos:....................................................................................................................- 315 -

8.3 Subrutinas......................................................................................................................- 327 -

Ejercicios resueltos:....................................................................................................................- 328 -

Ejercicios propuestos:................................................................................................................- 343 -

Notas y Bibliografa.....................................................................................................................- 344 -

Introduccin (IX)......................................................................................................................................- 347 -

Captulo IX. Arreglos, mtodos de clasificacin y bsqueda................................................- 351 -

9.1 Arreglos...........................................................................................................................- 351 -

Vectores y matrices.....................................................................................................................- 355 -

Ejercicios resueltos:....................................................................................................................- 356 -

9.2 Mtodos de clasificacin..........................................................................................- 373 -

La implementacin......................................................................................................................- 375 -

9.2.1 Mtodos por insercin .............................................................................................- 380 -

Insercin Directa....................................................................................................................- 380 -

Mtodo de Shell.......................................................................................................................- 384 -

9.2.2 Mtodos por intercambio.......................................................................................- 388 -

Mtodo de la burbuja............................................................................................................- 388 -

Mtodo paralelo de Batcher..............................................................................................- 391 -

Mtodo Quick Sort.................................................................................................................- 394 -

- 16 -
Contenido

Mtodo de la sacudida (cctel).........................................................................................- 398 -

9.2.3 Mtodos por seleccin..............................................................................................-401 -

Seleccin directa.....................................................................................................................-402 -

Heap Sort....................................................................................................................................-405 -

Mtodo de Cambio.................................................................................................................- 409 -

Laboratorio de informtica......................................................................................................- 413 -

Resultados del laboratorio.......................................................................................................- 422 -

Ejercicios propuestos:................................................................................................................- 427 -

9.3 Mtodos de bsqueda...............................................................................................- 429 -

9.3.1 Bsqueda secuencial.................................................................................................- 429 -

Ejercicios resueltos:....................................................................................................................-430

9.3.2 Bsqueda en arreglos ordenados........................................................................-434 -

Ejercicios resueltos:....................................................................................................................-436 -

Notas y Bibliografa.....................................................................................................................- 444 -

Introduccin (X).......................................................................................................................................- 447

Captulo X. Virus y antivirus...............................................................................................................-451 -

10.1 Preliminares.................................................................................................................-451 -

10.2 Algo de historia............................................................................................................-454 -

Los comienzos...............................................................................................................................-454 -

Los aos 80.....................................................................................................................................- 455 -

El comienzo de los virus............................................................................................................- 457 -

Empiezan los programas antivirus......................................................................................- 458 -

10.3 Qu es un virus informtico?...............................................................................- 472 -

- 17 -
Tras los pasos de un... Hacker

10.4 Cmo funciona un virus informtico?.............................................................- 472 -

10.5 Clasificacin de los virus informticos..............................................................- 473 -

Virus Pers.................................................................................................................................- 473 -

Bomba lgica..................................................................................................................................- 473 -

Gusano o worm .............................................................................................................................- 474 -

Virus de macro..............................................................................................................................- 474 -

Caballo de Troya...........................................................................................................................- 474 -

Fallos de seguridad en el diseo de algunos sistemas.................................................- 475 -

10.6 Formas de infeccin..................................................................................................- 476 -

10.7 Efectos destructivos de los virus.........................................................................- 478 -

10.8 Formas de ocultamiento..........................................................................................- 478 -

10.9 Prevencin, deteccin y eliminacin .................................................................- 479 -

Windows 95 y superiores.........................................................................................................- 480 -

Problemas con Windows 95 y superiores.........................................................................- 480 -

Virus en la Internet......................................................................................................................- 481 -

10.10Qu es un antivirus?................................................................................................-482 -

Qu debemos buscar en un antivirus?..............................................................................- 483 -

Cmo reaccionarante una infeccin?...............................................................................- 484 -

Notas y Bibliografa.....................................................................................................................- 484 -

Captulo XI. La historia.........................................................................................................................- 487 -

11.1 Los comienzos..............................................................................................................- 487 -

11.2 Agentes del Servicio de Inteligencia. El momento que el guila perdi sus
huevos..........................................................................................................................................- 488 -

- 18 -
Contenido

11.3 La confirmacin que el invento serva..............................................................- 495 -

11.4 La visita a Holanda.....................................................................................................- 498 -

11.5 La cacera de brujas...................................................................................................-501 -

11.6 La Comdex de La Vegas de 1.997.........................................................................- 503 -

11.7 La persecucin judicial.............................................................................................-506 -

11.8 El premio a la innovacin tecnolgica en Amrica Latina en 2.000....-508

11.9 Atrapenal delincuente!..........................................................................................- 510 -

11.10El hack a un portal bancario..................................................................................- 514 -

11.11Reventando claves de las cuentas de correos electrnicos .....................- 516 -

11.12Suplantando direcciones de correo electrnico ...........................................- 517 -

11.13El cifrador de flujo NMC Stream......................................................................- 519 -

11.14El Sistema de Comunicaciones Seguro (NMCSCS)..................................- 520

11.15Actualidad......................................................................................................................- 521 -
Breve glosario de trminos.................................................................................................................- 523 -

Anexos...........................................................................................................................................................- 579 -

Anexo I. NMC Stream.........................................................................................................................- 581 -

Descripcin y formalizacin del NMC Stream.............................................................- 581 -

Definicin algortmica del NMCStream.........................................................................- 583 -

La funcin h.....................................................................................................................................- 584 -

Aproximacin al nivel de seguridad alcanzado..............................................................-586 -

Conclusiones...................................................................................................................................- 589 -

Notas y Bibliografa.....................................................................................................................- 589 -

La implementacin......................................................................................................................- 593 -

- 19 -
Tras los pasos de un... Hacker

Anexo II. Cdigo ASCII..........................................................................................................................- 623 -

Anexo III. Instrucciones en True BASIC........................................................................................- 629 -

Estructuras e Instrucciones Ordinarias........................................................................- 629 -

Instrucciones de Entrada y Salida...................................................................................- 630 -

Instrucciones para el manejo de Archivos..................................................................- 630 -

Funciones y Subrutinas........................................................................................................- 631 -

Instrucciones de Grficas y Sonido.................................................................................- 631 -

Instrucciones MAT.................................................................................................................- 632 -

Estructuras de Mdulo.........................................................................................................- 632 -

Manejo de Excepciones........................................................................................................- 633 -

Subrutinas internas...............................................................................................................- 633 -

Listado Alfabtico de las Instrucciones en True BASIC.........................................- 635 -

Instruccin BOXAREA...............................................................................................................- 635 -

Instruccin BOX CIRCLE............................................................................................................- 635 -

Instruccin BOXCLEAR.............................................................................................................- 635 -

Instruccin BOXELLIPSE.........................................................................................................- 636 -

Instruccin BOX KEEP................................................................................................................- 636 -

Instruccin BOX LINES..............................................................................................................- 636 -

Instruccin BOX SHOW..............................................................................................................- 636 -

Instruccin CALL..........................................................................................................................- 636 -

Instruccin CLEAR.......................................................................................................................- 637 -

Instruccin DATA.........................................................................................................................- 637 -

Instruccin DECLARE DEF.......................................................................................................- 637 -

- 20 -
Contenido

Instruccin DEF............................................................................................................................- 638 -

Estructura DEF..............................................................................................................................- 638 -

Instruccin DIM ............................................................................................................................- 639 -

Iteracin DO....................................................................................................................................- 639 -

Instruccin DRAW.......................................................................................................................- 639 -

Instruccin END............................................................................................................................- 640

Instruccin END DEF..................................................................................................................- 641 -

Instruccin END IF......................................................................................................................- 641 -

Instruccin END PICTURE........................................................................................................- 641 -

Instruccin END SELECT..........................................................................................................- 641 -

Instruccin END SUB..................................................................................................................- 641 -

Instruccin EXIT DEF.................................................................................................................- 641 -

Instruccin EXIT DO....................................................................................................................- 642 -

Instruccin EXIT FOR.................................................................................................................- 642 -

Instruccin EXIT PICTURE.......................................................................................................- 642 -

Instruccin EXITSUB.................................................................................................................- 642 -

Instruccin EXTERNAL..............................................................................................................- 643 -

Instruccin FLOOD ......................................................................................................................- 643 -

Iteracin FOR.................................................................................................................................- 643 -

Instruccin IF.................................................................................................................................- 644 -

Estructura IF...................................................................................................................................- 644 -

Instruccin INPUT .......................................................................................................................- 645 -

Instruccin LET.............................................................................................................................- 645 -

- 21 -
Tras los pasos de un... Hacker

Instruccin LIBRARY..................................................................................................................- 645 -

Instruccin LINE INPUT............................................................................................................- 646 -

Instruccin LOCAL.......................................................................................................................- 646 -

Instruccin LOOP.........................................................................................................................- 646 -

Instruccin MAT INPUT ............................................................................................................- 647 -

Instruccin MAT LINE INPUT.................................................................................................- 647 -

Instruccin MAT PRINT ............................................................................................................- 647 -

Instruccin MATREAD..............................................................................................................- 648

Instruccin NEXT.........................................................................................................................- 648

Instruccin OPTIONANGLE....................................................................................................- 648

Instruccin OPTIONTYPO .......................................................................................................- 649 -

Instruccin PAUSE.......................................................................................................................- 649 -

Estructura PICTURE....................................................................................................................- 649 -

Instruccin PLAY..........................................................................................................................- 650

Instrucciones PLOT.....................................................................................................................- 650

Instruccin PLOT POINTS........................................................................................................- 650

Instruccin PLOT LINES............................................................................................................- 650

Instruccin PLOTAREA.............................................................................................................- 651 -

Instruccin PLOTTEXT.............................................................................................................- 651 -

Instruccin PLOTsin parmetros.........................................................................................- 651 -

Instruccin PRINT........................................................................................................................- 652 -

Instruccin PROGRAM ...............................................................................................................- 653 -

Instruccin RANDOMIZE..........................................................................................................- 653 -

- 22 -
Contenido

Instruccin READ.........................................................................................................................- 653 -

Instruccin REM...........................................................................................................................- 653 -

Instruccin RESTORE.................................................................................................................- 654 -

Estructura SELECTCASE..........................................................................................................- 654 -

Instruccin SETBACK................................................................................................................- 655 -

Instruccin SETCOLOR.............................................................................................................- 655 -

Instruccin SET MODE...............................................................................................................- 656 -

Instruccin SETWINDOW........................................................................................................- 656 -

Instruccin SOUND......................................................................................................................- 656 -

Instruccin STOP..........................................................................................................................- 656 -

Estructura SUB..............................................................................................................................- 657 -

Estructura WHEN.........................................................................................................................- 657 -

Anexo IV. Funciones Internas en True BASIC.............................................................................- 659 -

Funciones Matemticas.......................................................................................................- 659 -

Funciones de Fecha y Hora.................................................................................................- 660

Funciones String a Nmeros..............................................................................................- 660

Funciones de Transformacin de Strings....................................................................- 661 -

Funciones de Bsqueda en Strings.................................................................................- 661 -

Funciones en Arreglos..........................................................................................................- 661 -

Funciones MAT (matrices).................................................................................................- 662 -

Listado Alfabtico de las Funciones en True BASIC................................................- 663 -

Funcin ABS....................................................................................................................................- 663 -

Funcin ACOS.................................................................................................................................- 663 -

- 23 -
Tras los pasos de un... Hacker

Funcin ANGLE.............................................................................................................................- 663 -

Funcin ASIN..................................................................................................................................- 663 -

Funcin ATN...................................................................................................................................- 664 -

Funcin CEIL..................................................................................................................................- 664 -

Funcin CHR$................................................................................................................................- 664 -

Funcin de Arreglo CON............................................................................................................- 665 -

Funcin COS....................................................................................................................................- 665 -

Funcin COSH................................................................................................................................- 665 -

Funcin COT...................................................................................................................................- 665 -

Funcin CPOS.................................................................................................................................- 665 -

Funcin CPOSR..............................................................................................................................- 666 -

Funcin CSC....................................................................................................................................- 666 -

Funcin DATE................................................................................................................................- 667 -

Funcin DATE$..............................................................................................................................- 667 -

Funcin DEG ...................................................................................................................................- 667 -

Funcin DET...................................................................................................................................- 667 -

Funcin DOT...................................................................................................................................- 668

Funcin EPS....................................................................................................................................- 668

Funcin EXLINE............................................................................................................................- 668

Funcin EXLINE$..........................................................................................................................- 668

Funcin EXP....................................................................................................................................- 669 -

Funcin EXTEXT$.........................................................................................................................- 669 -

Funcin EXTYPE...........................................................................................................................- 669 -

- 24 -
Contenido

Funcin FP.......................................................................................................................................- 670 -

Funcin de Arreglo IDN.............................................................................................................- 670 -

Funcin INT....................................................................................................................................- 670 -

Funcin de Arreglo INV.............................................................................................................- 670 -

Funcin IP........................................................................................................................................- 670 -

Funcin LBOUND..........................................................................................................................- 671 -

Funcin LCASE$............................................................................................................................- 671 -

Funcin LEN ...................................................................................................................................- 671 -

Funcin LOG...................................................................................................................................- 672 -

Funcin LOG10..............................................................................................................................- 672 -

Funcin LOG2.................................................................................................................................- 672 -

Funcin LTRIM$...........................................................................................................................- 672 -

Funcin MAX..................................................................................................................................- 673 -

Funcin MAXLEN .........................................................................................................................- 673 -

Funcin MAXNUM........................................................................................................................- 673 -

Funcin MAXSIZE.........................................................................................................................- 673 -

Funcin MIN ...................................................................................................................................- 673 -

Funcin MOD..................................................................................................................................- 674 -

Funcin NCPOS..............................................................................................................................- 674 -

Funcin NCPOSR...........................................................................................................................- 674 -

Funcin de Arreglo NUL$.........................................................................................................- 675 -

Funcin NUM..................................................................................................................................- 675 -

Funcin NUM$...............................................................................................................................- 676 -

- 25 -
Tras los pasos de un... Hacker

Funcin ORD...................................................................................................................................- 676 -

Funcin PI........................................................................................................................................- 676 -

Funcin POS....................................................................................................................................- 677 -

Funcin POSR.................................................................................................................................- 677 -

Funcin RAD...................................................................................................................................- 678 -

Funcin REMAINDER.................................................................................................................- 678 -

Funcin REPEAT$........................................................................................................................- 678 -

Funcin RND ..................................................................................................................................- 678 -

Funcin ROUND ............................................................................................................................- 679 -

Funcin RTRIM$...........................................................................................................................- 679 -

Funcin RUNTIME.......................................................................................................................- 679 -

Funcin SEC....................................................................................................................................- 679 -

Funcin SGN ...................................................................................................................................- 680 -

Funcin SIN.....................................................................................................................................- 680 -

Funcin SINH.................................................................................................................................- 680 -

Funcin SIZE...................................................................................................................................- 680 -

Funcin SQR...................................................................................................................................- 681 -

Funcin STR$.................................................................................................................................- 681 -

Funcin STRWIDTH....................................................................................................................- 681 -

Funcin TAB...................................................................................................................................- 681 -

Funcin TAN...................................................................................................................................- 682 -

Funcin TANH ...............................................................................................................................- 682 -

Funcin TIME.................................................................................................................................- 682 -

- 26 -
Contenido

Funcin TIME$..............................................................................................................................- 683 -

Funcin TRIM$..............................................................................................................................- 683 -

Funcin de Arreglo TRN............................................................................................................- 683 -

Funcin TRUNCATE....................................................................................................................- 683 -

Funcin UBOUND.........................................................................................................................- 684 -

Funcin UCASE$...........................................................................................................................- 684 -

Funcin USING$............................................................................................................................- 684 -

Funcin VAL...................................................................................................................................- 685 -

Funcin de Arreglo ZER............................................................................................................- 685 -

Anexo V. Explicacin de los Mensajes de Error.........................................................................- 687 -

ndice Alfabtico.......................................................................................................................................- 719 -

- 27 -
Tras los pasos de un... Hacker

- 28 -
INTRODUCCIN (I)

Esta es la historia de mi vida, en tan pocos aos he vivido tantas y tantas


aventuras informticas, por las cuales para algunos represento un peligro
(especialmente para los organismos de control y poder de mi pas), para otros
soy una especie de leyenda o hroe a quien imitar. Por mis logros de
investigador cientista en el campo de la Informtica, he conseguido un espacio en
el concierto informtico local y mundial. No deseo que los hechos que relato en
este libro sean tomados al pie de la letra o como hechos histricos (aunque en mi
vida lo son); ms bien, pudieran ser atribuidos a la imaginacin y audacia propia
de un Hacker (con todo lo vivido hay que tomar precauciones), ya que algunas de
las situaciones que describo son de difcil comprobacin1 pero que han ocurrido
y solo las cuento con fines didcticos. Deslindo cualquier responsabilidad que me
pueda conllevar acciones o demandas de cualquier tipo.
El lector despus de analizar este texto podr sacar sus propias conclusiones y
sabr valorar el mensaje que este libro pretende difundir.
Tambin mis lectores ms jvenes, podrn introducirse en este fascinante mundo
de las Ciencias de la Computacin de una manera poco convencional y en s muy
emocionante. Usando la narrativa como herramienta motivadora, podrn
aprender algunos temas tcnicos que son materia de estudio en varios cursos de
computacin e informtica, donde explico en un lenguaje prctico y de fcil
entendimiento cmo incursionar en el arte de la programacin?
En fin, preprense que aqu comienza

... Nacun da lunes 23 de noviembre de 1.970 en la Ciudad de Quito, capital de la


Repblica del Ecuador, mi nacimiento segn dicen mis padres (Carlos y Cecilia, a
ellos mi respeto, cario y gratitud por todo lo que han hecho) y en especial mi

1 Especialmente los episodios relacionados con los militares y las agencias de investigacin del Gobierno de los Estados Unidos de Norte Amrica, ya
que existe una poltica de secretismo en ciertos aspectos que si salieran a la luz pblica, se conmocionara a la sociedad y sin duda cambiara la
Historia Nacional, usualmente existe una negativa oficial en confirmar tal o cual hecho; sino, pregunten al Gobierno Norteamericano si existe el
rea 51.

- 29 -
Tras los pasos de un... Hacker

madre, tuvo demasiadas complicaciones, ya que el periodo de mi gestacin, fue


truncado cumplido el sexto mes con una intervencin quirrgica que tena por
objetivo salvar la vida de mi madre. Los mdicos que la atendieron procedieron
con esta operacin; adems, aprovecharon para saber en qu condiciones me
encontraba?

Las posibilidades de sobrevivir eran de un 20%, pes aproximadamente 1 Kg y


mi vida se sostena con los aparatos que hoy en da prolongan la vida a las
personas que en otro tiempo o en otras circunstancias inevitablemente moriran,
pero en mi caso por suerte esto no sucedi. Las cosas no fueron tan fciles, en
artculo de muerte, aproximadamente a los 18 das de nacido, fui bautizado en la
Iglesia Catlica de Iaquito, el 11 de diciembre de 1.970 bajo los nombres de
Nstor Napolen. Aunque soy muy escptico de los temas religiosos y
paranormales, sin lugar a dudas creo que estos nombres influyeron en mi vida,
por esta razn har una breve resea de los mismos:

Nstor, es uno de los hroes legendarios de la Ilada. El menor de los 12


hijos que tuvieron sus padres Neleo y Cloris. El nico, que al no haber
participado en la aventura de sus hermanos que intentaron el robo de los
bueyes de Gerin, se salv de la matanza de los Nereidas protagonizada
por Hrcules. Fue uno de los Argonautas y en la guerra contra Troya se
distingui tanto por su arrojo en los combates como por su buen consejo
y elocuencia. Los sitiadores de Troya sentan por l una gran veneracin.
En su juventud se distingui en la guerra contra los arcadios y los eleos,
as como en la de los lapitas y los centauros. Nstor es en la Ilada y la
Odisea el prototipo del anciano experimentado, prudente y comprensivo
cuyo consejo es tan decisivo en la guerra como las armas. l, convenci a
Aquiles para que se uniese a la expedicin contra Troya y se reconcilie
con Agamenn. Nstor recibi la visita de Telmaco y sentenci cuando
vio la deslumbrante belleza de Helena, que justificaba la razn de aquella
cruel guerra.

Napolen (1.769-1.821), emperador de los franceses (1.804-1.815) que


consolid e instituy muchas de las reformas de la Revolucin Francesa.
Asimismo fue uno de los ms grandes militares de todos los tiempos,
conquist la mayor parte de Europa e intent modernizar las naciones en
las que gobern. Naci el 15 de agosto de 1.769 en Ajaccio (Crcega) y
recibi el nombre de Napoleone. Era el segundo de los ocho hijos de

- 30 -
La historia... Introduccin (I).

Carlos Bonaparte y Letizia Ramolino, miembros ambos de la pequea


burguesa corso-italiana. Su padre trabajaba como abogado y luch por la
independencia de Crcega; despus que los franceses ocuparan la isla en
1.768, ejerci como fiscal y juez e ingres en la aristocracia francesa con
el ttulo de conde.
Gracias a la influencia de su padre, la formacin de Napolen en Brienne y
en la Escuela Militar de Pars estuvo subvencionada por el propio Rey
Luis XVI. Termin sus estudios en 1.785 a los 16 aos y sirvi en un
regimiento de artillera con el grado de teniente. Una vez que dio
comienzo la Revolucin Francesa, pas a ser teniente coronel de la
Guardia Nacional Corsa (1.791); sin embargo, cuando Crcega declar su
independencia en 1.793, Bonaparte decididamente partidario del rgimen
republicano huy a Francia con su familia. Fue nombrado jefe de
artillera del ejrcito encargado de la reconquista de Toln, una base
naval alzada en armas contra la Repblica con el apoyo de Gran Bretaa
(que junto a Prusia, Austria, Holanda y Espaa, tras la declaracin de
guerra francesa a sta ltima, haban constituido la Primera Coalicin
contra Francia en 1.793). Reemplaz a un general herido y distribuyendo
hbilmente sus caones, expuls del puerto a las naves britnicas y
reconquist finalmente esta posicin. Como recompensa por su accin
Bonaparte fue ascendido a general de brigada a la edad de 24 aos. En
1.795 salv al gobierno revolucionario restableciendo el orden tras una
insurreccin realista desatada en Pars, acciones realizadas cuya
influencia histrica hizo que el gran Bolvar d la ansiada libertad a 5 de
nuestras naciones del dominio espaol y como podrn ver en el relato de
mi vida, las cualidades de ambos personajes se han presentado y sin
querer se han manifestado pero desde mi caballo de batalla, la
informtica.

Una vez pasada esta etapa de crisis en mi incipiente vida y con las condiciones
econmicas y polticas del pas de entonces (para los que no sepan, hay que
acotar que en el Ecuador se instaur una dictadura militar en 1.972), las
medicinas y tratamientos para poder darme una calidad de vida aceptable, hacan
que mi padre dentro de sus posibilidades de trabajo como mecnico, que no eran
diferentes a las de la mayora de la poblacin de clase media baja, haga esfuerzos
extraordinarios para solventar estos gastos y los que vendran.

- 31 -
Tras los pasos de un... Hacker

Pas el tiempo y al cumplir dos aos, todava perda de manera intempestiva la


coordinacin para caminar, de esta manera frecuentemente visitaba el Hospital
BACA ORTIZ, ya sea por las roturas de cabeza producidas por las cadas o por las
infecciones intestinales provocadas por todas y cada una de las cosas que un nio
de esa edad se lleva a su boca, nada especial que otros nios de mi pas no hayan
pasado hasta el momento, solo que para mi delicada salud, la carga de agentes
externos era demasiada para que mis disminuidas defensas corporales puedan
hacerles frente.
Al cursar el tercer ao de mi vida, por un descuido de mi abuela materna
(Antonia), inger veneno para ratas; veneno conocido en el medio como 10-80,
una vez ms llegu a la Sala de Emergencias del antes citado centro de salud y
los mdicos hicieron hasta lo imposible para salvarme la vida, desconozco los
nombres de quienes intervinieron en tan heroica accin, pero a todos ellos mi
sincero agradecimiento. Posterior a este incidente, durante los aos que me
atendieron y me trataron en tan noble institucin, los mdicos me conocan como
el nio que burl a la muerte; palabras predestinatorias de lo que en el futuro
hara al burlar a los sistemas del Departamento de Defensa de los Estados
Unidos de Norte Amrica y los sistemas anti-hackers que la CIA (Central
Intelligence Agency) y el FBI (Federal Bureau of Investigations) tienen instalados
en sus servidores de informacin a los cuales se tena acceso a travs de la
Internet (ARPANET), lo mismo que al atacar con fines didcticos al servidor de
correo electrnico del Ministerio de Defensa del Ecuador (Comando Conjunto de
las Fuerzas Armadas), atacar algunos portales bancarios locales con el nico afn
de probar qu tan seguros? eran sus esquemas de autenticacin; y, finalmente
cuando se desat la persecucin y la cacera de brujas por atrapar al
delincuente, hice uso de todos mis recursos intelectuales, materiales e
informticos para evitar que los grupos de lite de la Polica Nacional y Fuerzas
Militares de mi pas me atraparan (nada nuevo en la historia de un Hacker).
Transcurrira el tiempo, hasta cumplir 4 aos articulaba muy pocas frases,
siempre fui callado y de pocas palabras, as como renuente a estar con otros
nios, me gustaba la soledad y la observacin de las cosas, miraba el vuelo de los
pjaros, el caminar de los insectos, el movimiento de ciertos juguetes que para la
poca eran fuera de serie, ya que podan autopropulsarse al retrocederlos y
soltarlos. Juguetes que me los regalara mi to Tarquino, ya que por su carrera
militar, constantemente haca cursos en diversas partes del mundo y en una de
esas ocasiones haba comprado estos juguetes en Ciudad de Panam.

- 32 -
La historia... Introduccin (I).

Este inters innato de saber: Por qu existen estas cosas?, Cmo funcionan?,
Dnde estn los principios que las hacen funcionar?, etc., motivaban mi falta de
inters de realizar las actividades que otros nios a esa edad hacen y se
consideran normales, lo que yo haca dadas las manifestaciones tempranas de
inteligencia fuera de lo normal, determinaron que mis familiares cercanos me
pusieran el sobrenombre de GENIO.
Por fin lleg la etapa escolar, al cumplir 5 aos ingres sin pasar por la
preparatoria a primer grado de la Escuela Fiscal Luciano Andrade Marn
ubicada al norte de la capital, por razones de trabajo de mi padre no pude
terminar este primer ao de la escuela y volv a tomar este curso en la Escuela
Particular Paulo Sexto, escuela y colegio religioso regido por los Padres
Josefinos, ubicado al sur de Quito. En esta etapa de mi vida estudiantil, sobresal
en aprovechamiento y conducta, siendo uno de los mejores egresados de la
escuela en mencin. No era raro que sacara 13 sobre 10 (hoy se califica sobre 20
puntos), ya que en los ejercicios desarrollados en clase, el profesor de turno para
motivar a su alumnado ofreca 1 punto al examen al que terminara primero tal o
cual ejercicio, siempre fui el primero en mi clase y siempre obtena estos puntos,
al sacar 10 sobre 10 en el examen, no era raro que me quedaran debiendo puntos
para el prximo examen o ao. En las ferias de ciencias propona desarrollar
ambiciosos proyectos, que siempre eran galardonados al final del ao con sendos
diplomas y felicitaciones por parte de las autoridades de la escuela y colegio, he
perdido la cuenta del nmero de diplomas que poseo por haber sobresalido en
ciencias en la etapa escolar.
Avanza el tiempo y llegan los aos 80s, especficamente el ao de 1.983,
empezaba la etapa colegial y a la vez la primera ocasin que tuve de toparme con
una calculadora/computadora (Tandy Radio Shack modelo TRS-80 Pocket
Computer II, Fig. 40) que mi to Ral haba adquirido para cursar su carrera de
ingeniera civil en la Universidad Central del Ecuador. Al ver uno de los juegos
que posea esta mquina qued fascinado, y ms que fascinado, naci mi inters
por conocer: Cmo funcionaba esta maravillosa mquina?, Cmo poda jugar de
manera inteligente?, Cules eran los fundamentos que hacan funcionar estos
programas?
Pero como todo tiene una historia y para entender algo, uno tiene que conocer su
historia, me puse a investigar la Historia de la Computacin para satisfacer
algunas interrogantes que tena: Cuntas clases de computadoras existen?, Por
cules criterios las clasifican?, Cules son los ms importantes lenguajes de

- 33 -
Tras los pasos de un... Hacker

programacin que el hombre ha creado para programarlas?


En fin, muchos tpicos que hasta ese entonces permanecan en el ms absoluto
misterio, ya que en ese tiempo tener clases de computacin en el colegio sonaba a
ficcin...
Ms adelante, cuando retome el relato de mi vida continuar contndoles cmo
aprenda programar una computadora?
Hasta entonces, aprendan un poco de la Historia de la Computacin

- 34 -
CAPTULO I. HISTORIA DE LA COMPUTACIN

1.1 ANTECEDENTESHISTRICOS

Cuando el hombre tom conciencia de que existe y que adems de l existen otras
cosas que complementan su ambiente, como son agua, rocas, rboles, animales,
etc., sinti la necesidad de tomar propiedad de estos elementos, automticamente
con los medios que la naturaleza le haba dotado, intuitivamente surgi la idea de
nmero y con esta idea desarroll un mtodo para poder contar sus
pertenencias, empez con la utilizacin de sus dedos, con la invencin de la
escritura y de sus guarismos, inmediatamente cre los correspondientes a los de
su idea intuitiva de cantidad o nmero, es decir, los que hoy conocemos como
dgitos decimales.

FIG. 1. CONTABILIDAD BABILONIA.

Con la necesidad creada de llevar una cuenta de sus rebaos de ovejas, vacas,
cerdos, caballos, la produccin de sus sembros, cunto maz?, arroz, dtiles,
naranjas, etc., tiene y produce la tierra, saber cuntos de su especie existen en su
comarca?, nace una de las ciencias que ms ha fascinado al hombre, la
matemtica; y, con ella, grandes pensadores en la historia de la humanidad la
fueron perfeccionando, comenzando con los antiguos babilonios (Fig.1), los
grandes matemticos rabes, los griegos (Euclides, Pitgoras, etc.), los chinos
entre otros, que dieron forma y pudieron cristalizar ideas en conceptos

- 35 -
Tras los pasos de un... Hacker

matemticos, axiomas y teoremas, stos produciran a su vez los que se conocen


como mtodos numricos, que no son otra cosa que la aplicacin de los teoremas
y axiomas en la realizacin de clculos, como son por ejemplo, el mtodo de la
obtencin de la raz cuadrada, el clculo de la funcin trigonomtrica coseno, la
obtencin del rea de un tringulo, etc.

Los mtodos numricos que son llevados a cabo por las computadoras, son los
que en informtica se denominan algoritmos.
Con el perfeccionamiento de las formas de llevar a cabo estos clculos, el uso de
las primitivas formas de ayudarse para la obtencin de respuestas en las que no
utilice sus dedos, surge en la antigua China hace unos 5.000 aos una mquina
para agilizar la contabilidad, el denominado BACO (Fig. 2); al transcurrir el
tiempo, el hombre siempre ha querido agilizar los clculos; ha diseado
mquinas mecnicas para realizarlos.

FIG. 2. EL BACO.

Es el inventor y pintor Leonardo Da Vinci (1.452-1.519) quien ide una mquina


que fuese capaz de realizar sumas, la misma que quedara solo en diseo. En el
ao 1.642, cuando el joven matemtico francs Blaise Pascal (1.623-1.662, Fig.3,
en su honor existe un lenguaje de programacin de computadoras llamado
PASCAL), crea la primera sumadora mecnica que se denomin LA PASCALINA
(Fig. 4) como ayuda para que su padre pueda hacer sumas sin equivocarse. Esta
funcionaba a base de engranes y ruedas.

- 36 -
Historia de la Computacin... Captulo I.

FIG. 3. BLAISE PASCAL FIG. 4. LA PASCALINA.

Siguiendo el curso de esta historia, Charles Babbage (1.792-1.871, Fig. 5), quien
con sus ideas, si hubiera nacido 100 aos despus habra revolucionado la
historia de la humanidad; inventa una mquina que con las limitaciones
tecnolgicas de su poca era capaz de calcular tablas matemticas, a su invento lo
denomin la MQUINA DIFERENCIAL (Fig. 6).

FIG. 5. CHARLES BABBAGE. FIG. 6. MQUINA DIFERENCIAL.

En 1.834, cuando trabajaba en los avances de la mquina que haba creado,


Babbage concibi la idea de una MQUINA ANALTICA. En esencia, esta era una
computadora de propsito general, que era capaz de sumar, restar, multiplicar y
dividir (estos mtodos los estudiaremos a fondo en este texto) a una velocidad de
una suma por segundo!
El diseo requera miles de engranes y mecanismos que ocupaban el rea de un
estadio de ftbol, Babbage trabaj en su mquina analtica hasta su muerte. Los
planos del detalle de su mquina, describan las caractersticas que hoy son parte
de la computadora.
Siguiendo en este interesante relato, la mquina de tejer inventada en 1.801 por

- 37 -
Tras los pasos de un... Hacker

Joseph Marie Jacquard (1.753-1.834) usada todava en la actualidad, se controla


por medio de tarjetas perforadas.
El telar de Jacquard opera de la siguiente manera: Las tarjetas se perforan
estratgicamente y se acomodan en cierta secuencia para indicar un diseo de
tejido en particular.
Charles Babbage quiso aplicar el concepto de las tarjetas perforadas del telar en
su mquina analtica.

FIG. 7. LADY ADA BYRON DE LOVELACE.

En 1.843, Lady Ada Augusta Byron de Lovelace (1.815-1.852, en su honor un


lenguaje de programacin de computadoras se llama ADA, Fig. 7), sugiri la idea
de que las tarjetas perforadas pudieran adaptarse de manera que propiciaran
que la mquina de Babbage repitiera ciertas operaciones.
Por estas ideas, a Lady Byron se la considera la primera programadora.
En el nuevo mundo, la oficina de censos de los Estados Unidos de Norte Amrica,
comision al experto en estadstica Herman Hollerith (1.860-1.929, Fig. 8), para
que llevara a cabo el censo de 1.890. Para conseguir esto, Hollerith ide y
construy una mquina que era capaz de leer tarjetas perforadas y contabilizar
estos resultados, con esta mquina el censo se termin en slo tres aos y la
oficina se ahorr alrededor de 5 millones de dlares. As empieza lo que hoy
conocemos como procesamiento automtico de datos. Hollerith no copi las
ideas de Jacquard, sino que su trabajo se bas en la denominada fotografa de

- 38 -
Historia de la Computacin... Captulo I.

perforacin, con la que algunas compaas de transporte ferroviario de la poca


expedan boletos con descripciones fsicas del pasajero; los conductores hacan
orificios en los boletos que describan el color de cabello, de los ojos y la forma de
la nariz del pasajero.
Estos detalles le dieron a Hollerith la idea de hacer una fotografa perforada de
cada persona que iba a ser censada. Con el logro de este contrato con el gobierno,
Hollerith funda la Tabulating Machine Company, luego form la Computing
Tabulating Recording Company.

FIG. 8. HOLLERITH.

Los resultados de las mquinas tabuladoras tenan que ser actualizados de


manera manual, hasta que en 1.919 la Computing Tabulating Recording
Company anunci la aparicin de la impresora/listadora. Esta innovacin
revolucion la manera en que las empresas efectuaban sus operaciones y es en
1.924 cuando la compaa de Hollerith, cambia el nombre por el mundialmente
conocido International Business Machines Co. (Logo IBM, Fig. 9).

FIG. 9. LOGOTIPO ORIGINAL DE LA IBM.

- 39 -
Tras los pasos de un... Hacker

Una antigua patente de un dispositivo que mucha gente crey que era la primera
computadora digital electrnica, se invalid en 1.973 por orden de un tribunal
federal y oficialmente se le dio el crdito a John Vincent Atanasoff (1.903-1.995,
Fig. 10) como el inventor de la computadora digital electrnica. El Dr. Atanasoff,
catedrtico de la Universidad Estatal de Iowa, desarroll la primera computadora
digital electrnica entre los aos 1.937 a 1.942.

FIG. 10. ATANASOFF. FIG. 11. BERRY.

Llam a su invento la computadora Atanasoff-Berry solo ABC (Atanasoff-Berry


Computer). Un estudiante graduado, Clifford Edward Berry (1.918-1.963, Fig.
11) fue de til ayuda en la construccin de la computadora ABC. (Fig. 12).

Algunos autores consideran que no hay una sola persona a la que se le pueda
atribuir el haber inventado la computadora, sino que fue el esfuerzo de muchas
personas.

FIG. 12. COMPUTADORA ABC.

- 40 -
Historia de la Computacin... Captulo I.

Sin embargo en el antiguo edificio de Fsica de la Universidad de Iowa aparece


una placa con la siguiente leyenda: La primera computadora digital electrnica
de operacin automtica del mundo, fue construida en este edificio en 1.939 por
John Vincent Atanasoff, matemtico y fsico de la facultad de la Universidad,
quien concibi la idea y por Clifford Edward Berry estudiante graduado en fsica.
Poco tiempo despus, Mauchly y Eckert, despus de varias conversaciones con el
Dr. Atanasoff, leer los apuntes que describan los principios de la computadora
ABC y verla personalmente, el Dr. John W. Mauchly (1.907-1.980, Fig. 13)
colabor con J. Presper Eckert, Jr. (1.919-1.995, Fig. 14) para desarrollar una
mquina que calculara tablas de trayectoria de proyectiles para el ejrcito
estadounidense.

FIG. 13. JOHN MAUCHLY. FIG. 14. PRESPER ECKERT.

El proyecto final, una computadora electrnica completamente operacional a


gran escala, se termin en 1.946 y se llam ENIAC (Electronic Numerical
Integrator And Computer, Fig. 15), Integrador Numrico y Calculador
Electrnico. La ENIAC construida para aplicaciones de la Segunda Guerra
Mundial se fabric en 30 meses por un equipo de cientficos que trabajaban
contra reloj.
La ENIAC, mil veces ms veloz que sus predecesoras electromecnicas, irrumpi
como un importante descubrimiento en la tecnologa de la computacin. Pesaba
30 toneladas y ocupaba un espacio de 450 metros cuadrados, llenaba un cuarto
de 6m x 12m y contena 18.000 bulbos, tena que programarse manualmente
conectndola a 3 tableros que contenan ms de 6.000 interruptores.
Ingresar un nuevo programa era un proceso muy tedioso que requera das o
incluso semanas. A diferencia de las computadoras actuales que operan con un
sistema binario (0,1) la ENIAC operaba con uno decimal (0,..., 9), la ENIAC

- 41 -
Tras los pasos de un... Hacker

requera una gran cantidad de electricidad. Una leyenda cuenta que la ENIAC,
construida en la Universidad de Pennsylvania, bajaba las luces de Filadelfia
siempre que se activaba.
La imponente escala y las numerosas aplicaciones generales de la ENIAC,
sealaron el comienzo de la primera generacin de computadoras.

FIG. 15. MAUCHLY Y LA ENIAC.

En 1.954, John von Neumann (1.903-1.957, Fig. 16), que haba trabajado con
Eckert y Mauchly en la Universidad de Pennsylvania, public un artculo acerca
del almacenamiento, carga y ejecucin de los programas.
El concepto de programa almacenado, permiti la lectura de un programa dentro
de la memoria de la computadora, el mismo, que despus de su ejecucin no
necesitaba que sus instrucciones vuelvan a ser ingresadas.
La primera computadora en usar el citado concepto fue la llamada EDVAC
(Electronic Discrete Variable Automatic Computer, es decir Computadora
Automtica Electrnica de Variable Discreta), desarrollada por Von Neumann,
Eckert y Mauchly.
Los programas almacenados dieron a las computadoras una flexibilidad y
confiabilidad tremenda, hacindolas ms rpidas y sujetas a menos errores que
los programas mecnicos.

- 42 -
Historia de la Computacin... Captulo I.

FIG. 16. JOHNVONNEUMANN.

Una computadora con capacidad de programa almacenado podra ser utilizada


para varias aplicaciones, cargando y ejecutando el programa apropiado. Hasta
este punto, los programas y datos podan ser ingresados en la computadora slo
con la notacin binaria, que es el nico cdigo que las computadoras entienden.
Ahora, paremos un momento este interesante relato, para hablar de lo que los
informticos conocen como Generaciones de las Computadoras.

1.2 GENERACIONES DE LAS COMPUTADORAS

PRIMERA GENERACIN
(De 1.951 a 1.958, Tecnologa Electromecnica)
Las computadoras de la primera generacin emplearon bulbos para procesar
informacin. Los operadores ingresaban los datos y programas en un cdigo
especial por medio de tarjetas perforadas. El almacenamiento interno se lograba
con un tambor que giraba rpidamente, sobre el cual un dispositivo de
lectura/escritura colocaba marcas magnticas. Esas computadoras de bulbos
eran mucho ms grandes y generaban ms calor que los modelos

- 43 -
Tras los pasos de un... Hacker

contemporneos, Eckert y Mauchly contribuyeron al desarrollo de computadoras


de la Primera Generacin formando una compaa privada y construyendo la
UNIVACI (UNIVersal Automatic Computer I, Computadora Automtica Universal
I, Fig. 17.), que la oficina de censos de los Estados Unidos de Norteamrica utiliz
para realizar el censo de 1.950.
La IBM tena el monopolio de los equipos de procesamiento de datos, basndose
en tarjetas perforadas y estaba teniendo un gran auge en productos como
rebanadores de carne, bsculas para comestibles, relojes y otros artculos; sin
embargo no haba logrado el contrato para el censo de 1.950.

FIG. 17. UNIVAC

Comenz entonces a construir computadoras electrnicas y su primera entrada


comercial fue en 1.953.

SEGUNDA GENERACIN
(De 1.959 a 1.964, tecnologa de Transistores)
El invento del transistor (Fig. 18) hizo posible una nueva generacin de
computadoras, ms rpidas, ms pequeas y con menores necesidades de
ventilacin y energa.
Sin embargo, su costo segua siendo un factor significativo del presupuesto de

- 44 -
Historia de la Computacin... Captulo I.

una compaa. Las computadoras de la segunda generacin tambin utilizaban


redes de ncleos magnticos (Fig. 19) en lugar de tambores giratorios para el
almacenamiento primario.
Estos ncleos contenan pequeos anillos de material magntico, enlazados entre
s, en los cuales podan almacenarse datos e instrucciones.

FIG. 18. EL TRANSISTOR. FIG. 19. NCLEO MAGNTICO.

Los programas de computadoras tambin mejoraron, el COBOL desarrollado


durante la primera generacin estaba ya disponible comercialmente. Los
programas escritos para una computadora podan transferirse a otra con un
mnimo esfuerzo.

FIG. 20. IBM 311.

Para escribir un programa, el programador ya no requera entender plenamente


el funcionamiento del hardware de la computadora. Las computadoras de la

- 45 -
Tras los pasos de un... Hacker

segunda generacin eran substancialmente ms pequeas y rpidas que las de


bulbos y se usaban para nuevas aplicaciones, como en los sistemas de reservas en
las lneas areas, control de trfico areo y simulaciones para uso general.

Las empresas comenzaron a aplicar las computadoras a tareas de


almacenamiento de registros, como manejo de inventarios, nmina y
contabilidad. La Marina de los Estados Unidos de Norte Amrica utiliz las
computadoras para crear el primer simulador de vuelo (Whirlwind I).
Honeywell se coloc como el primer competidor durante la segunda generacin
de computadoras.
Burroughs, Univac, NCR, CDC, Honeywell, los ms grandes competidores de IBM
(Fig. 20), durante la dcada de 1.960 se conocieron como el grupo BUNCH (por
sus siglas).

TERCERA GENERACIN
(De 1.964 a 1.971, Tecnologa de Circuitos Integrados)
Las computadoras de la tercera generacin surgieron con el desarrollo de los
circuitos integrados (pastillas de silicio) en las cuales se colocan miles de
componentes electrnicos, en una integracin en miniatura.
Las computadoras nuevamente se hicieron ms pequeas, ms rpidas,
despedan menos calor y eran energticamente ms eficientes. Antes del
advenimiento de los circuitos integrados, las computadoras estaban diseadas
para aplicaciones matemticas o de negocios, pero no para las dos cosas a la vez.
Los circuitos integrados permitieron a los fabricantes de computadoras
incrementar la flexibilidad de los programas y estandarizar sus modelos.
La IBM 360 (Fig. 21), una de las primeras computadoras comerciales que us
circuitos integrados; poda realizar, tanto anlisis numrico como administracin
procesamiento de archivos.
Los clientes podan escalar sus sistemas 360 a modelos IBM de mayor tamao y
podan todava correr sus programas actuales. Las computadoras trabajaban a
tal velocidad que proporcionaban la capacidad de correr ms de un programa de
manera simultnea (ejecucin de programas en tiempo compartido). Por
ejemplo la computadora poda estar calculando la nmina y aceptando pedidos al
mismo tiempo. Con la introduccin del modelo 360, IBM acapar el 70% del

- 46 -
Historia de la Computacin... Captulo I.

mercado.

FIG. 21. IBM 360.

Para evitar competir directamente con IBM, la empresa DEC (Digital Equipment
Corporation), dirigi sus esfuerzos hacia computadoras pequeas. Mucho ms
pequeas, mucho ms econmicas de fabricar y por consiguiente su precio de
venta fue ms asequible que las computadoras grandes, las minicomputadoras se
desarrollaron durante la segunda generacin pero alcanzaron su mayor auge
entre 1.960 y 1.970.

CUARTA GENERACIN
(De 1.971 a ?.???, tecnologa de microprocesadores)
Dos mejoras en la tecnologa de las computadoras marcan el inicio de la cuarta
generacin: El reemplazo de las memorias con ncleos magnticos por las de
chips de silicio; y, la colocacin de muchos ms componentes en un chip producto
de la miniaturizacin de los circuitos electrnicos.
El tamao reducido del chip microprocesador (Fig. 22), hizo posible la creacin
de las computadoras personales.
Hoy en da las tecnologas LSI (Large Scale Integration, integracin a gran escala)
y VLSI (Very Large Scale Integration, integracin a muy gran escala) permiten que
cientos de miles de componentes electrnicos se almacenen en un chip.

- 47 -
Tras los pasos de un... Hacker

FIG. 22. MICROPROCESADOR.

Usando la VLSI, un fabricante puede hacer que una computadora pequea del
tamao de un cuaderno (notebook), supere a una computadora de la primera
generacin que ocupaba un cuarto completo.

Nota del autor:


Podramos dar por terminada esta referencia a la Historia de la Computacin, del desarrollo y
optimizacin que han tenido estas mquinas desde los aos de 1.980 hasta nuestros das,
fabricantes como Intel, AMD, Texas Instruments, Nokia, etc., han miniaturizado tanto las partes
de una computadora, que hoy en da podemos tener prcticamente una potente computadora en
nuestro telfono celular.
Finalizamos en este punto la Historia de la Computacin, ya que no se olviden que esta
investigacin la hice aproximadamente en 1.985, as que como buenos admiradores de los
Hackers les queda el trabajo de completar esta historia e investigar si se ha podido clasificar
nuevas generaciones de las computadoras

1.3 LAS COMPUTADORAS.

Atendiendo a los requerimientos para un uso particular de la computadora, los


fabricantes de hardware, bajo contrato especial con los gobiernos de los pases
desarrollados elaboran las supercomputadoras.

SUPERCOMPUTADORAS
Una supercomputadora (Fig. 23) es el tipo de computadora ms potente y ms
rpida que existe en un momento dado. Estas mquinas estn diseadas para

- 48 -
Historia de la Computacin... Captulo I.

procesar enormes cantidades de informacin en poco tiempo y son dedicadas a


una tarea especfica.

FIG. 23. SUPERCOMPUTADORA COLLOSSUS.

As mismo son las ms caras, sus precios alcanzan los 300 millones de dlares y
ms, cuentan con un sistema especial de control de temperatura para eliminar el
calor que algunos componentes generan.
Unos ejemplos de tareas a las que son expuestas las supercomputadoras son los
siguientes:
Bsqueda y estudio de la energa y armas nucleares.
Bsqueda de yacimientos petrolferos con grandes bases de datos
ssmicos.
El estudio y prediccin de tornados.
El estudio y prediccin del clima de cualquier parte del mundo.
La elaboracin de maquetas y proyectos de la creacin de aviones,
simuladores de vuelo, etc.
Debido a su precio son muy pocas las supercomputadoras que se construyen en
un ao.

MACROCOMPUTADORAS O MAINFRAMES
Las macrocomputadoras son tambin conocidas como mainframes (Fig. 24). Los
mainframes son grandes, rpidos y caros sistemas que son capaces de soportar
los requerimientos de cientos de usuarios simultneamente as como cientos de

- 49 -
Tras los pasos de un... Hacker

dispositivos de entrada y salida. Los mainframes tienen un costo que va desde


350.000 dlares hasta varios millones de dlares. De alguna forma los
mainframes son ms poderosos que las supercomputadoras porque soportan
ms programas simultneamente, pero las supercomputadoras pueden ejecutar
un solo programa ms rpido que un mainframe.

FIG. 24. MAINFRAME IBM 360/20.

En el pasado, los mainframes ocupaban cuartos completos o hasta pisos enteros


de algn edificio, hoy en da, un mainframe es parecido a una hilera de archiveros
en algn cuarto con piso falso, esto para ocultar los cientos de cables de los
perifricos y su temperatura tiene que estar controlada.

MINICOMPUTADORAS
En 1.960 surgi la minicomputadora (Fig. 25), una versin ms pequea de la
macrocomputadora. Al ser orientada a tareas especficas, no requera de todos
los perifricos que necesita un mainframe, esto ayud a reducir el precio y costos
del mantenimiento.
Las minicomputadoras, en tamao y poder de procesamiento, se encuentran
entre los mainframes y las estaciones de trabajo.
En general, una minicomputadora es un sistema multiproceso (varios procesos
en paralelo) capaz de soportar de 10 hasta 200 usuarios simultneamente.

- 50 -
Historia de la Computacin... Captulo I.

FIG. 25. MINICOMPUTADORA IBM.

Actualmente se usan para almacenar grandes bases de datos, automatizacin


industrial y aplicaciones multiusuario.

MICROCOMPUTADORAS O PC
Las microcomputadoras o Computadoras Personales (PCs, Personal Computer),
tuvieron su origen con la creacin de los microprocesadores.

FIG. 26. IBM PC.

Un microprocesador es una computadora en un chip, es un circuito integrado


independiente de otros especializados. Las PCs son computadoras para uso
personal, relativamente baratas y actualmente se encuentran en las oficinas,
escuelas y hogares.
El trmino PC se deriva del hecho que para el ao de 1.981, la IBM Co., puso a la

- 51 -
Tras los pasos de un... Hacker

venta su modelo IBM PC (Fig.26), la cual se convirti en un tipo de computadora


ideal para uso personal, de ah que el trmino PC se estandariz y los clones que
salieron posteriormente fabricados por otras empresas fueron llamados PC
compatibles, usando procesadores del mismo tipo que las IBM PC, a un costo
menor podan ejecutar el mismo tipo de programas.
Existen otros tipos de microcomputadoras como la Macintosh (Fig. 27) que no
son compatibles con la IBM PC, pero que en muchos de los casos se les llama
tambin PCs, por ser de uso personal.
En la actualidad existen varios diseos de una PC:
Computadoras personales con un gabinete tipo mini torre, separado del
monitor.

FIG. 27. MACINTOSH.

Computadoras personales porttiles Laptop o Notebook son


computadoras que integran en una sola unidad compacta el monitor y la
CPU, estn diseadas para poder ser transportadas de un lugar a otro. Se
alimentan por medio de bateras recargables, pesan entre 2 y 5 kilos, la
mayora trae integrada una pantalla LCD (Liquid Crystal Display).

ESTACIONES DETRABAJO OWORKSTATIONS

Las estaciones de trabajo se encuentran por debajo de las minicomputadoras y


las macrocomputadoras (por el poder de procesamiento). Las estaciones de
trabajo son un tipo de computadoras que se utilizan para aplicaciones que se
requieran de poder de procesamiento moderado y capacidades de grficos de

-52 -
Historia de la Computacin... Captulo I.

alta calidad, se usan principalmente en:


Aplicaciones de Ingeniera CAD. (Computer Aided Design, Diseo Asistido
por Computadora)
CAM. (Computer Aided Manufacturing, Fabricacin Asistida por
Computadora)
Publicidad.
Creacin de Software en redes.

La palabra Workstation o estacin de trabajo se utiliza para referirse a


cualquier computadora que est conectada a una red de rea local (LAN, Local
Area Network).

1.4 LENGUAJES DE PROGRAMACIN

Los lenguajes de programacin sirven para fabricar los programas de


computadoras o SOFTWARE, existen, por su forma de trabajar, tres grupos
principales: los compiladores, los intrpretes (tambin conocidos como lenguajes
de alto nivel) y los lenguajes mquina (tambin conocidos como lenguajes de
bajo nivel). Los primeros funcionan de la siguiente manera: el programador
tiene que escribir todo el cdigo fuente del programa y dada la orden necesaria,
el compilador, verifica en primer lugar la sintaxis del programa digitado, luego la
estructura del programa, si no existe ningn error, procede a crear una versin
del programa en un cdigo llamado objeto, con un programa especial
denominado enlazador o linker une todas las piezas necesarias para generar una
versin ejecutable del programa y solo en este momento podemos observar si el
programa realiza las operaciones deseadas. Por el contrario, los intrpretes
ejecutan instruccin por instruccin el cdigo fuente y podemos en cualquier
momento verificar los resultados que arroja el programa, en la actualidad la
mayora de los lenguajes de programacin de alto nivel trabajan de las dos
maneras.
Un captulo aparte lo constituyen los lenguajes mquina ya que sus diseos estn
orientados a optimizar y sacar el mayor provecho del microprocesador y
controlar las funciones de la computadora. Este es el nico lenguaje que entiende
la computadora y es especfico para cada grupo de computadoras; as, todos los
lenguajes de alto nivel generarn una versin del programa que se ha escrito en

- 53 -
Tras los pasos de un... Hacker

lenguaje mquina. Una cosa importante que vale la pena recalcar, del cdigo
fuente escrito en un lenguaje de alto nivel siempre se puede obtener su
equivalente en lenguaje mquina, pero es extremadamente difcil, a partir de un
programa en lenguaje mquina, obtener una versin del mismo en un lenguaje de
alto nivel (a este proceso se lo conoce como ingeniera reversa o inversa, que es
sancionado en muchos pases que respetan la propiedad intelectual de un
programa, incluido el Ecuador).
Por su orientacin, los lenguajes de programacin como ya se mencion, los
podemos dividir en:
a) Lenguajes de alto nivel: A este grupo pertenecen lenguajes como COBOL
(COmmon Business - Oriented Language, Lenguaje orientado a la gestin
en negocios), FORTRAN (FORmula TRANslation, Lenguaje orientado a la
resolucin de frmulas, muy usado en aplicaciones cientficas), ALGOL
(ALGOrithmic Language, Lenguaje orientado para aplicaciones
cientficas), LISP (LISt Processing), FORTH (FOuRTH-generation
language), BASIC (Beginners All-purpose Symbolic Instruction Code,
Lenguaje de uso general), PASCAL, ADA, LOGO, C, etc., los cuales estn
orientados a que el humano entienda la lgica del programa, lo modifique
y mantenga el cdigo. Las aplicaciones modernas son desarrolladas en
este tipo de lenguajes.
b) Lenguajes de bajo nivel: Cuyo programa editor se lo conoce como
ensamblador y el programa obtenido como programa en lenguaje
mquina, los cuales sirven para hacer programas de uso especfico en
una computadora, en estos lenguajes se desarrollan por ejemplo: los
controladores de la computadora, las rutinas del BIOS (Basic
Input/Output System), los controladores de las tarjetas de video, mdems
y perifricos especializados. Este tipo de lenguajes, estn orientados a
que su sintaxis sea entendida por la mquina y no por el ser humano; por
lo que, los programas escritos en estos lenguajes son de difcil
comprensin, por consiguiente dificultan su mantenimiento y
portabilidad.

Revisemos un poco la historia de los principales lenguajes de programacin de


alto nivel por orden cronolgico de creacin:

- 54 -
Historia de la Computacin... Captulo I.

COBOL (1.951)

(COmmon Business - Oriented Language)


COBOL nace en 1.951, auspiciado por el Departamento de Defensa de los Estados
Unidos de Norte Amrica, para facilitar la administracin de las aplicaciones
programadas hasta aquel tiempo directamente en el HARDWARE de la
computadora y es en 1.952, que el equipo liderado por Grace Murria Hopper
(1.906-1.992, Fig. 28) una oficial de la Marina de EE. UU., desarroll el primer
compilador, un programa que puede traducir enunciados parecidos al ingls a un
cdigo binario comprensible para una computadora. A este lenguaje se lo llam
COBOL (COmmon Business - Oriented Language); sus siglas, nos dicen los
objetivos bsicos para los que fue diseado este lenguaje, que est especializado
en tareas de gestin, el cual ha sido muy popular para el desarrollo de varias
aplicaciones; especialmente, las diseadas para las mini computadoras y grandes
equipos, por su popularidad, se han creado varios estndares.

FIG. 28. GRACE HOPPER.

FORTRAN (1.954)

(FORmula TRANslation)
FORTRAN se desarroll en 1.954, el lder de este proyecto fue John Backus
(1.924-, Fig. 29). FORTRAN I, la primera versin fue implementada sobre la

- 55 -
Tras los pasos de un... Hacker

computadora IBM 704 en 1.956, dos aos ms tarde, evolucion y se present el


FORTRAN II. En el periodo comprendido entre 1.958 a 1.962, FORTRAN se
implement sobre varias computadoras. FORTRAN III fue desarrollado en ese
periodo, pero debido a que su diseo dependa demasiado de la mquina, nunca
se distribuy para uso pblico.
En 1.962 FORTRAN IV fue desarrollado para las computadoras IBM 7090/7094.
Durante esos mismos aos la American Standards Association despus llamada
ANSI (American National Standards Institute), form un comit para definir una
versin estndar de FORTRAN.

FIG. 29. JOHNBACKUS.

Este comit produjo dos versiones estndares de FORTRAN en 1.966: la


denominada Basic FORTRAN que era similar a FORTRAN II, la otra se llam
FORTRAN y era similar a FORTRAN IV.
El uso de FORTRAN est casi destinado nicamente al rea de las aplicaciones
cientficas y de la ingeniera, ltimamente las versiones de FORTRAN extienden
funciones que permiten que FORTRAN sea tambin utilizado en el procesamiento
de datos y procesamiento de textos.

ALGOL (1.958)

(ALGOrithmic Language)
ALGOL surge en 1.958 a raz de un proyecto del cientfico dans Peter Naur
(1.928-, Fig. 30), un consorcio internacional promovi el desarrollo de un
programa de alto nivel, inicialmente para aplicaciones cientficas, que algn

- 56 -
Historia de la Computacin... Captulo I.

tiempo ms tarde se plasmara en el ALGOL. A pesar de sus cualidades para


clculos numricos, el tratamiento de entradas/salidas y procesos recursivos, el
ALGOL es uno de los lenguajes que no ha evolucionado con el paso del tiempo.

FIG. 30. PETER NAUR.

LISP (1.959)

(LISt Processing)
LISP nace en 1.959 y fue diseado para la manipulacin de frmulas simblicas.
Su uso es extensivo en el campo de la Inteligencia Artificial, expresa algoritmos
recursivos a partir del clculo lambda.
Fue desarrollado por John McCarthy (1.927-, Fig. 31) y su equipo, en los aos de
1.956 a 1.958 e implementado de 1.959 a 1.962, consista en representar la
informacin en un lenguaje formal y desarrollar un programa que razonara
haciendo inferencias (se definen unas reglas de lgica y se puede decir que se dan
las bases del razonamiento humano) sobre ella.
Las representaciones eran en forma de estructura de listas. Durante la primera
implementacin (59-62) se le aadieron caractersticas prog y la funcin
eval, las cuales dieron lugar al LISP1.5.
LISP se implement experimentalmente sobre el IBM 704 en 1.960 y se
desarroll un intrprete para uso productivo en 1.962. Se han producido varios
dialectos de LISP (MACLISP e INTERLISP) adems del compilador usado en
Berkeley llamado FranzLisp. LISP todava no ha sido estandarizado.
Su uso est restringido a aplicaciones de inteligencia artificial y robtica, recibe
datos en forma de smbolos y estructuras de expresiones simblicas. Trabaja la

- 57 -
Tras los pasos de un... Hacker

diferenciacin simblica, integracin y verificacin de teoremas matemticos, en


las versiones ms modernas, se busca la manera de que comprenda el lenguaje
natural humano, visin por computadora, robtica, representacin del
conocimiento y sistemas expertos.

FIG. 31. JOHNMCCARTHY.

FORTH (1.960)

(FOuRTH-generation language)
FORTH, fue creado en 1.960 por el astrnomo Charles Moore (1.9??-, Fig. 32)
con una sintaxis parecida a LISP, utiliza notacin polaca inversa para los clculos.
Es usado ampliamente en aplicaciones de control de procesos, sistemas de
tiempo real, robtica e inteligencia artificial. Maneja nicamente nmeros
enteros. Est orientado al desarrollo de software para microcontroladores y
microprocesadores. Proporciona una gran velocidad de ejecucin y un manejo
eficiente de la memoria.
A pesar de estar catalogado como lenguaje de alto nivel, mantiene una acusada
proximidad con la mquina. Otra caracterstica reseable en su evolucin: El
FORTH permite al usuario crear sus propios comandos de una forma similar a
como se hace en LOGO; FORTH garantiza el acceso rpido al catlogo de
funciones que mantiene (en l se incluyen las rutinas definidas por el usuario).

FORTH es muy similar a LOGO, ambos son ampliables e interactivos, la principal


diferencia entre ellos proviene de los usuarios a los que estn destinados.
Mientras que LOGO tiene fundamentalmente carcter educativo, FORTH estaba
destinado a usuarios que exigan velocidad de ejecucin (a costa de la cual

- 58 -
Historia de la Computacin... Captulo I.

admitirn algunas incomodidades). Existen tres dialectos principales de FORTH:


el fig FORTH (de FORTH Interest Group) y los estndares FORTH-79 y
FORTH-83.

FIG. 32. CHARLES MOORE.

BASIC (1.964)

(Beginners All-purpose Symbolic Instruction Code)


BASIC es iniciado en 1.963 y puesto a punto en 1.964 en el Dartmouth College por
los profesores John G. Kemeny (1.926-1.992, Fig. 33, izquierda) y Thomas E.
Kurtz (1.928-, Fig. 33, derecha), basados principalmente en los conceptos y
forma de trabajar del FORTRAN y el ALGOL, su primera ejecucin exitosa fue el 1
de mayo de 1.964, concebido como un lenguaje interactivo, polivalente, de fcil
aprendizaje y uso. Es el lenguaje de programacin de computadoras que ms
usuarios a nivel mundial tiene, por ejemplo, un dialecto de BASIC, es el usado
para programar las denominadas macros en paquetes comerciales mundialmente
famosos como lo es el entorno integrado Microsoft Office, de la empresa
americana Microsoft Corp. (Lder indiscutible de la industria informtica) y es
gracias a esta empresa que BASIC debe su mayor popularidad en el mundo.
Sus fundadores Bill Gates (1.955-, Fig.34) y Paul Allen (1.953-, Fig.35), en 1.975
implementan una versin de BASIC, que la denominan GW-BASIC. Cuando la IBM
lanza su primera microcomputadora en el ao 1.981, incorpora de fbrica una
versin licenciada de Microsoft denominada BASICA, que era puesta en un chip
de la computadora, este factor hace que todas las fbricas de microcomputadoras
para ser competitivas en el mercado incluyeran un dialecto propio de BASIC con
caractersticas que eran dependientes del hardware de cada fabricante, por
consiguiente, los usuarios de estas computadoras para el desarrollo de

- 59 -
Tras los pasos de un... Hacker

programas, aprenderan a programar en BASIC.


Los programas desarrollados en una versin determinada de BASIC, no se
ejecutaban en otra versin, requeran que el programador hiciera los cambios
necesarios para que funcione en la computadora de otro fabricante; cada dialecto
que apareca en el mercado, se iba ms y ms alejando de la concepcin original
del BASIC.

FIG. 33. JOHN G. KEMENY & THOMAS E. KURTZ.

El BASIC ya era popular, incluso antes del gran boom de la PC, ya que tambin era
incorporado en las grandes computadoras y enseado en casi todas las escuelas y
universidades de Estados Unidos y el mundo.

FIG. 34. BILL GATES. FIG. 35. PAUL ALLEN.

- 60 -
Historia de la Computacin... Captulo I.

Los creadores originales del BASIC en el ao de 1.983, fundan la empresa True


BASIC Inc., con el objetivo de crear una versin moderna de BASIC, que cumpla
con los estndares internacionales, para que el cdigo de programas que se
desarrollen en este lenguaje sea portable con un mnimo de cambios o ninguno
en la mayora de los casos, la versin as desarrollada la denominaron True
BASIC, su uso principal es el mbito educativo y desarrollo profesional de
aplicaciones.

PASCAL (1.970)

(En honor a Blaise Pascal.)


PASCAL fue desarrollado en la dcada de 1.960 por el profesor Niklaus Wirth
(1.934-, Fig. 36) y es en el ao de 1.969 en la Escuela Politcnica de Zrich que
vio la luz pblica partiendo de los fundamentos del ALGOL.
En los aos 60 se ofrecieron soluciones para extender, revisar y actualizar
ALGOL. Niklaus Wirth, un miembro original del comit de trabajo de ALGOL,
desarroll una versin especial conocida como ALGOL W.
Ms tarde, el propio grupo de trabajo de ALGOL desarroll una extensin ms
rica y elaborada conocida como ALGOL.
ALGOL 68 fue un lenguaje de propsito general con aplicaciones en un amplio
rango de reas disciplinarias, sus desarrolladores tuvieron dificultad en elaborar
compiladores para el ALGOL 68 y hubo discrepancia entre los miembros del
grupo de trabajo sobre la posibilidad de que este nuevo lenguaje fuera demasiado
ambicioso para ser prctico.

FIG. 36. NICKLAUS WIRTH.

- 61 -
Tras los pasos de un... Hacker

Wirth dise un sucesor ms reducido del ALGOL 68 y lo llam PASCAL. Su


primer compilador se implement en 1.970 y una nueva versin revisada fue
definida e implementada en 1.973, el manual de usuario de este PASCAL, se
convirti en la definicin estndar aceptada universalmente del PASCAL, la cual
fue formalmente estandarizada en 1.983.
El uso principal del PASCAL es el de la enseanza de tcnicas de programacin
estructurada, implementacin y desarrollo de nuevos algoritmos.

ADA (1.975)

(En honor a Lady Ada Augusta Byron de Lovelace)


ADA nace en 1.975 y fue patrocinado por el Departamento de Defensa de los
Estados Unidos que vio un problema en el crecimiento del costo del software
especializado. En las computadoras denominadas empotradas haba ausencia
de un lenguaje de programacin adecuado y de un entorno de programacin para
desarrollar y mantener ese software.
Fue entonces, que en 1.975 se form un grupo de trabajo para ver si se poda
combinar el software existente o si era necesario crear uno nuevo. Despus de
varios intentos por combinar este software (Woodenman en 1.975, Tinman
1.976, Ironman 1.977, Steelman 1.978) se lleg a la conclusin de que era
necesario crear uno nuevo, lo cual los llev a recibir proyectos siendo el del
equipo dirigido por J.M. Ishbia de la firma CII-Honeywell-Bull en 1.979 el ms
conveniente y fue bautizado como ADA en reconocimiento a Lady Ada Augusta
Byron, hija de Lord Byron, conocida como la primera programadora.
El uso de este lenguaje puede ser adecuado a los sistemas de programacin
empotrados y al mantenimiento de programas.

LOGO (1.976)
LOGO se desarrolla en 1.976 por el equipo dirigido por Seymour Papert (1.9??,
Fig. 37) en el Laboratorio de Inteligencia Artificial del MIT (Massachusetts
Institute of Technology, Instituto Tecnolgico de Massachusetts), principalmente
orientado a aplicaciones de inteligencia artificial y enseanza. El mismo lenguaje
LOGO, tiene versiones especficas que se usan para ese fin y derivados de este
que se usan para programar robots en fbricas. LOGO se inspir en el trabajo

- 62 -
Historia de la Computacin... Captulo I.

anterior de Papert (miembro del equipo de desarrollo del LISP), el lenguaje LISP.
Asimismo un mdulo lunar fue programado con una variante del lenguaje LOGO.
Son poco conocidas por el pblico estas aplicaciones y tambin que la versin de
LOGO Grfico desarrollada en Argentina se usa en la Comisin de Energa
Atmica para diseo de carga del reactor nuclear de Atocha.
LOGO no es solamente un lenguaje de programacin muy difundido en el mbito
de la educacin, sino que es tambin un conjunto de materiales disponibles para
someter a prueba al usuario, ya sea nio, adolescente o adulto, sobre su
capacidad de organizar sus ideas al tratar de ordenar algo a la computadora.

FIG. 37. SEYMOUR PAPERT.

LOGO se apoya en una teora de conocimiento basada en los estudios de Piaget y


explicada por Seymour Papert (MIT) en su libro Desafo a la Mente.
El uso frecuente de LOGO, pone en evidencia el proceso intelectual realizado por
las personas y facilita la autocorreccin de las fallas en el razonamiento lgico.
La forma de usar la computadora con utilitarios o con LOGO no se contrapone, se
complementa. Ya que en el primer caso la mquina se usa para hacer algunas
operaciones o procesos ms fcilmente y en el segundo caso se usa para entender
cmo funcionan estos procesos? La aplicacin prctica de este lenguaje se
encuentra principalmente en el campo educativo y como herramienta de
simulacin de los procesos en Inteligencia Artificial.

C (1.978)
Cvio la luz pblica en el ao de 1.978 y fue desarrollado a comienzos de los aos
1.970 por Dennis Ritchie (1.941-, Fig.38) en la Bell Telephone Laboratories Inc.

- 63 -
Tras los pasos de un... Hacker

(Hoy conocida como AT&TBell Laboratories). Su funcionamiento se basa en los


resultados que se obtuvieron de dos lenguajes anteriores que fueron BCPL y el B,
que tambin se desarrollaron en la Bell Laboratories. C fue inicialmente
utilizado nicamente con fines de laboratorio en la Bell y es en 1.978, cuando
Brian Kernigham (1.9??-, Fig. 39) y Dennis Ritchie publican una descripcin
definitiva del lenguaje C, la misma que es conocida como K&RC.

FIG. 38. DENNIS RITCHIE. FIG. 39. BRIAN KERNIGHAM.

Despus de esa definicin, los profesionales de la computacin vieron en C, el


lenguaje que tanto haban esperado y comenzaron a promover su uso en todo
campo, educativo, de investigacin y profesional. Fue tanta su difusin que a
mediados de la dcada de 1.980, la popularidad del Chaba recorrido el mundo.
Dada su popularidad la ANSI defini un estndar del lenguaje (el denominado
comit X3J11), fruto de esta estandarizacin todos los compiladores e
intrpretes de C pueden portar su cdigo con un mnimo de esfuerzo.
En la actualidad C es el lenguaje utilizado para el desarrollo profesional de
aplicaciones, tanto a nivel de hardware como de software. El C es un lenguaje de
uso general.

JAVA (1.991)

Java es un lenguaje de programacin orientado a objetos desarrollado por Sun


Microsystems a principios de los aos 90. El lenguaje en s mismo toma mucha
de su sintaxis de C y C++, pero tiene un modelo de objetos ms simple y elimina

- 64 -
Historia de la Computacin... Captulo I.

herramientas de bajo nivel, que suelen inducir a muchos errores, como la


manipulacin directa de punteros o memoria.

Las aplicaciones Java estn tpicamente compiladas en un bytecode, aunque la


compilacin en cdigo mquina nativo tambin es posible. En el tiempo de
ejecucin, el bytecode es normalmente interpretado o compilado a cdigo nativo
para la ejecucin, aunque la ejecucin directa por hardware del bytecode por un
procesador Java tambin es posible.

La implementacin original y de referencia del compilador, la mquina virtual y


las bibliotecas de clases de Java fueron desarrolladas por Sun Microsystems en
1.995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y
evolucin del lenguaje a travs del Java Community Process, si bien otros han
desarrollado tambin implementaciones alternativas de estas tecnologas de Sun,
algunas incluso bajo licencias de software libre.

Entre noviembre de 2.006 y mayo de 2.007, Sun Microsystems liber la mayor


parte de sus tecnologas Java bajo la licencia GNU GPL, de acuerdo con las
especificaciones del Java Community Process, de tal forma que prcticamente
todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de
Sun que se requiere para ejecutar los programas Java an no lo es).

NOTAS Y BIBLIOGRAFA
Sobre esta historia de las computadoras y de los lenguajes de programacin, las
notas han sido elaboradas en base a publicaciones de revistas especializadas y la
consulta de los siguientes textos:

- Matemticas y Astronoma, Tomo No. 11, Enciclopedia Salvat de las


Ciencias, Salvat S.A. de Ediciones, Pamplona, Espaa, 1.968.
- INTEGRATED ELECTRONICS: Analog and Digital Circuits and Systems,
Jacob Millman Chirstos Halkias, McGraw Hill and Electronic

- 65 -
Tras los pasos de un... Hacker

Engineering Series / Kogakusha Ltd., Publicado en los Estados Unidos de


Norte Amrica, 1.972.
- CMO PROGRAMAR COMPUTADORAS, URMO S.A, DE EDICIONES, Bilbao
Espaa, 1.977.
- Manual del Microprocesador 80386, Chris H. PappasWilliam H. Murray,
III, McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa,
1.983.
- CONEXIONES EN EL IBM PC/XT/AT, Teora y prctica de perifricos,
comunicaciones y configuraciones, M. D. Seyer, Red Editorial
Iberoamericana REI Andes Ltda., Prentice Hall Inc., 1.985.
- CP/M Users Guide, Digital Research 1.982, SPECTRAVIDEO
INTERNATIONAL LTD., Hong Kong, 1.985.
- EL ARTE DE PROGRAMAR ORDENADORES ALGORITMOS
FUNDAMENTALES - Volumen I, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.985.
- EL ARTE DE PROGRAMAR ORDENADORES CLASIFICACIN Y
BSQUEDA - Volumen III, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.987.
- 80386 Gua del programador y Manual de referencia, Intel Corporation
1.986, Ediciones Anaya Multimedia S.A., Septiembre de 1.989.
- ABIOS for IBM PS/2 Computers and Compatibles, Phoenix Technologies
Ltd., AddisonWesley Publishing Company Inc., Junio de 1.989.
- Introduccin al 80386, Intel Corporation 1.985, Ediciones Anaya
Multimedia S.A., 1.989.
- Organizacin y diseo de computadores La interfaz hardware /
software, David A. Patterson John L. Hennessy, McGraw Hill /
Interamericana de Espaa S.A., Madrid Espaa, 1.995.
- System BIOS for IBM PCs, Compatibles, and EISA Computers, Phoenix
Technologies Ltd., AddisonWesley Publishing Company Inc., Noviembre
de 1.995.
- Matemtica e Informtica, Tomo No. 11, Enciclopedia Larousse del
Estudiante, Sociedad Comercial y Editorial Santiago Ltda., Santiago de
Chile, Chile, 2.000 2.002.
- Manual Moderno de Informtica, Labor Loerincs, Zamora Editores Ltda.,
Publicado por Quebecor World Bogot S.A., Impreso en Bogot
Colombia, 2.004.
- PC World Ecuador, http://www.pcworld.com.ec/pcw_catt/index.php

- 66 -
Historia de la Computacin... Captulo I.

- PC Magazine, http://www.pcmag.com
- La wikipedia, http://www.wikipedia.org. La enciclopedia libre de la
Internet.
- Apuntes de clase, Nstor Marroqun Carrera, aos 1.9831.992.
- Trabajos de varios autores publicados en la worldwide web.

- 67 -
Tras los pasos de un... Hacker

- 68 -
INTRODUCCIN (II)

...Todos los das tena una ansiedad por llegar a la casa, luego de cumplir con mis
tareas escolares, y esperar a que mi to Ral llegara a su vez de la universidad
para pedirle me deje jugar con tan fascinante aparato. Jugar al ahorcado,
carrera de autos o adivina la palabra, como les comentaba anteriormente,
deseaba vehementemente aprender a programar esta computadora, cuyas
caractersticas entre otras eran:
Procesador: Sharp LH5801 corriendo a 1.3 MHz (comparada a la velocidad de mi
mquina actual una Toshiba Satellite 2400 CDS que corre a 1,7 GHz, es decir
1.307,69 veces ms lenta).

Memoria RAM (Random Access Memory) de 2 KB (suena a nada el da de hoy, la


computadora en la que escrib este texto tiene nada menos que 512 MB de
memoria RAM, 262.144 veces ms memoria que esta computadora y solo han
pasado aproximadamente 25 aos entre el aparecimiento de la Tandy Radio
Shack TRS-80 Pocket Computer II (Fig.40) y mi computadora actual).

FIG. 40. TANDY RADIO SHACK TRS-80 POCKET COMPUTER II.

Para almacenar programas y datos se conectaba una unidad de cinta, nada


diferente a un toca cinta normal ya que igual se poda escuchar msica. Con una
interfaz apropiada se conectaba a esta unidad para almacenar y transferir
archivos a la computadora. El principal inconveniente de este mecanismo, era
que para ubicar un archivo en particular, se tena manualmente que recorrer la
cinta hasta una posicin aproximada donde estaba la grabacin buscada con

- 69 -
Tras los pasos de un... Hacker

ayuda del contador de la cinta para as poder realizar la lectura. (La


computadora que les comento me sirvi para la creacin de este texto tiene una
unidad de disco duro de 80 GB, se podra decir que equivale a tener 1310.720
cintas de casete de aquella poca).
Pantalla LCD (Liquid Crystal Display) monocromtica de 26 caracteres (130x7
pixeles, nicamente desplegaba caracteres, la Toshiba Satellite tiene 1.024x768
pixeles y 32 bits para definir los colores, es decir puede desplegar colores y sus
gamas hasta 16777.216 variaciones, as como 256 niveles de transparencia).
Se poda conectar a una impresora tipo mini plotter (Fig. 41), equipada con
plumillas de 4 colores, muy parecida a las impresoras de una caja registradora
pero que serva para listar programas y obtener resultados impresos de los
clculos realizados.

FIG. 41. TRS-80 CONECTADA A SU IMPRESORA.

Pues bien, el reto entonces para mi to, y por ende para m, era aprender a
programar esta computadora, ya que tampoco mi to tena formacin de
programador y en la universidad recin le estaban enseando las bases de la
programacin con fines de aplicacin en lo que sera su carrera de ingeniero civil.
Como podrn ver, estamos ya hablando de bytes, RAM, Kilobytes, Megabytes,
Gigabytes, pixeles, trminos hoy por hoy muy usados en la jerga informtica,
pero Qu son? Qu significan?
Bueno, para m eran palabras totalmente desconocidas medidas de qu? ya que
hasta ese entonces por el uso cotidiano entenda lo que era un metro, un
Kilmetro, entonces al leer y escuchar byte y Kilobyte, saba intuitivamente que
se trataba de una medida. Al enterarme que un byte era el conjunto de 8 bits y

- 70 -
La historia... Introduccin (II).

que un bit era la representacin de un dgito binario, de all su nombre (viene


del ingls binary digit, 0 o 1), descubr que adems de los nmeros que haba
manejado (nmeros en el sistema decimal) y la forma de hacer los clculos
aritmticos, tambin estas representaciones numricas existan en otros sistemas
de numeracin. Les invito a conocer algo de estos sistemas de numeracin, ya
que entenderlos nos ayuda a comprender de mejor manera algunos valores
necesarios para programar una computadora...

- 71 -
Tras los pasos de un... Hacker

- 72 -
CAPTULO II. NMEROS Y SISTEMAS DE NUMERACIN

En este captulo aprenderemos algunas de las definiciones y usos de los nmeros


en varios sistemas que para nuestro inters sirven para su representacin como
son el sistema binario, el octal y el hexadecimal.

2.1 CONCEPTO DE NMERO


En su manera ms simple, podemos decir que nmero es la representacin
mental y simblica de una cantidad. Con esta representacin se puede referir en
forma cmoda la cantidad de elementos que tiene una coleccin o conjunto de
individuos de una misma especie.
Ejemplo: Tres manzanas, cinco pases, dos computadoras.

2.2 CONCEPTO DE SISTEMA DE NUMERACIN


Un sistema de numeracin, es un conjunto de reglas que nos permiten con una
cantidad finita de smbolos, representar un nmero cualquiera.
Ejemplo: El sistema binario, el octal, el decimal.

2.3 REPRESENTACIN DE LOS NMEROS

Los hombres para representar su idea intuitiva de nmero, desde la antigedad


han ideado diversas formas de expresar esta idea. Todos conocemos su
representacin expresada a travs de los dedos de las manos, con la invencin de

- 73 -
Tras los pasos de un... Hacker

la escritura cada cultura ha inventado su propia forma de expresar los nmeros.


Sabemos la forma en que los representaban los antiguos babilonios en su
escritura cuneiforme (Fig. 1), la forma en que los representaban los antiguos
egipcios en los jeroglficos, los antiguos griegos, los antiguos rabes, los antiguos
romanos, los antiguos chinos e indios. Con el transcurrir del tiempo, cuando ya
se formaliz la matemtica como tal, se escogieron algunos smbolos que
representaran a estos nmeros. As tambin de una forma general se dio lugar a
la creacin de los sistemas de numeracin, estos smbolos son:
0, representa la ausencia de cantidad, se llama cero
1, representa al uno
2, representa al dos
3, representa al tres
4, representa al cuatro
5, representa al cinco
6, representa al seis
7, representa al siete
8, representa al ocho
9, representa al nueve

Con estos smbolos y otros auxiliares tomados de las letras del alfabeto se puede
representar cualquier nmero definido en un sistema de numeracin en
particular.
Ejemplo:
100, representa una coleccin de cien elementos en el sistema decimal.
10102, representa al nmero diez en el sistema binario.
238, representa al nmero diecinueve en el sistema octal.
FF16, representa al nmero doscientos cincuenta y cinco en el sistema
hexadecimal.

Podemos definir esta representacin formalmente como: Cualquier nmero n, se


puede representar por un conjunto finito de smbolos preestablecidos, ordenados
en una secuencia, que dadas las reglas, nos permitan inferir la idea de cantidad.
Con estos antecedentes, en primer lugar para tener un sistema de numeracin,
hay que definir este conjunto finito de smbolos. 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9 los
conoceremos como dgitos decimales. Lo representaremos en forma matemtica
como:

- 74 -
Nmeros y Sistemas de Numeracin... Captulo II.

N= {0,1, 2, 3, 4, 5, 6, 7, 8, 9}
Definido este conjunto (Nmeros Naturales), podemos dar las reglas que se han
de seguir para calcular el peso posicional de cada smbolo del nmero, para
esto:
1. Definimos un inicio con un punto, al que llamaremos punto decimal o
fraccionario. Se lo conoce tambin como coma decimal.
2. Definimos una base b que ser el nmero de elementos del conjunto N, en
este caso 10.
3. Todo smbolo hacia la izquierda de la coma decimal, tendr un factor
multiplicativo o peso positivo ascendente comenzando en 1, 10, 100,
1.000, etc., o lo que es lo mismo 100, 101, 102, 103,..., 10i-1. Donde i, nos
indicar el nmero de smbolos que estn a la izquierda del nmero
decimal.
4. Todo smbolo hacia la derecha de la coma decimal, tendr un factor
divisor o peso negativo ascendente comenzando con el 0.1, 0.01, 0.001,
etc., o lo que es lo mismo 10-1, 10-2, 10-3,..., 10-j. Donde j, nos indicar el
nmero de smbolos que estn la derecha de la fraccin decimal.
Estas reglas las podemos generalizar en la siguiente expresin matemtica:
Sea n la secuencia de smbolos:
n = xi-1 ... x1x0, y-1y-2... y-j
Tal que x e y N e i representa la posicin del smbolo a la izquierda de la coma
decimal y j la posicin del smbolo a la derecha de la coma decimal.
Donde:
n, representa la secuencia de smbolos.
x e y, un smbolo cualquiera del conjunto N.
i, el valor de la posicin de los smbolos a la izquierda de la coma decimal.
j, el valor de la posicin de los smbolos a la derecha de la coma decimal.

Para obtener el valor real de cada posicin, multiplicaremos cada elemento x por
10i-1,
donde i nos indica el valor de la posicin del smbolo x, en caso que el
smbolo numrico se encuentre a la izquierda de la coma decimal; o por 10-j en
caso que este smbolo se encuentre a la derecha de la coma decimal, donde jnos
indica el valor de la posicin del smbolo y.

- 75 -
Tras los pasos de un... Hacker

Con estas reglas dadas, calculemos cunto representa el nmero decimal


425,106?
Verifiquemos en primer lugar, que los smbolos pertenezcan al conjunto de
smbolos del sistema decimal ya definido como N.
Ahora, separemos el nmero en sus dgitos y los multiplicamos por su peso
posicional, as obtendremos:
4 x 10(3-1) = 400 cuatro centenas
2 x 10(2-1) = 20 dos decenas
5 x 10(1-1) = 5 cinco unidades
1 x 10(-1) = 0,1 una dcima
0 x 10(-2) = 0,00 cero centsimas
6 x 10(-3) = 0,006 seis milsimas

Para comprobar que estamos hablando del mismo nmero, sumemos los valores
reales calculados, as obtendremos el valor real de 425,106 (cuatro centenas ms
dos decenas ms cinco unidades coma una dcima ms cero centsimas ms seis
milsimas o lo que es lo mismo cuatrocientos veinticinco unidades ciento seis
milsimas).

Nota del autor:


Ustedes pensarn que las operaciones que estamos utilizando para esta explicacin deberan de
estar definidas previamente como la suma, resta, multiplicacin, divisin, potenciacin, etc., las
asumiremos conocidas, solo se utilizan para efectos didcticos.

Ms tarde aprenderemos a sumar como lo hace una computadora y veremos que


a partir de este procedimiento podremos hacer restas, multiplicaciones y
divisiones.
El objetivo de este texto no es tratar a profundidad conceptos matemticos
relacionados con los nmeros, se recomienda revisar los conceptos de nmeros
enteros, nmeros ordinales, nmeros enteros positivos, nmeros enteros
negativos, nmeros reales, etc., as como la realizacin de las operaciones
fundamentales con estos nmeros.
Como nos pudimos dar cuenta, aparecen otros elementos que sern necesarios

- 76 -
Nmeros y Sistemas de Numeracin... Captulo II.

para trabajar en estos sistemas de numeracin, como es el uso de la base del


sistema, este valor est dado por el nmero de elementos del conjunto de
smbolos definidos en este caso fue el de 10. Entonces diremos, que nb es un
nmero en base b. Esta representacin ser necesaria cuando trabajemos con
nmeros que no sean del sistema decimal.
Ejemplo: 1010,01012 as nos indica que ste es un nmero del sistema
binario o un nmero en base 2 (dos).

En informtica tenemos principalmente que aprender a dominar los sistemas de


numeracin: binario (base 2), octal (base 8) y el hexadecimal (base 16).

2.4 TRANSFORMACIN DE NMEROS ENTRE SISTEMAS DE


NUMERACIN
Para transformar nmeros reales de diversos sistemas de numeracin, definimos
dos procedimientos. El primero para obtener un nmero real decimal dado su
equivalente en base b; y, el segundo para obtener el nmero real en base b a
partir de su correspondiente decimal.
Para realizar estos procedimientos, asumiremos definidos y conocidos los
procedimientos de suma, resta, multiplicacin y divisin, as como el de
potenciacin y sumatoria de nmeros reales en el sistema decimal.

2.4.1 DE UN SISTEMA EN BASE BAL SISTEMA DECIMAL


Para obtener el valor decimal de un nmero real que est expresado en cualquier
sistema de numeracin (en base b), realizaremos el desarrollo de la siguiente
frmula:
l m
bx i by j
N 10 i
. 1
j
.
i 1 j 1

(1)

- 77 -
Tras los pasos de un... Hacker

Donde:

N10 es el nmero decimal.


x es el valor del smbolo del nmero en la posicin i.
y es el valor del smbolo del nmero en la posicin j.
i es el indicador posicional del smbolo x, hacia la izquierda de la coma
decimal.
les el nmero total de smbolos x a la izquierda de la coma decimal.
j es el indicador posicional del smbolo y hacia la derecha de la coma
decimal.
m es el nmero total de smbolos y a la derecha de la coma decimal.
b es la base del sistema de numeracin.

Ejemplo: Transformar el nmero 11014 a su correspondiente decimal.


1. Identifiquemos la base del sistema, observamos que el nmero pertenece
al sistema de base 4, es decir, b = 4.
Sabemos que el conjunto de smbolos, en sistemas de numeracin
menores a diez, es subconjunto de ste en forma cardinal, por ejemplo: el
sistema en base dos, tendr como conjunto de smbolos 0 y 1, el sistema
en base tres, tendr como conjunto de smbolos 0, 1 y 2. As
anlogamente para los otros sistemas menores a la base diez.
Para sistemas de numeracin mayores a diez, reemplazamos los valores
que superen a diez, por los que correspondan a las primeras letras del
alfabeto en maysculas, por ejemplo: el sistema en base once, tendr
como elementos los smbolos 0,1,2,3,4,5,6,7,8,9 y A entonces el valor
de A ser 10.
En el ejemplo, observamos que el conjunto de smbolos del sistema en
base cuatro ser 0, 1,2 y 3.
2. Ahora, verifiquemos si los smbolos del nmero corresponden a los del
sistema de numeracin referido. Todos corresponden, por tanto es un
nmero vlido.
3. Luego procedemos a identificar los valores de m y l, en este caso slo
tendr valor para m, es igual a cuatro, m = 4.
4. Evaluemos la frmula, para esto construyamos una gua posicional de los
smbolos del nmero dado.

- 78 -
Nmeros y Sistemas de Numeracin... Captulo II.

Valor del ndice i-1 = 3 2 1 0


Valor del ndice -j = -1 -2 -3
Smbolos de N4 = 1 1 0 1 ,
Valor de posicin = 4 3 2 1 , 1 2 3
^
Punto fraccionario

As aplicando la frmula, tenemos que:


N10 = 1x4 + 1x4 + 0x4+ 1x40
= 1x64 + 1x16 + 0x4 + 1x1
= 64 + 16 + 0 + 1
= 81

Es decir, el nmero 11014 es equivalente a 81 decimal.

EJERCICIOS RESUELTOS:

Ejemplo 1. Dado el nmero 10102 obtener el nmero decimal correspondiente.

Desarrollemos el procedimiento utilizado en el ejemplo:

Valor del ndice i-1 = 3 2 1 0


Valor del ndice -j = -1 -2 -3
Smbolos de N2 = 1 0 1 0 ,
Valor de posicin = 4 3 2 1 , 1 2 3
^
Punto fraccionario

Aplicando la frmula, tenemos que:

N10 = 1x23 + 0x22 + 1x21 + 0x20


= 1x8 + 0x4 + 1x2 + 0x1
=8 + 0 + 2 + 0
= 10

Solucin: 10102 = 1010

- 79 -
Tras los pasos de un... Hacker

Ejemplo 2. Dado el nmero 3456 obtener el nmero decimal correspondiente.

Utilicemos el procedimiento desarrollado en el ejemplo:


Valor del ndice i-1 = 2 1 0
Valor del ndice -j = -1 -2 -3
Smbolos de N6 = 3 4 5 ,
Valor de posicin = 3 2 1 , 1 2 3
^
Punto fraccionario

Aplicando la frmula, tenemos que:

N10 = 3x62 + 4x61 + 5x60


= 1x36 + 4x6 + 5x1
= 36 + 24 + 5
= 137

Solucin: 3456 = 13710

Ejemplo 3. Dado el nmero 631428 obtener el nmero decimal


correspondiente.

Aplicando la frmula, tenemos que:

N10 = 6x84 + 3x83 + 1x82 + 4x81 + 2x80


= 6x4096 + 3x512 + 1x64 + 4x8 + 2x1
= 24576 + 1536 + 64 + 32 + 2
= 26210

Solucin: 631428 = 2621010

Dado el nmero A3B58BB.09212 obtener el nmero decimal


Ejemplo 4.

correspondiente.

Aplicando la frmula, tenemos que:

N10 = Ax126 + 3x125 + Bx124 + 5x123 + 8x122 + Bx121 + Bx120 + 0x12-1


+ 9x12-2 + 2x12-3

- 80 -
Nmeros y Sistemas de Numeracin... Captulo II.

= 10x2985984 + 3x248832 + 11x 20736 + 5x1728 + 8x144 + 11x12


+ 11x1 + 0x1/12 + 9x1/144 + 2x1/1728
= 29859840 + 746496 + 228096 + 8640 + 1152 + 132 + 11 + 1/12
+ 9/144 + 2/1728
= 30844367,147
Solucin: A3B58BB,09212 = 30844367,14710

Observamos que en este ejercicio los smbolos del conjunto base, se reemplazan
por las primeras letras del alfabeto y cuyo valor es el de la posicin cardinal que
ocupan en el sistema de numeracin, as el A= 10 y B = 11.

Dado el nmero FAC1A102116


Ejemplo 5. obtener el nmero decimal
correspondiente.

Aplicando la frmula, tenemos que:

N10 = Fx168 + Ax167 + Cx166 + 1x165 + Ax164 + 1x163 + 0x162 + 2x161


+ 1x160
= 15x4294967296 + 10x268435456 + 12x16777216 + 1x1048576 +
10x65536 + 1x4096 + 0x256 + 2x16 + 1x1
= 64424509440 + 2684354560 + 201326592 + 1048576 + 655360 +
4096 + 0 + 32 + 1
= 67311898657

Solucin: FAC1A102116 = 6731189865710

- 81 -
Tras los pasos de un... Hacker

- 82 -
Nmeros y Sistemas de Numeracin... Captulo II.

EJERCICIOS PROPUESTOS:

Ejercicio 1. Dado el nmero 1012 obtener el nmero decimal correspondiente.

Ejercicio 2. Dado el nmero 2023 obtener el nmero decimal correspondiente.

Ejercicio 3. Dado el nmero 1304 obtener el nmero decimal correspondiente.

Ejercicio 4. Dado el nmero 43315 obtener el nmero decimal correspondiente.

Ejercicio 5. Dado el nmero 13787 obtener el nmero decimal correspondiente.

Ejercicio 6. Dado el nmero 1839 obtener el nmero decimal correspondiente.

Ejercicio 7. Dado el nmero AB012 obtener el nmero decimal correspondiente.

Ejercicio 8. Dado el nmero CAB014 obtener el nmero decimal correspondiente.

Ejercicio 9. Dado el nmero ABEA116 obtener el nmero decimal correspondiente.

Ejercicio 10. Dado el nmero 1011013 obtener el nmero decimal correspondiente.

Ejercicio Dado el nmero 1314BPON30 obtener el nmero decimal


11.

correspondiente.

Ejercicio 12. Dado el nmero 345708121 obtener el nmero decimal correspondiente.

Ejercicio Dado el nmero


13. 84A19EN25 obtener el nmero decimal
correspondiente.

Ejercicio Dado el nmero 10101111102 obtener el nmero decimal


14.

correspondiente.

Dado el nmero 11111111,101012 obtener el nmero decimal


Ejercicio 15.
correspondiente.
Dado el nmero 1001111000,1011012 obtener el nmero decimal
Ejercicio 16.
correspondiente.

Dado el nmero 1034761,3248 obtener el nmero decimal


Ejercicio 17.
correspondiente.

- 83 -
Tras los pasos de un... Hacker

Dado el nmero 1365321766,2378 obtener el nmero decimal


Ejercicio 18.
correspondiente.
Dado el nmero FFBA0013FAB,A6543F16 obtener el nmero decimal
Ejercicio 19.
correspondiente.

Dado el nmero FAB0ABAC0123,CA1B765116 obtener el nmero


Ejercicio 20.
decimal correspondiente.

- 84 -
Nmeros y Sistemas de Numeracin... Captulo II.

2.4.2 DEL SISTEMA DECIMAL A UN SISTEMA EN BASE B


Si nosotros deseamos transformar un nmero decimal a otro nmero que sea su
equivalente en otro sistema de numeracin en base b, tenemos que realizar el
siguiente procedimiento que es vlido para la parte entera del nmero (en (1) los
smbolos de x):
1. Dividir el nmero decimal por la base del sistema de numeracin al que
deseamos transformar el nmero, hasta obtener un residuo menor que
esta base o igual a cero.
2. El cociente calculado, lo transformamos en dividendo y procedemos
sucesivamente con el paso 1 hasta obtener un cociente menor a la base
del sistema deseado.
3. Tomaremos el ltimo cociente y los residuos obtenidos en orden inverso
a como han ido apareciendo, concatenados estos smbolos obtendrn el
nmero entero en la base b deseada.
Para obtener el nmero fraccionario equivalente en un sistema en base b,
seguiremos el siguiente proceso (en (1) los smbolos de y):
1. Multiplicar la parte fraccionaria por la base del sistema de numeracin al
que deseamos transformar el nmero.
2. Separar la parte entera de esta multiplicacin y colocar esta parte entera
como smbolo del nmero fraccionario en la base b. La parte fraccionaria
restante, volver a realizar el paso 1 hasta obtener como resultado cero
fraccionario.

Nota del autor:


Cuando nuestra fraccin no produce resultado cero, obtendremos smbolos fraccionarios en la
base b, hasta tres veces el nmero de dgitos fraccionarios tenga el nmero decimal.

Ejemplo: Transformar el nmero 32110 a su correspondiente ternario (base


3).
1. Observamos que el nmero es entero, por tanto, solo realizaremos el
proceso para transformar nmeros enteros.
2. Empezamos las divisiones sucesivas.

- 85 -
Tras los pasos de un... Hacker

321 | 3 .
02 |107| 3 .
21 | 17| 35| 3 .
0 | 2| 05| 11| 3 .
2| 2| 3 | 3 .
0 | 1

3. Como ya obtenemos un cociente menor que la base deseada, adems el


ltimo residuo es cero, entonces procedemos a tomar los smbolos en
orden inverso a como han ido apareciendo, as obtendremos nuestro
nmero transformado, por tanto tenemos que:
32110 = 1022203

Ejemplo: Transformar el nmero 124,34210 al sistema binario (base 2).


1. Transformemos la parte entera del nmero (x en (1)).
124 | 2 .
04 | 62| 2 .
0 | 02| 31| 2 .
0| 11| 15| 2 .
1| 1| 7 | 2 .
1 | 3 | 2 .
1 | 1

As obtenemos la parte entera del nmero en base b.


2. Trasformemos la parte fraccionaria del nmero (y en (1)).
0, 0 , 342 (x2) = 0,684
0 0 | 684 (x2) = 1,368
1 1 | 368 (x2) = 0,736
0 0 | 736 (x2) = 1,472
1 1 | 472 (x2) = 0,944
0 0 | 944 (x2) = 1,888
1 1 | 888 (x2) = 1,776
1 1 | 776 (x2) = 1,552
1 1 | 552 (x2) = 1,104
1 1 | 104 (x2) = 0,208
0 0 | 208 (x2) = 0,416
0 0 | 416 (x2) = 0,832
0 0 | 832 (x2) = 1,664

- 86 -
Nmeros y Sistemas de Numeracin... Captulo II.

1 1 | 664 (x2) = 1,328


1 1 | 328 (x2) = 0,656
0 0 | 656 (x2) = 1,312
1 1 | 312 (...)

3. Formemos la parte fraccionaria del nmero en base b.


0,34210 = 0,0101011110001101...2

4. Procedamos a sumar los nmeros transformados (x e y en (1)) y as


obtendremos el nmero real en la base deseada.
124,34210 = 1111100,0101011110001101...2

EJERCICIOS RESUELTOS:

Ejemplo 6. Dado el nmero 7310 obtener el nmero en base 7.

Utilicemos el procedimiento mencionado en los ejemplos:


1. Transformemos la parte entera del nmero.
73 | 7 .
3 | 10| 7 .
3| 1

2. As obtenemos la parte entera del nmero en base b.

7310 = 1337

Solucin: 7310 = 1337

Dado el nmero 8413110 obtener el nmero correspondiente en el


Ejemplo 7.
sistema hexadecimal (base 16).

- 87 -
Tras los pasos de un... Hacker

Utilicemos el procedimiento mencionado en los ejemplos.

Transformemos la parte entera del nmero.

84131 | 16 .
41 | 5258 | 16 .
93 | 45 | 328 | 16 .
131 | 138 | 8 | 20 | 16 .
3 | 10 | | 4 | 1

A

As obtenemos la parte entera del nmero en base b.

8413110 = 148A316

Solucin: 8413110 = 148A316

Dado el nmero 451,62510 obtener el nmero correspondiente en el


Ejemplo 8.
sistema binario (base 2).

Utilicemos el procedimiento mencionado en los ejemplos.

Transformemos la parte entera del nmero:


451| 2 .
05 | 225 | 2 .
11| 02 | 112 | 2 .
1| 05 | 12 | 56 |2.
1 | 0 | 16 | 28 |2 .
0 | 08 | 14 | 2 .
0 | 0 | 7 | 2 .
1 | 3 | 2 .
1 | 1

As obtenemos la parte entera del nmero en base b.

45110 = 1110000112

- 88 -
Nmeros y Sistemas de Numeracin... Captulo II.

Transformemos la parte fraccionaria del nmero:


0, 0 , 625 (x2) = 2,250
1 1 | 250 (x2) = 0,500
0 0 | 500 (x2) = 1,000
1 1 | 000 (x2) = 0,000

Formemos la parte fraccionaria del nmero en base b.

0,62510 = 0,1012

Procedemos a sumar los nmeros transformados y as obtenemos el nmero real


en la base deseada:

451,62510 = 111000011,1012

Solucin: 451,62510 = 111000011,1012

Dado el nmero 10343,816110 obtener el nmero correspondiente


Ejemplo 9.

en base 32.

Utilicemos el procedimiento mencionado en los ejemplos.

Transformemos la parte entera del nmero:


10343 | 32 .
074 | 323 | 32 .
103 | 03 | 10
07 | 3 |
7 A

As obtenemos la parte entera del nmero en base b.

1034310 = A3732

Transformemos la parte fraccionaria del nmero:

- 89 -
Tras los pasos de un.. Hacker

0, 0 , 8161 (x32) = 26, 1152


Q 26 TTIE2 (X32) = 3, 6864
3 3| 6864 (x32) = 21, 9.648
L. 21 || 9648 (x32) = 30, 8736
U 30 | 8736 (x32) = 27, 9552
R 27 || 9552 (x32) = 30, 5664
U 30 | 5664 (x32) = 18, 1248
I 18 || 1248 (X32) = 3, 9936
3 3 || 9936 (x32) = 31, 7952
v 31 | 7952 (x32) = 25, 4464
P 25 || 4464 (x32) = 14, 2848
E 14 || 2848 (X32) 9, 11.36
9 9 || 11.36

Formemos la parte fraccionaria del nmero en base b.

0.81610 = 0.03LURUI3VPE932

Procedemos a sumar los nmeros transformados y as obtenemos el nmero real


en la base deseada.

1034381610 = A3703LURUI3VPE932

solucin: 10343816110 = A37,03LURUI3VPE932

Ejemplo 1o. Dado el nmero 3842431,000312510 obtener el nmero


correspondiente en base 20.

Transformemos la parte entera del nmero:


3842431 | 2 (O
184 | 192121 | 2 (O
042 | 121 | 9 (5 O (5 | 2 (O
0.24 | 0.121 | 1 60 | 48 (O | 2 (O
43 | 01 | 06 | 8 (O | 24 | 2 (O

31 | 1 | 6 || 0 || 4 || 1
ll l
|
B |

As obtenemos la parte entera del nmero en base b.

- 90 -
Nmeros y Sistemas de Numeracin... Captulo II.

384243110 = 14061B20

Transformemos la parte fraccionaria del nmero:


0, 0 , 0003125 (x20) = 0,00625
0 0|00625 (x20) = 0,125
0
2
A 10 125
0 | 0
2 5 (x20) = 10,00
2,5

Formemos la parte fraccionaria del nmero en base b.

0,000312510 = 0,002A20

Procedemos a unir los nmeros transformados y as obtenemos el nmero real


en la base deseada.

3842431,000312510 = 140661B,002A20

Solucin: 3842431,000312510 = 140661B,002A20

- 91 -
Tras los pasos de un... Hacker

- 92 -
Nmeros y Sistemas de Numeracin... Captulo II.

EJERCICIOS PROPUESTOS:

Ejercicio 21. Dado el nmero decimal 6510 obtener nmero correspondiente en base
3.

Ejercicio 22. Dado el nmero decimal 8610 obtener el nmero correspondiente en


base 5.

Ejercicio 23. Dado el nmero decimal 75,8110 obtener el nmero correspondiente en


base 16.

Ejercicio 24. Dado el nmero decimal 95,6410 obtener el nmero correspondiente en


base 8.

Ejercicio 25. Dado el nmero decimal 13610 obtener el nmero correspondiente en


base 2.

Ejercicio 26. Dado el nmero decimal 24710 obtener el nmero correspondiente en


base 21.
Dado el nmero decimal 861,34110 obtener el nmero correspondiente
Ejercicio 27.
en base 32.
Dado el nmero decimal 937,93110 obtener el nmero correspondiente
Ejercicio 28.
en base 2.
Dado el nmero decimal 81454,6510 obtener el nmero correspondiente
Ejercicio 29.
en base 16.

Ejercicio 30. Dado el nmero decimal 21362,56710 obtener el nmero


correspondiente en base 4.

Dado el nmero decimal 32146138,34110 obtener el nmero


Ejercicio 31.
correspondiente en base 8.

Ejercicio Dado el nmero decimal 813,84384110 obtener el nmero


32.

correspondiente en base 16.

Dado el nmero decimal 121346,3143110 obtener el nmero


Ejercicio 33.
correspondiente en base 7.

- 93 -
Tras los pasos de un... Hacker

Dado el nmero decimal 123456,78901310 obtener el nmero


Ejercicio 34.
correspondiente en base 6.

Ejercicio Dado el nmero decimal 3571,159310 obtener el nmero


35.

correspondiente en base 15.

Dado el nmero decimal 201357,913210110 obtener el nmero


Ejercicio 36.
correspondiente en base 4.

Dado el nmero decimal 0,381432168110 obtener el nmero


Ejercicio 37.
correspondiente en base 2.

Dado el nmero decimal 4321461,84356710 obtener el nmero


Ejercicio 38.
correspondiente en base 8.

Ejercicio 39. Dado el nmero decimal 2135879,16879310 obtener el nmero


correspondiente en base 16.

Dado el nmero decimal 23,131499821610 obtener el nmero


Ejercicio 40.
correspondiente en base 16.

- 94 -
Nmeros y Sistemas de Numeracin... Captulo II.

2.4.3 DE UN SISTEMA EN BASE B A UN SISTEMA EN BASE C


Para obtener la equivalencia de un nmero en base c, de otro dado en base b, se
sigue en siguiente procedimiento:
1. Transformamos el nmero en base b a su equivalente decimal.

2. Transformamos el nmero decimal obtenido a su correspondiente en


base c.

CASO ESPECIAL
Cuando tenemos un nmero binario, podemos transformar directamente a su
correspondiente, en cualquier base que sea potencia de dos (este mtodo es
tambin llamado mtodo directo), nicamente dividiendo el nmero binario en
grupos, cuyo nmero de elementos sern iguales al del nmero binario que
corresponda al mximo valor del smbolo de la base deseada; y, transformaremos
el grupo correspondiente a su valor en la base deseada, este nmero resultante
corresponde al nmero en la base deseada. (La divisin del nmero binario en
grupos, los tomaremos desde el punto fraccionario, los enteros hacia la izquierda
y los fraccionarios hacia la derecha, este procedimiento es recproco, para
transformar nmeros en base potencia de dos, al correspondiente binario).

Ejemplo: Transformar el nmero BAC016 a su correspondiente en base 9.


1. Transformemos el nmero a decimal:

Aplicando la frmula tenemos que:

N10 = Bx163 + Ax162 + Cx161 + 0x160


= 11x4096 + 10x256 + 13x16 + 0x1
= 45056 + 2560 + 192
= 4780810

2. Transformemos el decimal a la base deseada:

- 95 -
Tras los pasos de un... Hacker

Empezamos las divisiones sucesivas.


47808 | 9 .
28 | 5312 | 9 .
10 | 81 | 590 | 9 .
18 | 02 | 50 | 65 | 9 .
0 | 2 | 5 | 2 | 7

3. As obtenemos nuestro nmero transformado, es decir:

4780810 = 725209

Por tanto obtenemos la respuesta:

BAC016 = 725209

Ejemplo: Transformar el nmero 10101111,010112 al sistema octal (base


8).

1. Observamos que 8 = 23, sabemos adems que 78 = 1112, por tanto


utilizaremos el mtodo directo de transformacin y procedemos a dividir
el nmero en grupos de tres smbolos (si es necesario completaremos el
grupo con ceros).

N2 = 010 101 111 , 010 1102

2. Sustituimos estos grupos por sus correspondientes en la base 8, as


obtendremos:

N2 = 010 101 111 , 010 1102


V V V V V
N8 = 2 5 7 , 2 68

3. Procedemos a unir los nmeros transformados y as obtenemos el


nmero en la base deseada:

10101111,010112 = 257,268

- 96 -
Nmeros y Sistemas de Numeracin... Captulo II.

EJERCICIOS RESUELTOS:

Ejemplo 11. Dado el nmero 5436 obtener el nmero correspondiente en base


11.

Utilicemos el procedimiento mencionado en los ejemplos.

1. Transformemos el nmero a decimal:

Aplicando la frmula, tenemos que:

N10 = 5x62 + 4x61 + 3x60


= 5x36 + 4x6 + 3x1
= 180 + 24 + 3
= 20710

2. Transformemos el decimal a la base deseada:

Empezamos las divisiones sucesivas.


207 | 11 .
97 | 18 | 11 .
9 | 7 | 1

3. As obtenemos nuestro nmero transformado, es decir:

5436 = 17911

Solucin: 5436 = 17911

Dado el nmero 2101,102213 obtener el nmero correspondiente


Ejemplo 12.

en el sistema de base 7.

Utilicemos el procedimiento mencionado en los ejemplos:

1. Transformemos el nmero a decimal:

Aplicando la frmula, tenemos que:

- 97 -
Tras los pasos de un.. Hacker

N10 2x3 + 1x3 + Ox3 + 1x3 + 1x3 + Ox3 + 2x3


2x3 + 1x3
2x27 + 1x 9 + 0x3 + 1x1 + 1x1/3 + 0x1/9 + 2x1/27
2x1/81 + 1x1/243
54 + 9 + 0 + 1 + 0, 333333 + 0 + 0, 0.740 74 + 0, 02.4691
0, 004115
64, 43.62130

2. Transformemos el decimal a la base deseada:

Empezamos las divisiones sucesivas.


64 |
1 | | 7 .
| 1

3. As obtenemos la parte entera del nmero en base b.

6410 = 1217

4. Transformaremos la parte fraccionaria del nmero.


0, 0, 4.36213 (x'7) = 3, 053491
3 3 || 053491 (x7) = 0,374437
o 0|374437 (x7) = 2, 621059
2 2| 621059 (x7) = 4,347413
4 4 |347413 (x7) = 2, 431891
2 2|431891 (x7) = 3,023237
3 3 || 023237 (x7) = 0, 162659
o 0| 162659 (x7) = 1, 138613
1 1 | 138613 (x7) = 0,970291
o O|970291 (x7) = 6,792037
6 6 |792037 (x7) = 5, 544259
5 5 |544259 (x7) = 3,809813
3 3 |809813 (x7) = 5, 668691
5 5 | 621059 (x7) = 4, 680837
4 4 | 680837 (x7) = 4,765859
4 4 |765859 (x7) = 5,361013
5 5 |361013 (x7) = 2,527091
2 2|527091 (x7) = 3, 689637
3 3 | 689637

- Q8 -
Nmeros y Sistemas de Numeracin... Captulo II.

5. Formemos la parte fraccionaria del nmero en base b.

0,43621310 = 0,302423010653544523...7

6. As obtenemos nuestro nmero transformado, es decir:

64,43621310 = 121,302423010653544523...7

Solucin: 2101,102213 = 121,302423010653544523...7

Ejemplo
13. Dado el nmero 1010110,0101112 obtener el nmero
correspondiente en el sistema de base 4.

Utilicemos el procedimiento mencionado en los ejemplos.

1. Transformemos el nmero utilizando el mtodo directo:

Formaremos grupos de 2 smbolos, ya que 4=22 o lo que es lo mismo


34=112, portanto:

N2 = 01 01 01 10,01 01 112
V V V V V V V
N4 = 1 1 1 2, 1 1 34

N4 = 1112,1134

Solucin: 1010110,0101112 = 1112,1134

Dado el nmero 11110101011001,101111012 obtener el nmero


Ejemplo 14.

correspondiente en el sistema de base 8.

Utilicemos el procedimiento mencionado en los ejemplos.

1. Transformemos el nmero utilizando el mtodo directo:

Formaremos grupos de 2 smbolos, ya que 8=23 o lo que es lo mismo


78=1112 por tanto:

- 99 -
Tras los pasos de un... Hacker

N2 = 011 110 101 011 001,101 111 0102


V V V V V V V V
N8 = 3 6 5 3 1, 5 7 28

N8 = 36531,5728

Solucin: 11110101011001,101111012 = 36531,5728

Ejemplo 15. Dado el nmero 1111111111111111,1111111111112 obtener el


nmero correspondiente en el sistema de base 16.

Utilicemos el procedimiento mencionado en los ejemplos.

1. Transformemos el nmero utilizando el mtodo directo:

Formaremos grupos de 4 smbolos.

N2 = 1111 1111 1111 1111 ,1111 1111 11112


V V V V V V V
N16 = F F F F , F F F16
N16 = FFFF,FFF16

Solucin: 1111111111111111,1111111111112 = FFFF,FFF16

- 100 -
Nmeros y Sistemas de Numeracin... Captulo II.

EJERCICIOS PROPUESTOS

Transformar los siguientes nmeros de base n a su correspondiente en base m.


Ejercicio Dado el nmero PERMISO,503590129
41. obtener el nmero
correspondiente en el sistema de base 3.
Dado el nmero 321021,31245 obtener el nmero correspondiente en el
Ejercicio 42.
sistema de base 21.
Dado el nmero 371461,67219 obtener el nmero correspondiente en el
Ejercicio 43.
sistema de base 8.
Dado el nmero ABA170838,53713 obtener el nmero correspondiente
Ejercicio 44.
en el sistema de base 12.
Dado el nmero 231EK0,3BF21 obtener el nmero correspondiente en el
Ejercicio 45.
sistema de base 23.
Dado el nmero NENA832HI,J0324 obtener el nmero correspondiente
Ejercicio 46.
en el sistema de base 14.
Dado el nmero BACA0E328515 obtener el nmero correspondiente en
Ejercicio 47.
el sistema de base 31.
Dado el nmero FA031CAEC16 obtener el nmero correspondiente en el
Ejercicio 48.
sistema de base 13.
Dado el nmero A93231,845A11 obtener el nmero correspondiente en
Ejercicio 49.
el sistema de base 27.
Dado el nmero 93210012301,3312 obtener el nmero correspondiente
Ejercicio50.
en el sistema de base 36.
Dado el nmero 10110101102 obtener el nmero correspondiente en el
Ejercicio 51.
sistema de base 4.
Dado el nmero 100110101102 obtener el nmero correspondiente en
Ejercicio 52.
el sistema de base 4.

- 101 -
Tras los pasos de un... Hacker

Dado el nmero 1100110,1101002 obtener el nmero correspondiente


Ejercicio 53.
en el sistema de base 8.

Ejercicio Dado el nmero 1101101,0011101112 obtener el nmero


54.

correspondiente en el sistema de base 8.

Ejercicio Dado el nmero 001010,01111101112 obtener el nmero


55.

correspondiente en el sistema de base 8.

Ejercicio Dado el nmero 110,01110110111112 obtener el nmero


56.

correspondiente en el sistema de base 16.

Ejercicio Dado el nmero 00100101010,0000012 obtener el nmero


57.

correspondiente en el sistema de base 16.


58.
Ejercicio Dado el nmero 1100001,0100100112 obtener el nmero
correspondiente en el sistema de base 16.

Dado el nmero 11001111,111100111012 obtener el nmero


Ejercicio 59.
correspondiente en el sistema de base 32.
Dado el nmero 11011101111001011110110,11101110111001110111102 obtener el
Ejercicio 60.
nmero correspondiente en el sistema de base 32.

- 102 -
Nmeros y Sistemas de Numeracin... Captulo II.

2.5 OPERACIONES FUNDAMENTALES EN LOS SISTEMAS DE


NUMERACIN
En esta seccin de la obra, definiremos y aprenderemos las cuatro operaciones
fundamentales, es decir: La suma, la resta, la multiplicacin y la divisin, pero con
una particularidad, que utilizaremos los sistemas de numeracin y de manera
preferente los que utiliza la informtica, es decir el hexadecimal, octal y binario.

2.5.1 SUMA

DEFINICIN
Es la operacin o procedimiento mediante el cual agrupamos elementos de la
misma clase, el smbolo que indica este proceso es el signo ms (+).

La suma tiene cierta importancia en la informtica, pues es en ella que la


computadora basa su funcionamiento para realizar todas las operaciones
aritmticas (principal diseo de una ALU (Arithmetic Logic Unit), cuando veamos
algo de la Arquitectura de una Computadora toparemos este tema).

ELEMENTOS
En la suma intervienen: los sumandos que son las cantidades a agruparse para
obtener el resultado final o total.

Sumandos Total
Ejemplo: 3810 + 4510 = 8310

{A,B,C} + {D,E,F} = {A,B,C,D,E,F}

a+b=c ; a, b, c R

- 103 -
Tras los pasos de un... Hacker

PROPIEDADES
En la suma encontramos definidas las siguientes propiedades:

A) PROPIEDAD CLAUSURATIVA

La suma de elementos de la misma clase, dan origen a otro de la misma clase.

Ejemplo: a + b = c ; a, b, c R
314 + 224 = 1134

B) PROPIEDAD CONMUTATIVA

El orden de los sumandos no altera el resultado final.


Ejemplo: 1012 + 1102 = 10112

1102 + 1012 = 10112

C) PROPIEDAD ASOCIATIVA

Los sumandos se pueden agrupar y el resultado final no altera.


Ejemplo: (1FE16 + A1016) + CB716 = 1FE16 + (A1016 +CB716)

COE16 + CB716 = 1FE16 + 16C716

8C516 = 18C516

D) PROPIEDAD MODULATIVA
Si a una cantidad le adicionamos el elemento cero o ausencia de cantidad, este no
altera.
Ejemplo: 7618 + 08 = 761 8

- 104 -
Nmeros y Sistemas de Numeracin... Captulo II.

PROCEDIMIENTO
Para sumar en cualquier sistema de numeracin, debemos tener en cuenta el
orden lgico de la sucesin de cantidades y su respectivo smbolo y de cmo se
lleva el acarreo es este sistema (valor auxiliar que sumaremos a la siguiente cifra
a la izquierda de la que estamos sumando, en la computadora en el procesador
aritmtico tambin existe un registro especial que lleva el acarreo, cuando se
sobrepasa del lmite se produce un error denominado overflow o de
desbordamiento, cuando veamos algo de la Arquitectura de una Computadora
profundizaremos el tema), observando el orden de los smbolos que representan
las cantidades.
Claro est que el sistema de referencia es el decimal, podemos sumar y de hecho
en cualquier sistema, cuyo procedimiento es idntico al que utilizamos en el
decimal, observando los consejos anteriormente citados, as:

Binario
2 Ternario
3 7 Octal
8 Decimal
10 Hexadecimal
16

0
0 0 0 0 0 1
1 1 1 1 1 2
10 2 2 2 2 3
10100
10001
10000
1110
1101
1011
1010
111
100
11
10101
10011
10010
1111
1100
1001
1000
110
101 202
122
121
112
111
102
101
21
11
10
210
201
200
120
110
100
22
20
12 26
23
22
20
16
14
13
10
30
25
21
15
12
11
6
5
4
3 24
21
20
16
15
13
12
25
23
22
17
14
11
10
7
6
5
4
3 20
17
16
14
13
11
10
21
19
18
15
12
9
8
7
6
5
4
3 4
5
6
7
8
9
A
B
C
D
E
F
10
11
12
13
14
15
.
. . . . . .
. . . . . .
. . . . .
Tabla 1. Nmeros en varios sistemas de numeracin.

a) Colocar correctamente los nmeros.


b) Sumar cifra por cifra y el acarreo si existiere, si se produce
acarreo llevarlo a la siguiente cifra ubicada a la izquierda de la

- 105 -
Tras los pasos de un... Hacker

que produjo el acarreo.


c) Repetir el paso b, hasta que no tengamos ms cifras que sumar.

Ejemplo: Sumar 103110 y 89510

1. Colocamos correctamente los nmeros:

1 0 3 1 10
+ 8 9 5 10

2. Procedemos a sumar cifra por cifra y si hay acarreo lo sumaremos a la


siguiente, comenzamos por la derecha de los nmeros:
1 acarreo
1 0 3 1 10
+ 8 9 5 10

1 9 2 6 10

En este ejemplo se produce un acarreo ya que 310 + 910 = 1210, entonces


escribiremos 210 en el resultado y el 110 al acarreo a la siguiente cifra a la
izquierda de donde realizamos la suma.

Ejemplo: Sumar 3214 y 1134.

1. Colocamos correctamente los nmeros:

3 2 14
+1 1 34

2. Procedemos a sumar cifra por cifra y si hay acarreo lo sumaremos a la


siguiente, comenzamos por la derecha de los nmeros:
1 1 1 acarreo
3 2 14
+ 1 1 34
1 1 0 04

- 106 -
Nmeros y Sistemas de Numeracin... Captulo II.

Como observamos en este sistema, el siguiente valor al definido de 34 es el 104,


pero no podemos escribir este nmero, sino nicamente su cifra que corresponde
a la posicin que sumamos y por ende nuestro acarreo es de 14.

EJERCICIOS RESUELTOS:

Sumar las siguientes cantidades:

Ejemplo 16. Sumar 8419 y 2389.


1 0 1
acarreo
8 4 1 9
+ 2 3 8 9
1 1 8 0 9

Solucin: 8419 + 2389 = 11809

Ejemplo 17. Sumar 24315 y 243215.


1 1 1 acarreo
2 4 3 15
+ 2 4 3 2 15
3 2 3 0 25

Solucin: 24315 + 243215 = 323025

Ejemplo 18. Sumar 10111102; 11012 y 110112.


1 1 1
1 0 1 1 .
1 1 0 0 1 1 1 acarreo
1 0 1 1 1 1 02
+ 1 1 0 12
1 1 0 1 12
1 0 0 0 0 1 1 02

Solucin: 101111102 + 11012 + 110112 = 100001102

- 107 -
Tras los pasos de un.. Hacker

Ejemplo 19. Sumar FE101; FA0, BC1, y BAC0,00BDe.


* a carreo
F E 1 0 , 0 0 0 0.
+ F A 0, B C 0 0.
B A C 0, 0 0 B. De
1 C 8 7 0, B C B De

solucin: FE101 + FA0, BC1, + BAC0,00BD1 = 10870, BCBD,

Ejemplo 2o. Sumar 758; 101,58; 1731,3108 y 1654,2768.


2 2 1.

El CE JCC e O

(O 3

solucin:75g + 101,5g + 1731,310 + 1654,276g =4004,306g

- 108 -
Nmeros y Sistemas de Numeracin... Captulo II.

EJERCICIOS PROPUESTOS:

Sumar las siguientes cantidades:

Ejercicio 61. Sumar 101012 y 101102.

Ejercicio 62. Sumar 1235 y 42105.

Ejercicio 63. Sumar FED16 y 103B16.

Ejercicio 64. Sumar PACO36 y CAMI36.

Ejercicio 65. Sumar 1010110112; 10101112 y 101012.

Ejercicio 66. Sumar 765018; 10108 y 77108.

Ejercicio 67. Sumar FE1316; 100016 y 101B16.

Ejercicio 68. Sumar 101010011012; 10111102 y 1010112.

Ejercicio 69. Sumar 10101,01012 y 101,012.

Ejercicio 70. Sumar FEBC,01516 y 10FD,CE16.

Ejercicio 71. Sumar 3102118 y 3219,B0C18.

Ejercicio 72. Sumar 31639 y 2310,2169.

Ejercicio 73. Sumar 210311; 643,21211 y 246,38111.

Ejercicio 74. Sumar 245,819; 3210,169 y 38,4169.

Ejercicio 75. Sumar BERTE536; SUMA,389136 y RATON,JOY36.

Ejercicio 76. Sumar 2504,3612; 8310,45312 y 38AB,34B12.

Ejercicio 77. Sumar 241,326; 321,0326; 3215,32466 y 30111,3456.

Ejercicio 78. Sumar 9999,3215;321BAC,3115;3613B,CD00E15 y 3261,6615.

Ejercicio 79. Sumar 231,68516;3FEBA,00116;837AC0,EC0B16 y BAC,00B16.

Ejercicio 80. Sumar RETIRO,FIN36; AQU, TER36; MINA,LA036 y SUMA,TORIA36.

- 109 -
Tras los pasos de un... Hacker

- 110 -
Nmeros y Sistemas de Numeracin... Captulo II.

2.5.2 RESTA

DEFINICIN
Es la operacin o procedimiento mediante el cual se disminuye elementos de la
misma clase, de una agrupacin de estos y cuya cantidad resultante complementa
a la cantidad disminuyente, el smbolo que indica este proceso es el signo menos
(-).

ELEMENTOS
Los elementos que intervienen en la resta, son: el minuendo que es la cantidad de
la que restaremos, el sustraendo que es la cantidad que restamos y el resultado
final o total.

Minuendo - Sustraendo = Total


Ejemplo: 4510 - 4510 = 1510

368 - 128 = 248

PROPIEDADES
En la resta encontramos definidas las siguientes propiedades:

A) PROPIEDAD CLAUSURATIVA

La resta de elementos de la misma clase, dan origen a otro del mismo gnero.

Ejemplo: d- e = f ; d, e, f R
266 - 106 = 156

B) PROPIEDAD ASOCIATIVA
El minuendo y los sustraendos se pueden asociar sin que el total vare.

- 111 -
Tras los pasos de un... Hacker

Ejemplo: (325 - 125) - 135 = 325 - (125 + 135)

205 - 135 = 325 - 305

25 = 25

Cuando apliquemos esta propiedad hay que tener en cuenta que los sustraendos
cuando se asocian se transforman en sumandos.

C) PROPIEDAD MODULATIVA
Si al minuendo se le resta el 0 o elemento nulo, el minuendo no se altera.

Ejemplo: 812 - 012 = 812

PROCEDIMIENTO
Aprenderemos como se resta, sumando; parece contradictorio pero as es como
nuestra computadora lo hace, ms an, trabajaremos con este proceso en todos
los sistemas de numeracin, pero para entender este mtodo, definiremos
primero una idea fundamental, como es, la idea de complemento (en la ALU
(Arithmetic Logic Unit), o en espaol Unidad Aritmtico Lgica, que es algo as
como el msculo del microprocesador de una computadora, este clculo de
complemento puede ser a 1 o a 2, dependiendo cmo? haya sido diseada tal
unidad, en fin como dije cuando veamos algo de la Arquitectura de una
Computadora, toparemos este tema); as, complemento es todo aquello que no
pertenezca a una cantidad dada, pero est comprendido en un universo definido,
con la siguiente propiedad, que ste complemento, sumado a dicha cantidad nos
d como resultado el universo definido, as por ejemplo: Si definimos un universo
de 100 alumnos y en un curso existen 32 alumnos, el complemento del curso ser
por lo tanto 68 alumnos.
Para restar por medio de complementos, seguiremos el siguiente procedimiento:

a) Hallar el complemento del sustraendo, en el universo definido por el

- 112 -
Nmeros y Sistemas de Numeracin... Captulo II.

minuendo.
b) Sumar el minuendo y el complemento obtenido.

c) Sumar las cifras que estn fuera del lmite de cifras posicionales a esta
cantidad obtenida, tendremos como respuesta el resultado final de la
resta.

Ejemplo: De 510 restar 210


a) Analizamos el universo que define el minuendo, en este caso 510,
obtenemos como universo el conjunto cantidades comprendidas en el
rango de [010:910]
b) Hallamos el complemento del sustraendo, lo hallamos como: 210 + 710 =
910 nmero mximo del universo, nuestro complemento ser el 710.

c) Procedemos a la suma:

510
+ 710
1210

d) Observamos que la cifra 110 sobrepasa el nmero de cifras del minuendo


y sustraendo, por tanto desplazamos esta cifra y la sumamos a la que
queda.
510
+ 710
1210
+>110

e) El resultado310
final es 310
Ejemplo: De 101012 restar 10012
a) Determinamos el universo, en este caso es la cantidad 111112
b) Hallamos el complemento de 10012 como regla completaremos el nmero
al universo definido; as, 010012 y hallamos el complemento, cambiando

- 113 -
Tras los pasos de un... Hacker

los 0 por 1 y viceversa:

Nmero = 010012

Complemento = 101102
c) Procedemos a la suma del minuendo y el complemento:

1 0 1 0 12
+ 1 0 1 1 02
1 0 1 0 1 12

d) Separamos la cifra que sobrepasa el lmite del universo y sumamos al


resultado obtenido:
1 0 1 0 12
+ 1 0 1 1 02
1 0 1 0 1 12
+> 12
1 1 0 02

e) El resultado final es 11002

EJERCICIOS RESUELTOS:

Efectuar las siguientes restas, utilizando el mtodo del complemento:

Ejemplo 21. De 3214 restar 134.

Encontremos el complemento del sustraendo, s= 0134 s = 3204


1 1 acarreo
3214
+ 3204
13014
+ >14
3024

Solucin: 3214 -134 = 3024

- 114 -
Nmeros y Sistemas de Numeracin... Captulo II.

Ejemplo 22. De FE0116 restar BA016.

Encontremos el complemento del sustraendo, s= 0BA016 s= F45F16

1 1 1
acarreo
FE0116
+ F45F16
1F26016
+ >116
F26116

Solucin: FE0116 -BA016 = F26116

Ejemplo 23. De PERICO36 restar OCHO36.

Encontremos el complemento del sustraendo, s= 00OCHO36 s=ZZBNIB36


1 1 1 1
acarreo
P E R I C O36
+ Z Z B B I B36
1 P E 3 5 U Z36
+ >136
P E 3 5 V 036

Solucin: PERICO36 -OCHO36 = PE35V036

Ejemplo 24. De 843110 restar 244310.

Encontremos el complemento del sustraendo, s=Z44310 s=755610

1 acarreo
8 4 3 110
+ 7 5 5 610
1 5 9 8 710
+ >110
5 9 8 810

Solucin: 843110 -244310 = 598810

- 115 -
Tras los pasos de un... Hacker

Ejemplo 25. De 101010111,10112 restar 1010111,1012.

Encontremos el complemento del sustraendo,

s = 001010111,10102
s= 110101000,01012

1111111111 111 acarreo


101010111,10112
+ 110101000,01012
1100000000,00002
+ >12
100000000,00012

Solucin: 101010111,10112 - 1010111,10112 = 100000000,00012

- 116 -
Nmeros y Sistemas de Numeracin... Captulo II.

EJERCICIOS PROPUESTOS:

Efectuar las siguientes restas utilizando el mtodo del complemento:


Ejercicio 81. De 101012 restar 10112.

Ejercicio 82. De 3146 restar 236.

Ejercicio 83. De 2157 restar 1107.

Ejercicio 84. De 91A11 restar A311.

Ejercicio 85. De 24P30 restar AD30.

Ejercicio 86. De 34512 restar 1812;4512.

Ejercicio 87. De 84ABA0112 restar 5091012; 8321A12.

Ejercicio 88. De 100101011012 restar 1011012; 101111112.

Ejercicio 89. De 63P20530 restar83K2M30; 2158330.

Ejercicio 90. De 25613AF16 restar F63A16; B0CA16.

Ejercicio 91. De 23A,8CD16 restar 23,C0316.

Ejercicio 92. De 12613,845611 restar A132,311.

Ejercicio 93. De 243261,4316217 restar 1021,6317.

Ejercicio 94. De 83416,3143110 restar 21645,37110.

Ejercicio 95. De SALTO,BIRTU36 restar AME05C36.

Ejercicio 96. De 3216895,6132110 restar 21321,56710; B314,3510.

Ejercicio 97. De 436425,208 restar 1010,3218; 21321,61328.

Ejercicio 98. De 938AFC,00ABD16 restar FFCD,162116; AC0,BED16.

Ejercicio 99. De A38514,32113 restar A0321,6113; CBA,ABC13.

Ejercicio 100. De 236143AFC16 restar 21,632116; 0,02BF00116.

- 117 -
Tras los pasos de un... Hacker

- 118 -
Nmeros y Sistemas de Numeracin... Captulo II.

2.5.3 MULTIPLICACIN

DEFINICIN
Es la operacin o procedimiento, mediante el cual se amplifica una cantidad dada,
tantas veces como lo indica otra de la misma clase, el smbolo que indica la
multiplicacin es el signo por (x *).

ELEMENTOS
Los elementos que intervienen en la multiplicacin son: los factores o
multiplicandos y el producto o resultado total.

Multiplicandos Producto o total


Ejemplo: 2310 x 1910 = 43710

PROPIEDADES
En la multiplicacin encontramos definidas las siguientes propiedades:

A) PROPIEDAD CLAUSURATIVA

La multiplicacin de dos cantidades, dan origen a otra de la misma clase.


Ejemplo: 3F16 x 1316 = 4AD16

3218 x 768 = 312368

B) PROPIEDAD CONMUTATIVA
El orden de los factores no altera el producto o resultado final.

Ejemplo: 8110 x 2510 = 202510

- 119 -
Tras los pasos de un... Hacker

2510 x 8110 = 202510

C) PROPIEDAD ASOCIATIVA

Los factores se pueden agrupar sin que altere el producto o total.


Ejemplo: (1012 x 102) x 10112 = 1012 x (102 x 10112)

10102 x 10112 = 1012 x 101102

11011102 = 11011102

D) PROPIEDAD MODULATIVA
Si a un nmero en cualquier sistema, multiplicamos por 1b el nmero no altera.

Ejemplo: 3F2816 x 116 = 3F2816

243215 x 15 = 23421 5

E) INVERSO MULTIPLICATIVO
Todo nmero tiene su inverso multiplicativo excepto el 0b, cuyo producto ser
igual a 1n.
Ejemplo: 325
310 7x 110 = 110
310

x 17 = 17
3257

PROCEDIMIENTO
La multiplicacin en cualquier sistema, se rige por el mismo procedimiento que
para los nmeros decimales, pero aprenderemos, como se multiplica, sumando
en cualquier sistema, para esto, seguiremos los siguientes pasos:

- 120 -
Nmeros y Sistemas de Numeracin... Captulo II.

a) Sumamos el primer factor, tantas veces nos indique la primera cifra del
otro factor (a partir de la derecha del nmero).

b) Acarreamos la primera cifra de esta suma (a partir de la derecha del


nmero).
c) Sumamos el primer factor, tantas veces nos indique la siguiente cifra del
siguiente factor y escribimos estos sumandos a la altura de la cifra
siguiente del acarreo.
d) Obtenemos este total y bajamos el acarreo.

e) Repetimos los pasos b al d tantas veces sean necesarios.

Ejemplo: Multiplicar 43110 x 72510.

Primero por el mtodo generalizado:

43110
x 72510
215510
+ 862 10
3017 10
31247510

Por el mtodo de sumas sucesivas:


43110
x 72510
43110 \
43110 |
+ 43110 | 5 veces
43110 |
43110acarreo
/
215510
43110 \
+ 431 10 / 2 veces
1077510acarreo
431 10 \
431 10 |
431 10 |

- 121 -
Tras los pasos de un... Hacker

+ 431 10 | 7 veces
431 10 |
431 10 |
431 10 /
31247510

El producto de multiplicar 43110 x 72510 = 31247510.

Como observamos, obtenemos la misma respuesta, cuando trabajamos en


cualquier otro sistema de numeracin, es aconsejable utilizar el segundo mtodo.
Ejemplo: Multiplicar F3516 x 7A16.
F3516
x 7A16
92316acarreo
F3516 \
F3516 |
F3516 |
F3516 |
+ F3516 A16 veces en este caso 10 veces.
F3516 |
F3516 |
F3516 |
F3516 |
F3516 /
981216acarreo
F35 16 \
F35 16 |
F35 16 |
+ F35 16 | 716 veces
F35 16 |
F35 16 |
F35 16 /
73F4216

El producto de multiplicar F3516 x 7A16 =73F4216.

EJERCICIOS RESUELTOS:

Efectuar las siguientes multiplicaciones:

- 122 -
Nmeros y Sistemas de Numeracin... Captulo II.

Ejemplo 26. Multiplicar 23215 x 325.


23215
x 325
23215
+ 23215
101425
2321 5
+ 2321 5
2321 5
1403225

Solucin: 23215 x 325 = 1403225

Ejemplo 27. Multiplicar 32411 xA311.


32411
x A311
32411
+ 32411
32411
97111
324 11
324 11
324 11
324 11
324 11
+ 324 11
324 11
324 11
324 11
324 11
3003111

Solucin: 32411 xA311 = 3003111

- 123 -
Tras los pasos de un... Hacker

Ejemplo 28. Multiplicar FBC16 x3116.


FBC16
x 3116
FBC16
FBC 16
+ FBC 16
FBC 16
302FC16

Solucin: FBC16 x 3116 = 302FC16

Ejemplo 29. Multiplicar 1011011,1011012 x 10110,112.


1011011,1011012
x 10110,11 2
10110111011012
+1011011101101 2
1000100110001112
+0000000000000 2
1000100110001112
+1011011101101 2
11111100001011112
+1011011101101 2
1001101010111111112
+0000000000000 2
1001101010111111112
+1011011101101 2
100000100110001111112

Ahora, el nmero de smbolos fraccionarios sern la suma de las posiciones de los


smbolos fraccionarios de los factores que participaron en esta multiplicacin, en
este caso sern 8 posiciones fraccionarias.

Solucin: 1011011,1011012 x 10110,112 = 100000100110,001111112

- 124 -
Nmeros y Sistemas de Numeracin... Captulo II.

Ejemplo 30. Multiplicar 326,BA0116 xA,01316.

326,BA0116
x A,013 16
326BA0116
+ 326BA0116
326BA0116
9742E0316
+ 326BA01 16
3BDFCE1316
+ 000000 16
3BDFCE1316
+ 326BA01 16
16
16
16
16
16
16
16
16
16
1F870206E1316

Solucin: 326,BA0116 xA,01316 = 1F87,0206E1316

- 125 -
Tras los pasos de un... Hacker

- 126 -
Nmeros y Sistemas de Numeracin... Captulo II.

EJERCICIOS PROPUESTOS:

Efectuar las siguientes multiplicaciones:


Ejercicio 101. Multiplicar 3214 x114.

Ejercicio 102. Multiplicar 10102 x1112.

Ejercicio 103. Multiplicar 1F616 x13B16.

Ejercicio 104. Multiplicar 81619 x2149.

Ejercicio 105. Multiplicar 10101112 x 10102.

Ejercicio 106. Multiplicar FAC16 x32116.

Ejercicio 107. Multiplicar FAC32 x MIL32.

Ejercicio 108. Multiplicar DOS32 x CIEN32.

Ejercicio 109. Multiplicar 1013F16 x1FF16.

Ejercicio 110. Multiplicar 75208 x 3618.

Ejercicio 111. Multiplicar 231,56110 x81,0610.

Ejercicio 112. Multiplicar 850,3AB16 x21,CD16.

Ejercicio 113. Multiplicar ABDAC,FA16 x32,6116.

Ejercicio 114. Multiplicar 321768,219 x 0,61379.

Ejercicio 115. Multiplicar 101011011,011012 x 101,01012.

Ejercicio 116. Multiplicar 101321,0113214 x 21012,3214.

Ejercicio 117. Multiplicar 216178,COL32 x 221,63BOR32.

Ejercicio 118. Multiplicar 21613,214310 x 2532,1670910.

Ejercicio 119. Multiplicar 21613BAC,F0116 x 0,1132A16.

Ejercicio 120. Multiplicar 1013210,3COLI30 x 0,03FLOR30.

- 127 -
Tras los pasos de un... Hacker

- 128 -
Nmeros y Sistemas de Numeracin... Captulo II.

2.5.4 DIVISIN

DEFINICIN
Es la operacin o procedimiento, mediante el cual logramos establecer la relacin
que existe de una cantidad respecto de otra dada, el smbolo que indica esta
operacin es el signo dividido para ( /).

ELEMENTOS
Los elementos que intervienen en una divisin son: el dividendo, cantidad sobre
la cual estableceremos la relacin; el divisor, cantidad que se relaciona con el
dividendo; el cociente, cantidad que expresa la relacin del dividendo y el divisor;
y, el residuo, cantidad que sumada al producto del cociente con el divisor se
obtiene el dividendo.

Dividendo Divisor Cociente


Ejemplo: 3810 610 = 610 y Residuo 210

PROPIEDADES
En la divisin tenemos definidas las siguientes propiedades:

A) PROPIEDAD CLAUSURATIVA
La divisin de dos cantidades, dan origen a otra de la misma clase.
Ejemplo: 217 37 = 57

312368 768 = 3218

B) PROPIEDAD MODULATIVA
La divisin de toda cantidad para la unidad, da como cociente la misma cantidad.

- 129 -
Tras los pasos de un... Hacker

Ejemplo: 324 14 = 32 4

PROCEDIMIENTO
Para poder dividir dos nmeros en cualquier sistema, aprenderemos a dividir
sumado, para lo cual seguiremos el siguiente proceso:

a) Escribimos nuestro dividendo, tomamos las primeras cifras como tenga el


divisor, comenzando desde la izquierda.
b) Comparamos el primer grupo con el divisor, si este (el divisor) es mayor
tomamos la siguiente cifra y repetimos el paso b.
c) Hallamos el complemento del divisor, en el universo definido por el
dividendo, en el grupo determinado.

d) Sumamos estas cantidades y trasladamos el acarreo del resultado y


volvemos a sumar, el acarreo y la cantidad sin el mismo.

e) Repetimos los pasos b hasta el d, tantas veces como sea necesario hasta
que el resultado final de las sumas sea menor que el divisor.

f) Contamos las veces que sumamos el complemento, hasta que este


resultado sea menor que el divisor, este valor nos indica la primera cifra
del cociente.

g) Bajemos la siguiente cifra y procedemos como nos indican los pasos c, d, e


y f.
h) Para hallar la fraccin, al ltimo residuo, le aumentamos un 0b y
repetimos los pasos a hasta el g, hasta hallar un residuo 0b el universo
definido.

Ejemplo: Dividir 322110 4510.


Paso a) tomamos el dividendo 322110, tomamos las dos primeras cifras, es decir
3210.

- 130 -
Nmeros y Sistemas de Numeracin... Captulo II.

Paso b) comparamos 3210 con 4510, vemos que el divisor es mayor, por tanto
tomamos la siguiente cifra, tendremos 32210, volvemos a comparar, como la
condicin es falsa continuamos con el proceso.
Paso c) hallamos el complemento del divisor en el universo definido por 32210, es
decir 99910, ahora s = 4510 su complemento ser s=95410, entonces se cumple
que:

s+ s = 99910.
Pasos d) y e).

322 110
+ 95410 (1) (primera suma)
127610 (R=1)
+>110
+ 277
95410
10 (2) (segunda
(27710 es suma)
mayor que 4510 por tanto continuamos con d) y e))

123110 (R=2)
+>110
+118610
23210
95410 (3) es suma)
(tercera
(23210
(R=3) mayor que 4510 por tanto continuamos con d) y e))

+>110
+1141
187
95410
10
10 (4) (18710 essuma)
(cuarta
(R=4) mayor que 4510 por tanto continuamos con d) y e))

+>110
+109610
14210
95410 (5) (quinta
(14210
(R=5) essuma)
mayor que 4510 por tanto continuamos con d) y e))

+>110
+1051
9710
95410
10 (6) (9710 essuma)
(sexta
(R=7) mayor que 4510 por tanto continuamos con d) y e))

+>110
+ 95410
5210 (7) (sptima
(5210 es mayor
suma, que
veremos
4510 por
que tanto
este valor
continuamos
(7) es con
la primera
d) y e))

100610
+>110 cifra
(R=7) del resultado)

710 (710 es menor que 4510 por tanto continuamos con f))

- 131 -
Tras los pasos de un... Hacker

7110 (Paso g)
+12510
5410 (1) (primera
(en este caso,
suma, este
realizamos
valor (1)
los es
pasos
la segunda
c), d), cifra
y e)) del

+>110 (R=71) resultado)


2610 (2610 es menor que 4510 por tanto continuamos con f)
26010 (Ahora para iniciar las fracciones adicionamos un 010
+95410 (1) y continuamos desde el paso a), primera suma)
121410
+>110 (R=71,1)

+95410
21510 (2) (segunda suma)
116910 (R=71,2)
+>110
17010
112410
+95410 (3)(R=71,3) (tercera suma)

+>110
+95410
12510 (4)
(cuarta suma)
107910
+>110 (R=71,4)

8010
+95410 (5) (quinta suma)
103410 (R=71,5)
+>110
3510 (condicin de fin de procedimiento, 5 primera cifra
35010 Ahora adicionamos un 010, para continuar obteniendo cifras
fraccionaria)

+95410 (1) fraccionarias y continuamos desde el paso a),


primera suma)
130410 (R=71,51)
+>110
30510
+95410 (2) (segunda suma)
125910 (R=71,52)
+>110
+954
26010
10 (3)
121410 (R=71,53) (tercera suma)

+>110
+95410
21510 (4)
(cuarta suma)
116910 (R=71,54)
+>110
17010

- 132 -
Nmeros y Sistemas de Numeracin... Captulo II.

+95410 (5) (quinta suma)


(R=71,55)
112410
+>110
+95410
12510
(R=71,56) (sexta
(6) suma)
107910
+>110
8010
+95410 (7) (sptima suma)
103410 (R=71,57)
+>110
3510 (termina el procedimiento, 7 segunda cifra fraccionaria)

(Como observamos, se repite el valor 3510, lo cual nos indica que la fraccin es
peridica en la ltima cifra)

Solucin: 322110 4510 = 71,5777... 10

Ejemplo: Dividir 10112 1002

Empezamos el proceso de la divisin:

10112
+0112 (1) (primera suma, en este caso como veremos 1)
10002 (es la primera cifra del resultado)
+>12 (R=1)
12 (termina proceso, bajamos la siguiente cifra)
112 (termina proceso, obtendremos que 0 es la siguiente cifra del
resultado, no se hizo ninguna suma)
(R=10)
1102 (Empiezan las fracciones)
+0112 (1) (primera suma)
10012 (R=10,1)
+>12
102 (termina proceso, adicionaremos un 02 paras seguir calculando)
1002 (R=10,10)
(primera suma, 1 es la siguiente cifra del resultado)
+0112(1)
1112 (observamos que hemos obtenido el universo definido, por tanto
terminamos el proceso)
(R=10,11)

Solucin: 10112 1002 = 10,112

- 133 -
Tras los pasos de un... Hacker

EJERCICIOS RESUELTOS:

Efectuar las siguientes divisiones:


Ejemplo 31. Dividir 111111112 101002.

111111112
+010112 (1)
1010102 (R=1)
+ >12
010112
101112
+010112 (1)
1000102 (R=11)
+>12
000112
1112 (0) (R=110)
11112 (0) (R=1100)
1111,02 (Empiezan las fracciones)
+0101 12 (1) (R=1100,1)
10100 12
+>12
101 02
101 002
+010 112 (1) (R=1100,11)
111 112 (Termina proceso)

Solucin: 111111112 101002 = 1100,112

Ejemplo 32. Dividir 32124 234.


32124
+ 104 (1)
1024 (R=1)
+>14
34
314
+1014
104 (1) (R=11)

+>14
24
224 (0) (24 es menor que 234, 224 es menor que 234, por tanto, no
2204 (R=110) se hace ninguna suma, el contador queda en 04 y empiezan

- 134 -
Nmeros y Sistemas de Numeracin... Captulo II.

+ 3104 (1) las fracciones)


11304
+>14 (R=110,1)

1314
+ 3104 (2) (R=110,2)
11014
+>14
1024
+ 3104 (3) (R=110,3)
10124
+>14
134
1304 (R=110,30)
+ 3104 (1)
11004 (R=110,31)
+>14
1014
+ 3104 (2)
10114 (R=110,32)
+>14
124
1204 (R=110,320)
+ 3104 (1)
+>1
10304 (R=110,321)
4
0314
+ 3104 (2)
+>1
10014 (R=110,322)

4
0024
00204 (R=110,3220)

Solucin: 32124 234 = 110,3220 y resto 0,0024

Para hallar el resto contamos las cifras que se adicion hasta el residuo final, se
coloca la coma fraccionaria en el primer cero (si hay fracciones) o completamos
con ceros a la izquierda, en este caso calculamos 4 dgitos fraccionarios y el resto
calculado tiene 4 dgitos, por esta razn el resto es 0,00204.

Ejemplo 33. Dividir 101012 11001002.

- 135 -
Tras los pasos de un... Hacker

101012 (R=0)
1010102 (R=0,0)
10101002 (R=0,00)
(R=0,000)
101010002
+100110112 (1)

1010000112 (R=0,001)
+>12
010001002
100010002
+100110112 (1) (R=0,0010)

1001000112 (R=0,0011)
+>12
001001002
10010002 (R=0,00110)
100100002
+10011011 (1) (R=0,001100)

1001010112 (R=0,001101)
+>12
001011002
10110002 (R=0,0011010)
101100002 (R=0,00110100)
+100110112 (1)
1010010112 (R=0,00110101)
+>12
010011002
100110002 (R=0,001101010)
+100110112 (1)
1001100112 (R=0,001101011)
+>12
001101002

Solucin: 101012 11001002 = 0,0011010112 y resto 0,0001101002

Ejemplo 34. Dividir 598,816 3F,216.


598816
+C0D16 (1) (R=1)
11A516
+>116
1A616
1A68 (R=10)
+FC0D16
16 (1) (R=11)
1167516

- 136 -
Nmeros y Sistemas de Numeracin. Captulo II.

(2) (R=12)

(3) (R=13)

(4) (R=14)

(5) (R=15)

(6) (R=16)

(R=16, 0)
(1) (R=16, 1)

(2) (R=16, 2)

(3) (R=16, 3)

(4) (R=16, 4.)

(5) (R=16,5)

(6) (R=16, 6)

- 137 -
Tras los pasos de un.. Hacker

+FCOD, (7) (R=16, 7.)

+FCOD, (8) (R=16,8)

+FCOD, (9) (R=16, 9)

+FCOD (A) (R=16, A)

+FCOD (B) (R=16, B)

(R=16, B0)
(R=16, B1)

Solucin: 5988, + 3.F,21 = 16, B116 residuo 0,1AE 16

Ejemplo 35. Dividir F385,A011 + BA1,031213.

F385A010
+45EFCED, (1) (R=1)

139756EE.
+ L->11
39756EF,
39756EFO, (R=10)

+F45EFCED (1) (R=11)

12DD46BDD1
+ L->11
2DD46BDE
+F45EFCED (2) (R=12)

- 138 -
Nmeros y Sistemas de Numeracin... Captulo II.

1223368CB16
+>116
223368CC16
1169265B9
+F45EFCED16 (3) (R=13)
16
+>116
169265BA16
10AF162A716
+F45EFCED16 (4) (R=14)

+>116
0AF162A816
AF162A80 (R=14,0)
1A375276D
+F45EFCED16 (1) (R=14,1)
16
+>116
A375276E16
+F45EFCED (2) (R=14,2)
197D4245B16
16
+>116
97D4245C16
+F45EFCED (3) (R=14,3)
18C33214916
16
+>116
8C33214A16
+F45EFCED (4) (R=14,4)
180921E3716
16
+>116
80921E3816
174F11B25
+F45EFCED16 (5) (R=14,5)
16
+>116
74F11B2616
16950181316
+F45EFCED16 (6) (R=14,6)

+>116
6950181416
+F45EFCED (7) (R=14,7)
15DAF150116
16
+>116
5DAF150216
+F45EFCED (8) (R=14,8)
1520E11EF16
16
+>116
520E11F016

- 139 -
Tras los pasos de un... Hacker

+F45EFCED
1466D0EDD16
16 (9) (R=14,9)

+>116
466D0EDE16
13ACC0BCB
+F45EFCED16 (A) (R=14,A)

16
+>116
3ACC0BCC16
12F2B08B916
+F45EFCED16 (B) (R=14,B)

+>116
2F2B08BA16
+F45EFCED16
1238A05A716 (C) (R=14,C)

+>116
238A05A816
117E90295
+F45EFCED16 (D) (R=14,D)

16
+>116
17E9029616
10C47FF83
+F45EFCED16 (E) (R=14,E)

16
+>116
0C47FF8416
100A6FC7116
+F45EFCED16 (F) (R=14,F)

+>116
00A6FC7216

Solucin: F385,A0116 BA1,031216 = 14,F16 resto A,6FC7216

- 140 -
Nmeros y Sistemas de Numeracin. Captulo II.

EJERCICIOS PROPUESTOS:

Efectuar las siguientes divisiones:


Ejercicio 121. 1012 + 112,

Ejercicio 122. 345 + 21.

Ejercicio 123. 9110 + 3710.

Ejercicio 124. 913, + 712.

Ejercicio 125. 4376g + 17g.

Ejercicio 126. 934A1 + 311.

Ejercicio 127. 10101010 + 11011,

Ejercicio 128. 3476g + 573g.

Ejercicio 129. 101101,10112 + 101,1010112.

Ejercicio 130. AF,3B,+95,3CD.

Ejercicio 131. 21,453g + 6,5g.

Ejercicio 132. 10111.110,1011112 + 10111,1012.

Ejercicio 133. 4510 + 13510.

Ejercicio 134. 101,112 + 10110101,1012.

Ejercicio 135. 267 + 651,037.

Ejercicio 136. 83F+ F3BFF.

Ejercicio 137. 1011011111011,110112 + 101101110,10112.

Ejercicio 138. 4376,531 +327,61316g.

Ejercicio 139. FAL2530,61332 + PACO,FIN0132.

Ejercicio 140. 353F6B BDC +216F3FBCE11

- 141 -
Tras los pasos de un... Hacker

NOTAS Y BIBLIOGRAFA
Sobre este tratado de Nmeros y Sistemas de Numeracin, las notas han sido
elaboradas en base a publicaciones de revistas especializadas y la consulta de los
siguientes textos:

- LGEBRAELEMENTAL MODERNA, M. O. Gonzlez J. D. Mancill, Editorial


KAPELUSZ, Publicado en Buenos Aires Argentina, 1.962.
- Matemticas y Astronoma, Tomo No. 11, Enciclopedia Salvat de las
Ciencias, Salvat S.A. de Ediciones, Pamplona, Espaa, 1.968.
- CMO PROGRAMAR COMPUTADORAS, URMOS.A, DE EDICIONES, Bilbao
Espaa, 1.977.
- EL ARTE DE PROGRAMAR ORDENADORES ALGORITMOS
FUNDAMENTALES - Volumen I, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.985.
- Criptografa: La ocultacin de mensajes y el ordenador, ENCICLOPEDIA
PRCTICA DE LA INFORMTICA APLICADA, TOMO 11, Juan Ignacio
Puyol, EDICIONES SIGLO CULTURAL S.A., Madrid Espaa, Octubre de
1.986.
- EL ARTE DE PROGRAMAR ORDENADORES CLASIFICACIN Y
BSQUEDA - Volumen III, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.987.
- 80386 Gua del programador y Manual de referencia, Intel Corporation
1.986, Ediciones Anaya Multimedia S.A., Septiembre de 1.989.
- ABIOS for IBM PS/2 Computers and Compatibles, Phoenix Technologies
Ltd., AddisonWesley Publishing Company Inc., Junio de 1.989.
- Introduccin al 80386, Intel Corporation 1.985, Ediciones Anaya
Multimedia S.A., 1.989.
- Personal Mathematics and Computing, Frank Wattenberg, MIT Press,
Publicado en Estados Unidos de Norte Amrica, 1.990.
- The Fun of Computing, John G. Kemeny, True BASIC Inc. 1.990,
Publicado en los Estados Unidos de Norte Amrica, 1.990.
- Microsoft MASM, Assembly Language Development System Version 6.1.,
Microsoft Corporation 1.987, 1.991, 1.992 U.S. Patent No. 004955066,
Estados Unidos de Norte Amrica, 1.992.

- 142 -
Nmeros y Sistemas de Numeracin... Captulo II.

- Organizacin y diseo de computadores La interfaz hardware /


software, David A. Patterson John L. Hennessy, McGraw Hill /
Interamericana de Espaa S.A., Madrid Espaa, 1.995.
- System BIOS for IBM PCs, Compatibles, and EISA Computers, Phoenix
Technologies Ltd., AddisonWesley Publishing Company Inc., Noviembre
de 1.995.
- LGEBRA LINEAL CON APLICACIONES, George Nakos David Joyner,
International Thompson Editores, Publicado por International Thompson
Editores S.A., 1.999.
- Matemtica e Informtica, Tomo No. 11, Enciclopedia Larousse del
Estudiante, Sociedad Comercial y Editorial Santiago Ltda., Santiago de
Chile, Chile, 2.000 2.002.
- Polymorphous Encryption System, Nstor Marroqun Carrera, U.S. Patent
Application No. 20020191786 A1, Diciembre de 2.002.
- Manual Moderno de Informtica, Labor Loerincs, Zamora Editores Ltda.,
Publicado por Quebecor World Bogot S.A., Impreso en Bogot
Colombia, 2.004.
- CLCULOAPLICADO, Laurence D. Hoffman, Gerald L. Bradley, Kenneth H.
Rosen, McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa,
2.004.
- Criptografa y Seguridad en Computadores Cuarta Edicin Versin
4-0.8.1, Manuel Jos Lucena Lpez, Universidad de Jan, Publicacin
Electrnica, Marzo de 2.010.
- La wikipedia, http://www.wikipedia.org. La enciclopedia libre de la
Internet.
- PC World Ecuador,
Magazine, http://www.pcmag.com
http://www.pcworld.com.ec/pcw_catt/index.php

- Notas de clase, Nstor Marroqun, 1.9891.994.


- Trabajos de varios autores publicados en la worldwide web.

- 143 -
Tras los pasos de un... Hacker

- 144 -
INTRODUCCIN (III)

... Este periodo de aprendizaje me llevara hasta que, tanto en el colegio como por
mis propios medios, dominara algunos conceptos algebraicos, ya que sin ese
conocimiento, ni en sueos podra por fin programar la fascinante computadora.
Fruto de esta actitud autodidacta (vale decir que todos los Hackers son
autodidactas), super sin problemas las materias ms difciles de dominar en la
etapa colegial, que son las relacionadas a la matemtica. Pero para m ya no
tenan ningn misterio; es ms, ayudaba a mis compaeros de curso a entender
lo que aprendamos en clase. Por fin mi to Ral, decide seguir un curso de
programacin BASIC en la Universidad Central del Ecuador, fruto de ello cae en
mi poder una gua de curso elaborada por el Lcdo. Ricardo Ortega que se
denominaba Programacin BASICignoro si l era el autor e instructor, o como
en el colegio tomamos el lgebra de Baldor y otro es el profesor que ensea
esta materia.
No me llev mucho tiempo hasta que comprend que existen variables y
constantes en programacin, pude por fin hacer que la TRS-80 sumara dos
nmeros, qu alegra indescriptible sent! mi primer programa de computadora,
y a la vez, qu decepcin! nicamente haba digitado de la gua de curso algo as:

10 REM Programa que suma dos nmeros


20 LET A=0
30 LET B=0
40 LET C=0
50 PRINT Ingrese nmeros A, B:;
60 INPUT A,B
70 LET C=A+B
80
90 PRINT
END La suma de ;A; + ;B; es ;C

Nueve lneas de un programa donde claramente se identifican: la declaracin de


las variables (lneas 20, 30 y 40), el ingreso de datos (lneas 50 y 60), el
procesamiento de estos datos (lnea 70) y la obtencin de resultados (lnea 80).
Si ustedes disponen de cualquier versin de BASIC, ejecuten este programa y
vean lo que sucede, incluso en una versin moderna como es la de True BASIC.
Pueden obtener o adquirir una copia de esta versin en www.truebasic.com.
Sera conveniente que consigan esta versin original, si quieren que les dirija en
este arte como es el de la programacin.

- 145 -
Tras los pasos de un... Hacker

Pero todava no tena los elementos suficientes para poder entender del todo lo
que estaba haciendo y me top con un tema que en programacin se utiliza, se
trata de la lgica binaria tambin conocida como lgebra de Boole. Con ella los
ingenieros que disean microprocesadores, elaboran sumadores lgicos
(Unidades Aritmtico Lgicas) y dota de las bases para lo que hoy conocemos
como circuitos digitales.
Les invito a conocer algo del lgebra de Boole...

- 146 -
CAPTULO III. LGICA BINARIA

La aplicacin de la Lgica (ciencia de la razn) a algunos campos de la tecnologa


ha sido objeto de estudio por algunos matemticos a travs de la historia, dando
lugar a una teora matemtica que permite establecer relaciones y mtodos
algebraicos con los que podemos estudiar diversos problemas. Tiene
importantes aplicaciones en los campos de la ciberntica, robtica, informtica,
electrnica y electrotecnia. Por ejemplo: la conversin analgico-digital, el
tratamiento automtico de datos, la telefona automtica, los procesos de clculo
y control numricos. El punto de partida de esta ciencia reside en los trabajos de
George Boole (1.815-1.864, Fig. 42) pero fue Claude Shannon (1.916-2.001,
padre de la Teora de la Informacin); quien, casi un siglo despus, encontr las
primeras aplicaciones prcticas para el lgebra de Boole.

FIG. 42. GEORGE BOOLE.

Generalmente empleamos la Lgica Binaria en la expresin conveniente del


estado de magnitudes, cantidades, posiciones, etc., datos de tipo bivalente (dos
nicos valores posibles).

Nuestro razonamiento (juicio) nos hace llegar a conclusiones que bajo ciertas
condiciones, estimamos que el problema enunciado es factible de solucin si la
tiene, si es verdadera o falsa. Observamos que los elementos del razonamiento

- 147 -
Tras los pasos de un... Hacker

son proposiciones o enunciados y conclusiones (juicios) que nos llevan siempre a


lograr una verdad sea afirmativa o negativa. Estudiaremos unos cuantos
ejemplos de problemas de razonamiento.

Ejemplo: Juan compr un animal salvaje. A los dos das de su granja


desaparecen tres gallinas, su primo Jorge inesperadamente gana
$75 y sugiere a Juan que no se deshaga del animal. Los dos buscan
algn rastro de las gallinas pero no lo encuentran. Ahora Juan se
pregunta por qu desaparecieron las gallinas? sabiendo que su
animal permaneci en casa.

Jorge tom las tres gallinas y las vendi. Trat de hacer creer a Juan que
Solucin:
su animal se las comi.

EJERCICIOS RESUELTOS:

Dar la solucin lgica a los siguientes problemas:

Ejemplo 36. Pedro es un estadstico, en su trabajo nos topamos con el siguiente


problema: en la fbrica de automviles se producen 10 autos color rojo, 5
autos color caf, 2 color crema, 3 color blanco y 10 color negro, los autos
rojos tienen llantas radiales, los autos negros tienen radios FM, los cremas
aros de aluminio, los cafs no tienen vidrios y los blancos son de tipo
convertible, l desea distribuir los autos en la sierra y costa, cules irn a
cada regin y cules no?
Solucin:

a) Trazamos un cuadro de las caractersticas de los autos:


Color Rojo Caf Crema Blanco Negro
Extra:
Llantas Radiales *
Radios FM *
Aros de Aluminio *
Sin Vidrios *
Convertibles *

b) Por las caractersticas tabuladas, Pedro da su informe al jefe:

- 148 -
Lgica Binaria... Captulo III.

Irn a la costa los autos blancos y los cremas, a la sierra los rojos y los
negros y los que quedan en la fbrica son los cafs.

Ejemplo37. Alex es polica, de la crcel se fugan 2 reos, en toda la poblacin hay


un brote de gripe, registran el pueblo pero no los encuentran, Alex regresa
con los reos sanos y salvos. Qu deduccin lgica tom Alex para saber
donde estaban los reos? Sabiendo l, que los reclusos no deban
enfermarse, adems estaban vestidos de blanco.

Solucin: Alex dedujo que los reos estaban en el hospital.

- 149 -
Tras los pasos de un... Hacker

- 150 -
Lgica Binaria... Captulo III.

EJERCICIOS PROPUESTOS:

Dar a los siguientes problemas una solucin posible y lgica.

En un pueblo todos sus habitantes son campesinos, viven de lo que


Ejercicio 141.
produce su tierra. Por mandato del presidente del pueblo, ninguno puede
sembrar ms de un producto en su terreno. La produccin sale al mercado que
dirige el presidente y todos comparten los productos. Cul es la ocupacin del
presidente?
En un pas extrao, el pueblo habla todo en sentido opuesto. A Joaqun
Ejercicio 142.
le llega el siguiente mensaje: Todos detestamos entrar de clases. l sabe que
ellos son buenos estudiantes, cul es el verdadero sentido del mensaje?

En un pueblo, existe un barbero, todos los hombres tienen o les crece


Ejercicio 143.
barba, una parte de la poblacin masculina se afeita por si misma y la otra acude
al barbero, pero nadie puede hacer las dos cosas, ahora, quin afeita al barbero?

Un cazador tiene que pasar a la otra orilla de un ro, pero entre sus
Ejercicio 144.
piezas tiene un len (hambriento), una oveja y una paca de heno, cuyos pesos son
50 libras cada uno y el cazador 100, la barca no pude soportar ms de 150 libras.
Cmo pasa el cazador al otro lado sin perder ninguna mercadera?

Un hacendado quiere repartir entre sus cuatro hijos, su terreno de


Ejercicio 145.
manera que todos tengan el mismo terreno y forma, como lo muestra la figura.
Puedes ayudarlo?

Superficie 15 hectreas.

Ahora que hemos razonado un poco, podemos estudiar la Lgica Binaria, la cual
se desarrolla en el lgebra de Boole.

- 151 -
Tras los pasos de un... Hacker

- 152
Lgica Binaria... Captulo III.

3.1 LGEBRA DE BOOLE

DEFINICIN
Es el conjunto de reglas, leyes y teoremas, mediante los cuales las operaciones
lgicas pueden ser expresadas simblicamente en forma de ecuaciones y
manipuladas matemticamente.
En este tratado de lgica, nicamente admitiremos dos posibles resultados, el
verdadero que lo simbolizaremos con el 1 y el falso cuyo smbolo ser el 0. Esta
convencin la utilizaremos ya que estos dgitos son los del sistema binario.

3.2 OPERACIONES LGICAS

Dado un conjunto de estados (pulsos) lgicos A, o dos conjuntos de estados


lgicos A y B, cuyos elementos son los estados posibles 0 y 1; que en la
posibilidad de sus combinaciones, obtendremos un conjunto de estados lgicos
de salida, cuyos elementos son el resultado de la relacin u operacin lgica.
En el lgebra de Boole, encontramos definidas las siguientes operaciones
lgicas:

NO (NOT, )

Los elementos de la negacin, sern verdaderos nicamente si la variable es


negativa y viceversa.
Si A = { x/x sea 0 o 1 }

Entonces
A= {x/x es verdadero six Ayxes falso}

- 153 -
Tras los pasos de un... Hacker

A) TABLA DEVERDAD
A A
0 1
1 0

B) COMPUERTA LGICA

A A

O (SUMA LGICA, OR, +)


Los elementos del conjunto A B sern verdaderos, si existe al menos una
variable verdadera.
Si A = { x/x sea 0 o 1 }

B= { x/x sea 0 o 1 }

Entonces
A+ B = { x/x es verdadero si xverdadero A o B}

A) TABLA DE VERDAD

A
0 B A+B
0 0
0 1 1
1 0 1
1 1 1

- 154 -
Lgica Binaria... Captulo III.

B) COMPUERTA LGICA

B
A
A+B

Y(PRODUCTO LGICO, AND, )

Los elementos del conjunto A y B, sern verdaderos, si existen nicamente


variables verdaderas.
Si A = { x/x sea 0 o 1 }

B= { x/x sea 0 o 1 }

Entonces

A B = { x/x es verdadero si xverdadero A y B}

A) TABLA DE VERDAD
A B A B
0 0 0
0 1 0
1 0 0
1 1 1

B) COMPUERTA LGICA

B
A
A B

- 155 -
Tras los pasos de un... Hacker

ONEGADO (NOR, + )

Los elementos de la negacin de O, sern verdaderos si todas las variables de


entrada son falsas.
Si A = { x/x sea 0 o 1 }

B= { x/x sea 0 o 1 }

Entonces
A+ B = { x/x es verdadero si x A+Byx falso }

A) TABLA DEVERDAD
A B A B A B
0 0 0 1
0 1 1 0
1 0 1 0
1 1 1 0

B) COMPUERTA LGICA

A
A+B
B

YNEGADA (NAND, -)

Los elementos de la negacin de Y, sern verdaderos si al menos una entrada


es falsa.
Si A = { x/x sea 0 o 1 }

B= { x/x sea 0 o 1 }

- 156 -
Lgica Binaria... Captulo III.

Entonces
A- B = { x/x es verdadero six A Byx falso }

A) TABLA DEVERDAD

A B A B A B
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 0

B) COMPUERTA LGICA

B
A
A-B

O EXCLUSIVO (XOR, )
Los elementos de O exclusivo o diferencia simtrica, son falsos si las 2
entradas son iguales.
Si A= { x/x sea 0 o 1 }

B= { x/x sea 0 o 1 }

Entonces

A B = { x/x es falso si x AyB }

- 157 -
Tras los pasos de un... Hacker

A) TABLA DEVERDAD
A B A B
0 0 0
0 1 1
1 0 1
1 1 0

B) COMPUERTA LGICA

A
A B
B

O EXCLUSIVO NEGADO. (EQV, )


Los elementos de O exclusivo negado, son verdaderos si las 2 entradas son
iguales.
Si A = { x/x sea 0 o 1 }

B= { x/x sea 0 o 1 }

Entonces

A B = { x/x es verdadero si x AyB }

A) TABLA DEVERDAD
A B A B A B
0 0 0 1
0 1 1 0
1 0 1 0
1 1 0 1

- 158 -
Lgica Binaria... Captulo III.

B) COMPUERTA LGICA

A
A B
B

EJERCICIOS RESUELTOS:

Resolver los siguientes ejercicios:

Dados los conjuntos de entrada A, B y C, determinar el conjunto


Ejemplo 38.

resultado, por medio de tablas de verdad, de la siguiente operacin lgica:

A+B C

Si A = {1, 1, 1, 1, 0, 0, 0, 0 }
B = {1, 1, 0, 0, 1, 1, 0, 0 }
C = {1, 0, 1, 0, 1, 0, 1, 0 }

Obtener:

A+B C=?
a) Tablas de verdad:

A A C C A B A+B A+B C A+B C


1 0 1 0 0 1 1 1 0 1
1 0 0 1 0 1 1 1 1 0
1 0 1 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 1 1
0 1 1 0 1 1 1 1 0 1
0 1 0 1 1 1 1 1 1 0
0 1 1 0 1 0 1 1 0 1
0 1 0 1 1 0 1 1 1 0

- 159 -
Tras los pasos de un... Hacker

Solucin: A+B C= {1, 0,0, 1,1, 0, 1,0}

Si en un momento dado, el estado lgico de la entrada de los


Ejemplo 39.

conjuntos A, B, C y D, seran los valores: 1,0, 0 y 1 respectivamente. Disear


la compuerta lgica y la operacin que se produjo para que la salida genere
0.(Dar una solucin, con la intervencin de 4 elementos)

1 A
A 0
0
A+B C-D
0
B
0
0
C B C-D
1

D 1
C-D

Solucin: Operacin A+B C-D

Dados los conjuntos A, B, C, D y E de entrada, hacer las tablas de


Ejemplo 40.
verdad y el diseo de las compuertas lgicas que generen el conjunto
definido por las operaciones lgicas:

A D C+ E B D

Si: A= {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
B= {1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0}
C= {1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0}
D= {1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0}
E= {1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0}

a) Diseamos la compuerta lgica:

- 160 -
Lgica Binaria. Captulo III.

o A. Da C + E. B a D

A. De c - E A e D. GB, C + E

Si nosotros introducimos el pulso o bit que corresponde a las lneas de entrada,


obtendremos un pulso particular propio del circuito.

c) Elaboramos las tablas de verdad.


5

AoD B PD C+ E

- 161 -
Tras los pasos de un... Hacker

0 1 0 1 0 1 0 0 0
0 0 0 1 1 0 0 1 1
0 0 0 1 1 0 0 0 0
0 1 0 0 0 1 1 1 1
0 1 0 0 0 1 1 0 1
0 0 0 0 1 1 1 1 1
0 0 0 0 1 1 1 0 1
0 1 0 0 0 0 0 1 1
0 1 0 0 0 0 0 0 0
0 0 0 0 1 1 0 1 1
0 0 0 0 1 1 0 0 0

A D C+E A D C+E A D C+E B D A D C+E B D


1 1 0 1 0 0
1 1 0 1 0 0
0 1 1 0 1 0
0 1 1 0 1 0
1 1 0 1 0 0
1 0 1 0 0 0
0 1 1 0 1 0
0 0 0 1 1 1
1 1 0 1 1 1
1 1 0 1 1 1
0 1 1 0 0 0
0 1 1 0 0 0
1 1 0 1 1 1
1 0 1 0 1 0
0 1 1 0 0 0
0 0 0 1 0 0
0 1 1 0 0 0
0 1 1 0 0 0
0 1 1 0 1 0
0 1 1 0 1 0
0 1 1 0 0 0

- 162 -
Lgica Binaria. Captulo III.

solucin: A D (B)C + E B (B) D = {00000001110010.000.000.000.010.00001,000}

- 163 -
Tras los pasos de un... Hacker

- 164
Lgica Binaria... Captulo III.

EJERCICIOS PROPUESTOS:

Dada la operacin lgica A


Ejercicio 146. B, encontrar por medio de tablas de
verdad, la salida que genera, si:

A= {0,0,1,1}

B = {0,1,0,1}
Dados los conjuntos A, B y C; y definida la operacin lgica A B C,
Ejercicio 147.
disear la compuerta lgica, por medio de tablas de verdad, encontrar el conjunto
resultado, si:
A= {1,1,1,1,0,0,0,0}

B = {1,1,0,0,1,1,0,0}

C = {1,0,1,0,1,0,1,0}
Dados los conjuntos A, B y C; y definida la operacin lgica A B C B
Ejercicio 148.
disear compuerta lgica, por medio de tablas de verdad, encontrar el conjunto
la
resultado, si:

A = {1,0,1,0,1,0,1,0}

B = {1,1,0,0,1,1,0,0}

C = {1,1,1,1,0,0,0,0}
Dados los conjuntos A, B y C; y definida la operacin lgica A B C
Ejercicio 149.
disear la compuerta lgica y por medio de tablas de verdad, encontrar el
conjunto resultado, si:

A = {1,1,0,0,1,1,0,0}

B = {1,0,1,0,1,0,1,0}

C = {1,1,1,1,0,0,0,0}
Dados los conjuntos A, B y C para cada caso pedido, disear la
Ejercicio 150.
compuerta lgica, por medio de tablas de verdad, encontrar el conjunto resultado

- 165 -
Tras los pasos de un... Hacker

de:
a) A B
b) C A B
c) A B C

d) C + A B

Si:

A = {1,0,1,0,1,0,1,0}

B = {1,1,0,0,1,1,0,0}

C = {1,1,1,1,0,0,0,0}
Dadas las entradas A, B, C y D; disear la compuerta lgica que genere
Ejercicio 151.
los siguientes resultados:

a) A BC

b) AC C D
c) B D + C D A

d) D A

Ejercicio 152. Dadas las entradas A, B, C y D por medio de tablas de verdad, encontrar
el conjunto resultado de:

a) A+B+C

b) A D C D B

c) A B B+C

d) A B CD D B
Si la entrada a la operacin lgica A B C, son los valores 1, 0 y 1
Ejercicio 153.
respectivamente para A, B y C. Qu resultado nos arroja dicha operacin?

- 166 -
Lgica Binaria... Captulo III.

Dadas las entradas, cuya posicin corresponde a los valores A, B y C; y


Ejercicio 154.
la
definida operacin lgica:

A B C+ A
Encontrar los valores que arroja dicha operacin para:

a) 1,1,0
b) 0,0,1
c) 1,0,1
d) 0,0,0
e) 1,1,1

Dadas las entradas cuya posicin corresponde a los valores A, B, C, D y


Ejercicio 155.
E; y, definidas las operaciones lgicas:

a) A B C D+E

b) A BE

Encontrar los valores que arroja dichas operaciones para:

a) 1,1,0,1,0
b) 0,1,0,1,1
c) 0,1,0,0,0
d) 1,0,0,0,1
e) 0,1,1,1,1
f) 0,0,1,0,0
g) 1,1,1,1,1
h) 0,0,0,0,0

Si tomamos la siguiente salida: 1, qu operaciones lgicas se


Ejercicio 156.
realizaron?, si sabemos que las entradas fueron A y B cuyos valores son: 0 y 1
respectivamente. (En la operacin no intervendrn ms de dos elementos; por
ejemplo, es vlida la expresin A+B pero no lo es A B+B, observe que generan
la misma salida). Dar dos soluciones.

Si el conjunto de salida tiene por elementos {1,0,0,1}, qu operaciones


Ejercicio 157.
lgicas?, en las que no intervienen ms de dos elementos se produjeron, si

- 167 -
Tras los pasos de un... Hacker

sabemos que las entradas fueron A y B cuyos elementos son: {1,0,1,1} y {0,1,1,0}
respectivamente. Dar 3 soluciones
Si la salida que genera la operacin lgica A B C es 0. Qu valores
Ejercicio 158.
fueron introducidos como entrada en cada valor? Dar una solucin.
Si la salida que genera la operacin lgica A B C es 1. Qu valores
Ejercicio 159.
fueron introducidos como entrada en cada valor? Dar una solucin.
Si en la entrada de una operacin lgica, intervienen los elementos A, B,
Ejercicio 160.
C y D cuyos valores fueron {1,1,1,1}; {0,0,1,1}; {1,0,1,1} y {1,0,1,1}
respectivamente. Qu operaciones lgicas se efectuaron?, si el resultado
arrojado fue {1,1,1,0}. Dar una solucin.

- 168 -
Lgica Binaria... Captulo III.

3.3 LEYES DEL LGEBRA DE BOOLE

A) LEY CLAUSURATIVA

El conjunto resultado de una operacin lgica tendr el mismo campo de


accin que los elementos que participan en la operacin

Si:
A= {0,1}
B= {0,1}

AR B = C C = {0,1}, siendo R, la relacin u operacin lgica.

B) LEY CONMUTATIVA
El orden de los elementos que intervienen en las operaciones lgicas Y y
O, no modifican el conjunto resultado o salida.

Si:
A= {0,1}
B= {0,1}

Se cumple que:

A B=B A

A+ B = B + A

C) LEY ASOCIATIVA

Los elementos que intervienen en las operaciones Y y O se pueden


agrupar.

- 169 -
Tras los pasos de un... Hacker

Si:
A= {0,1}
B= {0,1}
C= {0,1}

Se cumple que:

(A+B)+ C = A+(B+C)

(A B) C=A (B C)

D) LEY DISTRIBUTIVA

Los elementos que intervienen en las operaciones Y y O son distributivos,


cuando se combinan estas operaciones en asociacin.

Si:
A= {0,1}
B= {0,1}
C= {0,1}

Se cumple que:

A (B+C)=A B+A C
A+(B C)=(A+B) (A+C)

- 170 -
Lgica Binaria... Captulo III.

3.4 TEOREMAS DEL LGEBRA DE BOOLE


Se han demostrado los siguientes teoremas:

A+ 0 = A 1er. Teorema de identidad.


A+ 1 = 1 Teorema reduccin a 1.
A+ A = A 1er. Teorema de absorcin.
A+ A=1 1er. Teorema inverso.
A 0=0 Teorema reduccin a 0.
A 1=A 2do. Teorema de identidad.
A A=A 2ro. Teorema de absorcin.
A A=0 2ro. Teorema inverso.
A= A Negacin de una negacin.
A+ A B = A 3er. Teorema de absorcin.
A+ A B = A+B
Teorema de Morgan:

A B = A+B

A+ B = A B

Ejemplo:

Demostrar que A B = A+B

Si:
A= {0,0,1,1}
B= {0,1,0,1}

Usando tablas de verdad de las operaciones tenemos que:

- 171 -
Tras los pasos de un... Hacker

A B A B A B
0 0 0 1
0 1 0 1
1 0 0 1
1 1 1 0

A B A B
1 1 1
1 0 1
0 1 1
0 0 0

A B = {1,1,1,0} ^ A+ B = {1,1,1,0}

A B = A+B

EJERCICIOS RESUELTOS:

Ejemplo 41. Simplificar: A B+A (B+C)+ B (B+C)

A B+A (B+C)+ B (B+C)=A B+A B+A C+ B B+ B C(PorLey Distributiva)


= A B+ A C + B + B C (Por Teorema g)
= A B+ A C + B (Por Teorema j)
=A B+B+A C
= (A 1 + 1) B+A C (PorTeoremaf)
= B +A C

Solucin: A B+A (B+C)+ B (B+C)=A C+ B

Ejemplo 42. Simplificar: A B+A B+A B CD+ A B C D


AB+AB+ABCD+A B CD = A B (1+CD+CD)+AB(PorTeoremab)

- 172 -
Lgica Binaria... Captulo III.

= A B 1 + A B (Por Teorema f)
= A B + A B (Por Teorema d)

Solucin: A B+AB+ABCD+ABCD = AB + AB

Ejemplo 43. Demostrar: [A B (C+B D)+ A B] C= B C

[AB (C+B D)+AB] C=[A B C+A B B D+AB] C(PorLey Distributiva)

= [A B C+AC +AB] C(Por Teorema h)

= [AB C++A B] C(PorTeoremae)

= [AB C+A B] C(PorTeorema a)

= AB CC+A B C(PorLeyDistributiva)

= AB C+AB C(PorTeoremag)
=(AB+AB) C(PorLeyDistributiva)

= [(A+A)B] C(PorLeyDistributiva)

= 1B C(PorTeorema d)

= B C (Por Teorema f) l.q.q.d (lo que queda demostrado)

Ejemplo 44. Demostrar:(A B+A B) (C D + C D)= B C

(AB+AB) (CD+CD) = [B (A+A)] [C(D+D)] (Por Ley Distributiva)

= [B ] [C ] (Por Teorema d)

= B C (Por Teorema f) l.q.q.d

Ejemplo 45. Demostrar: AB + CD AB CD = (A+B) (C+D)

- 173 -
Tras los pasos de un... Hacker

A B + CD AB CD = (AB + CD) (AB CD) (Por Ley Asociativa)

= (AB) (CD) (AB) (CD) (Por Teorema de Morgan)

= (AB) (CD) (Por Teorema g)

= (A + B) (C + D) (Por Teorema de Morgan) l.q.q.d

- 174 -
Lgica Binaria... Captulo III.

EJERCICIOS PROPUESTOS:

I. SIMPLIFICAR LAS SIGUIENTES EXPRESIONES:

Ejercicio 161. (A+B)(A+C)+A C = ?

Ejercicio 162. B[(ACD+ACD)+(ACD+ACD)]=?

Ejercicio 163. A (B CD+B CD)+A (BC D+B CD) = ?

Ejercicio 164. A B (CD+C D)+AB (CD+CD)+ABCD = ?

Ejercicio 165. AB+AB+CD+CD = ?

Ejercicio 166. A+B (C+D) (C+D)+(AB)=?

Ejercicio 167. {ABC D [(ABC+D) (A+BC+D)] (A+BD+C)}=?

Ejercicio 168. [A(B+C+D) (A+B)]+[A (A+BA)]=?

Ejercicio 169. {A [A+B (C+DC+D)+A CB)]+[A+(A+B) (C+D)]} = ?

{A [AB+(C+D+E+F)+(C+A+E+F) (A+B A+CD)+A]


Ejercicio 170.
{A+B (CE F) (F+EF+E)] (A+BC+E)}} = ?

II. DEMOSTRAR QUE:

Ejercicio 171. A+B+C+D+AB CD= A+B+C+D

Ejercicio 172. A+B C+(A+B+C)+A B D= AB (C+D)

Ejercicio 173. (A+B) (C+D) (E+F) (G+H) = A+B+C+D+E+F+G+H

Ejercicio 174. (ABC)(EGH)+(HIJ) (KLM)=(ABC) (EFG)(HIJ) (KLM)

Ejercicio 175. A B+AB+CE+CE+(AB)+(CE) = AB CE

- 175 -
Tras los pasos de un... Hacker

Ejercicio 176. A+B+CD = A+B+AB+ACD

Ejercicio 177. (A+B)(A+C)(B+C)(B+D) = B(A+C)+CD(A+B)

Ejercicio 178. (A+BC)(B+CD) = A(B+CD)+ABC

Ejercicio 179. A+B+C = (A+B)(A+B+C)+(A+C)(B+C)

Ejercicio 180. (A+C)(A+B+C)+(A+B)(B+C) = (A+C)(B+C)+(A+B)(A+B+C)

Ejercicio 181. A+B+CD = B+AB+CD+AB

Ejercicio 182. A+B+C+D = A (C+D)+(A+C)(B+C)

Ejercicio 183. (A+C)(A+D)+(A+C)(B+C)+B+D = 1

Ejercicio 184. AC+B+D = AE+AE+AB+CE(A+D)+C+DE

Ejercicio 185. A+B+C = A+B+C+AC+BC+ABC+ABC

Ejercicio 186. (A+D)(B+E)(B+C)+(A+D)(C+E)(C+D)+(A+D)(D+E)(D+B) = A(B+C)+D

Ejercicio 187. AB = (A+B)[(A+D)+(A+D)(C+D)+D(A+C)]

Ejercicio 188. A+B+C+D = (A+C)(A+D)+AC+ABC

Ejercicio 189. A+B+C+D = (AB)+(AC)+(A+B)(B+D)


Ejercicio 190. A+B = (A+B)(A+C)+AB+AC

- 176 -
Lgica Binaria... Captulo III.

NOTAS Y BIBLIOGRAFA
Sobre este tratado de Lgica Binaria y del lgebra de Boole, las notas han sido
elaboradas en base a publicaciones de revistas especializadas y la consulta de los
siguientes textos:

- Matemticas y Astronoma, Tomo No. 11, Enciclopedia Salvat de las


Ciencias, Salvat S.A. de Ediciones, Pamplona, Espaa, 1.968.
- INTEGRATED ELECTRONICS: Analog and Digital Circuits and Systems,
Jacob Millman Chirstos Halkias, McGraw Hill and Electronic
Engineering Series / Kogakusha Ltd., Publicado en los Estados Unidos de
Norte Amrica, 1.972.
- CMO PROGRAMAR COMPUTADORAS, URMOS.A, DE EDICIONES, Bilbao
Espaa, 1.977.
- Manual del Microprocesador 80386, Chris H. PappasWilliam H. Murray,
III, McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa,
1.983.
- Curso Prctico de Programacin, Intermedio Editores S.A., Bogot
Colombia, 1.984.
- CONEXIONES EN EL IBM PC/XT/AT, Teora y prctica de perifricos,
comunicaciones y configuraciones, M. D. Seyer, Red Editorial
Iberoamericana REI Andes Ltda., Prentice Hall Inc., 1.985.
- 80386 Gua del programador y Manual de referencia, Intel Corporation
1.986, Ediciones Anaya Multimedia S.A., Septiembre de 1.989.
- ABIOS for IBM PS/2 Computers and Compatibles, Phoenix Technologies
Ltd., AddisonWesley Publishing Company Inc., Junio de 1.989.
- Introduccin al 80386, Intel Corporation 1.985, Ediciones Anaya
Multimedia S.A., 1.989.
- Personal Mathematics and Computing, Frank Wattenberg, MIT Press,
Publicado en Estados Unidos de Norte Amrica, 1.990.
- Organizacin y diseo de computadores La interfaz hardware /
software, David A. Patterson John L. Hennessy, McGraw Hill /
Interamericana de Espaa S.A., Madrid Espaa, 1.995.
- System BIOS for IBM PCs, Compatibles, and EISA Computers, Phoenix
Technologies Ltd., AddisonWesley Publishing Company Inc., Noviembre
de 1.995.

- 177
Tras los pasos de un... Hacker

- Matemtica e Informtica, Tomo No. 11, Enciclopedia Larousse del


Estudiante, Sociedad Comercial y Editorial Santiago Ltda., Santiago de
Chile, Chile, 2.000 2.002.
- Polymorphous Encryption System, Nstor Marroqun Carrera, U.S. Patent
Application No. 20020191786 A1, Diciembre de 2.002.
- Manual Moderno de Informtica, Labor Loerincs, Zamora Editores Ltda.,
Publicado por Quebecor World Bogot S.A., Impreso en Bogot
Colombia, 2.004.
- Criptografa y Seguridad en Computadores Cuarta Edicin Versin
4-0.8.1, Manuel Jos Lucena Lpez, Universidad de Jan, Publicacin
Electrnica, Marzo de 2.010.
- La wikipedia, http://www.wikipedia.org. La enciclopedia libre de la
Internet.
- PC World Ecuador,
Magazine, http://www.pcmag.com
http://www.pcworld.com.ec/pcw_catt/index.php

- Notas de clase, Nstor Marroqun, 1.9891.994.


- Trabajos de varios autores publicados en la worldwide web.

- 178 -
INTRODUCCIN (IV)

... Ahora, tendra que reforzar el conocimiento adquirido para poder manejar la
mtrica informtica y poder organizar la informacin que en adelante manejara.
Les invito a conocer cmo? se pueden manejar y organizar los datos. En
definitiva, procesar la informacin as como aplicar algunas de las funciones que
en computacin estn normalizadas para trabajar con estos datos...

- 179 -
Tras los pasos de un... Hacker

- 180 -
CAPTULO IV. LA INFORMACIN

Por favor, pseme el teclado!, 360 KB almacenan los disquetes de doble


densidad, Una computadora cuesta $600,00 dlares, 2F16 + C16 = 3A16, estas
afirmaciones constituyen informaciones; es decir, son mensajes que indican algo
o tienen un contenido determinado, emitido de cierta forma para que otro
comprenda la idea o mensaje que se quiere transmitir, sobrentendindose que
los entes son de la misma naturaleza o conocen la convencin o protocolo para
intercambiar informacin y que medio de estos se establece la comunicacin, en
el caso de los humanos desempea una funcin social muy importante. Las
informaciones pueden describir una situacin real, explicar una accin, definir
una idea o expresar un estado de nimo, su modo de transmisin puede ser de
diversas formas entre ellas tenemos: la verbal, la escrita, la electrnica entre
otras.

4.1 DEFINICIN
En computacin la informacin ser cualquier seal inteligible o descifrada que
fue transmitida entre la entrada y la salida de un sistema, la misma que es
representada como dato computacional y susceptible de ser procesado en una
computadora o dispositivo automtico de procesamiento de datos.

Nota del autor:


En este concepto, cuando hablamos de descifrado, nos referimos a algo claro y entendible sin
complicacin. Ms adelante cuando deseen estudiar algo de la CRIPTOLOGA, entrarn en ms
detalle del concepto de Criptografa, Criptoanlisis, Mensaje Cifrado y Mensaje Descifrado.
Sobre la Teora de la Informacin, en matemtica hay trabajos muy importantes como los de Claude
Shannon quien es el creador de esta teora. No es el objetivo de este texto profundizar en este tpico,
pero sera interesante, que si tienen curiosidad investiguen este aspecto.

- 181 -
Tras los pasos de un... Hacker

4.2 ORGANIZACIN Y PONDERACIN

La informacin puede ser ponderada; es decir, susceptible de ser medida. La


unidad de informacin es el Byte. La manera de representar la informacin se lo
hace por medio de los datos, en captulos anteriores, mencionamos estos datos y
a manera de ejemplo mostraremos una estructura (organizacin de datos) para
trabajar con los mismos.

Base de datos: Registro Laboral.


Archivo: Libreta de Contactos Familiares.
Registro: Pedro Prez; Alaus # 341; 264591
Campo: Pedro Prez
Carcter: A, B, C,
Byte: 10101010

4.2.1 BIT
Es la porcin bsica de informacin que puede ser procesada por una
computadora o transmitida por dispositivos electrnicos.

Representa a un dgito binario, una seal digital o pulso, un estado de circuito o


un estado lgico. As respectivamente ser 0 1, no existe voltaje o existe voltaje,
apagado o encendido y falso o verdadero.

Su nombre se deriva de la frase inglesa binary digit (dgito binario), que por
facilitad se la acomod al adjetivo bit pequeo, poquito, de nfimo tamao.
Su notacin ser una b (b minscula).

Para que puedan ser procesados o transmitidos los bits, pueden agruparse en
paquetes y a partir de estos grupos se establece la unidad de informacin que se
denomina Byte.

Nota del autor:


Cuando estudiamos los sistemas de numeracin, a la representacin binaria de un dgito
hexadecimal, lo habamos denominado nibble que era la representacin de cuatro dgitos
binarios, entonces al grupo de cuatro bits lo llamaremos tambin nibble.

- 182 -
La informacin... Captulo IV.

4.2.2 BYTE
Es la unidad bsica de informacin computacional que representa un smbolo o
cdigo con el que una computadora puede construir y procesar informacin.
Segn el diseo de la computadora, el Byte puede ser de 8 bits (dependiendo si se
acompaa un bit de paridad, ser de 9 bits), 16 bits, 32 bits, 64 bits o la cantidad
de bits que el fabricante haya dispuesto para este procesamiento bsico de
informacin.

Nota del autor:


En los comienzos de la computacin, se estableci que un Byte tenga una longitud de 8 bits por
razones de economizar espacio en memoria; adems que con estos 8 bits se podan representar los
caracteres y smbolos ms importantes de los alfabetos ingls, francs, portugus y espaol (en
general los alfabetos occidentales). Con los avances de la tecnologa y la necesidad de representar
los smbolos de otros alfabetos como el chino, japons, coreano, ruso, rabe, etc. (en general los
alfabetos orientales), ahora un Byte tiene una longitud de 16 bits; en todo caso, para trminos de
definicin, cuando se hable de Byte en algn cdigo de informacin este representar a un carcter
o cdigo de control especfico.

Su notacin ser una B (b mayscula), as lo diferenciaremos de los bits.

Ejemplo:

La letra A (a mayscula), se representa por el byte 01000001 en el


cdigo ASCII.
La letra a (a minscula), se representa por el byte 01100001 en el
cdigo ASCII.
El smbolo , que significa marca registrada (Trade Mark), se representa
por el byte 0010000100100010 en el cdigo HTML 4.01.

Estos bytes para estos smbolos y letras se encuentran normalizados a travs del
estndar ISO 10646 e ISO 8879. Como podemos ver estos bytes tienen 8 y 16
bits de longitud.

- 183 -
Tras los pasos de un... Hacker

4.2.3 MLTIPLOS Y SUBMLTIPLOS


Como mencionamos anteriormente, en informtica nuestra unidad de
informacin es el Byte. Para cuantificar el espacio en unidades de informacin
que es necesario para el almacenamiento de millones de estos cdigos, la
comunidad informtica internacional ha decidido que existan otras medidas que
se asemejen a las definidas en el Sistema Internacional de unidades (S.I.), as
tendremos los mltiplos normalizados en informtica conocidos como: Kilo Byte,
Mega Byte, Giga Byte, Tera Byte, Peta Byte, Exa Byte, Zetta Byte e Yotta Byte.
En el caso de los submltiplos, tendremos como caso especial a los nibbles y bits,
aqu no se respeta para nada el sistema internacional de unidades y depende si
nuestro byte se lo ha codificado con 8, 16, 32 o 64 bits.

Tenemos entonces la siguiente tabla de equivalencias:

Medidas de la Informacin
(Para nuestra tabla usaremos Bytes de 8 bits)

Smbolo: Nombre: Equivalencia: Longitud: S.I.

YB Yottabyte 280 1208925819614629174706176 bytes. Aprox. 1024

ZB Zettabyte 270 1180591620717411303424 bytes. Aprox. 1021

EB Exabyte 260 1152921504606846976 bytes. Aprox. 1018

PB Petabyte 250 1125899906842624 bytes. Aprox. 1015

TB Terabyte 240 1099511627776 bytes. Aprox. 1012

GB Gigabyte 230 1073741824 bytes. Aprox. 109

MB Megabyte 220 1048576 bytes. Aprox. 106

KB Kilobyte 210 1024 bytes. Aprox. 103

B Byte 20 1 byte. 1=100

n nibble 2-1 0,5 bytes.

b bit. 2-3 0,125 bytes.

Tabla 2. Mltiplos y submltiplos del byte.

- 184 -
La informacin... Captulo IV.

4.2.4 CARACTERES (SMBOLOS)

Los Bytes, dependiendo del cdigo establecido, pueden representar a distintos


caracteres o smbolos de los alfabetos que el hombre ha definido para la
expresin de sus idiomas. As encontramos que en informtica estn
normalizados, por ejemplo: el cdigo EBCDIC (Extended Binary Coded Decimal
Interchange Code), el cdigo ASCII (American Standard Code for Information
Interchange), el cdigo HTML (HyperText Markup Language), UNICODE, etc.
Para cada una de estas tablas se han definido estndares y los podremos
consultar en las publicaciones de la ISO (International Organization for
Standardization).

Los caracteres no equivalen a byte, se representan por un byte determinado para


que el hombre pueda escribir informacin y la misma pueda ser almacenada,
procesada y distribuida segn el inters del emisor de dicha informacin.

4.2.5 CAMPO
Es la longitud de Bytes destinado a almacenar alguna informacin.

Los campos pueden ser de tamao fijo o variable, lo importante es que podemos
nombrarlos para que se agrupen de alguna forma y poder trabajar con ellos.
Ejemplo:

Podemos definir un campo que se llame NOMBRE, en este campo


podramos escribir NSTORMARROQUN.

Cuando organizamos la informacin en una gran BASE DE DATOS, los


campos juegan un papel importante que nos permiten localizar y
recuperar la misma.

- 185 -
Tras los pasos de un... Hacker

4.2.6 REGISTRO
Es la unin concatenada de campos que guardan alguna relacin entre s.

Ejemplo:

Podemos definir un registro que se llame CONTACTO y en el mismo,


podramos definir los campos NOMBRE, DIRECCIN y TELFONO.

4.2.7 ARCHIVO
Es la unin concatenada de registros que guardan alguna relacin entre s.

Ejemplo:

Podemos tener un archivo que se llame LIBRETA DE CONTACTOS, el


mismo que contenga la coleccin de registros denominados CONTACTO.

4.2.8 BASE DE DATOS


Es la coleccin de archivos que guardan alguna relacin entre s.

Ejemplo:

Podemos tener una base de datos que se llame REGISTRO LABORAL, la


misma que conste de los archivos o tablas: LIBRETA DE CONTACTOS,
FAMILIARES, TRABAJOS, etc.

- 186 -
La informacin... Captulo IV.

4.3 LOS DATOS

4.3.1 DEFINICIN

Dato es la representacin de un hecho o instruccin que adoptan una forma de


representacin convencional que permite un tratamiento o procesamiento
automtico por medio de una computadora. Podemos tomarlo como sinnimo de
informacin.

4.3.2 CLASES DE DATOS

Los datos, para su tratamiento informtico se los escribir directamente en un


programa de computacin como datos fijos, pero si queremos ingresarlos desde
el exterior del programa, los definimos como datos variables, los mismos que
tendrn algn nombre y a este dato con nombre, lo identificaremos simplemente
como variable.
Ejemplo:

Dato fijo 3,141592654

Dato variable NOTA


Podemos dividirlos en dos grandes grupos: los datos numricos y los datos no
numricos.

4.3.3 DATOS NUMRICOS


Son aquellos datos que permiten procesar nmeros y a partir de estos obtener
los resultados u otros datos.

Entre los datos numricos podemos diferenciar o definir los siguientes: datos
numricos enteros y datos numricos reales.

- 187 -
Tras los pasos de un... Hacker

A) DATOS NUMRICOS ENTEROS


Tambin conocidos como datos numricos de punto fijo, son aquellos que
no tienen parte fraccionaria, pueden ser: positivos, negativos y el cero. La
utilidad de este tipo de datos estriba en que ocupan menor cantidad de
memoria y la velocidad de procesarlos es mucho mayor que con otro tipo
de datos.
B) DATOS NUMRICOS REALES
Tambin conocidos como datos numricos de punto flotante, son aquellos
que representan los nmeros, tanto su parte entera como su parte
fraccionaria, en teora pueden representar un valor de la recta numrica
real, es decir de:

[- + ]
La magnitud de los datos numricos, tanto enteros como reales, depende de la
computadora utilizada, por lo general su rango suele ser [32768:32767] y
[2.9E39:1.7E38] respectivamente.

Adicionalmente, dependiendo del lenguaje de programacin en el que vayamos a


realizar algn clculo su rango variar conforme se defina, as por ejemplo:

Entero de 8 bits, estar en el rango [-128:127]


Entero de 8 bits sin signo, estar en el rango [0:255]
Entero de 16 bits, estar en el rango [-32768:32767]
Entero de 16 bits sin signo, estar en el rango [0:65535]
Entero de 32 bits, estar en el rango [-2147483648:2147483647]
Entero de 32 bits sin signo, estar en el rango [0:4294967297]

4.3.4 DATOS NONUMRICOS


Son aquellos datos que permiten tratar la informacin codificada, cuyo cdigo no
corresponde a los nmeros como tales; es decir, se tratan como smbolos
codificados y definidos en la computadora, en este tipo de datos podemos
identificar los siguientes: datos no numricos tipo hilera y datos no numricos
tipo lgico.

- 188 -
La informacin... Captulo IV.

A) DATOS NONUMRICOSTIPO HILERA


Tambin conocidos como strings o cadenas de caracteres, corresponden
a la representacin de todos los caracteres definidos en la computadora,
es decir, los dgitos del 0 al 9, las letras de la A a la Z, maysculas y
minsculas, signos de puntuacin, caracteres especiales y de control.
B) DATOS NONUMRICOSTIPOLGICO
Tambin conocidos como booleanos, corresponden a la representacin de
los estados lgicos falso o verdadero.

Nota del autor:


Todos los datos a su vez pueden ser constantes, es decir su valor o contenido no cambiar en el
transcurso de la ejecucin de un programa; y, variables, cuyo valor o contenido cambia de
acuerdo a la necesidad del momento.

4.4 LOS OPERADORES


Son los smbolos que representan la relacin o funcin a aplicar a datos para
obtener otros deseados como resultado.

Los operadores pueden ser: Aritmticos, de relacin y lgicos.


A) OPERADORESARITMTICOS
Son los smbolos que representan a las operaciones aritmticas bsicas,
es decir, la suma con el signo + (ms), la resta con el signo - (menos),
la multiplicacin con el signo * (asterisco) y la divisin con el signo /
(slash).
La computadora los efecta como ya lo estudiamos en captulos
anteriores y la exponenciacin con su signo ^

- 189 -
Tras los pasos de un... Hacker

B) OPERADORES DE RELACIN
Son smbolos que representan o definen relaciones de comparacin entre
expresiones.

En informtica estn definidos 6 operadores de relacin, los mismos que


son:
mayor que con su signo >, igual con su signo =, menor que con si
signo <, mayor o igual que con su signo >=, menor o igual que con
su signo <=; y, distinto de con su signo <>

Definida la expresin de relacin, la computadora genera dos posibles


salidas, es decir, falso o verdadero de acuerdo al grado de verdad que
tenga la expresin.

Este tipo de operadores relacionales se usan en la construccin de


estructuras de decisin en un programa.

C) OPERADORES LGICOS
Son palabras que definen las operaciones lgicas que deseamos efectuar,
encontramos definidos 3 operadores lgicos, estos son: NO (NOT), Y
(AND) y O (OR), estn regidos a las leyes del lgebra de Boole y la
computadora los efecta como tales.

4.5 FUNCIONES NORMALIZADAS EN INFORMTICA

Adems de los operadores definidos anteriormente, en informtica el


programador necesita para obtener los resultados deseados utilizar algunas
funciones matemticas que la mayora de lenguajes de programacin tienen ya
incorporadas. Las mismas que ahorran tiempo y esfuerzo de implementacin, es
decir, son funciones internas que generan la salida deseada al recibir la expresin
o dato de entrada (tambin conocido como parmetro o argumento de la
funcin), pueden ser usadas en la evaluacin de expresiones informticas para
realizar algn clculo especfico o representar alguna expresin algebraica o

- 190 -
La informacin... Captulo IV.

frmula a calcular.

Las funciones que disponemos en la mayora de las computadoras y lenguajes de


programacin son:

(ESPAOL)
FUNCIN FUNCIN
(INGLS) SIGNIFICADO
ABS(x) ABS(x) Valor absoluto de x.
ARCTAN(x) ATN(x) Calcula la funcin arcotangente
de x.
COS (x) COS(x) Calcula la funcin coseno de x.
EXP(x) EXP(x) Calcula la funcin exponencial ex
LOG(x) LOG(x) Calcula el logaritmo vulgar de x.
LN(x) LN(x) Calcula el logaritmo natural dex.
REDONDEA(x, y) ROUND(x, y) Redondearxa y decimales.
SEN(x) SIN(x) Calcula la funcin seno de x.
RCUAD(x) SQR(x) Calcula la raz cuadrada de x.
CENT(x) CINT(x) Devuelve la parte entera de x,
como valor entero.
ENT(x) INT(x) Devuelve la parte entera de x,
como valor real.
ALEAT(x) RND(x) Calcula un valor aleatorio
comprendido entre 0 y x.

Tabla 3. Funciones normalizadas en informtica.

En todos los casos, el argumento x ser un valor numrico.

Para las funciones trigonomtricas el valor de x ser expresado en radianes.

4.6 ERRORES
El tratamiento de errores es de gran importancia para el correcto funcionamiento
de un programa, el programador debe conocer cules? y de qu manera? puede
evitar que estos errores se produzcan.

Los errores pueden ser de 3 tipos (uno de los cuales la computadora nos ayuda a
localizar), estos son: errores de sintaxis, errores de uso y errores de lgica.

- 191 -
Tras los pasos de un... Hacker

A) ERRORES DE SINTAXIS
Se produce cuando escribimos incorrectamente una instruccin o la
expresin no se ajusta a la sintaxis del lenguaje utilizado.

Normalmente el lenguaje de programacin al momento de correr o


ejecutar el programa, nos alertar que este tipo de error se ha cometido.

B) ERRORES DE USO
Se produce cuando usamos incorrectamente el argumento de una
expresin matemtica o el tipo de dato ingresado a una funcin no
corresponde al tipo definido para su correcta evaluacin.
C) ERRORES DE LGICA
Se produce cuando implementamosincorrectamente los procesos de un
programa, obteniendo muchas veces resultados alejados de los deseados.

4.7 EXPRESIONES INFORMTICAS

Jerarqua de los operadores

Operador Tipo Jerarqua


F(x) Funcin. 1
() Parntesis. 2
^ Exponente.
Aritmtico.
3
*,/ Aritmtico.
Multiplicacin
Divisin. o 4

+, - Aritmtico.
5
Suma o resta.
=,=<,<,<>,>,>= Relacional. 5
No Lgica. 6
Y Lgica. 6
O Lgica. 7

Tabla 4. Jerarqua de los operadores.

Las expresiones informticas se forman al relacionar o enlazar datos, ya sean


estos numricos o no numricos, trataremos en este punto las expresiones

- 192 -
La informacin... Captulo IV.

numricas que casi siempre nos acarrean problemas en la ejecucin de los


programas.
Para poder evaluar e implementar una expresin informtica (numrica) de
acuerdo a nuestra necesidad e inteligible a la computadora, debemos respetar la
jerarqua de los operadores; es decir, en la forma que la computadora los
evaluar.
En la Tabla No. 4, mostramos dicha jerarqua por orden de prioridad.

EJERCICIOS RESUELTOS:

Dar solucin a los siguientes ejercicios:

I. De acuerdo a la definicin estudiada, a qu tipo de organizacin


corresponde los siguientes enunciados?
Ejemplo 46. FSICA;38; ALUMNOS

Solucin: Corresponde a la definicin de registro.

Ejemplo 47. Programa EDUCADOR.EXE

Solucin: Corresponde a la definicin de archivo.

Ejemplo 48. Libros de la Biblioteca Central.

Solucin: Corresponde a la definicin de Base de Datos.

II. De acuerdo a la definicin establecida, decir a qu tipo de dato


corresponden los siguientes enunciados?

- 193 -
Tras los pasos de un... Hacker

Ejemplo 49. 38

Solucin: Es un dato numrico tipo entero.

Ejemplo 50. 3,141592654...

Solucin: Es un dato numrico tipo real.

Ejemplo 51. AMIGO

Solucin: Es un dato no numrico tipo string, hilera o cadena.

Ejemplo 52. Verdadero

Solucin: Es un dato tipo lgico.

Ejemplo 53. A, B, C.

Solucin: Es un dato de tipo variable numrico.

Ejemplo 54. PI=3,1416

Solucin: Es un dato de tipo constante numrico.

III. Evaluar las siguientes expresiones. Si se producen errores, decir de


qu tipo? y cul solucin dara?

Ejemplo 55. (3*5+2^3* (8*SEN(0,5236)+83)^3+10)= ?

(3*5+2^3*(8*SEN(0,5236)+83)^3+10)= (3*5+2^3 *(8*(0,5)+83)^3+10)

= (3*5+2^3*(4+83)^3+10)

- 194 -
La informacin... Captulo IV.

= (3*5+2^3*(87) ^3+10)

= (3*5+8* 658503+10)

= (15+5268024 + 10)

= 5268049

Solucin: La expresin evaluada genera el valor 5268049.

Error: No existe.

Se define a la variable AREA como valor entero, la expresin se


Ejemplo 56.

calcula por: AREA = BASE*ALTURA, se ingresan los valores de 8,5 y 2 para


BASEYALTURA respectivamente.

AREA=(8.5) * (2)

AREA= 17,0

Solucin: La expresin evaluada genera el valor de 17,0

Error: Se produjo un error de uso, ya que definimos a AREA como entero y se


gener el valor real 17,0

La posible solucin que daramos sera, definir a la expresin como: AREA =


CENT (BASE*ALTURA)

Ejemplo 57. Tenemos la expresin: 31* 21 +85*SEN(0,7854*10^3

Se encontr un error de sintaxis, la expresin quedara as:

31 * 21 +85*SEN(0,7854) * 10 ^3

Ahora la evaluamos:
31 * 21 +85*SEN(0,7854) * 10 ^ 3 = 31 * 21 +85* 0,7071 *10^3

- 195 -
Tras los pasos de un.. Hacker

= 31 * 21 + 85 * 07071 * 1000

= 651 + 60103,5

= 60754,5

solucin: La expresin genera el valor 60754,5

Ejemplo 58. Se define la expresin: PROXIMO = N (N-1)*(N-2), se ingresa el


valor 36,3 para N. Evaluar la expresin.

PROXIMO = (363) * (363-1) * (363-2)

= (363) * (353) * (343)

= 43951,677

solucin: La expresin genera el valor de 43951,677


Error: No existe.

Ejemplo 59. Se define la expresin:

CAF = (-(5+CENTCZ+B)+3*ABS(Y+X)+25*RCUAD(0,56E+4)^3*SEN(1.0472)

Evaluar la expresin para Z=3, X=8, B=104 e Y=85,3


Procedimiento:

1. Se encontr un error de sintaxis, la expresin podra quedar as:

CAF= (-(5+CENT(Z+B)+3*ABS(Y+X)+25*(748331)^3*SEN(10472)))

2. Evaluamos la expresin:

CAF= (-(5+CENT(Z+B)+3*ABS(Y+X)+25*(748331)^3*SEN(10472)

= (-(5+CENT(3+8)+3*ABS(853+8)+25*(74,8331)^3+(0.866)))

- 196 -
La informacin... Captulo IV.

= (-(5+CENT(11)+3*ABS(93,3)+25*419064,8254+0,866))

= (-(5+11+3*93,3+25*419064,8254+0,866))

= (-(5+11+279,9+10476620,635+0,866))

= (-(10476919,401))

= (-10476919,401)
=-10476919,401

Solucin: La expresin genera el valor -10476919,401

Se define la variable ENTERO como valor entero y se asigna para su


Ejemplo 60.

clculo expresin:
la

ENTERO = REDONDEA(A+B^C+3/A+B/C*D^4)+C/D+A+B+C^D

Evaluar para:

a) A= 1, B = 3, C = 2, D = 5; y,
b) A=3, B = 2, C = 10, D = 13

Procedimiento:
a) Evaluamos la expresin para los valores dados:

ENTERO = REDONDEA(1+3^2+3/1+3/2*5^4)+2/5+1+3+2^5

= REDONDEA(1+9+3/1+3/2*625)+2/5+1+3+2^5

= REDONDEA(1+9+3+937.5)+2/5+1+3+2^5

= REDONDEA(950.5)+2/5+1+3+2^5
=951 +2/5+1+3+2^5

=951 +2/5 +1+3+32

- 197 -
Tras los pasos de un... Hacker

= 987,4

Solucin: La expresin genera el valor 987,4

Error: Se produjo un error de uso, porque el valor generado es real, corrigiendo


este error de uso, podremos tener la expresin as:

ENTERO= CENT(A+B^C+3/A+B/C*D^4)+C/D+A+B+C^13)
b) Evaluamos la expresin para los valores dados:

ENTERO= REDONDEA(3+2^10+3/3+2/10*13^4)+10/13+3+2+10^13

= REDONDEA(3+1024+3/3+2/10*25561)+10/13+3+2+10^13

= REDONDEA(3+1024+1+5712.2)+10/13+3+2+10^13

= REDONDEA(6739,2)+10/13+3+2+10^13

= 6739+10/13+3+2+1E+13

= 6739+0,7692+3+2+1E+13

= 1E+13

Solucin: La expresin genera el valor 1E+13

Error: Se produjo un error de uso, porque el valor generado es real. La nica


forma de evitar este error es definiendo a ENTERO como real.

- 198 -
La informacin... Captulo IV.

EJERCICIOS PROPUESTOS:

Dar solucin a los siguientes problemas:

I. De acuerdo a la definicin decir: A qu tipo de organizacin de datos


corresponden los siguientes enunciados?

Ejercicio 191. B, A, {

Ejercicio 192. 0, 1, 0, 1,1

Ejercicio 193. 10010110, 10111011

Ejercicio 194. CAFE

Ejercicio 195. CASA BLANCA

Ejercicio 196. Nmina del personal de una empresa.

Ejercicio 197. IAC E; Instituto para el Adelanto Cientfico de la Educacin

Ejercicio 198. Nstor Marroqun;

Ejercicio 199. 10101001, 011101011,001010110, 01010101, 10101101

Ejercicio 200. Ciudadanos del Ecuador.

II. De acuerdo a la definicin decir: A qu tipo de dato corresponden los


siguientes enunciados?

Ejercicio 201. 31

Ejercicio 202. 83,67

Ejercicio 203. 24,0

Ejercicio 204. 3134

Ejercicio 205. 1E+38

- 199 -
Tras los pasos de un... Hacker

Ejercicio 206. 1000

Ejercicio 207. 1E+3

Ejercicio 208. VERDAD

Ejercicio 209. Falso

Ejercicio 210. CALCULO

Ejercicio 211. E = 2,718281....

Ejercicio 212. AMERICA

Ejercicio 213. 21341,32E-4

Ejercicio 215.
214. 2133
3261E+3

Ejercicio 216. 1

Ejercicio 217. A = 3261

Ejercicio 218. 245

Ejercicio 219. MAMI

Ejercicio 220. Verdad

III.Evaluar las siguientes expresiones, si se producen errores decir: De qu


tipo? y Qu solucin dara para corregir el error?

Ejercicio 221.35+CENT(21/3+1^3,5+2/3)+10*3/5)=?

Ejercicio 222.3^2^3+8*2/4 = ?

Ejercicio 223.4^(3^2)+25*3*RCUAD(625)=?

Ejercicio 224. (8+3)*(25+6)/(31+1)*3 = ?

- 200 -
La informacin... Captulo IV.

Ejercicio 225.-45.27*2.65*2^6/12-(-131)*10.6/1E+3+3*1E-3=?

Ejercicio 226. SEN(0,6131)+85*COS(0,3161)+3^2=?

Ejercicio 227. INT(3/2)+0,5 = ?

Ejercicio 228. CENT(3/2)+1 = ?

Ejercicio 229.261+361+261^3+216^3+3161*3/1E+21 = ?

Ejercicio 230.31+3*5+(3+10^3+21/3*6)^2+2^3+3/1E+3=?

Se define la variable PERIMETRO como valor entero. La expresin se


Ejercicio 231.
calcula por: PERIMETRO = 31*L+L+L+2*L, se ingresa el valor 2,6 para L.
Encontrar el valor de PERIMETRO.
Se define la variable A32 como valor real, la expresin se calcula por:
Ejercicio 232.
A32 = A+B+C/3+D^E, se ingresan los valores 3, 2, 1, 5, 3 respectivamente a las
variables de la expresin. Encontrar el valor de A32.

Se define la variable DX como valor real, la expresin se calcula por: DX


Ejercicio 233.
= X^3+4*X+3+4/(X-2)+1/X; se ingresan los valores: a) 0, b) 31, c) 2, d) 1,3, para
X. Evaluar para cada caso la expresin que calcula DX.

Se define la variable TANX como valor real, la expresin se evala para


Ejercicio 234.
X expresada en radianes, como:
TANX=(X-X^3/3!+X^5/5!-X^7/7!+X^9/9!-X^11/11!)/(1-X^2/2!+X^4/4!-X^6/6!+X^8/8!-X^10/10!)

Evaluar para: a)X= 0,7854, b)X= 1,0472, c)X= 0.5236, d)X= 1.5708. Nota: n!
significa n factorial, el alumno debe investigar la funcin factorial.
Se define la variable RELX como valor real, la expresin se evala para
Ejercicio 235.
X como: RELX=(X+(X+1)*COS(X^3))/X-2), PARAX=0,6341, debiendo obtenerse
como valor generado el 1,6219.

Se define la variable ENI como valor entero, la expresin se evala para


Ejercicio 236.
A, B y C como: ENI = (A+B^C+(A^B^C), ajustar la expresin para que con valores
como 1, 3 y 5 generen las salidas a) 1025; y, b) 245.

Ejercicio 237. Se define la variable C como valor entero, la expresin se evala para A,

- 201 -
Tras los pasos de un... Hacker

X e Y como: C = A*SEN(X)/SEN(Y), tomando A, X e Y los valores de 872,5, 1,3962


y 1,0603 respectivamente. Calcular el valor de C.
Se define la variable RES como entero, la expresin se evala para CO,
Ejercicio 238.
IN y J, como RES= CO-ENT(IN-1)*LOG(10))*J, tomando las variables CO, IN y J los
valores 34,2 y 13 para que genere las salidas: a)429 y b)21

Ejercicio 239. Se define la variable AN como valor entero, la expresin que calcula AN
se evala para A, I, B, Ly J, como: AN = A+ENT((I+1)*(B^(L-J))+0,5), evaluar la
expresin para a)3, 2,1, 0,3; y, b) 32, 16, 2.1, 63,1 respectivamente.

Se define la variable LADO como valor real, la expresin que calcula


Ejercicio 240.
LADO se evala para A, B y C, como: LADO = A+SEN(B)^TAN(C), evaluar y ajustar
la expresin para: a) 32, 0,6131 y 0,6; b) 21, 1,32 y 2,1; y, c) para que genere con
los valores de 21, 0,61 y 0,3 el valor de 2,6.

NOTAS Y BIBLIOGRAFA
Sobre este tratado de La Informacin y Funciones Estandarizadas en Informtica,
las notas han sido elaboradas en base a publicaciones de revistas especializadas y
la consulta de los siguientes textos:

- LGEBRAELEMENTAL MODERNA, M. O. Gonzlez J. D. Mancill, Editorial


KAPELUSZ, Publicado en Buenos Aires Argentina, 1.962.
- Matemticas y Astronoma, Tomo No. 11, Enciclopedia Salvat de las
Ciencias, Salvat S.A. de Ediciones, Pamplona, Espaa, 1.968.
- Programacin Estructurada en Lenguaje Pascal, ENCICLOPEDIA
PRCTICA DE LA INFORMTICAAPLICADA, TOMO 3, Juan Ignacio Puyol,
EDICIONESSIGLOCULTURALS.A., Madrid Espaa, Octubre de 1.986.
- Structured BASIC Programming, John G. Kemeny & Thomas E. Kurtz, John
Wiley & Sons, Publicado en Estados Unidos de Norte Amrica, 1.987.
- True BASIC by Problem Solving, Brian D. Hahn, VCH Verlagsgesellschaft
mbH, Weinheim Repblica Federal de Alemania, 1.988.
- Personal Mathematics and Computing, Frank Wattenberg, MIT Press,
Publicado en Estados Unidos de Norte Amrica, 1.990.

- 202 -
La informacin... Captulo IV.

- The Fun of Computing, John G. Kemeny, True BASIC Inc. 1.990,


Publicado en los Estados Unidos de Norte Amrica, 1.990.
- Programacin en C, Byron S. Gottfried, McGraw Hill / Interamericana de
Espaa S.A., Madrid Espaa, 1.991.
- DiscoveryPak, True BASIC Inc., True BASIC Press, Publicado en Estados
Unidos de Norte Amrica, 1.993.
- Ingeniera del Software Un enfoque prctico, Roger S. Pressman,
McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa, 1.993.
- The YOU Based LABORATORY, TI-CBL EXPLORATIONS in Science and
Mathematics, Margo L. Mankus Frank Wattenberg, Weber State
University 1.996, Publicado por True BASIC Inc., 1.996.
- Lets Program It in True BASIC, Avery Catlin, True BASIC Press,
Publicado en Estados Unidos de Norte Amrica, 1.996.
- Programming for ENGINEERS in True BASIC, Avery Catlin, True BASIC
Press, Publicado en Estados Unidos de Norte Amrica, 1.996.
- LGEBRA LINEAL CON APLICACIONES, George Nakos David Joyner,
International Thompson Editores, Publicado por International Thompson
Editores S.A., 1.999.
- True BASIC Bronze Edition, Users Guide, John G. Kemeny Thomas E.
Kurtz, True BASIC Inc. 2.001, Publicado en los Estados Unidos de Norte
Amrica, 2.001.
- Matemtica e Informtica, Tomo No. 11, Enciclopedia Larousse del
Estudiante, Sociedad Comercial y Editorial Santiago Ltda., Santiago de
Chile, Chile, 2.000 2.002.
- Polymorphous Encryption System, Nstor Marroqun Carrera, U.S. Patent
Application No. 20020191786 A1, Diciembre de 2.002.
- Manual Moderno de Informtica, Labor Loerincs, Zamora Editores Ltda.,
Publicado por Quebecor World Bogot S.A., Impreso en Bogot
Colombia, 2.004.
- La wikipedia, http://www.wikipedia.org. La enciclopedia libre de la
Internet.
- PC World Ecuador,
Magazine, http://www.pcmag.com
http://www.pcworld.com.ec/pcw_catt/index.php

- Notas de clase, Nstor Marroqun, 1.9891.994.


- Trabajos de varios autores publicados en la worldwide web.

- 203 -
Tras los pasos de un... Hacker

- 204 -
INTRODUCCIN (V)

... Pasaba el tiempo, con gran sacrificio y dedicacin (miren que los temas que
hemos tratado, muchos estudiantes de informtica los investigan y aprenden en
los cursos introductorios de los primeros aos de la Universidad pero para un
tercer ao de colegio!... Les explico, en mi pas y en el tiempo en que curs la
secundaria, los periodos acadmicos estaban divididos en: 1 ao de preparatoria
(llamado cariosamente jardn de infantes), 6 aos de escuela primaria
(Escuela), 6 aos de escuela secundaria (Colegio) y finalmente la etapa
universitaria (Universidad)) a ms que como les contaba, la materia de
computacin nunca la recib en mi querido colegio y tampoco de lo que yo s, en
ningn colegio de mi pas se imparta esta materia oficialmente. Las Ciencias de
la Computacin estaban destinadas a estudiarse en la Universidad o en algn
posgrado.

Mi padre, al ver mi inters y el cierto dominio en cuanto al manejo de la


calculadora programable de mi to, al observar una promocin publicitaria de
mediados del ao de 1.986 de una empresa que venda computadoras, decide
comprarme la computadora que se publicitaba. A la semana de haber hecho las
consultas necesarias y tomado la decisin, nos fuimos a comprar la computadora,
se trataba de la Spectravideo SVI-738 Xpress (Fig. 43), una computadora
domstica que tena las siguientes caractersticas:

FIG. 43. COMPUTADORA SPECTRAVIDEO SVI-738.

Computadora: SVI 738.


Fabricante: Spectravideo.
Tipo: Computadora Domstica.
Origen: Hong Kong.

- 205 -
Tras los pasos de un... Hacker

Ao: 1985.
Microprocesador: ZilogZ80A.
Velocidad: 3.6 MHz
RAM: 64 KB. Expandible hasta 144 KB.
ROM: 32 KB.
VRAM: 16 KB.
Chip Grfico: Yamaha V9938, cumpla el estndar MSX2.
Modo Texto: Por defecto 40 caracteres x 24 lneas.
Bajo sistema operativo, 80 caracteres x 24 lneas. (CP/M, MSX-DOS)
Modo Grfico: 256 x 192 pixeles.
Colores: 16 colores.
Chip de Sonido: AY-3-8910.
Sonido: 3 Canales, 8 octavas.
Almacenamiento: Unidad de disquete de 3, Doble lado, Doble Densidad,720 KB.
Puertos E/S: Audio /Video, Interface a toca cinta, 2 Puertos para Joystick, Ranura
para Cartuchos, Sper Conector, 1 RS-232C, 1 Centronics, RGB,
CVBS/RF.
Teclado: Ingls, QWERTY.
Sistema Operativo: CP/MV2.2, MSX DOS V1.0.
Firmware: MSX BASICV1.0.

Como ya era costumbre ma, apenas abr la caja de empaque de tan preciado
regalo, lo primero que saqu fueron los manuales de usuario, ya que aprend a la
mala, que si uno no lee las instrucciones de uso a veces puede daar algn
dispositivo!; en fin, no me tom mucho tiempo en comprender para qu servan?
los famosos disquetes del CP/M V2.2 y el MSX - DOS V1.0 (Fig. 44) que
acompaaban a la computadora (la calculadora programable de mi to no vea
que necesite de algn programa externo para que funcione!), pero mi
computadora haca algunas cosas increbles que la calculadora no; por ejemplo,
de uno de los programas demostrativos que venan grabados en los disquetes, al
ejecutarlo presentaba a un astronauta que viajaba en su nave (todo estilo dibujo
animado y a colores!) en una travesa por el ciberespacio (trmino acuado en
1.982 por William Gibson (1.948-), autor de la novela NEUROMANTE, novela de
ciencia ficcin), publicitaba otros productos de la empresa, deca que tambin se
poda adquirir un procesador de palabras, una hoja de clculo, una agenda de
citas; en fin, tantas y tantas aplicaciones que nunca pens que una computadora
poda tener y qued ms fascinado con mi nuevo aparato; y, cmo no emular! los
grficos animados y la msica que tanto me haban impactado con la
presentacin del astronauta. Con esta motivacin, decid salir a las libreras
especializadas a comprar alguna gua de computacin, algn curso casero de
computacin, algn libro que me pueda ayudar a profundizar mis conocimientos
de programacin. Despus de tanto buscar y de ahorrar algn dinero que mis
padres me daban para comprar el refrigerio en el receso de la jornada escolar o

- 206 -
La historia... Introduccin (V).

de su aporte voluntario, pude adquirir mis primeras guas avanzadas de


programacin y libros de introduccin a las Ciencias de la Computacin. En mi
casa, mi madre (previsora como todas las madres!) se haba preocupado de
adquirir varias enciclopedias de ciencias para que sus hijos no tengan que salir a
las bibliotecas pblicas a realizar las famosas consultas (ahora sin duda que la
Internet nos ayuda a tener las mejores bibliotecas y fuentes de consulta en
nuestra misma casa); y, con el nuevo inquilino electrnico acaparando toda mi
atencin, tom el reto de programarlo y hacer con l, lo que ninguno de mis
compaeros del colegio soaba siquiera, presentar en las ferias de ciencias, la
explicacin con la animacin de los experimentos que se realizaba en los
diferentes laboratorios que desarrollbamos como parte del aprendizaje de las
materias de fsica y qumica. Es as, que pude desarrollar varios programas con
los cuales explicaba y simulaba los fenmenos fsicos estudiados, por ejemplo: La
simulacin de la trayectoria que toma un proyectil cuando es disparado por una
arma (el famoso tiro parablico), el principio que hace volar a los aviones (el
principio de Bernoulli) o el rayo lser, trabajos con los cuales, como les
comentaba, al ser expuestos en las ferias de ciencias, haca que me distinguiera
del resto de los expositores y a la vez cautivaba la atencin del pblico que
visitaba la feria.

FIG. 44. SISTEMAS OPERATIVOS DE LA SPECTRAVIDEO SVI-738.

Siguiendo con mis investigaciones de la computadora, escudriando las


direcciones de memoria de la ROM (Read Only Memory), me top con la
informacin de la empresa y de los autores de la versin del lenguaje de
programacin que vena incorporado en mi computadora, es decir, el famoso
MSX BASIC V1.0, as como la mencin que haca a que este lenguaje (el BASIC)
era la creacin de los cientficos John G. Kemeny y Thomas E. Kurtz, profesores

- 207 -
Tras los pasos de un... Hacker

del Dartmouth College, localizado en una pequea ciudad de los Estados Unidos
de Norte Amrica llamada Hanover, Estado de New Hampshire. Fue as que me
obsesion con poder contactarme con los autores del lenguaje que me haba
permitido realizar tantas cosas y decid enviarles a travs de mis amigos que
residan en Nueva York una carta de admiracin y que me informen cmo poda
hacer para aprender a programar de mejor manera mi computadora?

Al poco tiempo, recib una contestacin de la empresa que haban formado y que
podan guiarme con textos y con la versin del mejor lenguaje de programacin
para aprender a pensar como programador y as desarrollar de mejor forma los
programas que quisiera realizar; me llegaron varios libros de programacin y
algunas versiones originales con sus respectivas guas de uso del famoso BASIC,
pero esta vez en la versin actualizada de los creadores (las guas del lenguaje
las tengo autografiadas por Thomas E. Kurtz!), la versin conocida como True
BASIC (http://www.truebasic.com). Fruto de esta gua a distancia as como el
haber resuelto tantos y tantos ejercicios de programacin, empec a desarrollar
esta particular forma de pensar que tenemos los programadores, aparte de
haberme convertido prcticamente en un experto en el lenguaje de programacin
BASIC. (Y de algunas de sus versiones MSX BASIC, GW-BASIC, BASICA,
Turbo BASIC, Quick BASIC y True BASIC)

Ahora, justamente en este punto del relato de mi vida, voy a hacer una reflexin
sobre lo que significa el programar una computadora y la importancia de esta
labor:

Quiz la parte ms interesante, en cuanto a investigar y desarrollar


SOFTWARE (programas de computadora) sea la programacin, ya que
bajo este concepto se ha desenvuelto el desarrollo tecnolgico y cientfico
del hombre contemporneo. Analicemos a breves rasgos el mundo actual
que nos rodea; la llegada del hombre a la luna y los viajes espaciales no
hubieran sido posibles sin la ayuda de las computadoras, la construccin
de los grandes edificios, el control del trfico terrestre, martimo y areo
sera una labor infranqueable sin el auxilio de la gran capacidad de
clculo y almacenamiento que poseen las computadoras. As mismo,
existen hoy en da tantas labores productivas, mismas que son asistidas
por aplicativos especficos que hacen prcticamente una ms del personal
de apoyo productivo de las empresas a la computadora; as, con estos
pocos ejemplos podemos deducir que la computadora forma parte del

- 208 -
La historia... Introduccin (V).

ambiente en el cual desarrollamos nuestras actividades, pero qu hace


que sea tan necesaria esta mquina?

Aparte de su gran capacidad para almacenar informacin y rapidez para


localizarla, su elevada velocidad para realizar clculos o de su capacidad
para comunicarse con ciertos dispositivos, est una caracterstica que la
diferencia de las otras mquinas que ha creado el hombre, la de ser
programada, y es en este campo que el hombre toma un papel
protagnico, ya que es l, quien interviene en el proceso del desarrollo de
los programas que determinan las aplicaciones de la computadora.

Para este fin, en esta novel ciencia como es la computacin, algunos


cientficos informticos han creado tcnicas para ayudarnos a estructurar
un programa de computadora. Hasta fines de la dcada de los 60s
(1.960), se hablaba del Arte de Programar Computadoras hoy en da
se habla de Ingeniera de Software y de algunos aplicativos
denominados herramientas CASE (Computer Aided Software Engineering,
Ingeniera de Software asistida por computadora), pero todava no se ha
desarrollado un programa de computadora que haga pensar a una
mquina. Esta es la caracterstica que diferencia al hombre del resto de
animales o cosas que ha creado, es el programador quien piensa por la
mquina al desarrollar un programa especfico, en otras palabras,
determina la funcin de la computadora a cumplir. Hoy en da existen
computadoras que controlan el motor de un vehculo, computadoras que
controlan la lavadora de ropa, computadoras que nos ayudan a
comunicarnos (telfonos celulares), computadoras que supervisan los
signos vitales de un paciente en una sala de terapia intensiva, etc.

Acabada la reflexin y siguiendo con este texto, les invito a conocer algo de la
Arquitectura de una Computadora, con el exclusivo fin de familiarizarnos con la
forma en que est estructurada esta mquina, as como aprender el concepto de
los principales trminos tcnicos que se dan a cada parte de la misma y que en la
jerga informtica los damos por conocidos, en otras palabras, tener las bases
necesarias para empezar a desarrollar programas de computadora

- 209 -
Tras los pasos de un... Hacker

- 210 -
CAPTULO V. ARQUITECTURA DE UNA COMPUTADORA

Debemos a las ideas de John von Neumann, prcticamente que todas las
computadoras electrnicas estn diseadas y organizadas de la misma forma,
desde la ms bsica calculadora electrnica hasta las supercomputadoras, todas
estas mquinas responden a un diseo bsico.

Al diseo de una computadora y la forma de organizar sus dispositivos, los


ingenieros y cientficos que innovan da a da los mismos, la han bautizado como
la Arquitectura de una Computadora.

Podemos definir a una computadora como: La mquina electrnica creada por


el hombre, capaz de procesar informacin de una manera veloz, ordenada y
de forma automtica (no inteligente) segn lo indique un programa de
computadora.

As, podemos decir que esta mquina tiene dos componentes fundamentales:
a) Los programas que gobiernan la computadora; y,
b) Los dispositivos y elementos fsicos que la conforman.

Los informticos han bautizado a estos dos componentes con los nombres de
SOFTWARE y HARDWARE respectivamente.

A su vez, tanto el SOFTWARE como el HARDWARE, conforman segn su funcin,


algunos grupos.
El SOFTWARE segn su funcin y dentro de un modelo de abstraccin funcional,
lo podemos clasificar en tres grupos:

a) Programas de aplicacin,
b) Programas del sistema; y,
c) Programas de control de dispositivos.

Por su parte, los elementos funcionales del HARDWARE de todas las


computadoras los podemos clasificar en cinco grupos:
a) Dispositivos de memoria,

- 211 -
Tras los pasos de un... Hacker

b) El camino de datos (bus),


c) Dispositivo de control y proceso,
d) Dispositivos y unidades de entrada; y,
e) Dispositivos y unidades de salida.

Nota del autor:


Al respecto, muchos autores diferirn del criterio expuesto en este tratado, pero si investigamos
los variados esquemas que todos los diseadores de computadoras han publicado (en su mayora
son ingenieros electrnicos), nicamente esquematizan los bloques funcionales de la
computadora desde su punto de vista, es decir, de los dispositivos, circuitos y chips.
Cuando estos esquemas los observamos desde el punto de vista de los programadores, pensamos
que la programacin es un mundo aparte de la circuitera, cosa que, como vemos, no las
podemos separar. La computadora es un todo compuesto por el SOFTWARE y el
HARDWARE.

Este concepto lo podemos resumir en el siguiente diagrama:

ARQUITECTURA DE UNA COMPUTADORA

S
O Programas de aplicacin
F
T
W Programas del sistema
A
R
Programas de controlde dispositivos
E

Dispositivos de memoria
HARDWARE

Entrada Camino de datos Salida

Dispositivo de
control y proceso

- 212 -
Arquitectura de una computadora... Captulo V.

Muchos autores cuando se refieren al procesador o microprocesador se refieren


a lo que llamamos en nuestro esquema al dispositivo de control y proceso. Es
importante esta abstraccin en nuestro esquema porque actualmente los diseos
de algunas computadoras implican el multiprocesamiento o computadoras que
tienen procesadores paralelos, as, nuestro dispositivo de control y proceso en
vez de tener incorporado un solo microprocesador tendr los que el diseador de
la computadora haya incorporado.

A continuacin y sin entrar en mayores detalles vamos a estudiar cada una de


estas partes que conforman una computadora.

5.1 DISPOSITIVO DE CONTROL Y PROCESO


Como explicbamos en lneas anteriores, al referirnos a los dispositivos de
control y proceso, nos estamos refiriendo a lo que otros autores denominan la
Unidad Central de Proceso, Procesador o Microprocesador. A este dispositivo
se lo identifica con las siglas CPU (Central Processing Unit) y para nosotros, sin
discutir a profundidad ms detalles de diseo electrnico, constar de los
siguientes bloques funcionales:

a) Unidad de control o CU (Control Unit)


b) Unidad Aritmtico Lgica o ALU (Arithmetic Logic Unit).
c) Memoria para uso del dispositivo de control y proceso.
d) Interfaz de conexin con el camino de datos o bus.
e) Interfaz de conexin con los dispositivos de memoria.
f) Interfaz de conexin con los dispositivos de entrada y salida.
g) Reloj.

Esquema:

- 213 -
Tras los pasos de un... Hacker

Dispositivo de control y proceso

Interfaz con el
Interfaz con los Interfaz con los
Camino de datos
Dispositivos de Dispositivos de
o
Entrada y Salida Memoria
BUS

UNIDAD
CONTROL
UNIDAD DE ARITMTICO
Reloj
LGICA

Memoria del Dispositivo de Control y Proceso


Aloja el CONJUNTO DE INSTRUCCIONES, y
LOS REGISTROS PARA TRABAJO

Este esquema no profundiza en detalles tcnicos que las arquitecturas de los


procesadores CISC (Complex Instruction Set Computer, Computadora que
funciona con un Conjunto de Instrucciones Complejas) o RISC (Reduced
Instruction Set Computer, Computadora que funciona con un Conjunto de
Instrucciones Reducidas) tienen. Es ms general y solo detallamos los bloques
funcionales comunes de estas arquitecturas.

5.1.1 UNIDAD DE CONTROL


Es la parte del dispositivo de control y proceso (procesador o microprocesador),
que dirige todas las operaciones de la computadora en base a las instrucciones
del programa almacenado en el dispositivo de memoria conforme estn definidas
en su CONJUNTO DE INSTRUCCIONES. Sus funciones principales son:

a) Analizar e interpretar las instrucciones del programa.


b) Gobernar cada accin de la computadora por medio de rdenes.

- 214 -
Arquitectura de una computadora... Captulo V.

5.1.2 UNIDADARITMTICO LGICA


Es la parte del dispositivo de control y proceso (procesador o microprocesador),
que se encarga de realizar todas las operaciones aritmticas, lgicas y de
decisin.
Esta unidad se encarga de procesar los nmeros, sean estos definidos en punto
flotante o enteros y evaluar las expresiones lgicas (booleanas y de decisin).

Cuando se hacen clculos cuyos resultados no pueden ser almacenados en los


registros normalmente definidos para procesar los nmeros, esta unidad informa
a la unidad de control que se ha producido un error de desbordamiento o de
overflow.

5.1.3 MEMORIA PARA EL USO DEL DISPOSITIVO DE CONTROL Y


PROCESO
Es la parte del dispositivo de control y proceso (procesador o microprocesador),
donde estn definidas las rdenes a ejecutar (CONJUNTO DE INSTRUCCIONES)
por parte de la unidad de control conforme lo indique un programa almacenado
en el dispositivo de memoria.

Tambin tiene definidos algunos registros de memoria destinados al proceso de


los clculos hechos por la Unidad Aritmtico Lgica, conocidos como registros
del procesador o microprocesador.

5.1.4 INTERFAZ DE CONEXIN CON EL CAMINO DE DATOSOBUS


Es la parte del dispositivo de control y proceso (procesador o microprocesador),
que establece la comunicacin con los otros dispositivos que conforman la
computadora.
Su funcin es la de transportar los datos desde y hacia el dispositivo de control y
proceso a los dispositivos de memoria y dispositivos de entrada y salida.

- 215 -
Tras los pasos de un... Hacker

5.1.4.1 INTERFAZ DE CONEXIN CON LOS DISPOSITIVOS DE MEMORIA


Es el subsistema de la interfaz de conexin con el camino de datos que transporta
los datos desde y hacia el dispositivo de memoria de la computadora.

5.1.4.2 INTERFAZ DE CONEXIN CON LOS DISPOSITIVOS DE ENTRADA


YSALIDA
Es el subsistema de la interfaz de conexin con el camino de datos que transporta
los datos desde los dispositivos y unidades de entrada hasta el dispositivo de
control y proceso, as como una vez procesados los datos los distribuye hacia los
dispositivos y unidades de salida de la computadora.

5.1.5 RELOJ
Es el dispositivo que trabaja sincronizando las acciones del dispositivo de control
y proceso (procesador o microprocesador), determina la frecuencia con la que se
ejecutarn las instrucciones en el dispositivo de control y proceso, as como la
frecuencia con la que se transportarn los datos entre los diversos dispositivos.

La frecuencia de trabajo del reloj est medida en ciclos de reloj y a su vez


cuantificada en Hertzios.

Nota del autor:


Como habamos referido en las partes introductorias, las computadoras mencionadas por
ejemplo, deca que tenan una velocidad de 1,3 MHz, esto significa que el procesador poda
ejecutar 1300.000 instrucciones por segundo en el caso de la Tandy RadioShack TRS-80 Pocket
Computer II (Fig. 40), en el segundo caso la computadora SpectravideoSVI-738Xpress (Fig.
43) tena una velocidad de 3,6 MHz, es decir el Zilog Z80A poda ejecutar 3600.000
instrucciones por segundo, finalmente la Toshiba Satellite 2400 CDS, cuyo procesador Intel
Pentium IV que corre a 1,7 GHz; es decir, puede ejecutar 1.700000.000 instrucciones por
segundo.

La cantidad de instrucciones que un dispositivo de control y proceso puede ejecutar, depende de

- 216 -
Arquitectura de una computadora... Captulo V.

la cantidad de ncleos de procesamiento que se dispongan para este fin, as decamos que existe
el mltiple procesamiento o el procesamiento paralelo, con estos diseos, una computadora que
tenga una velocidad de 1,7GHz pero posea 4 ncleos de procesamiento, tendr una capacidad de
ejecutar 6.800000.000 de instrucciones por segundo, entonces no se hizo necesario tener un
reloj ms rpido para cuadruplicar el rendimiento.

5.2 EL CAMINO DE DATOS


Es la parte de la circuitera que conforme a su diseo, interconecta los diversos
dispositivos de entrada y salida con los dispositivos de memoria. Atravs de las
interfaces de conexin se comunica con el dispositivo de control y proceso.

Se lo identifica tambin como BUS DE DATOS, a travs de la historia de la


computacin los diseos han plasmado varios estndares como por ejemplo: el
BUS DE DATOS TIPO MICROCANAL, BUS DE DATOS TIPO PCI, BUS DE DATOS
TIPOUSB, etc.

La forma en que fluyen los datos, al igual como las instrucciones del dispositivo
de control y proceso, depende de los impulsos o ciclos que emite el reloj de la
computadora. No necesariamente esta velocidad es la misma a la que trabaja el
procesador.
Es comn que una computadora personal tenga varias velocidades de transporte
de datos a travs de los diferentes buses. Por ejemplo, el bus de datos de la
memoria puede trabajar a 400 MHz y el procesador a 1,6 GHz.

Nota del autor:


Dependiendo del diseo del dispositivo de control y proceso, as como su interfaz de conexin con
el camino de datos y este a su vez ya conectado al bus de datos (que puede ser de 1 bit, 2 bits, 4 bits,
8 bits, 16 bits, 20 bits, 32 bits, etc.), veremos en los circuitos impresos y algunos cables de conexin
las mltiples lneas paralelas que unen a los chips y dispositivos, esta circuitera de lneas
paralelas es el famoso bus de datos.

- 217 -
Tras los pasos de un... Hacker

5.3 DISPOSITIVOS DE MEMORIA


Son todos aquellos dispositivos que con variadas tecnologas de fabricacin,
sirven para almacenar informacin, la misma que puede ser almacenada de
manera permanente o temporal.

Por su uso se clasifican en:


a) Memorias ROM,

b) Memorias RAM; y,

c) Unidades de almacenamiento masivo.

Normalmente para el procesamiento y almacenamiento temporal de los datos a


travs de la interfaz de interconexin con los dispositivos de memoria, el
dispositivo de control y proceso, podr direccionar esta memoria de
almacenamiento temporal (RAM) conforme est estipulado en el diseo del bus
de datos para la memoria. Por ejemplo, si este bus es de 32 bits, podr
direccionar hasta un mximo de 4 GB.

5.3.1.MEMORIAS ROM
Son chips especiales donde se graba informacin que nunca puede ser borrada o
modificada por tanto nunca desaparece. Normalmente en este tipo de memorias
las computadoras tienen programadas las rutinas para proceso y control al ms
bajo nivel de todos los dispositivos.

Las siglas ROM (Read Only Memory) significan que la memoria es de solo lectura.
A esta familia de memorias las podemos clasificar en:
a) Memorias PROM. Son aquellas que pueden ser escritas una sola vez y a
partir de este momento el contenido de esta memoria no desaparecer. A
diferencia de las memorias ROM, estos chips inicialmente han sido
fabricados sin informacin y pueden ser escritos una sola vez. Las
memorias ROM son grabadas en el mismo proceso de fabricacin.

- 218 -
Arquitectura de una computadora... Captulo V.

Las siglas PROM (Programmable Read Only Memory) significan memoria


programable de solo lectura.
b) Memorias EPROM. Son aquellas que pueden ser escritas una sola vez y a
partir de este momento el contenido de esta memoria no desaparecer. A
diferencia de las memorias PROM, estos chips inicialmente mediante una
luz ultravioleta pueden ser vueltos a poner en cero todas su celdas con
opcin a ser reprogramados.

Las siglas EPROM (Erasable Programmable Read Only Memory) significan


memoria de solo lectura programable mediante impulsos elctricos.
c) Memorias EEPROM. Son aquellas que pueden ser sobrescritas ms de
una vez y su fin est orientado a guardar programas y rutinas
importantes de una computadora como por ejemplo las rutinas conocidas
como BIOS (Basic Input/Output System, sistema bsico de
entrada/salida).

Las siglas EEPROM (Electrically Erasable Programmable Read Only


Memory) significan memoria de solo lectura que se puede borrar
elctricamente.

5.3.2.MEMORIAS RAM
Son chips especiales donde, mientras est funcionando la computadora, se
almacena informacin, se procesa y se puede borrar en cualquier momento. Al
contrario de lo que sucede con las memorias ROM, cuando deja de funcionar la
computadora el contenido de la misma se pierde.

Las siglas RAM (Random Access Memory) significan memoria de acceso aleatorio.

Dependiendo del diseo del bus de datos de la memoria y del diseo del
dispositivo de control y proceso, la RAM es el espacio donde realmente los
programas se almacenan para su ejecucin, se almacenan los datos para su
proceso; y principalmente, se cargan los sistemas operativos y aplicativos.

- 219 -
Tras los pasos de un... Hacker

5.3.3.UNIDADES DE ALMACENAMIENTO MASIVO


Son dispositivos fabricados en chips o discos especiales, donde podemos grabar
informacin con fines de conservar su contenido y poder, dependiendo del
dispositivo intercambiar varios medios.
En la mayora de unidades de almacenamiento masivo se puede leer su contenido
de forma aleatoria, cambiar o eliminar la informacin contenida. Por esta
utilidad normalmente interactan con la memoria RAM para el procesamiento de
la informacin con el mtodo de virtualizacin de memoria y as de alguna
manera tener ms memoria para procesar informacin.

Las unidades de almacenamiento masivo pueden ser:


a) Unidades de disco. Estas unidades almacenan informacin en discos de
diversos materiales. En funcin del material pueden ser:

Unidades de disquete. Almacenan la informacin en disquetes


que vienen en varios formatos de capacidad. Los disquetes son
discos de plstico (flexible) recubiertos de un material
electromagntico que puede conservar y reproducir la
informacin grabada.

Unidades de disco duro. Almacenan la informacin en discos


que de igual manera que los disquetes estn recubiertos de un
material electromagntico, pero a diferencia de stos, son discos
de metal (rgidos o duros), por tal motivo pueden girar a mayor
velocidad y por tanto el acceso a sus datos es ms rpido que en
los disquetes. Tambin la capacidad de almacenamiento es
mucho mayor. Vienen fabricados en un arreglo de varios discos,
con sus respectivos dispositivos de lectura y escritura, lo que
determina su capacidad.

Unidades de discos compactos. Almacenan la informacin en


discos de un material acrlico recubierto por un espejo de metal,
el mismo que permite que un rayo lser pueda hacer el proceso de
lectura / escritura de la informacin. Su capacidad depende del
formato del disco a usar y de forma similar a las memorias,
existen los discos compactos de solo lectura (CD-ROM), los discos

- 220 -
Arquitectura de una computadora... Captulo V.

compactos de lectura / escritura (CD-RW). Por su tecnologa


pueden ser formato CD, DVD o discos pticos.

Unidades de memoria. Almacenan la informacin en chips


especiales que de manera similar a los disquetes, discos duros o
unidades de discos compactos pueden conservar la informacin
grabada. Su principal uso es el de compartir la informacin
grabada en diferentes mquinas, as por ejemplo, existen las
tarjetas SD, que graban las fotografas tomadas con una cmara
fotogrfica digital y simplemente extrayendo este medio se lo
puede ingresar a una computadora para poder reproducir las
fotografas tomadas.

b) Unidades de cinta. Almacenan la informacin en cintas


electromagnticas, su uso est encaminado al archivo y conservacin de
la misma con fines de respaldo. La escritura y lectura de la informacin
en este tipo de dispositivos es de manera secuencial.

5.4 DISPOSITIVOS Y UNIDADES DE ENTRADA


Son todos aquellos dispositivos que con variadas tecnologas de fabricacin,
sirven para ingresar informacin a una computadora.

Dependiendo del uso al que est destinada la computadora, los dispositivos y


unidades de entrada pueden ser de lo ms variados, por ejemplo:

Una computadora que est encaminada al uso de un periodista, tendr como


principales unidades de entrada al teclado, al escner, a la tarjeta
digitalizadora de sonido y al ratn.
En un automvil la computadora que monitorea y controla el
funcionamiento del motor, tendr como dispositivos de entrada
principalmente a sensores especiales que ingresarn informacin relativa a
la presin del aceite, la cantidad de combustible, la temperatura, la cantidad
de revoluciones por minuto a la que gira el cigeal del motor, la cantidad de
gases producidos de la combustin y la distancia recorrida.

- 221 -
Tras los pasos de un... Hacker

Una computadora para control de calidad en una empacadora, tendr una


unidad de entrada especial que se conectar a las balanzas electrnicas que
le enviarn la informacin del peso de cada paquete, as como sensores
especiales que le enviarn las dimensiones de los mismos, con estos datos
puede eliminar los productos que no cumplen con el peso y volumen
especificado.

5.5 DISPOSITIVOS Y UNIDADES DE SALIDA


Son todos aquellos dispositivos que con variadas tecnologas de fabricacin,
sirven para la visualizacin, publicacin y distribucin de los datos procesados.

Dependiendo de la funcin a la que est orientada la computadora, los


dispositivos y unidades de salida pueden ser, de igual forma que las unidades de
entrada, de lo ms variadas. Ejemplos:

Una computadora que est encaminada al uso de un periodista. Las


principales unidades de salida sern: un monitor a color de 20 de alta
resolucin y una impresora a color de inyeccin a tinta o lser.

En un automvil, la computadora que monitorea y controla el


funcionamiento del motor, tendr como dispositivos de salida
principalmente una pantalla monocromtica donde nos informar del estado
del motor, as como dispositivos especiales que impedirn el encendido del
motor si determina que algo est fallando.

Una computadora para control de calidad en una empacadora, tendr una


unidad de salida especial que desviar el paquete que no cumpla con las
especificaciones de peso y volumen requeridas a la zona de reciclaje.

5.6 PROGRAMAS DE CONTROL DE DISPOSITIVOS

A este tipo de SOFTWARE, pertenecen todas las implementaciones que al ms


bajo nivel permiten la operacin de los distintos dispositivos de una

- 222 -
Arquitectura de una computadora... Captulo V.

computadora, aqu est la programacin del CONJUNTO DE INSTRUCCIONES del


microprocesador, las rutinas de control de los discos duros, las rutinas que
controlan el funcionamiento de una impresora, etc.
Todas estas implementaciones vendrn grabadas en chips tipo ROM, los mismos
que con las interfaces apropiadas se interconectan con el dispositivo de control y
proceso de la computadora, estableciendo as el primer nivel de instrucciones
que un programador puede invocar para programar una computadora.

5.7 PROGRAMAS DEL SISTEMA

A este tipo de SOFTWARE, pertenecen los lenguajes ensambladores, los


compiladores, las rutinas de manejo bsico de los dispositivos de entrada y salida
(conocidas como rutinas de la ROMBIOS), las implementaciones de los Sistemas
Operativos y algunos programas especiales que vienen grabados en chips tipo
EPROM que son parte de algunas tarjetas especiales a los que la industria ha
puesto el nombre de FIRMWARE (Ejemplo: GPS que puede instalarse en una
computadora, un vdeo juego al que se le puede conectar toda una serie de
dispositivos que hacen la simulacin de un polgono de tiro, etc.).

5.8 PROGRAMAS DE APLICACIN


En este tipo de SOFTWARE encontraremos las implementaciones de las ms
variadas aplicaciones que podemos dar a la computadora. Este es el software que
comnmente utilizan los usuarios finales de los sistemas, en este grupo tenemos
por ejemplo: los procesadores de palabras, las hojas de clculo, los gestores
documentales, los motores de bases de datos, los juegos de computadora, etc.

Nota del autor:


Estos aplicativos, necesariamente funcionan bajo un sistema operativo especfico, teniendo por
tanto, versiones del mismo producto para uno u otro.

Los sistemas operativos en cambio dependen de la forma de trabajar de las computadoras y de la


arquitectura que tenga su procesador o su dispositivo de control y proceso (responde a una

- 223 -
Tras los pasos de un... Hacker

arquitectura CISC o RISC) y de las interfaces programadas para el control del resto de
dispositivos.

Las rutinas bsicas de control dependen exclusivamente del diseo del fabricante, dependiendo
de los protocolos y estndares de la industria, estas se podrn integrar a la capa bsica de
instrucciones y funciones de la computadora.

NOTAS Y BIBLIOGRAFA
Sobre este tratado de Arquitectura de una computadora, las notas han sido
elaboradas en base a publicaciones de revistas especializadas y la consulta de los
siguientes textos:

- Matemticas y Astronoma, Tomo No. 11, Enciclopedia Salvat de las


Ciencias, Salvat S.A. de Ediciones, Pamplona, Espaa, 1.968.
- INTEGRATED ELECTRONICS: Analog and Digital Circuits and Systems,
Jacob Millman Chirstos Halkias, McGraw Hill and Electronic
Engineering Series / Kogakusha Ltd., Publicado en los Estados Unidos de
Norte Amrica, 1.972.
- CMO PROGRAMAR COMPUTADORAS, URMOS.A, DE EDICIONES, Bilbao
Espaa, 1.977.
- Manual del Microprocesador 80386, Chris H. PappasWilliam H. Murray,
III, McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa,
1.983.
- Curso Prctico de Programacin, Intermedio Editores S.A., Bogot
Colombia, 1.984.
- CONEXIONES EN EL IBM PC/XT/AT, Teora y prctica de perifricos,
comunicaciones y configuraciones, M. D. Seyer, Red Editorial
Iberoamericana REI Andes Ltda., Prentice Hall Inc., 1.985.
- CP/M Users Guide, Digital Research 1.982, SPECTRAVIDEO
INTERNATIONAL LTD., Hong Kong, 1.985.
- MSX BASIC Reference Manual, SPECTRAVIDEO INTERNATIONAL LTD.,
Hong Kong, 1.985.
- MSX DISK BASIC Reference Manual, SPECTRAVIDEO INTERNATIONAL
LTD., Hong Kong, 1.985.
- MSX DOS Disk Operating System, SPECTRAVIDEO INTERNATIONAL
LTD., Hong Kong, 1.985.

- 224 -
Arquitectura de una computadora... Captulo V.

- Xpress SVI738 Home Computer Users Manual, SPECTRAVIDEO


INTERNATIONAL LTD., Hong Kong, 1.985.
- 80386 Gua del programador y Manual de referencia, Intel Corporation
1.986, Ediciones Anaya Multimedia S.A., Septiembre de 1.989.
- ABIOS for IBM PS/2 Computers and Compatibles, Phoenix Technologies
Ltd., AddisonWesley Publishing Company Inc., Junio de 1.989.
- Introduccin al 80386, Intel Corporation 1.985, Ediciones Anaya
Multimedia S.A., 1.989.
- Microsoft MASM, Assembly Language Development System Version 6.1.,
Microsoft Corporation 1.987, 1.991, 1.992 U.S. Patent No. 004955066,
Estados Unidos de Norte Amrica, 1.992.
- Ingeniera del Software Un enfoque prctico, Roger S. Pressman,
McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa, 1.993.
- Inside Windows NT, Helen Custer, Microsoft Press 1.993, Publicado en
los Estados Unidos de Norte Amrica, 1.993.
- Microsoft Windows 3.1 Users Guide, Microsoft Corporation 1.985 -
1.993, U.S. Patent No. 004974159, Estados Unidos de Norte Amrica,
1.993.
- Advanced Windows NT, The Developers Guide to the Win32 Application
Programming Interface, Jeffrey Richter, Microsoft Press 1.994,
Publicado en los Estados Unidos de Norte Amrica, 1.994.
- Microsoft MS-DOS 6.21 Users Guide, Microsoft Corporation 1.981 -
1.994, U.S. Patent No. 004955066 y U.S. Patent No. 005109433, Estados
Unidos de Norte Amrica, 1.994.
- Organizacin y diseo de computadores La interfaz hardware /
software, David A. Patterson John L. Hennessy, McGraw Hill /
Interamericana de Espaa S.A., Madrid Espaa, 1.995.
- System BIOS for IBM PCs, Compatibles, and EISA Computers, Phoenix
Technologies Ltd., AddisonWesley Publishing Company Inc., Noviembre
de 1.995.
- Matemtica e Informtica, Tomo No. 11, Enciclopedia Larousse del
Estudiante, Sociedad Comercial y Editorial Santiago Ltda., Santiago de
Chile, Chile, 2.000 2.002.
- Polymorphous Encryption System, Nstor Marroqun Carrera, U.S. Patent
Application No. 20020191786 A1, Diciembre de 2.002.

- 225 -
Tras los pasos de un... Hacker

- Manual Moderno de Informtica, Labor Loerincs, Zamora Editores Ltda.,


Publicado por Quebecor World Bogot S.A., Impreso en Bogot
Colombia, 2.004.
- La wikipedia, http://www.wikipedia.org. La enciclopedia libre de la
Internet.
- PC World Ecuador,
Magazine, http://www.pcmag.com
http://www.pcworld.com.ec/pcw_catt/index.php

- Notas de clase, Nstor Marroqun, 1.9891.994.


- Trabajos de varios autores publicados en la worldwide web.

- 226 -
INTRODUCCIN (VI)

Formado de manera autodidacta y empricamente desarrollando programas,


me planteaba problemas cada vez ms complicados a resolver, por tanto, los
programas resultantes de mis ideas eran ms sofisticados. Pero a medida que
aumentaba la cantidad de informacin a procesar o la complejidad de los
procesos implementados, tambin aumentaba el tiempo de trabajo de mi
computadora y muchas veces me encontraba limitado por la memoria que
dispona para procesar esta informacin. Planteado el problema, de alguna
manera haba que optimizar los programas que ya funcionaban. Tena que
reprogramar las aplicaciones para que hagan la tarea de una forma ms rpida o
para procesar ms informacin de la que se puede manejar en la memoria RAM.

A mi alcance tuve la gua de grandes personajes de la informtica mundial como


fueron y son los profesores John G. Kemeny y Thomas E. Kurtz, quienes con su
trabajo didctico, como insignes educadores que han formado a miles de
programadores desde el ao de 1.964 cuando inventaron el BASIC, lograron que
mis conocimientos sobre programacin crecieran con la lectura y estudio de sus
libros y manuales tcnicos. Conceptos y procedimientos que fueran reforzados
por cuenta propia con el anlisis y estudio que me llevara varios aos de la obra
titulada The Art of Computer Programming del profesor Donald E. Knuth
(1.938-), que a los programadores dota de conocimientos tericos, justamente
sobre la Teora de Algoritmos. Con la explicacin y anlisis de los mtodos y
procedimientos conocidos hasta ese entonces, mi reto personal fue desarrollarlos
e implementarlos en BASIC (ya que Knuth los explica en un lenguaje de
programacin terico al que lo llama MIX) para comprobar que funcionaban
conforme a la explicacin.
Con esta enciclopedia en el arte de programar computadoras (obra publicada
en Estados Unidos de Norte Amrica en el ao de 1.967 por la editora
Addison-Wesley, original del profesor Donald E. Knuth catedrtico de la
Universidad de Stanford. Adquir en 1.987, los tomos 1 y 3 traducidos al espaol
e impresos por la editorial Revert de Espaa en 1.985, la serie completa la
consegu en ingls varios aos despus) al revisar con ms profundidad estos
conceptos y procedimientos (que ya los conoca o por lo menos los intua) pude
entender plenamente el por qu? y el cmo funcionan estos algoritmos?

- 227 -
Tras los pasos de un... Hacker

Entend conceptos importantes como: Algoritmos, estructuras de programacin,


rutinas (corutinas), subrutinas, funciones, etc. Algunos procedimientos
matemticos como: el clculo del MCD (Mximo Comn Divisor), el mcm (mnimo
comn mltiplo), el mtodo para obtener la raz cuadrada, el clculo del valor
del nmero pi, las funciones trigonomtricas, etc.
Con ms elementos de juicio y conocimiento, pude analizar cmo se fueron
mejorando los algoritmos? para que de una forma eficiente se pueda llevar a cabo
alguna tarea especfica, por ejemplo: la evolucin de los mtodos de clasificacin
y bsqueda, mtodos de bsqueda combinatoria, mtodos iterativos y recursivos,
etc. (De mi experiencia, les puedo sugerir que consulten esta serie de libros como
una buena fuente de conocimientos tericos de lo que constituye la Teora de
Algoritmos o simplemente para mejorar sus capacidades como programadores.)
Estas obras marcaron el inicio de mi carrera como programador y por sobre todo
con la maestra que tienen los grandes, pudieron hacer que aprenda de forma
eficiente todo ese conocimiento y lo ponga en prctica.

Algunos de mis compaeros de aula del colegio y muchos jvenes de otros cursos,
al ver que poda programar mi computadora, me pidieron que les explique algo
de este conocimiento que ya lo dominaba. Por vez primera, entenda el reto que
tiene un profesor, cuando trata de hacer que alguien que no sabe, aprenda algo;
as que, para satisfacer este requerimiento de mis amigos, realic una primera
gua de programacin BASIC, que la repart en fotocopias para que se enteren de
la computacin e intenten aprender a programar (inicios del ao de 1.989).

La tarea no era nada fcil, ya que mis compaeros no tenan computadora, as


que no servira de mucho que en papel desarrollen los algoritmos propuestos.

Los lectores que quieran aprender a programar, tendrn que tener una
computadora e instalada la copia del True BASIC que les haba mencionado
adquieran (puede servir tambin cualquier lenguaje de programacin con su
respectiva gua de uso).

Precisamente traigo a colacin un viejo proverbio chino que dice:


Oigo y olvido,
veo y recuerdo,
hago y entiendo

- 228 -
La historia... Introduccin (VI).

Y es precisamente, la ltima proposicin la que normalmente no efectuamos, la


que, por el objetivo que perseguimos es la ms importante.

Incluyo otro parntesis en el relato de mi vida que me parece importante, desde


el lado constructivo de la sana crtica, voy a reflexionar sobre la calidad del
conocimiento que se imparte en los centros destinados precisamente a formar
programadores. Esta realidad de mi pas, la he visto lamentablemente repetida
en los aproximadamente 25 aos que llevo investigando y desarrollando
programas de computadora en nuestros pases (Latinoamrica):
En las naciones que tradicionalmente estn a la vanguardia tecnolgica,
las empresas que desarrollan o mantienen software, cotizan mejor a los
programadores que tienen fundamentos tericos para la instrumentacin
de programas, porque parece ser que el conocimiento que tenan los
pioneros de la computacin, por el facilismo que nos presta la misma
computadora poco a poco se est perdiendo (Teora de Algoritmos).

Esta situacin se ve empeorada porque desde el punto de vista de


nuestros dirigentes, ya que supongo, hacen el siguiente razonamiento:
Como nuestros pases no producen tecnologa informtica, entonces
para qu ensear a pensar a nuestros programadores? y seguramente
se contestan: Solo deben ser usuarios de los productos que nos vienen de
los pases del primer mundo, de todos modos, si ya estn hechos para
qu volver a hacerlos?. Este perverso pensamiento limita y en mucho las
ganas que tienen muchos jvenes de aprender, con el transcurrir del
tiempo, esta poltica educativa hace que se conformen con lo que el status
quo manda y requiere.

Esta realidad la fundamento, palabras ms, palabras menos, de una


conversacin que dej marcada en mi vida una entrevista, de las varias
que realic a potenciales programadores para un proyecto que estaba
desarrollando en una de las empresas que form. As recuerdo, que como
muestra para que el aspirante pueda optar por el puesto ofrecido, le peda
que en alguno de los lenguajes de programacin que en su hoja de vida
deca dominaba, implementara un sumador (pero sin usar ninguno de los
operadores aritmticos tradicionales, es decir, cree su propia funcin
para sumar), el mismo que tendra que sumar dos nmeros enteros;

- 229 -
Tras los pasos de un... Hacker

pareca algo trivial, pero a pesar que el postulante ya era un profesional


graduado de una prestigiosa universidad del pas y tena una maestra en
ciencias de la computacin y otra en administracin de negocios.
Simplemente se mof de mi requerimiento y me dijo que pensaba que en
la empresa se iba a topar con profesionales como l y que volvera en dos
o tres das con el programa que peda, hasta la fecha de publicacin de
este libro, estoy esperando que el aspirante regrese.

Entrevist a muchos programadores y de igual forma, algunos


sinceramente me decan que no podan, otros que ya regresaban. Pasaron
como seis meses hasta que desistimos de contratar profesionales
graduados y empezamos a dar la oportunidad a aficionados a la
programacin, con sorpresa encontr que esta mano de obra estaba
mejor calificada (muchos de ellos son verdaderos Hackers) y con ellos
pude lanzar algunos productos que tuvieron xito en el mercado.

De estas entrevistas me surgieron las siguientes interrogantes: Es acaso


la calidad de los instructores en esta materia la que se ve reflejada en los
que fueron sus alumnos? o simplemente el nivel tecnolgico en el que
nos vemos envueltos es el de simples consumidores, que nos
conformamos con lo que nos dicen que hagamos, sin reflexionar y tratar
de verificar si lo que nos dicen es correcto o es errado?

Bueno, dejo al lector el responder estas preguntas y se forme su propio criterio al


respecto. Ahora para retomar el relato de mi vida y poder ensearles algunos de
los fundamentos de la programacin, revisemos algunos conceptos bsicos

- 230 -
CAPTULO VI. FUNDAMENTOS DE LA PROGRAMACIN

Para entender completamente todos y cada uno de los algoritmos que vamos a
estudiar y desarrollar, as como los que pedimos resolver como ejercicios
propuestos es necesario tener claros los conceptos que ya los discutimos y
tratamos en captulos anteriores.
Para realizar este estudio de manera formal empecemos definiendo el concepto
de algoritmo.

6.1 ALGORITMO

La palabra ALGORITMO, se deriva de ALGORISMO que significa originalmente:


Proceso de hacer aritmtica usando guarismos arbigos, cuyo nombre hace
relacin al de un famoso matemtico persa llamado Abu Jafar ibn Ms
al-Khowrizm (vivi aproximadamente por el ao 825) que quiere decir
traducido literalmente Padre de Jafar, Mohammed, hijo de Moiss, natural de
Khowrizm quien escribi algunas obras de carcter matemtico, entre ellas el
libro Kitab al jabrwal-muqabala (Reglas de restauracin y reduccin).

Al transcurrir el tiempo el significado original fue corrompindose y a veces se


confunda con el concepto de aritmtica, es Gottfried Wilhelm Leibnitz (1.646
1.716) quien utiliza la frase latina ALGORITHMUS INFINITESIMALIS, que
significa maneras de calcular con cantidades infinitamente pequeas, de la cual
podemos desprender la palabra algoritmo, en esa poca se la relacionaba
comnmente con el ALGORITMO DE EUCLIDES (proceso para hallar el mximo
comn divisor de dos nmeros que aparece en los Elementos de Euclides).

El significado moderno de algoritmo es similar al de receta, proceso, mtodo,


tcnica, procedimiento, etc., pero para los informticos es: Procedimiento, que
mediante la utilizacin de un conjunto finito de reglas dadas a una secuencia
de operaciones, permiten la solucin de un problema, cuya definicin es

- 231 -
Tras los pasos de un... Hacker

codificable en cualquier lenguaje de programacin, dando como resultado un


programa.

6.2CARACTERSTICAS

Los algoritmos tienen las siguientes caractersticas:

1. Finitud.
2. Definibilidad.
3. Entrada.
4. Salida.
5. Efectividad.

6.2.1 FINITUD
Un algoritmo tiene un nmero finito de pasos. Un procedimiento que tiene todas
las caractersticas de un algoritmo salvo que posiblemente falle en la finitud
puede ser llamado MTODO DE CLCULO, por ejemplo: El mtodo para obtener
la raz cuadrada de un nmero, el mtodo para calcular el nmero PI, entre otros.

6.2.2 DEFINIBILIDAD
Todo paso que se sigue en un algoritmo debe ser definido de modo preciso, no
debe darse posibilidad a la ambigedad. Por esta caracterstica los lenguajes de
programacin son definidos de manera formal para la codificacin de algoritmos
(programas).

6.2.3 ENTRADA
Un algoritmo debe tener cero o ms entradas. La entrada son los datos con los
que se inicia un algoritmo para que se procesen conforme est definido en el
algoritmo.
Estas entradas deben de estar perfectamente identificadas y definidas.

- 232 -
Fundamentos de la programacin... Captulo VI.

6.2.4 SALIDA
Un algoritmo tendr una o ms salidas. La salida son los resultados del proceso
de la informacin en la ejecucin del algoritmo.

Las salidas tienen una relacin muy estrecha con las entradas, casi siempre son
de la misma especie o tipo de datos.
Por ejemplo: Para obtener la raz cuadrada, se tiene una entrada numrica real
positiva y las salidas son dos nmeros reales, uno positivo y otro negativo.

6.2.5 EFECTIVIDAD
Todo algoritmo tiene que ser efectivo, que llegue al objetivo deseado, esto quiere
decir que los algoritmos tienen que estar compuestos de rdenes simples capaces
de ser ejecutadas con facilidad y tratar de controlar en los procedimientos que las
operaciones que pueden acarrear error, este no se produzca.
Por ejemplo: Evitar que se intente calcular una divisin para cero.

6.3 TEOREMA DEL PROGRAMA ESTRUCTURADO


Con las ideas publicadas en 1.946 por John von Neumann y del denominado
Teorema de la forma normal de Kleene, dos cientficos informticos llamados
Corrado Bhm (1.923-) y Giuseppe Jacopini quienes en 1.966 publicaron su
trabajo conocido como Teorema del programa estructurado, el mismo que
manifiesta: Todo procedimiento computable (algoritmo) puede ser
implementado en un lenguaje de programacin que combine el uso de tres
estructuras bsicas de control.

Las estructuras a las que se refiere el conocido Teorema de Bhm Jacopini son:
1) Estructuras secuenciales. (Ejecutar primero una instruccin y luego
otra).

- 233 -
Tras los pasos de un... Hacker

2) Estructuras de decisin. (Ejecutar una instruccin, funcin o subrutina


dependiente de una condicin).
3) Estructuras iterativas. (Ejecutar una instruccin, funcin o subrutina de
forma repetitiva hasta que se satisfaga una condicin determinada).

Haciendo un poco de historia, recordemos que en 1.964 se inventa el BASIC, este


a su vez basado en el ALGOL y el FORTRAN. El estilo de programacin hasta ese
entonces conocido era un montn de instrucciones organizadas para
efectivamente solucionar un problema especfico, pero nicamente el
programador que concibi el algoritmo poda entender lo que estaba haciendo
(muy parecido a lo que sucede cuando analizamos la implementacin de alguna
funcin, subrutina o programa en lenguaje mquina); ya que, con el uso de una
instruccin particular llamada GOTO, se poda en cualquier momento de la
ejecucin del algoritmo romper la lgica del programa con la consiguiente
dificultad de entender el por qu y para qu? de esta ruptura abrupta de la
secuencia de instrucciones definidas (haciendo muy difcil mantener el cdigo
fuente de estas implementaciones, si se haba tomado la precaucin de
documentar cada paso lgico del programa este problema se minimizaba).

Niklaus Wirth al presentar en 1.970 su propuesta de lenguaje de programacin,


al que lo denomin PASCAL, confirma que es posible implementar cualquier
programa en la forma como lo haban demostrado Bhm y Jacopini en 1.966. A
partir de este trabajo se crea el estilo de programacin que lo conocemos como
PROGRAMACIN ESTRUCTURADA, que entre otras ventajas podemos resaltar
las siguientes:

1) Los programas son ms fciles de entender, ya que pueden ser ledos de


forma secuencial, sin necesidad de hacer el seguimiento a los saltos de
lnea (GOTO) dentro de los bloques de cdigo para entender la lgica.
2) La estructura del programa es clara, puesto que las instrucciones estn
ms ligadas o relacionadas entre s.

3) Reduccin del esfuerzo en las pruebas. El seguimiento de los fallos o


errores del programa (trace and debugging) se facilita debido a la
estructura ms visible, por lo que los errores se pueden detectar y
corregir ms fcilmente.

- 234 -
Fundamentos de la programacin... Captulo VI.

4) Reduccin de los costos de mantenimiento de los programas.

5) Programas ms sencillos y ms rpidos (ya que es ms fcil su


optimizacin).
6) Los bloques de cdigo son auto explicativos, lo que facilita la
documentacin.
7) Un programa escrito de acuerdo a estos principios no solamente tendr
una mejor estructura sino tambin una excelente presentacin.

Por el contrario podemos decir que el estilo de programacin estructurada


tiene la siguiente desventaja:
El programa resultante, dependiendo del problema que intentamos
resolver, puede hacerse demasiado grande y de esta forma resultar
problemtico su manejo (desde el punto de vista humano, para su
mantenimiento). Este ligero inconveniente lo resolvemos, dividiendo al
programa en mdulos funcionales (a esta divisin se la conoce como
programacin modular), interdependientes entre si y compilados por
separado. (Cuando realizamos el mantenimiento o actualizacin de
alguna versin del programa en diferentes plataformas o sistemas
operativos, es recomendable para su correcto funcionamiento que cada
vez se recompilen los mdulos por separado).

El uso cotidiano de estas tcnicas de programacin, hacen que utilicemos tanto


las tcnicas de programacin estructurada como las de programacin modular de
forma conjunta; por lo tanto, cuando hablemos de la programacin
estructurada, implcitamente se est considerando tambin las tcnicas de
modularizacin de un programa.
Existen otros estilos de programacin derivados de la programacin
estructurada y son conocidos como programacin por capas y la
programacin orientada a objetos.
El objetivo de este texto es el de ensear a programar (pensar como
programador) e implementaremos nuestros programas haciendo uso de las
tcnicas de la programacin estructurada. Estas implementaciones las haremos
utilizando el BASIC estructurado, usaremos algunas de las instrucciones que

- 235 -
Tras los pasos de un... Hacker

estn definidas en los estndares ANSI para el BASIC, para esto elegimos la
versin Bronze del Lenguaje de Programacin True BASIC.
(www.truebasic.com)

Muchos se harn la pregunta: Por qu no PASCAL o C?

Bueno, tengo dos principales razones para decirles que es mejor empezar con el
True BASICel hermoso arte de programar computadoras, a saber:
1) Una computadora puede trabajar con varios tipos de datos, tanto PASCAL
como C, para que las rutinas implementadas funcionen correctamente,
llevan implcito que el programador sabe el correcto uso y definicin del
tipo de datos, por el contrario con True BASIC, solamente estn
definidos dos tipos de datos para el uso de las variables, los numricos y
los de cadena o strings, facilitando que el alumno compruebe que la
lgica usada en la implementacin de la rutina, funcin o programa,
trabaja correctamente y no dedicar mucho esfuerzo a preocuparse en las
definiciones del tipo de variable. Muchas veces esta preocupacin de los
tipos de variable, hacen que los alumnos repudien la programacin,
porque, cuando han querido hacer que se ejecute correctamente un
programa, el compilador se convierte en un tirano del alumno, al verificar
que est bien la sintaxis y la coherencia de las definiciones de las
variables (este control es vlido cuando queremos optimizar velocidad o
uso eficiente de memoria) pero en la etapa de aprendizaje, lo que nos
interesa es que la lgica funcione y eso es lo que conseguimos con el
BASIC para que el alumno verifique que el programa funciona por la
lgica implementada.

2) El cdigo desarrollado y los ejemplos implementados corrern sin


problemas en diferentes sistemas operativos (el mundo Mac, Windows y
Linux), ya que actualmente existen versiones del lenguaje True BASIC
para estas plataformas, lo cual permite que sin cambios en los cdigos
fuente presentados en este libro, se puedan verificar que los programas
funcionan (claro est, que para esto cada lector, debe conocer el manejo
bsico del sistema operativo que usa cotidianamente, as como cierta
destreza en el manejo de la computadora).

Posteriormente, el lector cuando ya tenga pensamiento de programador, podr


desarrollar sus programas en C si quiere. Existe una versin de BASIC llamada

- 236 -
Fundamentos de la programacin... Captulo VI.

POWER BASIC, que prcticamente est a la par de la eficiencia de C pero con las
ventajas de la facilidad de la sintaxis del BASIC.
Para las primeras implementaciones de los algoritmos, nos ayudaremos con la
definicin grfica de los mismos, usando los conocidos diagramas de flujo, esto
har que alguien que no desee implementar estos ejemplos en BASIC, lo haga en
PASCAL o C.

6.4 INSTRUCCIONES QUE DEFINEN LAS ESTRUCTURAS DE CONTROL EN


BASIC

Las primeras instrucciones del BASIC que aprenderemos, son las que definen los
tres grupos de estructuras de control ms simples. A estas sentencias o
instrucciones (tambin se las conoce como palabras reservadas), asociaremos el
correspondiente smbolo grfico para poder esquematizar el algoritmo.

Asignaremos una traduccin al espaol de estas instrucciones. Muchos autores a


esta traduccin no oficial de las sentencias o instrucciones de los lenguajes de
programacin las denominan pseudocdigos, los mismos que son palabras
arbitrarias que cada programador puede hacer para esbozar un procedimiento
especfico e identificar las constantes y variables que usar en el mismo.
Nosotros referiremos estas traducciones con el nico fin de que el lector pueda
entender en su idioma natal lo que est haciendo el programa, elaboraremos
directamente con las instrucciones del BASIC los algoritmos. De esta forma,
desde el primer algoritmo que implementemos podremos ver lo que sucede al
ejecutar estos programas. (Nada mejor que hacer para entender!)

Para la definicin de los pasos lgicos en nuestros algoritmos, seguiremos la


siguiente convencin:
1) Utilizaremos letras en mayscula y en negrita para diferenciar a las
instrucciones de las otras palabras o comentarios que podemos incluir en
un programa.

2) Cada paso de un algoritmo comenzar con una instruccin.

- 237 -
Tras los pasos de un... Hacker

3) Los nombres de variables y constantes, comenzarn con una letra y


podrn tener cualquier otra letra o nmero, as como el carcter de raya
baja (espacio subrayado).

4) Para diferenciar las variables alfanumricas (strings, hilera o cadena)


de las numricas, utilizaremos despus del nombre de la variable el
smbolo $ o tambin conocido en programacin BASIC como string;
as, la variable A nos dir que es numrica, A$(Astring) nos dir que es
alfanumrica.
Con estas premisas, se han definido las siguientes instrucciones en BASIC para las
estructuras bsicas de control:

6.4.1 ESTRUCTURAS DE CONTROL SECUENCIAL

REM (COMENTAR) <Mensaje explicativo>

Nos permite especificar un comentario aclaratorio del paso o proceso


inmediatamente siguiente que queremos instrumentar. El uso de comentarios
(documentacin del cdigo fuente), hacen entendible al cdigo y de fcil
mantenimiento.
En True BASIC, por facilidad podemos reemplazar la instruccin REM por un
smbolo de admiracin !, otras versiones de BASIC la sustituyen por un
apstrofe .
Ejemplo: REM En este programa vamos a realizar el clculo del nmero PI.
! En este programa vamos a realizar el clculo del nmero PI.

Su representacin en los diagramas de flujo est definida por el siguiente


smbolo:
Aqu escribiremos el
comentario.

Podemos especificar alguna


frmula o ayuda para
entender lo que se quiere
hacer.

- 238 -
Fundamentos de la programacin... Captulo VI.

LET (ASIGNAR) <Variable = Expresin informtica>

Nos permite reservar un espacio de memoria RAM de la computadora para


guardar algn valor y poder identificarlo con algn nombre de variable. A la vez
que nos permite hacer una operacin de asignacin del resultado de evaluar la
expresin informtica definida (frmula o clculo a realizar).

Ejemplo: LET Numero_PI = 3.141592654


LET X1 = (-B+SQR(B^2 - 4*A*C)) / (2*A)
LET I = I +1

Como podemos observar en la primera instruccin de asignacin estamos


definiendo a la variable Numero_PI el valor de 3,141592654; en el segundo
caso, asignamos a la variable X1 la evaluacin de la frmula de la solucin
de una ecuacin de segundo grado con una incgnita (en este caso
estamos hablando de la primera solucin). Para el tercer ejemplo, cuando
realizamos una operacin de asignacin, le estamos diciendo a la
computadora que el valor resultante de la evaluacin de una expresin
informtica sea transferido a la variable. Para nada estamos diciendo que
se trata de una igualdad conforme estamos acostumbrados a ver en el
lgebra cuando resolvemos ecuaciones. As que es comn usar los
llamados contadores cuando realizamos operaciones repetitivas
(iteraciones) que justamente tienen la forma i i+1, en BASIC y en casi
todos los lenguajes de programacin se codifican de la forma i = i + 1.

Su representacin en los diagramas de flujo est definida por el siguiente


smbolo:

Aqu escribiremos
la asignacin.

INPUT (INGRESAR) <Lista de variables separadas por comas>

Con esta instruccin le decimos a la computadora, que si todava no ha reservado


memoria para una variable, la reserve y asigne el valor que el usuario ingresar a
travs del teclado.
Ejemplo: INPUT X

- 239 -
Tras los pasos de un... Hacker

INPUT X, Y

En el primer caso, esta instruccin har que aparezca en la


pantalla un smbolo de interrogacin y la computadora estar
esperando a que el usuario ingrese un valor.

Digitado el valor, lo asignar a la variable.


En el segundo ejemplo, obligar a que el usuario separando por
comas ingrese los valores a las variables definidas.

Su representacin en los diagramas de flujo est definida por el siguiente


smbolo:

Lista de variables
a ingresar.

PRINT (PRESENTAR) <Mensaje, variables o expresiones>

Nos permite visualizar el valor de una variable, constante o mensaje que


deseemos ver en pantalla.
Ejemplo: PRINT Numero_PI, X1

Con esta instruccin se visualizar el valor de las variables


Numero_PI y de X1.

PRINT HOLA

Este ejemplo mostrar en la pantalla la palabra HOLA. Hay que


tener en cuenta que los mensajes irn entre comillas.

PRINT El valor de pi es: ;PI

Con este ejemplo, ilustramos la combinacin de presentar un


mensaje con el valor de una funcin (True BASIC tiene muchas
funciones predefinidas, sera conveniente que revisemos la Gua
de Uso de la Versin Bronce).

- 240 -
Fundamentos de la programacin... Captulo VI.

En la pantalla veremos lo siguiente: El valor de pies:3.1415927.

Existe una convencin para el uso de los separadores de resultado usados por
BASIC, estos son el punto y coma ; y la coma ,.

La diferencia radica en que cuando usamos el punto y coma, le decimos a BASIC


que presente el contenido de las variables o mensajes a continuacin del ltimo
presentado.

Cuando usamos la coma, introducir un espacio de varios caracteres entre


mensaje o resultado.
Su representacin en los diagramas de flujo est definida por el siguiente
smbolo:

Mensaje o
expresin a
presentar.

DATA (DATO) <Valores a leer>

Con esta instruccin podemos almacenarinternamente en el programa valores


que servirn para hacer ciertos clculos. Tambin nos puede servir para tener
una serie de valores de prueba y ver si nuestro algoritmo est obteniendo los
resultados deseados.

Los valores a leer, pueden ser desde uno hasta los que necesitemos, recordemos
que los mismos deben estar separados por comas. Los valores numricos se
digitan como tales y los alfanumricos entre comillas.
Esta instruccin es complementaria de la instruccin READ (LEER), conforme
conste en esta las variables a leer. Esta lectura y asignacin de valores se las hace
de forma secuencial.
Ejemplo: DATA 1, 2, 3, 4

En este ejemplo, se irn asignando de forma secuencial los valores


a una o varias variables, empezando por el primero.

- 241 -
Tras los pasos de un... Hacker

Su representacin en los diagramas de flujo est definida por el siguiente


smbolo:

Lista
de
datos

READ (LEER) <Variables a leer>

Sirve para hacer una asignacin de valores que ya estn definidos en una
instruccin DATA en el mismo algoritmo. Por ejemplo: Los valores de prueba que
pueden estar en una tabla, estos valores son fijos, pero siempre tienen que estar
asignados a una variable.
Ejemplo: READ A

Se va a asignar a la variable A, los valores que estn definidos en


DATA de forma secuencial. Cada vez que se lee esta variable,
tomar el siguiente valor de la lista definida en DATA.
READ A, B, C, D

Esta definicin har que se lean cuatro valores que deben estar
definidos en DATA, los asignar correspondientemente a las
variables A, B, C y D.

Su representacin en los diagramas de flujo est definida por el siguiente


smbolo:
Lista
de
varia-
bles.

RESTORE (RESTAURAR)

Sirve para decirle al algoritmo que empiece a leer otra vez los datos desde el
primer valor asignado en DATA.
Ejemplo: RESTORE

- 242 -
Fundamentos de la programacin... Captulo VI.

As se dice al programa que empiece en la siguiente instruccin


READ a asignar los valores desde el primero que est definido en

DATA.

Su representacin en los diagramas de flujo no est definida exclusivamente,


pero podemos representarla por el siguiente smbolo:

RESTORE

END (FIN)

Sirve para finalizar la ejecucin del algoritmo.

Ejemplo: END

Su representacin en los diagramas de flujo est dada por el siguiente smbolo:

FIN

Tambin y por convencin para la elaboracin de los diagramas de flujo, al inicio


de cualquier algoritmo utilizaremos el siguiente smbolo:

INICIO

6.4.2 ESTRUCTURAS DE CONTROL CONDICIONAL

IF <EXPRESION CONDICIONAL> THEN <INSTRUCCIN>


SI <EXPRESIN CONDICIONAL> ENTONCES <INSTRUCCIN>

Esta estructura de control condicional es la ms simple de las que disponemos


para evaluar una condicin.
Con esta estructura de control, se condiciona a que se ejecute una instruccin,
solamente cuando el resultado de la evaluacin de la expresin condicional sea
verdadero.

- 243 -
Tras los pasos de un... Hacker

Ejemplo: IF X1 = 3 THEN PRINT La solucin es 3.

Veremos cuando ejecutemos esta expresin en un programa, que


en este caso se ver en pantalla el mensaje (La solucin es 3.)
solamente cuando X1 sea 3.
Esta estructura de control condicional se representa en los diagramas de flujo
por el siguiente smbolo:

Expresin
Si
Condicional

No

IF <EXPRESION CONDICIONAL> THEN


<PROCEDIMIENTO>
END IF
SI <EXPRESIN CONDICIONAL> ENTONCES
<PROCEDIMIENTO>
FIN SI

Definida de esta forma esta estructura de control condicional, se prepara nuestro


algoritmo a ejecutar un procedimiento (o algoritmo auxiliar) solamente cuando
sea verdadero el resultado de evaluar la expresin condicional.

Ejemplo: IF A<>0 THEN

LET X1 = (-B + SQR(B^2 - 4*A*C)) / (2*A)

END IF

Con esta condicin se asegura que el valor de la divisin sea


posible.

Esta estructura de control condicional se representa en los diagramas de flujo


por el siguiente smbolo:

- 244 -
Fundamentos de la programacin... Captulo VI.

Expresin
Si PROCESO
Condicional

No

IF <EXPRESION CONDICIONAL> THEN


<PROCEDIMIENTO 1>
ELSE
<PROCEDIMIENTO 2>
END IF
SI <EXPRESIN CONDICIONAL> ENTONCES
<PROCEDIMIENTO 1>
CASO CONTRARIO
<PROCEDIMIENTO 2>
FIN SI

Esta estructura de control condicional har que nuestro algoritmo, dependiendo


de la respuesta de evaluar la expresin condicional, ejecute uno de dos
procedimientos posibles.
Ejemplo: IF A<>0 THEN
LET X1 = (-B + SQR(B^2 - 4*A*C)) / (2*A)
ELSE
PRINT La ecuacin no es de segundo grado
END IF

Dependiendo del valor de la variable A, se calcular X1 si A es


diferente de cero, de otra forma se presentar el mensaje. (La
ecuacin no es de segundo grado)

Esta estructura de control condicional se representa en los diagramas de flujo


por el siguiente smbolo:

Expresin
Si PROCESO 1
Condicional

No

PROCESO 2

- 245 -
Tras los pasos de un... Hacker

IF <EXPRESION CONDICIONAL 1> THEN


<PROCEDIMIENTO 1>
ELSE IF <EXPRESION CONDICIONAL 2> THEN
<PROCEDIMIENTO 2>
ELSE<PROCEDIMIENTO
END IF 3>

SI <EXPRESIN CONDICIONAL 1> ENTONCES


<PROCEDIMIENTO 1>
CASO CONTRARIO SI <EXPRESIN CONDICIONAL 2> ENTONCES
<PROCEDIMIENTO 2>
CASO CONTRARIO
FIN SI
<PROCEDIMIENTO 3>

Esta estructura de control condicional, permite que en nuestro algoritmo


podamos escoger un procedimiento de acuerdo a varias condiciones.
Ejemplo: IF (B^2 - 4*A*C)>=0 AND A<>0 THEN
LET X1 = (-B + SQR(B^2 - 4*A*C)) / (2*A)
LET X2 = (-B - SQR(B^2 - 4*A*C)) / (2*A)
ELSE IF A<>0 THEN
PRINT La ecuacin no es de segundo grado
ELSE PRINT La ecuacin no tiene soluciones reales

END IF

Con esta forma se asegura que en nuestro algoritmo se calcule de


mejor manera las soluciones de una ecuacin de segundo grado
con una sola incgnita.

Esta estructura de control condicional se representa en los diagramas de flujo


por el siguiente smbolo:

Expresin Si
No PROCESO 1
Condicional 1

Expresin
Si PROCESO 2
Condicional 2

No

PROCESO 3

- 246 -
Fundamentos de la programacin... Captulo VI.

6.4.3 ESTRUCTURAS DE CONTROL ITERATIVO


Una de las caractersticas importantes que tiene la computadora es su capacidad
para realizar clculos y muchas veces estos clculos hay que repetirlos n veces
hasta obtener el resultado deseado.

A esta repeticin condicionada de un procedimiento, los programadores la


conocemos con los nombres de iteracin, lazo o bucle.
Se han definido dos estructuras de control iterativo y responden al condicionante
que el programador conozca de antemano las veces a repetir el procedimiento o
si estas iteraciones dependen de alguna condicin.

En BASIC se ha definido la siguiente estructura de control cuando conocemos a


ciencia cierta las veces que se tiene que repetir un procedimiento:

FOR <CONTADOR = VALOR INICIAL> TO <VALOR FINAL> STEP <INCREMENTO>


<PROCEDIMIENTO>
NEXT <CONTADOR>
HACER PARA <CONTADOR = INICIO> A <FIN> INTERVALO <INCREMENTO>
<PROCEDIMIENTO>
FIN HACER

En esta estructura, implcitamente se incorpora una condicin, la variable que


controla la estructura (que en programacin se la conoce como contador del
procedimiento) ser incrementada en el valor definido por el programador cada
vez que llega al fin del bucle y si este valor es mayor que el lmite deseado sale del
bucle.
Se tiene que definir el valor de inicio de esta variable (<VALOR INICIAL>), el valor
que har que termite el bucle (<VALOR FINAL>) y opcionalmente un valor de
incremento del contador (<INCREMENTO>). Cuando no se estipula este incremento
BASIC por defecto incrementar el valor del contador en 1.
Ejemplo: FOR I = 1 TO 10 STEP 2
PRINT I
NEXT I
END

Al ejecutar esta estructura de control iterativo, tendremos que en


la pantalla se presentarn los siguientes valores:

- 247 -
Tras los pasos de un... Hacker

1
3
5
7
9

Esta estructura de control iterativo se representa en los diagramas de flujo por


los siguientes smbolos:

<CONTADOR> =
<VALOR INICIAL>
A <VALOR FINAL>

PROCESO

<CONTADOR>
+
<INCREMENTO>

Cuando no conocemos a ciencia cierta las veces que se tiene que repetir un
procedimiento, en BASIC se ha definido la siguiente estructura de control
iterativa:

DO WHILE <EXPRESIN CONDICIONAL>


<PROCEDIMIENTO>
LOOP
HACER MIENTRAS <EXPRESIN CONDICIONAL>
<PROCEDIMIENTO>
FIN HACER

Esta estructura evaluar la condicin antes de realizar el procedimiento


contenido. Ese procedimiento se repetir mientras la evaluacin de la expresin
condicional sea verdadera. En otras palabras, repetir el procedimiento mientras
la relacin condicional sea verdadera, si esto no se produce no se ejecutar ni una
vez el procedimiento.

Debemos tener en cuenta este detalle cuando utilicemos este tipo de estructura.

- 248 -
Fundamentos de la programacin... Captulo VI.

Ejemplo: LET I = 10
DO WHILE I>=0
PRINT Valor de I: ; I
LET I = I - 1
LOOP

Al ejecutar este algoritmo, tendremos en pantalla los siguientes


resultados:

10
9
8
7
6
5
4
3
2
1
0

Esta estructura de control iterativo se representa en los diagramas de flujo por


los siguientes smbolos:

CONDICION SI PROCESO

NO

DO UNTIL <EXPRESIN CONDICIONAL>


<PROCEDIMIENTO>
LOOP
HACER HASTA QUE <CONDICIN>
<PROCEDIMIENTO>
FIN HACER

Esta estructura evaluar la condicin antes de realizar el procedimiento


contenido. Ese procedimiento se repetir hasta que la evaluacin de la expresin

- 249 -
Tras los pasos de un... Hacker

condicional sea verdadera. En otras palabras, repetir el procedimiento mientras


la relacin condicional es falsa, si esta condicin es verdadera al ingresar a esta
estructura, de igual forma que en caso anterior, no se ejecutar ni una vez el
procedimiento contenido.
Ejemplo: LET I = 1
DO UNTIL I > 10
LET I = I + 2
PRINT I
LOOP

Como vemos se presentarn en pantalla los siguientes valores:

1
3
5
7
9

Esta estructura de control iterativo se representa en los diagramas de flujo por


los siguientes smbolos:

PROCESO NO CONDICION
SI

DO
<PROCEDIMIENTO>
LOOP WHILE <EXPRESIN CONDICIONAL>
HACER
<PROCEDIMIENTO>
FIN HACER MIENTRAS <CONDICIN>

Esta estructura a diferencia de las anteriores, ejecutar al menos una vez el


proceso y se seguir ejecutando mientras la evaluacin de la expresin
condicional sea verdadera.
Ejemplo: LET I = 1

- 250 -
Fundamentos de la programacin... Captulo VI.

DO
PRINT I
LET I = I + 2
LOOP WHILE I < = 10

Como vemos se presentarn en pantalla los siguientes valores:

1
3
5
7
9

Esta estructura de control iterativo se representa en los diagramas de flujo por


los siguientes smbolos:

PROCESO

SI

CONDICION

NO

DO
<PROCEDIMIENTO>
LOOP UNTIL <EXPRESIN CONDICIONAL>
HACER
<PROCEDIMIENTO>
FIN HACER HASTA QUE <EXPRESIN CONDICIONAL>

Esta estructura ejecutar al menos una vez el procedimiento y lo repetir hasta


que la condicin sea verdadera.

Ejemplo: LET I = 1
DO
PRINT I
LET I = I + 2
LOOP UNTIL I > 10

Como vemos se presentarn en pantalla los siguientes valores:

- 251 -
Tras los pasos de un... Hacker

1
3
5
7
9

Esta estructura de control iterativo se representa en los diagramas de flujo por


los siguientes smbolos:

PROCESO

NO

CONDICION

SI

Si nosotros observamos detenidamente las estructuras de este tipo, deducimos


que dependiendo de la forma de expresar la condicin de salida del bucle se
obtienen los mismos resultados.

Definidas as las instrucciones que nos permitirn elaborar nuestros algoritmos y


a la vez representarlos de manera grfica, podemos empezar a desarrollar
nuestros primeros programas.

NOTAS Y BIBLIOGRAFA
Sobre este tratado de Fundamentos de la Programacin, las notas han sido
elaboradas en base a publicaciones de revistas especializadas y la consulta de los
siguientes textos:

- Matemticas y Astronoma, Tomo No. 11, Enciclopedia Salvat de las


Ciencias, Salvat S.A. de Ediciones, Pamplona, Espaa, 1.968.
- CMO PROGRAMAR COMPUTADORAS, URMOS.A, DE EDICIONES, Bilbao
Espaa, 1.977.

- 252
Fundamentos de la programacin... Captulo VI.

- Curso Prctico de Programacin, Intermedio Editores S.A., Bogot


Colombia, 1.984.
- EL ARTE DE PROGRAMAR ORDENADORES ALGORITMOS
FUNDAMENTALES - Volumen I, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.985.
- QL PROGAMACIN EN SUPERBASIC, Roy Atherton, MicroTextos S.A. de
ediciones, Madrid Espaa, 1.985.
- Programacin Estructurada en Lenguaje Pascal, ENCICLOPEDIA
PRCTICA DE LA INFORMTICAAPLICADA, TOMO 3, Juan Ignacio Puyol,
EDICIONESSIGLOCULTURALS.A., Madrid Espaa, Octubre de 1.986.
- EL ARTE DE PROGRAMAR ORDENADORES CLASIFICACIN Y
BSQUEDA - Volumen III, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.987.
- Structured BASIC Programming, John G. Kemeny & Thomas E. Kurtz, John
Wiley & Sons, Publicado en Estados Unidos de Norte Amrica, 1.987.
- True BASIC by Problem Solving, Brian D. Hahn, VCH Verlagsgesellschaft
mbH, Weinheim Repblica Federal de Alemania, 1.988.
- Personal Mathematics and Computing, Frank Wattenberg, MIT Press,
Publicado en Estados Unidos de Norte Amrica, 1.990.
- The Fun of Computing, John G. Kemeny, True BASIC Inc. 1.990,
Publicado en los Estados Unidos de Norte Amrica, 1.990.
- Programacin en C, Byron S. Gottfried, McGraw Hill / Interamericana de
Espaa S.A., Madrid Espaa, 1.991.
- Microsoft MASM, Assembly Language Development System Version 6.1.,
Microsoft Corporation 1.987, 1.991, 1.992 U.S. Patent No. 004955066,
Estados Unidos de Norte Amrica, 1.992.
- DiscoveryPak, True BASIC Inc., True BASIC Press, Publicado en Estados
Unidos de Norte Amrica, 1.993.
- Ingeniera del Software Un enfoque prctico, Roger S. Pressman,
McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa, 1.993.
- The YOU Based LABORATORY, TI-CBL EXPLORATIONS in Science and
Mathematics, Margo L. Mankus Frank Wattenberg, Weber State
University 1.996, Publicado por True BASIC Inc., 1.996.
- Lets Program It in True BASIC, Avery Catlin, True BASIC Press,
Publicado en Estados Unidos de Norte Amrica, 1.996.
- Programming for ENGINEERS in True BASIC, Avery Catlin, True BASIC
Press, Publicado en Estados Unidos de Norte Amrica, 1.996.

- 253 -
Tras los pasos de un... Hacker

- True BASIC Bronze Edition, Users Guide, John G. Kemeny Thomas E.


Kurtz, True BASIC Inc. 2.001, Publicado en los Estados Unidos de Norte
Amrica, 2.001.
- Matemtica e Informtica, Tomo No. 11, Enciclopedia Larousse del
Estudiante, Sociedad Comercial y Editorial Santiago Ltda., Santiago de
Chile, Chile, 2.000 2.002.
- Manual Moderno de Informtica, Labor Loerincs, Zamora Editores Ltda.,
Publicado por Quebecor World Bogot S.A., Impreso en Bogot
Colombia, 2.004.
- Criptografa y Seguridad en Computadores Cuarta Edicin Versin
4-0.8.1, Manuel Jos Lucena Lpez, Universidad de Jan, Publicacin
Electrnica, Marzo de 2.010.
- La wikipedia, http://www.wikipedia.org. La enciclopedia libre de la
Internet.
- PC World Ecuador,
Magazine, http://www.pcmag.com
http://www.pcworld.com.ec/pcw_catt/index.php

- Notas de clase, Nstor Marroqun, 1.9891.994.


- Trabajos de varios autores publicados en la worldwide web.

- 254 -
INTRODUCCIN (VII)

Con todos los conocimientos adquiridos y puestos en prctica, haba


desarrollado un programa publicitario para la empresa que distribua las
computadoras Spectravideo, se me ocurri presentarlo al vendedor que
gentilmente nos haba atendido aos atrs (realmente haba sido uno de los
dueos de la empresa), quien al ver la calidad del programa que haca publicidad
a su negocio, de forma similar al programa del astronauta que publicitaba a la
fbrica de la computadora, me propone hacer un trueque, que consista en
entregarle el programa publicitario a cambio de todos los juegos que tena
disponibles (menos los que ya tena) para mi computadora (realmente
programas para el MSX BASIC), adems de un cartucho para la extensin de la
memoria RAM que permitira a mi computadora llegar a los 144 KB de RAM,
escuchada la oferta, sin pensarlo dos veces acept el trato.

Realmente no saba si el valor del cartucho de extensin y los juegos, compensaba


todo el sacrificio y tiempo invertido en hacer el programa o estaba sobrevalorado
mitrabajo, pero en fin, fue el primer negocio que hice al producir un programa y
con una ventaja adicional, que al tener a la mano el cdigo fuente de los juegos
comerciales disponibles, aprend algunas tcnicas para la animacin que
aprovechaban ciertas caractersticas propias del chip de vdeo de la
computadora, adems que aprend el uso de unas rutinas que estaban escritas en
algn lenguaje de programacin de la mquina (luego descubrira que se trataba
de la codificacin de algunas funciones en lenguaje ensamblador para el
microprocesador Zilog Z80) que trabajaban como una extensin del MSX
BASIC.

Motivado por este negocio y viendo que este arte de la programacin (realmente
se haba convertido en un hobby para m) renda sus primeros frutos, pensaba
Si alguien puede pagarme por divertirme, para qu estudiar una profesin
diferente de alguna que tenga que ver con computadoras?
Prximo a terminar y terminada mi etapa colegial (como les comentaba tena ese
espritu innato de investigador, lo que conllevaba a que sea el mejor estudiante
de mi clase), fui graduado con honores (como el mejor estudiante de curso fui
designado el mejor egresado de ese ao acadmico); as, empec a buscar alguna

- 255 -
Tras los pasos de un... Hacker

universidad para seguir una carrera relacionada con computadoras. De esta


bsqueda, decido ingresar a la Escuela Superior Politcnica del Ejrcito (ESPE)
para estudiar Ingeniera Electrnica, mas al rendir los exmenes de ingreso, no
alcanc el puntaje requerido para ser aceptado como alumno, en esta situacin,
mi matrcula qued condicionada para que fuera aceptado en calidad de oyente a
las clases del prepolitcnico.

Tuve en este caso la primera derrota en mis aspiraciones (el nivel de


conocimientos requeridos para el ingreso a la universidad era superior a los que
se impartan en el colegio, as que el haber fallado en los exmenes de ingreso, no
se deba a que yo era incompetente, sino a que no saba el tema evaluado), pero
de ninguna manera me iba a dejar doblegar por esta adversidad o por esta
aparente desventaja que tena frente a mis compaeros del prepolitcnico, que s
haban sido aceptados como alumnos o que este hecho hiciera que me sienta
inferior. Rpidamente, al asimilar los conocimientos impartidos por mis
profesores, llenaron en m el vaco que tena y a la vez, solidificaron algunos
conceptos matemticos que no poda entender en varios algoritmos detallados en
la obra de Knuth. Pas esta etapa del prepolitcnico y por rendir otra vez los
exmenes de ingreso, mi sorpresa fue que habra sido exonerado en 5 materias
de las 6 que eran parte de los exmenes y que la nota que haba sacado en la
materia faltante, era suficiente para ingresar directamente al primer nivel del
Instituto de Ciencias Bsicas de la Escuela Superior Politcnica del Ejrcito sin
pasar por el prepolitcnico.

Durante este primer nivel, sumado al tiempo que ya haba cursado en calidad de
oyente, pude hacer amistad con varios oficiales de las Fuerzas Armadas del
Ecuador que eran tambin alumnos de la ESPE y compaeros mos. De esta
relacin, as como de la motivacin que tuve de parte de este grupo de
compaeros y principalmente, de una conferencia de nuestro profesor de Clculo,
que en una de sus ltimas clases nos hablaba sobre nuestra opcin de cursar
cualquier ingeniera que ofertaba en esa poca la ESPE. Nuestra decisin (nos
deca) marcara para toda nuestra vida la labor que desempearamos en bien de
la sociedad y del profundo arrepentimiento, que por influencias o por prejuicios,
sentiramos al equivocarnos en nuestra profesin. En otras palabras, deberamos
disfrutar de lo que hacemos y no hacerlo por obligacin o porque no hay otro
remedio ms que hacerlo. De mis compaeros oficiales, haba escuchado que
gracias a las Fuerzas Armadas, algunos de ellos haban podido hacer cursos de
especializacin en el exterior. Tenan acceso a lo que en el mundo de los civiles

- 256 -
La historia... Introduccin (VII).

costara bastante, ir becados a especializarse en algn tema de inters para las


Fuerzas Armadas y como valor agregado el conocimiento que adquiriran. El
ejemplo ms cercano lo tena reflejado en la carrera militar de mi to Tarquino.
Decid entonces, una vez terminado el primer nivel de la Escuela de Ciencias
Bsicas, postular como aspirante a oficial del Ejrcito Ecuatoriano; as, con
algunos compaeros decidimos ingresar a la Escuela Superior Militar Eloy
Alfaro, regida tambin por la ESPE. Rendidos los exmenes de ingreso, la
mayora fuimos aceptados con el grado de cadetes (promocin correspondiente
al ao de 1.990 o tambin conocidos como los nueve cero). Transcurri el
tiempo, pas la etapa formativa militar del primer ao y dispuesto a ser el mejor
oficial que el pas habra tenido, no pas mucho tiempo para que abruptamente
mis deseos fueran truncados.

Lamentablemente, las cosas no son como las pintan hasta que uno est
inmiscuido en los intereses de varios grupos, ya sean estos: sociales, econmicos
o simplemente familiares. La vida militar no est libre de esta realidad y hoy s,
que para ascender al grado de general por ejemplo, aparte de calificar con todos
los mritos militares y de tener una hoja de vida ejemplar, uno debe tambin ser
afn al grupo dominante de la sociedad o que est en el poder; caso contrario, el
Consejo de Generales que califican la hoja de vida de cada aspirante, simplemente
dictaminan que uno no ha cumplido con los requisitos subjetivos de la
calificacin, sin dar ms explicaciones.

Tena compaeros, hijos de altos oficiales del Ejrcito, por esta relacin familiar
eran tratados de manera diferente o por lo menos para ellos haba alguna
deferencia en el trato. Era de verse por ejemplo, toda la escuela militar renda
saludos y respetos a estos distinguidos oficiales (y con derecho, eran coroneles o
generales) cuando iban a visitar a sus hijos y sin quererlo o no, esta relacin haca
que los instructores no exijan de la misma forma a todos sus alumnos (yo creo
que esta situacin es propia de la naturaleza humana o de la naturaleza de la
vida, aunque digamos que todos somos iguales!). No pas mucho tiempo para
que los deseos de algn alto oficial (todos los padres quisieran que sus hijos
fueran los mejores alumnos de su clase, legtimo inters si no se influenciara para
conseguirlo), hicieran que por alguna orden no escrita, se allane el camino para
que estos deseos sean cumplidos; tramado el plan de forma muy sutil, algunos
instructores se encargan de obstaculizar el paso a los que por mritos propios
ocuparan estos primeros lugares. As fue que no resist el desgaste fsico al que
ramos sometidos y tuve que pedir mi baja de la Fuerza por razones mdicas. El

- 257 -
Tras los pasos de un... Hacker

exceso de ejercicio fsico me haba provocado una osteocondrosis (desgaste del


cartlago protector de mis articulaciones de las rodillas) la misma que me
postrara por largo tiempo mientras dur el tratamiento de recuperacin.

Llegado a la casa y recibido por mi familia, el primer objetivo que tenan en


mente mis padres era el que recuperara lo ms pronto posible la movilidad.
Empezaron a buscar tratamientos, unos nos decan en el mismo Hospital Militar
que la nica solucin era intervenirme quirrgicamente, remover el cartlago y
dejar que este se regenere, advertan eso s, que nunca iba a tener la misma
movilidad pero que podra caminar sin excederme en las distancias.

Mito poltico Galo, que era un afamado mdico traumatlogo, le dijo a mi madre
que exista otro tratamiento, pero que era largo y paciencioso (adems de costoso
por los medicamentos que se necesitaba), pero que a la final tendra mejores
resultados que con la intervencin quirrgica que recomendaban los mdicos
militares, y fue as que a los ocho meses de haber salido de la Escuela Militar
poda ya desplazarme a voluntad, pero conservando ciertas precauciones hasta
terminar el tratamiento.
En mi convalecencia, volv a desempolvar mis libros y notas que tena. Hoy me
suena gracioso, pero el tiempo que pas obedeciendo rdenes y corriendo de un
lado para otro, pareca haba afectado mi capacidad de razonamiento ycranme!
me costaba bastante trabajo entender mis propias notas o volver a programar
como lo haca. Por el contrario, a la formacin militar le agradezco la
puntualidad, ese espritu de no dejarse vencer hasta conseguir el objetivo, la
lealtad que va ms all de la amistad entre otros valores positivos que tiene la
vida militar.

Finalizaba el ao de 1.991, mi padre con el afn de que retome mi vida


universitaria, decide como regalo de navidad comprarme otra computadora
(compra realizada a un importador local de electrodomsticos llamado Guillermo
Paz), ms moderna que mi antigua Spectravideo y con los ltimos adelantos en
tecnologa informtica que llegaba al pas.
Se trataba de una computadora AT compatible sin marca (conocida en nuestro
medio como clon) que tena las siguientes caractersticas:

- 258 -
La historia... Introduccin (VII).

Computadora Clon AT compatible. (1.991)


Computadora: Sin marca.
Fabricante: Alguna fbrica de China o Singapur.
Tipo: Computadora AT.
Origen: Decan las partes hecho en Taiwn.
Ao: 1.991.
Microprocesador: Intel 80286.
Coprocesador: Intel 80287 operando a 8 MHz
Velocidad: 6 MHz, con turbo operaba a 12 MHz
RAM: 1 MB. Expandible hasta 4 MB DRAM 80 ns. (Realmente el procesador
poda direccionar hasta 16 MB, pero la tarjeta madre solo soportaba
memoria de hasta 1 MB por slot, tena 4)
ROM: 64 KB.
VRAM: 16 KB.
Tarjeta Grfica: Monocromtica tipo Hrcules, con emulacin para grficos CGA.
Modo Texto: Por defecto 80 caracteres x25 lneas.
Bajo sistema operativo,40,80 x 25 lneas. (DOS4.0)
Modo Grfico: 720 x 348 pixeles.
Colores: 16 escalas de gris (mbar, verde o blanco si el monitor
monocromtico tena un CRT mbar, verde o blanco).
Chip de Sonido: Propio de la tarjeta madre.
Sonido: 1 Canal, 8 octavas.
Almacenamiento: Unidad de disquete de 3, Doble lado, Alta Densidad, 1.44 MB.
Unidad de disquete de 5, Doble lado, Alta Densidad, 1.2 MB.
Unidad de disco duro de 3, tipo Winchester, marca Seagate de 80
MB.
Puertos E/S: 5 ranuras para extensin de tarjetas AT compatibles y 2 para
extensin de tarjetas XT compatibles, 2 RS-232C de 9 y 25 pines, 1
puerto paralelo tipo Centronics.
Modem: QUICKTEL 9600 Send/Receive Fax/Modem. (Tarjeta interna).
Teclado: Espaol de 101 teclas tipo QWERTY.
Sistema Operativo: DOSVer 3.2, o superior.
Firmware: AMI BIOS.

Con esta computadora y teniendo los disquetes que me haban enviado desde la
empresa True BASIC Inc., pude por fin poner en prctica todas las tcnicas que
haba aprendido y por sobre todo practicar la famosa programacin
estructurada...

Les invito a probar todos y cada uno de los programas que a manera de ejercicios
resueltos (ejemplos de programacin) en clase los haremos.

Hay que poner en prctica los conceptos del teorema del programa
estructurado y comprobar por nosotros mismos, si es verdad que con las tres
estructuras bsicas de programacin, se puede desarrollar la implementacin de
cualquier algoritmo (programa)

- 259 -
Tras los pasos de un... Hacker

- 260 -
CAPTULO VII. ELABORACIN DE ALGORITMOS CON
BASIC

Ahora que por fin tenemos las bases necesarias para elaborar nuestros
algoritmos, podramos, fruto de la experiencia, tomar en cuenta los siguientes
consejos:
a) Tener siempre a mano un cuaderno, lpiz y borrador.

b) Tomar nota del problema a solucionar con detalle de los pormenores.

c) Si existe alguna frmula a aplicar. Detallar las constantes y variables que


intervienen.

d) Desarrollar un mtodo de solucin a mano, tal y como nos han enseado


o indicado es la solucin.
e) Ahora el procedimiento a mano, dividirlo en subprocesos ms simples,
hasta que podamos instrumentar estos subprocesos con las estructuras
bsicas de la programacin, si esto no es posible, recurriremos a nuestra
imaginacin para poder dar solucin al problema propuesto. (Por esto
digo que programar es un arte, los programas son una creacin de la
mente humana).

f) Realizar un esquema general de la solucin utilizando diagramas de flujo.

g) Instrumentar el cdigo del algoritmo, comentando lo que se va haciendo o


calculando.
h) Una vez que hayamos probado que la instrumentacin funciona,
procedemos, conjuntamente con nuestras notas a mano, a incluir en este
paquete un impreso del cdigo fuente del programa, subrutina o funcin
desarrollada.
i) Este paquete lo archivaremos en algn lugar seguro, para en lo posterior
si tenemos algn inconveniente, podamos fcilmente recuperar nuestro
trabajo.

- 261 -
Tras los pasos de un... Hacker

En el peor de los casos nos tocara volver a desarrollar los programas,


subrutinas o funciones (si nos piden que los instrumentemos en otro
lenguaje de programacin) o simplemente para que otro programador
pueda dar mantenimiento o mejorar el cdigo desarrollado.

Como podrn ver, sutilmente he definido un algoritmo para desarrollar


algoritmos y que en su momento cuando sigan leyendo el relato de mi vida (parte
introductoria de cada captulo) deducirn el por qu? les sugiero que hagan esto.
Si ponemos en prctica estos consejos desde que empezamos a desarrollar
nuestros primeros algoritmos, crearn en nosotros buenos hbitos en el arte de
programar computadoras.
Estos detalles harn que cuando presentemos nuestros trabajos, ya sea al
profesor de la materia o ms importante, cuando trabajemos desarrollando
sistemas para alguna empresa, nos distinguirn de los dems programadores por
tener siempre a mano:
1) El anlisis y solucin del problema,

2) La documentacin del programa; y,

3) El cdigo fuente visualmente organizado y estructurado.

Entonces, ahora que estamos listos, podremos empezar a resolver problemas y


estas soluciones las instrumentaremos en algoritmos que los probaremos en
nuestra computadora a medida que los desarrollamos.

- 262 -
Elaboracin de algoritmos con BASIC... Captulo VII.

EJERCICIOS RESUELTOS:

Algoritmo para presentar un mensaje. Implementar un algoritmo


Ejemplo 61.
que presente por pantalla el siguiente mensaje: Hola mundo, aqu estoy
listo para programar.

Como vemos, aunque parezca trivial, procederemos a tomar nota del ms simple
de los detalles que tenemos que implementar en nuestros programas o
algoritmos y en este caso vemos que:
a) En el problema a resolver no existe ninguna frmula a aplicar.
b) No existe ningn proceso especial que desarrollar. (Funcin, subrutina o
mdulo).
c) Se nos pide simplemente mostrar un mensaje en la pantalla que diga:
Hola mundo, aqu estoy listo para programar

As que, elaboremos el diagrama de flujo para este algoritmo. Para dibujarlo


seguiremos las siguientes convenciones:

1) Si se trata de un proceso principal, el diagrama de flujo tendr un inicio y


un fin.
2) Un diagrama de flujo, debe esquematizar de forma ordenada y lgica la
secuencia de operaciones a efectuarse.
3) Su organizacin debe seguir un orden descendente.
4) Subprocesos y bifurcaciones (estructuras de control condicional) que
genere una comparacin deben ser esquematizados a la derecha del
diagrama principal.
5) Cierres de bucles, irn a la izquierda del diagrama principal.
6) Las flechas que reflejan el flujo del algoritmo, deben indicar la direccin
que los datos tomarn de proceso en proceso, adems que no se pueden
cruzar entre s.
7) Cada smbolo del diagrama de flujo tendr una flecha de llegada y una
flecha de salida. (Excepto cuando se trate del inicio y fin del algoritmo).

Entonces, nuestro primer algoritmo esquematizado en un diagrama de flujo ser


algo parecido a este:

- 263 -
Tras los pasos de un... Hacker

Algoritmo para
presentar un mensaje.
Como vemos, el mensaje no
Inicio cabe totalmente en el
smbolo, as que, dejamos
comentado que en esta
parte del programa,
desplegaremos la frase:
Hola mundo, aqu estoy listo
para programar
MENSAJE

Fin

Una vez que verifiquemos la lgica del algoritmo y que realiza correctamente lo
que deseamos que haga, como paso final procedemos a codificar este algoritmo
en BASIC (o cualquier otro lenguaje de programacin). El resultado ser la
siguiente definicin algortmica implementada en un lenguaje de programacin:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 1. Ejemplo No. 61 del texto.
! Algoritmo que presenta un mensaje en la pantalla.
! Autor: Nstor Marroqun.
!
! Frmulas:
! Ninguna.

! Variables:
! Ninguna.

! Funciones:
! Ninguna.

! Libreras:
! Ninguna.

! Mdulos:
! Ninguno.
!

- 264
Elaboracin de algoritmos con BASIC... Captulo VII.

! Aqu empieza el proceso principal.

PRINT "Hola mundo, aqu estoy listo para programar..." ! Presentamos el mensaje.

END ! Fin del algoritmo.

Ahora, podemos digitar este cdigo en nuestra versin BRONZE del True
BASIC para ver lo que sucede.

Tendremos la siguiente pantalla, una vez digitado el programa:

O con las opciones del men <File>, procederemos a leer (Open) el archivo
llamado EJERCICIO 61.TRU (que viene copiado en la carpeta Libro Hacker del CD
adjunto).

Luego escogeremos la opcin para ejecutar el programa (Run) del men <Run>,
veremos que aparece la siguiente pantalla:

- 265 -
Tras los pasos de un... Hacker

Al dar un clic sobre esta pantalla, veremos que nuestro True BASIC nos informa
que el programa se ha ejecutado con xito (Run successfully).

En estos primeros ejercicios trataremos de ser ms didcticos, para que puedan


entender el desarrollo de estos algoritmos, implementarlos y ejecutarlos.

Posteriormente, solamente mostraremos el cdigo fuente desarrollado con la


explicacin de los procesos implementados.

Les sugiero que se familiaricen con las opciones del entorno del lenguaje, para
esto pueden recurrir a la gua de uso que viene acompaada de su CD de la
Versin Bronze de True BASIC.

Ejemplo 62. Algoritmo para sumar dos nmeros. Ingresados por teclado los
nmeros a y b, implementar un algoritmo que obtenga la suma de estos dos
nmeros y almacene esta respuesta en la variable c. Desplegar su
resultado.
En este ejemplo, ya tenemos que utilizar una frmula de clculo, tenemos adems
que almacenar el valor de la sumatoria en una variable y como es obvio,
desplegaremos el resultado. Para esto, tomamos nota del problema:
a) En esta tarea a resolver existe la siguiente frmula a aplicar:

C = A+ B

Siendo las variables A, B y C de tipo numrico.

- 266 -
Elaboracin de algoritmos con BASIC... Captulo VII.

b) No existe ningn proceso especial que desarrollar. (Funcin, subrutina o


mdulo).
c) Se nos pide finalmente mostrar un mensaje en la pantalla con los
resultados, bien podra ser uno que diga: La suma de A y B es: C

Definido el problema y esbozada la estrategia de solucin, elaboremos el


diagrama de flujo para este algoritmo, el mismo que puede ser:

Algoritmo que
suma dos nmeros.
Inicio
Presentaremos un mensaje
para que el usuario sepa que
tiene que ingresar los
valores de A y B.
Ingrese los
valores de Ay
B
Ingresaremos por teclado el
valor para las variables A, B.

Ingrese A, B

Calculamos la suma de A y
B y la asignamos a la
variable C.

CA+B

Presentamos los resultados,


de forma que informemos
que: La sumatoria de;A; y
;B; es: ;C.

La suma de A
y B es C

Fin

- 267 -
Tras los pasos de un... Hacker

Una vez que verificamos la lgica del algoritmo, adems que realice
correctamente lo que nos han pedido que haga, procedemos a codificar este
algoritmo en BASIC.
El resultado ser la siguiente definicin algortmica implementada en un lenguaje
de programacin:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 2. Ejemplo No. 62 del texto.
! Algoritmo que suma dos nmeros y presenta los resultados
! en la pantalla.
!
! Autor: Nstor Marroqun.
!
! Frmulas:
! C = A + B
!
! Variables: A numrica, a ser ingresada por el usuario.

! B numrica, a ser ingresada por el usuario.


! C numrica, almacena el clculo de A + B.
!
! Funciones: Ninguna.

!
! Libreras:
! Ninguna.
!
! Mdulos: Ninguno.

!
! Aqu empieza el proceso principal.

PRINT "Ingrese por favor los valores de A,B:"; ! Presentamos un mensaje pidiendo
al usuario que ingrese los datos.
INPUT A,B ! Ingresa por teclado los valores de A y B.
PRINT
LET C "La sumatoria de";A;"y";B;"es:";C
= A+B ! Se presentan
! Se calcula los resultados.
la sumatoria.

END ! Fin del algoritmo.

Digitaremos este cdigo en nuestra versin BRONZE del True BASIC para ver
lo que sucede.

Tendremos la siguiente pantalla, una vez digitado el programa:

- 268 -
Elaboracin de algoritmos con BASIC... Captulo VII.

De igual forma que en el ejercicio anterior, procedemos a ejecutar nuestro


programa.
Veremos que aparece la siguiente pantalla:

Nuestro programa ahora, est esperando a que ingresemos los valores para las

- 269 -
Tras los pasos de un... Hacker

variables A y B. Si digitamos un solo valor; nos dir que se han ingresado muy
pocos datos, volver a pedirnos que ingresemos los valores; por el contrario, si
digitamos demasiados valores, nos informar que son demasiados y otra vez
volver a pedirnos que ingresemos los valores. As las cosas, esta vez tendremos
que digitarlos como nos pide el programa. (Lo definimos en la instruccin
INPUT, si desebamos ingresar uno a uno los valores, deberamos haber
codificado una instruccin INPUT para cada variable).

Luego de ingresar estos valores (por ejemplo 3 y 2), veremos la siguiente


pantalla:

Finalmente si damos un clic a esta pantalla, como en el caso anterior nuestro


entorno de desarrollo nos informar que el programa se ha ejecutado con xito.

Algoritmo para calcular la superficie y el volumen de una esfera.


Ejemplo 63.

Ingresado por teclado el valor del radio de una esfera, se pide realizar un
algoritmo que obtenga la superficie y el volumen de la misma. Mostrar los
resultados.
En este ejemplo, tenemos que utilizar dos frmulas de clculo, adems debemos
almacenar los valores resultantes y como se pide desplegaremos los resultados.

Ahora, tomamos nota del problema:


a) En este ejercicio, tendremos que usar las frmulas definidas para el
clculo de la superficie y el volumen de una esfera, teniendo como dato
variable el valor del radio de la misma, las frmulas a aplicar son:

- 270 -
Elaboracin de algoritmos con BASIC... Captulo VII.

S = 4 x x r2

V=4/3 xxr3

Siendo las variables r, SyV de tipo numrico.


b) No existe ningn proceso especial que desarrollar. (Funcin, subrutina o
mdulo).
c) Se nos pide finalmente mostrar un mensaje en la pantalla con los
resultados, bien podra ser uno que diga: La esfera de radio ;R, tiene
por superficie;S;y por volumen ;V

Definido el problema y esbozada la estrategia de solucin, elaboremos el


diagrama de flujo para este algoritmo, el mismo que puede ser:

Algoritmo para calcular la superficie y


el volumen de una esfera.
Inicio
Presentaremos un mensaje
para que el usuario sepa que
tiene que ingresar el valor
del radio (R).

Ingrese por
favor el valor
del radio (R)
Ingresaremos por teclado el
valor para el radio de la
esfera (R).

R Calculamos los valores de la


superficie (S) definida por la
S 4*PI*R^2 frmula S=4*PI*R^2
As como para el volumen
(V), que est calculado como
V= 4/3*PI*R^3
a suma de A y B y la
asignamos a la variable C.
V 4/3*pi*R^3
Presentamos los resultados,
con los mensajes
informativos que pueden ser:
La esfera de radio R
Tiene por superficie S
Tiene por volumen V

MENSAJES

Fin

- 271 -
Tras los pasos de un... Hacker

Observando que nuestro algoritmo est correctamente definido y esquematizado,


procederemos a codificarlo en BASIC.

Tendremos un programa parecido al siguiente:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 3. Ejemplo No. 63 del texto.
! Algoritmo que calcula la superficie y el volumen de una
! esfera, ingresando como dato el valor del radio de la
! misma. Presenta los resultados en la pantalla.
!
! Autor: Nstor Marroqun.
!
! Frmulas:
! S = 4*PI*R^2
! V = 4/3*PI*R^3
!
! Variables:
! R numrica, a ser ingresada por el usuario.
! S numrica, almacena el clculo de 4*PI*R^2.
! V numrica, almacena el clculo de 4/3*PI*R^3.
!
! Funciones: Utilizamos la funcin interna de True BASIC

! que devuelve el valor del nmero pi.


!
! Libreras:
! Ninguna.
!
! Mdulos: Ninguno.

!
! Aqu empieza el proceso principal.

PRINT "Ingrese por favor el valor del radio (R):"; ! Presentamos un mensaje pidiendo
al usuario que ingrese el dato.
INPUT R ! Ingresa por teclado el valor de R.
LET S = 4*PI*R^2 ! Se calcula el valor de la superficie de una esfera.
PRINT "La
LET V = esfera de radio";R;"u" ! !SeSecalcula
4/3*PI*R^3 presentan los resultados.
el valor del volumen de una esfera.

PRINT
END "Tiene por volumen";V;"u^3"
superficie";S;"u^2"
! Fin del algoritmo.

Como vemos en la definicin de este algoritmo, el valor del nmero pi no lo


ingresamos, ni tampoco lo expresamos como una variable, en este caso estamos
utilizando una de las funciones que vienen ya programadas en nuestro True

- 272 -
Elaboracin de algoritmos con BASIC... Captulo VII.

BASIC. Para conocer ms de las funciones que tiene predefinido el lenguaje,


sera conveniente que revisen su gua de uso en el captulo de funciones internas.

Como ayuda adicional, para que nuestro programa exprese de manera correcta
los resultados y tenga coherencia con las dimensiones que se usan en la
geometra, observamos que a ms de calcular los valores para la superficie y el
volumen de una esfera, dado el valor de su radio. Inventamos la expresin u^2
que significa unidades cuadradas y u^3 que significa unidades cbicas, con esto
decimos al usuario que si ingres la dimensin del radio en centmetros por
ejemplo, entonces los resultados sern expresados tambin en centmetros.

Ahora, digitaremos este cdigo en nuestro entorno de programacin True BASIC


Bronze Edition.

A continuacin veremos la siguiente pantalla:

Procedamos a ejecutar este algoritmo y observemos lo que pasa. Tendremos que

- 273 -
Tras los pasos de un... Hacker

ver algo as:

Ahora ingresemos el valor solicitado para el radio de nuestra esfera, en este caso
digitemos el valor de 3<Enter>.

Al ejecutar el algoritmo, nuestro programa calcular y mostrar los valores


correspondientes a la superficie y el volumen de la esfera.

Obtendremos as la siguiente pantalla:

Finalmente daremos un clic a esta pantalla, como en el caso anterior nuestro


entorno de desarrollo nos informar que el programa se ha ejecutado con xito.

- 274 -
Elaboracin de algoritmos con BASIC... Captulo VII.

Algoritmo para determinar el nmero mayor de tres ingresados.


Ejemplo 64.

Ingresados por teclado tres valores, se pide realizar un algoritmo que


determine cul de los tres ingresados es el mayor? Mostrar el resultado.
En este ejemplo, ya no nos piden realizar ningn clculo, ahora debemos hacer
que nuestra computadora determine mediante algn mtodo de discriminacin
racional, el mayor valor ingresado de los tres nmeros, que previamente han sido
ingresados por parte del usuario.
Para esto desarrollemos una estrategia:

a) Como vemos, necesitaremos 3 variables numricas para el ingreso de los


datos. Las definimos como A, B y C. Para guardar el valor del mayor de
los valores ingresados, definiremos otra variable numrica a la que
denominaremos TMP (temporal).
b) Debemos determinar una forma racional de discriminacin (proceso que
permita escoger el mayor valor de los tres ingresados). Para esto,
utilizaremos las estructuras de control condicional que nos permitirn
implementar las condiciones que determinarn al mayor valor, las
preguntas que haremos son:
1. Es A<B? si la respuesta es verdadera, entonces el mayor valor de los
dos es B, si es falsa, entonces el valor de A es el mayor. Procederemos
a asignar en la variable TMP el valor que corresponda.
2. Ahora, ya tenemos el valor mayor entre A y B, asignado a la variable
TMP. Como pregunta final haremos la siguiente: Es TMP<C?, si es
verdadera la respuesta entonces asignaremos el valor de C a la
variable TMP.
3. Presentamos el mensaje que nos informar: El mayor valor que
usted ha ingresado es: y desplegaremos el valor de TMP.

4. Terminamos el proceso.

Observemos que haremos las operaciones de asignacin dependiendo de


la respuesta de la condicin que son:

TMP A

- 275 -
Tras los pasos de un... Hacker

TMP B

TMP C
De esta forma aseguramos que uno de los tres valores ingresados sern
asignados a la variable TMP, con la estructura de control condicional IF
THEN ELSE , implementamos las preguntas para hacer el proceso de
discriminacin racional de los datos, as tendremos la primera pregunta
como:
IF A<B THEN LET TMP=B ELSE LET TMP=A

La segunda pregunta quedar como:


IF TMP<C THEN LET TMP=C

Planteadas de esta forma las preguntas, no nos interesa el orden en que


sean ingresados los valores, siempre obtendremos el mayor asignado a la
variable TMP.

c) No existe ningn proceso especial que desarrollar. (Funcin, subrutina o


mdulo).

d) Se nos pide finalmente mostrar un mensaje en la pantalla con el


resultado, utilizaremos el que ya definimos anteriormente: El mayor
valor que usted ha ingresado es: ;TMP

Definido el problema y esbozada la estrategia de solucin, elaboremos el


diagrama de flujo para este algoritmo, el mismo que puede ser:

- 276 -
Elaboracin de algoritmos con BASIC... Captulo VII.

Algoritmo para determinar el nmero mayor


de tres ingresados.

Inicio A
Presentaremos un mensaje
favor el primer
Ingrese por para que el usuario sepa que
tiene que ingresar el valor
del primer nmero (A).
nmero: A<B SI TMP B

Ingresaremos por teclado el


valor para el(A).
primer nmero TMP
NO A

Ingrese por Presentaremos un mensaje


para que el usuario sepa que
segundo tiene que ingresar
del segundo nmeroel valor
(B).
favor el

nmero:
Ingresaremos por teclado el TMP < C SI TMP C
valor para el segundo
nmero (B).
B NO

favor el tercer
por paradel tercer
que el ingresar
nmero
usuario (C).que
sepa Presentamos el resultado de
nmero:
Ingrese tiene que
Presentaremos un mensaje
el valor
MENSAJES la discriminacin racional de
los tres nmeros para
determinar el mayor, y los
presentaremos con el
mensaje El mayor valor que
Ingresaremos por teclado el usted ha ingresado es:;TMP
valor para el segundo Fin
nmero (C).
C

Observando que nuestro algoritmo est correctamente definido y esquematizado,


procederemos a codificarlo en BASIC.

Tendremos un programa parecido al siguiente:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 4. Ejemplo No. 64 del texto.
! Algoritmo para determinar el nmero mayor de tres ingresados.
! y desplegarlo en la pantalla.
!
! Autor: Nstor Marroqun.
!
! Frmulas:

- 277 -
Tras los pasos de un... Hacker

! Ninguna.
!
! Variables:
! A numrica, primer nmero a ser ingresado por el usuario.
! B numrica, segundo nmero a ser ingresado por el usuario.
! C numrica, tercer nmero a ser ingresado por el usuario.
! TMP numrica, variable temporal que almacenar el valor mayor.
!
! Funciones:
! Ninguna.
!
! Libreras:
! Ninguna.
!
! Mdulos:
! Ninguno.
!
! Aqu empieza el proceso principal.

PRINT "Ingrese por favor el primer nmero:"; ! Presentamos un mensaje pidiendo


al usuario que ingrese los datos.
INPUT A ! Ingresa por teclado el valor de A.
PRINT "Ingrese por favor el segundo nmero:"; ! Presentamos un mensaje pidiendo
al usuario que ingrese los datos.
INPUT B ! Ingresa por teclado el valor de B.
PRINT "Ingrese por favor el tercer nmero:"; ! Presentamos un mensaje pidiendo
al usuario que ingrese los datos.
INPUT C ! Ingresa por teclado el valor de C.
IF A<B THEN LET TMP=B ELSE LET TMP=A
IF TMP<C THEN LET TMP=C
PRINT "El mayor valor que usted ha ingresado es:";TMP ! Presenta el valor mayor.
END ! Fin del algoritmo.

La lnea IF A<B THEN LET TMP=B ELSE LET TMP=A, tambin la podramos haber
codificado con las siguientes, el resultado es exactamente el mismo:

IF A<B THEN
LET TMP=B
ELSE
LET TMP=A

END IF

Les invito a que modifiquen el cdigo de este algoritmo y comprueben por si


mismos que la estructura:
IF A<B THEN LET TMP=B ELSE LET TMP=A

Es equivalente a:

- 278 -
Elaboracin de algoritmos con BASIC... Captulo VII.

IF A<B THEN
LET TMP=B
ELSE
LET TMP=A

END IF

Ahora, digitaremos este cdigo en nuestro entorno de programacin True BASIC


Bronze Edition.

A continuacin veremos la siguiente pantalla:

Ahora ejecutemos este algoritmo (programa) y veamos qu sucede?

Empezaremos ingresando el valor de A, luego el de B y finalmente el de C.

- 279 -
Tras los pasos de un... Hacker

Veremos la siguiente pantalla:

Al hacer un clic a esta pantalla, como en el caso anterior nuestro entorno de


desarrollo nos informar que el programa se ha ejecutado con xito.

Ejemplo 65. Algoritmo para resolver una ecuacin de hasta segundo grado con
una incgnita.

Ingresados por teclado los valores de los coeficientes (a, b y c) de una


ecuacin de la forma:

ax2+bx+c= 0
(Debemos tener en cuenta que una ecuacin de primer grado con una
incgnita, es un caso particular de esta forma de expresin, es decir cuando
el coeficiente a vale cero tendremos una ecuacin de la forma bx+c= 0).

Se pide realizar el algoritmo codificado en BASIC para que la computadora


calcule las soluciones de estas ecuaciones. Mostrar la ecuacin ingresada y
los resultados de las races, tambin si estas son imaginarias.

Para dar solucin a este problema, recordemos los mtodos de solucin que nos
han enseado (si el coeficiente a es cero), para el caso que la ecuacin tenga la
forma:

- 280 -
Elaboracin de algoritmos con BASIC... Captulo VII.

bx + c = 0

La incgnita (en este casox), ser despejada con la siguiente frmula:


x= -c/b

Para el caso en que el coeficiente a no es cero, la ecuacin toma la forma general


de una ecuacin de segundo grado con una incgnita:

ax2+bx+c=0

Entonces la incgnita (x), ser despejada con la siguiente frmula:


x= [(-b (b2-4ac))/a ]

Al valor (b2-4ac) se lo conoce como el discriminante de la ecuacin cuadrtica,


para efectos de saber si la ecuacin tiene soluciones reales o imaginarias
asignaremos este valor a una variable que la denominaremos d, entonces la
frmula quedar:

Primero calcularemos d=(b2-4ac), entonces las soluciones sern:

x1= [(-b + d )/ a ]

x2 = [(-b - d)/ a ]

Sid = 0 entonces la solucin es:


x=- (b / a)

Sid < 0 entonces las soluciones son dos nmeros imaginarios:

x1 = - b/a + (-d) / ai

x2= - b/a- (-d) / a i

Si d>0 entonces las soluciones son dos nmeros reales:


x1= - b/a + d / a

x2= - b/a - d / a

- 281 -
Tras los pasos de un... Hacker

Terminado nuestro anlisis del problema y tener esbozada la solucin,


identificamos que necesitaremos las siguientes variables de tipo numrico:

A, B y C para los coeficientes de la ecuacin.

D para calcular el discriminante.

X para almacenar la solucin de la ecuacin de primer grado, o cuando la


ecuacin de segundo grado tiene una sola solucin.

X1 para almacenar la primera solucin real.

X2 para almacenar la segunda solucin real.

Adems utilizaremos una funcin interna del BASIC que la identificamos como
SQR(X), raz cuadrada, que equivale a la expresin X ^ 0,5.

Nota del autor:


Revisando la gua de usuario de nuestro lenguaje de programacin (True BASIC), nos daremos
cuenta que existen algunas opciones que podemos utilizar con la instruccin PRINT para dar
formato a nuestra respuesta en cuanto tiene que ver a nmeros, valores monetarios y algunos
formatos para mensajes de texto, la forma de usar estas opciones viene dada por:

PRINT USING <FORMATO>: <LISTA DE VARIABLES>

Donde el valor de <FORMATO> puede ser una variable alfanumrica que contenga el formato a
presentar; o, directamente digitamos el formato entre comillas.

Las opciones para el formato son:

Para expresiones numricas:

# Cualquier dgito, completar al formato los ceros con espacios en blanco.

% Cualquier dgito, completar al formato los ceros con ceros.

* Cualquier dgito, completar los ceros con asteriscos.

$ Cualquier dgito, presentar al nmero como valor monetario.

+ Cualquier dgito, presentar el signo + si el nmero es positivo.

- 282 -
Elaboracin de algoritmos con BASIC... Captulo VII.

- Cualquier dgito, presentar el signo si el nmero es negativo.

^ Cualquier dgito, presentar el smbolo ^ a continuacin el nmero.

Para expresiones de texto o alfanumricas:

# Cualquier texto, centrar el mensaje en los caracteres especificados con #.

< Cualquier texto, justificar a la izquierda el texto entre los caracteres especificados con #.

> Cualquier texto, justificar a la derecha el texto entre los caracteres especificados con #.

Digiten el siguiente ejemplo de uso de estas expresiones de formato y veremos lo hace nuestro True
BASIC con la forma de presentar los datos:

LET X=023.507
LET Y=-005.001
PRINT USING "###.## ":X,Y
PRINT USING "%%%.%% ":X,Y
PRINT USING "***.** ":X,Y
PRINT USING "$###.## ":X,Y
PRINT USING "+###.## ":X,Y
PRINT USING "-###.## ":X,Y
PRINT USING "^###.## ":X,Y

LET A$="ESTA ES UNA PRUEBA DE FORMATO"


PRINT USING ">########################################":A$
"########################################":A$
"<########################################":A$

END

Procedemos ahora a realizar el diagrama de flujo para nuestra solucin del


problema planteado. La solucin propuesta quedara as:

- 283 -
Tras los pasos de un.. Hacker

Algoritmo para resolver una ecuacin


de hasta segundo grado de la forma
ax + bX + c = 0

"Programa que calcula la


solucin de una ecuacin de
hasta segundo grado."
"De la forma general
ax^2+bx+c=0, para ingresar
una de primergrado a=0."
"Ingresepor favor el primer
coeficiente (a)"

Ingresamos porteclado el
valor de A

"Ingrese por favor el


segundo coeficiente (b)"

Ingresamos porteclado el
valor de B

"Ingrese por favor el


segundo coeficiente (b)"
MENSAJE

Ingresamos porteclado el
valor de B
C -

Calculamos el valor del


| discriminante de la ecuacin
D BA2-4*A*C cuadrtica. (D)

A= 0 S| | X-C/B

NO
"La solucin de la ecuacin:
("b")x"" + ("c") - 0 6.S X

S| X-(112)(BIA) MENSAJE ="X

-------

NO
"La solucin de la ecuacin:
("a")x2""+("b")+("c")
= 0 esx="X
s. MENSAJE
NO

X1 -(B+SQR(D)/(2"A)
X2-(B-SQR(D)/(2"A)

"La ecuacin: ("a")xA2""+


/ MENSAJE ("b")X + ("c") 0"
-

"Tiene estas soluciones


y
imaginarias."

"La ecuacin: ("a")x^2""+ x1=-(112) (BA)+(11


("b")X + ("c") 0" -
2) sor-D)/AT
Tiene estassoluciones x2="-(112)(BIA)"-"(11
2) soR(-D)/A"i"
reales."
x1= x
"x2="X2

- 284 -
Elaboracin de algoritmos con BASIC... Captulo VII.

Observando que nuestro algoritmo est correctamente definido y esquematizado,


procederemos a codificarlo en BASIC.

Tendremos un programa parecido al siguiente:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 5. Ejemplo No. 65 del texto.
!
! Algoritmo para resolver una ecuacin de hasta segundo
! grado de la forma ax^2+bx+c=0.
!
! Presenta los resultados reales e imaginarios.
!
! Autor: Nstor Marroqun.
!
! Si a=0 es de primer grado:
Frmulas: x = -c/b

!
! Si b^2-4*a*c = 0 la ecuacin solo tiene una solucin.
!
! Si b^2-4*a*c < 0 entonces la ecuacin tiene soluciones
! imaginarias.
!
! Si b^2-4*a*c >0 entonces la ecuacin tiene soluciones reales.
! x1 = (-b+sqr(b^2-4*a*c))/(2*a)
! x2 = (-b-sqr(b^2-4*a*c))/(2*a)
!
! Variables: Ingresadas por el usuario:

! A numrica, primer coeficiente de la ecuacin.


! B numrica, segundo coeficiente de la ecuacin.
! C numrica, elemento independiente de la ecuacin.
!
! Calculadas en el proceso:
! D numrica, discriminante de la solucin.
! X numrica, resultado si la ecuacin tiene una
! solucin o es de primer grado.
! X1 numrica, primera solucin de la ecuacin.
! X2 numrica, segunda solucin de la ecuacin.
!
! Funciones: Ninguna.

! Usaremos la funcin interna SQR() raz cuadrada.


!
! Libreras:
! Ninguna.
!
! Mdulos: Ninguno.

- 285 -
Tras los pasos de un... Hacker

!
! Aqu empieza el proceso principal.

! Presentamos un mensaje informando al usuario lo que hace el programa.


PRINT "Programa que calcula la solucin de una ecuacin de hasta segundo grado."

PRINT "De la forma general ax^2+bx+c=0, para ingresar una de primer grado a=0."

PRINT
! el
Presentamos
primer
"Ingrese
coeficiente
un
por
mensaje
favorde
pidiendo
ella
primer
ecuacin
al
coeficiente
usuario
(a). que ingrese
(a):";

INPUT A

PRINT
! el
Presentamos
segundo
"Ingrese
coeficiente
un
por
mensaje
favor el
pidiendo
de la ecuacin
segundo
alcoeficiente
usuario
(b). que(b):";
ingrese

INPUT B

PRINT
! Presentamos
el trmino
"Ingreseindependiente
un
por
mensaje
favor pidiendo
elde
trmino
la ecuacin
alindependiente
usuario
(c).
que ingrese
(c):";

INPUT C

! Calculamos el discriminante de la solucin.


LET D = B^2-4*A*C
PRINT

! Empezamos el proceso de validacin de la ecuacin para ver


! si es de primer o segundo grado.
IF A=0 THEN
! La ecuacin es de primer grado.
LET X = -C/B
PRINT
ELSE "LaTHEN
IF D=0 solucin de la ecuacin: (";b;")x";" + (";c;") = 0 es x =";X

! La ecuacin de segundo grado tiene una solucin.


LET X=-(1/2)*(B/A)
PRINT "La solucin de la ecuacin: (";a;")x^2";" + (";b;")x + (";c;") = 0 es x
=";X
ELSE IF D<0 THEN

! La ecuacin tiene soluciones imaginarias.


PRINT "La ecuacin: (";a;")x^2";" + (";b;")x + (";c;") = 0"
PRINT
PRINT "Tiene estas soluciones imaginarias..."

PRINT "x1 =";-(1/2)*(B/A);" +";(1/2)*SQR(-D)/A;"i"


PRINT "x2 =";-(1/2)*(B/A);" -";(1/2)*SQR(-D)/A;"i"
ELSE
! La ecuacin tiene soluciones reales.
PRINT "La ecuacin: (";a;")x^2";" + (";b;")x + (";c;") = 0"
PRINT
PRINT "Tiene estas soluciones reales..."

PRINT "x1 = ";-(B+SQR(D))/(2*A)


PRINT "x2 = ";-(B-SQR(D))/(2*A)
END IF

- 286 -
Elaboracin de algoritmos con BASIC... Captulo VII.

END ! Fin del proceso.

Ahora procedamos a ejecutar el programa digitado.

Los valores de prueba sern los coeficientes (a, b y c) para encontrar las
soluciones para las siguientes ecuaciones:

1. x 3 = 0 (a = 0, b = 1 y c=-3)

2. x2 - 9 = 0 (a = 1, b = 0 y c=-9)

3. x2 + 4 = 0 (a = 1, b = 0 y c=4)

4. x2 + 3x + 1 = 0 (a = 1, b =3 y c= 1)

5. x2 + 18x +81 = 0 (a = 1, b = 18 y c=81)

6. x2 + x +1 = 0 (a = 1, b = 1 y c= 1)

7. 7x2 + 23x + 6 = 0 (a =7, b = 23 y c= 6)

Les invito a encontrar la solucin de estas ecuaciones a mano, para


posteriormente verificar los resultados que obtiene nuestro programa.

Tambin si ustedes quieren experimentar con las opciones de la instruccin PRINT


USING que les he comentado su uso; les propongo, cambien el cdigo para que
nuestras respuestas estn expresadas con 2 decimales. Tambin hagan que la
expresin de la ecuacin no tenga los parntesis que he puesto para los
coeficientes, es decir, que exprese el signo + o el signo segn corresponda en la
ecuacin original.

Muy bien, ahora verifiquemos el programa, al correrlo (ejecutarlo), tendremos la


siguiente pantalla:

- 287 -
Tras los pasos de un... Hacker

Ingresemos los datos de prueba para la primera ecuacin:


(a = 0, b = 1 y c=-3)

Como podemos observar, la respuesta para la incgnita x, es correcta.

Vamos con los siguientes datos y a medida que obtengamos los resultados, los
compararemos con los que hemos obtenido a mano. Tendremos las siguientes
pantallas para todas las soluciones:
(a = 1, b = 0 y c=-9)

- 288 -
Elaboracin de algoritmos con BASIC... Captulo VII.

(a = 1, b = 0 y c=4)

(a = 1, b =3 y c= 1)

(a = 1, b = 18 y c=81)

- 289 -
Tras los pasos de un... Hacker

(a = 1, b = 1 y c= 1)

(a =7, b = 23 y c= 6)

Con estos ejemplos y lo que hemos aprendido hasta ahora, podemos ya realizar
sencillos programas que nos ayudarn en ciertos clculos simples como los
expuestos.

- 290 -
Elaboracin de algoritmos con BASIC... Captulo VII.

EJERCICIOS PROPUESTOS:

Elaborar los algoritmos solicitados para resolver cada uno de los siguientes
problemas:
Se quiere utilizar la computadora para transformar medidas de
Ejercicio 241.
capacidad de litros a galones. Se ingresar por teclado el valor de los litros a
transformar. Presentar en pantalla los resultados.
Se quiere utilizar la computadora para calcular el permetro y el rea
Ejercicio 242.
de una circunferencia. Se ingresar por teclado el valor del radio. Presentar en
pantalla los resultados.
Se quiere utilizar la computadora para obtener la equivalencia en
Ejercicio 243.
mltiplos y submltiplos de una cantidad en metros que se ingresar por teclado.
Presentar en pantalla los resultados. (Consultar el Sistema Internacional de
Unidades para obtener las frmulas a convertir).
Se quiere utilizar la computadora para calcular el permetro y la
Ejercicio 244.
hipotenusa de un tringulo rectngulo. Se ingresar por teclado el valor de los
catetos. Presentar en pantalla los resultados. (Revisar el teorema de Pitgoras).
Se quiere utilizar la computadora para calcular el rea de un tringulo.
Ejercicio 245.
Se ingresar por teclado el valor de los lados del tringulo. Presentar en pantalla
los resultados. El programa debe determinar si el tringulo existe.

Utilizar las frmulas:


Area = (SPerimetro*(SPerimetro-Lado1)*(SPerimetro-Lado2)*(SPerimetro-Lado3))^0.5
SPerimetro = (Lado1 + Lado2+ Lado3)/2

Donde:
Area representar al rea del tringulo.
SPerimetro ser el semipermetro del tringulo.
Lado1 ser el primer lado del tringulo.
Lado2 ser el segundo lado del tringulo.
Lado3 ser el tercer lado del tringulo.

Ejercicio 246. Se quiere utilizar la computadora para calcular el inters simple o

- 291 -
Tras los pasos de un... Hacker

compuesto que genera un capital. Se ingresarn por teclado el valor del capital,
el inters anual y el periodo de tiempo. Presentar en pantalla los resultados.

Utilizar la computadora para resolver un sistema de 2 ecuaciones de


Ejercicio 247.
primer grado con dos incgnitas, los coeficientes se ingresarn de la forma
expresada en el sistema general:

a1x + b1y + c1 = 0

a2x + b2y + c2 = 0

Obtener una frmula general para calcular los valores de x e y que resuelven el
sistema. (Mtodo de sustitucin de incgnitas).

Utilizar la computadora para que de 4 nmeros ingresados, la misma


Ejercicio 248.
determine el mayor, el menor y calcule su sumatoria. Presentar en pantalla los
resultados.

Utilizar la computadora para calcular el rea y el permetro de un


Ejercicio 249.
rectngulo pero sus dimensiones son restringidas. La base oscilar entre 0 y
1.248, la altura de 0 a 1.000. El algoritmo debe validar el ingreso de los datos,
calcular si los datos cumplen los requisitos, caso contrario nos informar que los
datos estn fuera del rango permitido.

Utilizar la computadora para calcular la depreciacin de un bien, si


Ejercicio 250.
sabemos que el ndice de depreciacin es de 0,01% por mes. Qu cantidad se
recibe en la venta del mismo transcurrido un tiempo x?

- 292 -
Elaboracin de algoritmos con BASIC... Captulo VII.

NOTAS Y BIBLIOGRAFA
Sobre este tratado de Elaboracin de Algoritmos con BASIC, las notas han sido
elaboradas en base a publicaciones de revistas especializadas y la consulta de los
siguientes textos:

- LGEBRAELEMENTAL MODERNA, M. O. Gonzlez J. D. Mancill, Editorial


KAPELUSZ, Publicado en Buenos Aires Argentina, 1.962.
- Matemticas y Astronoma, Tomo No. 11, Enciclopedia Salvat de las
Ciencias, Salvat S.A. de Ediciones, Pamplona, Espaa, 1.968.
- Fsica General, Francis W. Sears Mark W. Zemansky, Aguilar S.A. de
ediciones 1.9571.974, Publicado en MadridEspaa, 1.974.
- CMO PROGRAMAR COMPUTADORAS, URMOS.A, DE EDICIONES, Bilbao
Espaa, 1.977.
- Curso Prctico de Programacin, Intermedio Editores S.A., Bogot
Colombia, 1.984.
- EL ARTE DE PROGRAMAR ORDENADORES ALGORITMOS
FUNDAMENTALES - Volumen I, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.985.
- MSX DISK BASIC Reference Manual, SPECTRAVIDEO INTERNATIONAL
LTD., Hong Kong, 1.985.
- QL PROGAMACIN EN SUPERBASIC, Roy Atherton, MicroTextos S.A. de
ediciones, Madrid Espaa, 1.985.
- Programacin Estructurada en Lenguaje Pascal, ENCICLOPEDIA
PRCTICA DE LA INFORMTICAAPLICADA, TOMO 3, Juan Ignacio Puyol,
EDICIONESSIGLOCULTURALS.A., Madrid Espaa, Octubre de 1.986.
- EL ARTE DE PROGRAMAR ORDENADORES CLASIFICACIN Y
BSQUEDA - Volumen III, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.987.
- Structured BASIC Programming, John G. Kemeny & Thomas E. Kurtz, John
Wiley & Sons, Publicado en Estados Unidos de Norte Amrica, 1.987.
- True BASIC by Problem Solving, Brian D. Hahn, VCH Verlagsgesellschaft
mbH, Weinheim Repblica Federal de Alemania, 1.988.
- Personal Mathematics and Computing, Frank Wattenberg, MIT Press,
Publicado en Estados Unidos de Norte Amrica, 1.990.
- The Fun of Computing, John G. Kemeny, True BASIC Inc. 1.990,
Publicado en los Estados Unidos de Norte Amrica, 1.990.

- 293 -
Tras los pasos de un... Hacker

- Programacin en C, Byron S. Gottfried, McGraw Hill / Interamericana de


Espaa S.A., Madrid Espaa, 1.991.
- Microsoft MASM, Assembly Language Development System Version 6.1.,
Microsoft Corporation 1.987, 1.991, 1.992 U.S. Patent No. 004955066,
Estados Unidos de Norte Amrica, 1.992.
- DiscoveryPak, True BASIC Inc., True BASIC Press, Publicado en Estados
Unidos de Norte Amrica, 1.993.
- Ingeniera del Software Un enfoque prctico, Roger S. Pressman,
McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa, 1.993.
- Organizacin y diseo de computadores La interfaz hardware /
software, David A. Patterson John L. Hennessy, McGraw Hill /
Interamericana de Espaa S.A., Madrid Espaa, 1.995.
- The YOU Based LABORATORY, TI-CBL EXPLORATIONS in Science and
Mathematics, Margo L. Mankus Frank Wattenberg, Weber State
University 1.996, Publicado por True BASIC Inc., 1.996.
- Lets Program It in True BASIC, Avery Catlin, True BASIC Press,
Publicado en Estados Unidos de Norte Amrica, 1.996.
- Programming for ENGINEERS in True BASIC, Avery Catlin, True BASIC
Press, Publicado en Estados Unidos de Norte Amrica, 1.996.
- True BASIC Bronze Edition, Users Guide, John G. Kemeny Thomas E.
Kurtz, True BASIC Inc. 2.001, Publicado en los Estados Unidos de Norte
Amrica, 2.001.
- Matemtica e Informtica, Tomo No. 11, Enciclopedia Larousse del
Estudiante, Sociedad Comercial y Editorial Santiago Ltda., Santiago de
Chile, Chile, 2.000 2.002.
- Manual Moderno de Informtica, Labor Loerincs, Zamora Editores Ltda.,
Publicado por Quebecor World Bogot S.A., Impreso en Bogot
Colombia, 2.004.
- La wikipedia, http://www.wikipedia.org. La enciclopedia libre de la
Internet.
- PC World Ecuador,
Magazine, http://www.pcmag.com
http://www.pcworld.com.ec/pcw_catt/index.php

- Notas de clase, Nstor Marroqun, 1.9891.994.


- Trabajos de varios autores publicados en la worldwide web.

- 294 -
INTRODUCCIN (VIII)

Pasada esta etapa de crisis, tanto fsica como emocional, empiezo a trabajar
ayudando al importador que nos haba vendido la computadora; entonces tuve a
mi alcance el material (HARDWARE) para conocer un poco ms del
funcionamiento de las computadoras, las armaba, las configuraba y las probaba
para que sean vendidas sin problemas; es as, que la fama de buenos
computadores que venda el jefe creci y el negocio tambin creci, este periodo
de tiempo lo aprovechaba para seguir a distancia mis estudios de programacin
(que los segua con el material que me fuera enviado desde True BASIC Inc., a
travs de mis amigos en Nueva York). Dominadas las tcnicas de programacin,
as como haber desarrollado un sistema para el control de inventarios de un
almacn de repuestos automotrices, decido que el trabajo de armar y desarmar
computadoras haba cumplido su objetivo formativo en mi carrera, agradeciendo
al Sr. Paz por la oportunidad, le menciono que debo seguir mis estudios en la
universidad para terminar mi carrera como Ingeniero en Sistemas.
En ese tiempo, la ESPE no ofertaba la carrera de Ingeniera en Sistemas (adems
que no quera saber nada de militares, pero tena la facilidad de ingresar al
siguiente nivel donde haba dejado mis estudios dos aos atrs). La Pontificia
Universidad Catlica del Ecuador (PUCE), haba creado justamente para el ao de
1.992 la carrera de Ingeniera en Sistemas, entonces decido someterme a los
exmenes de ingreso y como no era de otra manera mi nombre constaba como
alumno admitido al preuniversitario. No tocaba de otra, ya que no exista el
primer nivel como para pedir convalidacin de estudios.

Aprobamos este nivel sin contratiempos. Para el primer nivel de la carrera,


coincidencialmente el Lcdo. Ricardo Ortega Ortega, fuera designado profesor
para mi curso en una de las materias que contemplaba la carrera de ingeniera,
apenas supe de esta noticia, vino a mi mente la gua de programacin BASIC que
mito la estudiara haca aproximadamente 10 aos, por fin lo tena frente a m, al
hombre que lo admiraba por su talento y fama como programador (para m, era
el gur de la computacin de aquel tiempo en Ecuador) y trataba de emular los
programas que gratuitamente los distribua, pero sus tcnicas de programacin
eran mucho ms avanzadas que las mas.

- 295 -
Tras los pasos de un... Hacker

Recuerdo una reunin acadmica suscitada en la oficina particular que tena el


profesor Ortega, al solicitarle que comedidamente me explicara cmo se haca
para presentar los famosos pop up? (mensajes de texto desplegados en un solo
cuerpo a manera de aviso, de uso para el despliegue de mens y mensajes de
alerta al usuario en los programas de aquel entonces, ambiente DOS), solo
recuerdo que busc algn documento en su escritorio, me lo entreg y me dijo
framente investiga!
No me explic absolutamente nada de lo que quera aprender, no tena ni idea de
lo que trataba el texto que me haba entregado en la hoja; as que, decepcionado
por el trato (posteriormente entendera que para emular a un buen Hacker, no
existen guas, no existen tutores, uno mismo investiga y es el tutor de s mismo),
nunca ms insist para que me explicara algo que estaba por fuera del pensum
acadmico de la carrera. En este nivel estudiaramos para variar programacin
BASIC, tambin habra aprendido LOGO, posteriormente PASCAL. El nivel
acadmico programado para la carrera me pareca bajo. Me pasaba horas y horas
de clase corrigiendo a algunos de mis profesores la materia que estaban
impartiendo, lo que motiv que me promovieran de nivel, pero para que ya no
asista ms a sus clases. Me di cuenta que estaba perdiendo el tiempo y con la
supuesta cercana de terminar mis estudios a distancia de programacin por
parte de un instituto en los Estados Unidos de Norte Amrica, decido dejar la
universidad y seguir el consejo de mi profesor, investigar por mi mismo todos los
temas relacionados a la programacin de computadoras y diseo de sistemas.

Transcurra la segunda mitad del ao de 1.992 e investigando algo de


programacin en lenguaje ensamblador (habra adquirido una copia no
autorizada de un producto de la firma Microsoft Corp., denominado MASM,
Microsoft Assembly Language, donde de los manuales tcnicos del producto,
como de los de mi True BASIC, podra implementar rutinas que invoquen los
servicios del mismo Sistema Operativo (DOS) como de la ROMBIOS, con este
material al fin entend las rutinas programadas en lenguaje ensamblador para mi
antigua Spectravideo, posteriormente con los recursos suficientes en 1.993
comprara el paquete original del MASM), por fin haba implementado una
funcin que me permitira presentar los pop up de una forma profesional al
incorporar la funcin que me la sugiriera el profesor Ortega a mi True BASIC que
hara el llamado a una interrupcin de la ROMBIOS, la conocida como INT 10h
(servicios de video) e invocando correctamente a las subrutinas de este servicio,
consegua que mi programa de inventarios tenga por fin un aspecto profesional,

- 296 -
La historia... Introduccin (VIII).

lo bautic con el nombre de SARC (Sistema Administrador de Recursos


Comerciales), con el cual conseguira fundar mi empresa personal a la que la
denomin NMC Research y bajo este nombre comercial, mis programas
empezaron a venderse

Ahora aprendamos un poco ms de las tcnicas de programacin, para continuar


contndoles en la prxima seccin cmo? y cundo? conoca un Hacker

- 297 -
Tras los pasos de un... Hacker

- 298 -
CAPTULO VIII. BUCLES, FUNCIONES Y SUBRUTINAS
CON BASIC

8.1. ITERACIONES Y BUCLES

8.1.1 BUCLES DETERMINADOS E INDETERMINADOS

Definidas anteriormente las estructuras de control iterativo, vamos a explicar con


ms profundidad este tema de los lazos o bucles.

Dependiendo de conocer de antemano cuntas veces vamos a repetir el


proceso? tendremos como explicamos anteriormente, en primer lugar los bucles
determinados, es decir aquellos que repetirn un proceso "n veces" y el valor de n
es conocido; por el contrario, cuando no conocemos a ciencia cierta el valor de n,
entonces nuestro bucle ser indeterminado y el fin del proceso iterativo estar
condicionado a un evento especfico dentro de la estructura de control iterativa.

Los usos ms comunes para los bucles determinados son: cuando tenemos que
realizar el ingreso de datos de una matriz de orden n x m, cuando tenemos que
evaluar una serie numrica, una progresin sea esta aritmtica o geomtrica,
cuando tenemos que realizar algn proceso de simulacin y el valor de una
funcin depende de iterar los valores de una variable, etc.

Las variables ms comunes para usarlas como contadores de control de los


bucles son i,j, k..., estos valores han sido tomados de la matemtica ya que los
subndices de las matrices precisamente son i y j.

Los bucles indeterminados los usaremos cuando tengamos que repetir un


proceso y este depender de la respuesta que d el usuario o de una condicin
que puede darse dentro del bucle, por ejemplo: una divisin para cero y no
desearamos que este error detenga la ejecucin de nuestro programa.

- 299 -
Tras los pasos de un... Hacker

8.1.2 BUCLES ANIDADOS


En programacin podemos tener bucles que repitan bucles, a este uso especial de
esta estructura de control se la conoce como anidar bucles o bucles anidados, su
uso ms frecuente es al ingresar valores en una matriz, realizar clculos
matriciales y presentar los valores de la misma.
En el estilo de programacin estructurada, encontraremos por lo general a los
bucles anidados (bucles determinados) codificados en BASIC como:

FOR I=1 TO N
FOR J=1 TO M
PROCEDIMIENTO
NEXT J
NEXT I

Debemos tener en cuenta que el fin de un bucle anidado debe preceder al cierre
del bucle principal.
El mismo concepto se lo puede tener con bucles indeterminados, es decir, los
procesos que se repetirn hasta que se produzca alguna condicin para que
terminen, de la misma forma los veremos codificados en BASIC con cualquiera de
las estructuras de control iterativo definidas para este propsito, por ejemplo:

DO
DO
PROCEDIMIENTO
LOOP UNTIL <CONDICIN 1>
LOOP UNTIL <CONDICIN 2>

Tambin,
DO
DO
PROCEDIMIENTO
LOOP WHILE <CONDICIN 1>
LOOP WHILE <CONDICIN 2>

En la prctica se pueden anidar bucles determinados dentro de bucles


indeterminados y viceversa.

- 300 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

EJERCICIOS RESUELTOS:

Algoritmo para presentar los 10 primeros nmeros. Implementar


Ejemplo 66.
un algoritmo que use una estructura de control iterativa y presente por
pantalla lo siguiente:

Nmeros del 1 al 10"

"Nmero 1"

"Nmero 2"

...

"Nmero 10"

En este caso; y, como condicin del problema es usar una estructura de control
iterativa, aunque parezca trivial, es decir, presentar 10 veces un mensaje, lo que
perseguimos con este ejercicio es mostrar el uso de esta estructura de control.
Posteriormente veremos que podemos tener dentro del bucle un proceso ms
complicado; entonces, como sabemos, procederemos a tomar nota del ms
simple de los detalles que tenemos que implementar en nuestros programas o
algoritmos, en este caso vemos que:
a) En el problema a resolver no existe ninguna frmula a aplicar.

b) No existe ningn proceso especial que desarrollar. (Funcin, subrutina o


mdulo).

c) Se nos pide simplemente mostrar diez veces un mensaje en la pantalla


que diga: Nmero"; x

As que, elaboremos el diagrama de flujo para este algoritmo.

- 301 -
Tras los pasos de un... Hacker

Algoritmo para
presentar los 10
primeros nmeros.
Inicio

Desplegaremos la frase:
Nmeros del 1 al 10

MENSAJE

Repetir
I=1
a
10
Desplegaremos el mensaje:
Nmero;I

MENSAJE

I = I +1

Fin

Ahora que sabemos que funciona la lgica del algoritmo y que realiza
correctamente lo que deseamos, codifiquemos este algoritmo en BASIC.
El resultado ser la siguiente definicin algortmica implementada en un lenguaje

- 302 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

de programacin:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 6. Ejemplo No. 66 del texto.
! Algoritmo que presenta los 10 primeros nmeros.
! Autor: Nstor Marroqun.
!
! Frmulas:
! Ninguna.
!
! Variables:
! I, Contador numrico entero.
!
! Funciones: Ninguna.

!
! Libreras:
! Ninguna.
!
! Mdulos: Ninguno.

!
! Aqu empieza el proceso principal.

! Presentamos un mensaje informativo.


PRINT "Nmeros del 1 al 10"

FOR I=1 TO 10
! Presentamos los nmeros uno a uno.
PRINT "Nmero";I
NEXT I

! Fin del algoritmo.


END

Ahora, podemos digitar este cdigo en nuestra versin BRONZE del True
BASIC para ver lo que sucede.

Tendremos la siguiente pantalla, una vez digitado el programa:

- 303 -
Tras los pasos de un... Hacker

Como vemos el procedimiento que contiene el bucle, al dar formato al programa,


usando la opcin DO FORMAT de nuestro True BASIC, observamos que las lneas
que corresponden al proceso anidado tendrn una sangra, esto es lo que se
conoce como dar estilo al programa. Esta prctica es importante porque
visualmente se pueden identificar las diferentes estructuras de control.

Ahora ejecutemos el programa y veamos lo que hace, observaremos una pantalla


parecida a esta:

- 304 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

Al dar un clic sobre esta pantalla, veremos que nuestro True BASIC nos informa
que el programa se ha ejecutado con xito (Run successfully).

Algoritmo para hallar el mayor de n nmeros ingresados.


Ejemplo 67.

Implementar un algoritmo que use una estructura de control iterativa y


determine el mayor valor de n nmeros ingresados.
En este caso y como condicin del problema es usar una estructura de control
iterativa, como veremos en este caso el problema se puede resolver utilizando
tanto estructuras de control iterativas determinadas como estructuras de control
iterativas indeterminadas. Como sabemos, observamos que:
a) En el problema a resolver no existe ninguna frmula a aplicar.

b) No existe ningn proceso especial que desarrollar. (Funcin, subrutina o


mdulo).

c) Se nos pide ingresar n nmeros y determinar el mayor, podra ser


presentando el siguiente mensaje: Nmero mayor ingresado de"; n;
nmeros es:;mayor.

Definamos un procedimiento para resolver este problema.

- 305 -
Tras los pasos de un... Hacker

a) Inicio.
b) Inicialicemos las variables a usar, en este caso necesitaremos un contador
numrico (I), una variable para que el usuario ingrese los nmeros
(NUMERO), variable para contener el nmero mayor ingresado (MAYOR),
esta variable MAYOR ser inicializada con el valor numrico ms pequeo
que en este caso manejar nuestro True BASIC (utilizaremos la funcin
interna del True BASIC: MAXNUM para obtener este valor).

c) Pedimos al usuario que nos diga cuntos nmeros se van a evaluar.

d) Validaremos que este valor sea mayor que cero.

e) Se ingresarn uno a uno los nmeros y cada vez se almacenar este valor
ingresado en la variable NUMERO.

f) Compararemos el valor de NUMERO con el valor de MAYOR, si NUMERO


es mayor o igual que MAYOR, entonces MAYOR ser asignado con el valor
de NUMERO.

g) Terminado el ingreso de datos, presentaremos el mayor valor ingresado.


h) Fin.

Comprobado que nuestro procedimiento funciona, elaboremos el diagrama de


flujo para este algoritmo.

- 306 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

Algoritmo para hallar


el mayor de n
nmeros ingresados.
Inicio

Inicializamos variables.
N
I00

NUMERO 0
MAYOR -MAXNUM Presentamos un mensaje
que diga: Programa que
determina el mayor de n
nmeros ingresados.
MENSAJE

"Cuntos nmeros vamos a


evaluar:"

MENSAJE

NO
N

N>0

SI

Repetir
I=1
a
N "Favor ingrese el";I; "valor:"

MENSAJE

NUMERO

NUMERO>=MAYOR SI MAYOR NUMERO

NO

I = I +1
"El nmero mayor que ha
ingresado es:";MAYOR

MENSAJE

Fin

- 307 -
Tras los pasos de un... Hacker

Ahora codifiquemos nuestro algoritmo en BASIC, obtendremos un programa


parecido al siguiente:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 7. Ejemplo No. 67 del texto.
! Algoritmo para hallar el mayor de n nmeros ingresados.
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables:
! N, Cantidad de nmeros a ingresar.
! I, Contador numrico entero.
! NUMERO, Variable numrica para el ingreso de datos.
! MAYOR, Variable numrica para determinar el mayor.
!
! Funciones: MAXNUM, Funcin interna del True BASIC.

! Que retorna el valor del nmero mximo que maneja el lenguaje.


! Libreras:
! Ninguna.
!
! Mdulos: Ninguno.

!
! Aqu empieza el proceso principal.

! Inicializamos variables.
LET I,N,NUMERO=0
LET MAYOR=-MAXNUM
! Presentamos un mensaje informativo.
PRINT "Programa que determina el mayor de n nmeros ingresados."

! Validamos que se ingrese un valor mayor que 0.


! Para esto utilizamos un bucle indeterminado DO ... LOOP.
DO
PRINT N
INPUT "Cuntos nmeros vamos a evaluar:";

Utilizamos
LOOP
! un bucle determinado para el ingreso de n nmeros.
until N>0

FOR I=1 TO N
! Ingresamos el nmero n.
PRINT "Favor ingrese el ";I; "valor :";
INPUT NUMERO
! Siempre obtendremos en MAYOR el valor mayor ingresado.
IF NUMERO >= MAYOR THEN
LET MAYOR = NUMERO
END IF
NEXT I
PRINT

- 308 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

! Presentamos el mayor valor obtenido.


PRINT "El nmero mayor que ha ingresado es:";MAYOR
! Fin del algoritmo.
END

Para conservar el formato estructurado, procedamos a ejecutar un DO FORMAT


con esto visualmente observaremos que tenemos correctamente definidas las
estructuras de control.

Miremos si las sangras ingresadas, cierran correctamente en cada estructura de


control, los bucles DO deben cerrar con su respectivo LOOP, este cierre debe
estar a la misma altura del inicio del bucle, los FOR... NEXT, los IF THEN
ELSE ENDIF. Verificado, entonces tendremos la siguiente pantalla:

- 309 -
Tras los pasos de un... Hacker

Ejecutemos nuestro programa para ver lo que hace, obtendremos algo as:

Como vemos, el uso de un bucle indeterminado al validar el ingreso de la variable


N, produce que el algoritmo avance si se ingresa un valor mayor a cero, mientras
no se satisfaga esta condicin, el programa no avanza y permanecer pidiendo el
correcto ingreso de datos.

Ahora, definimos con un bucle determinado que repita el ingreso de datos y el


proceso de comparacin para determinar si el valor ingresado es mayor que el
almacenado en la variable MAYOR, recordemos que cuando inicializamos a esta
variable, asignamos el valor ms pequeo que puede procesar nuestro True
BASIC, usando la funcin MAXNUM pero hacindolo negativo, es decir, MAXNUM
retorna el valor 1,7976931e+308, al hacerlo negativo, almacenar el valor
-1,7976931e+308 que precisamente es el menor valor que puede ser almacenado
en una variable numrica en True BASIC. Si el valor de NUMERO es mayor o
igual al de MAYOR, asignaremos el valor de NUMERO a la variable MAYOR, de
esta forma, no importa cuntos nmeros ingresemos, siempre obtendremos en
MAYOR el valor mayor ingresado.

Finalmente terminada la iteracin, presentamos el mayor valor ingresado


(contenido en la variable MAYOR).

Ejemplo 67A. Otra solucin un poco ms complicada.

- 310 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

Ahora, variemos un poco el algoritmo y cdigo digitado para no usar el bucle


determinado (FOR NEXT). Instrumentemos el mismo programa pero solo
usando bucles indeterminados. Para esto, usaremos una variable especial que en
programacin se la conoce como variable bandera, la misma que nos sirve para
decirle al bucle indeterminado que termine.

Otro detalle que para hacerlo y conseguir el mismo objetivo, usaremos variables
tipo string para el ingreso de los datos, las mismas que sern convertidas en
numricas para determinar el mayor valor ingresado.

Nuestro proceso terminar cuando sea ingresada la palabra FIN, para lograr
esto utilizaremos algunas de las funciones internas que ya conocemos y estn
definidas en True BASIC. (Revisar su libro de gua del lenguaje.)

Tambin a partir de este instante y no porque no sepamos, queda como tarea de


cada clase, que ustedes esquematicen los diagramas de flujo de los algoritmos
que seguiremos explicando.

Asvariaremos el algoritmo por el siguiente:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 7 - A. Segunda codificacin.
! Ejemplo No. 67 del texto.
!
! Algoritmo para hallar el mayor de n nmeros ingresados.
! Autor: Nstor Marroqun.
!
! Frmulas:
! Ninguna.

! Variables:
! NUMERO$,
FLAG,
I, Variable
Contador
Variable string
numrico
bandera. para el ingreso de datos.
entero.

! NUMERO, Variable numrica para comparar datos.


! MAYOR, Variable numrica para determinar el mayor.
!
! Funciones: MAXNUM, Funcin interna del True BASIC.

! Que retorna el valor del nmero mximo que maneja el lenguaje.


! UCASE$, Funcin interna del True BASIC.
! Que retorna transformada en maysculas el valor
! de la variable string ingresada.
! VAL, Funcin interna del True BASIC.

- 311 -
Tras los pasos de un... Hacker

! Que transforma en nmeros el valor


! de la variable string ingresada, si estos son nmeros.
!
! Libreras:
! Ninguna.
!
! Mdulos: Ninguno.

!
! Aqu empieza el proceso principal.

! Inicializamos
LET I=1 variables.

LET FLAG,NUMERO=0
LET MAYOR=-MAXNUM
! Presentamos un mensaje informativo.
PRINT "Programa que determina el mayor de n nmeros ingresados."

! Ingresamos los valores a procesar.


! Para esto utilizamos un bucle indeterminado DO ... LOOP.
DO
! Ingresamos el nmero n.
PRINT "Favor ingrese el ";I; "valor :";
INPUT NUMERO$
WHEN ERROR IN
NUMERO=VAL(NUMERO$)
LET I=I+1

! Siempre obtendremos en MAYOR el valor mayor ingresado.


IF NUMERO >= MAYOR THEN
LET MAYOR = NUMERO
END IF
USE
IF UCASE$(NUMERO$)="FIN" THEN
LET FLAG=1
LET I=I-1
END IF
END WHEN
LOOP UNTIL FLAG=1
PRINT
! Presentamos el mayor valor obtenido.
PRINT
! Fin del
"El algoritmo.
nmero mayor que ha ingresado es:";MAYOR;" de";I;" ingresados..."

END

Digitado este cdigo en nuestro True BASIC, obtendremos la siguiente pantalla:

- 312
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

Ejecutemos el programa y verifiquemos lo que hace:

- 313 -
Tras los pasos de un... Hacker

Al hacer clic en esta pantalla, otra vez True BASIC nos informar que el programa
se ha ejecutado correctamente (Run successfully)

Nota del autor:


En esta codificacin, por la complejidad de manejar nmeros expresados en variables string,
True BASIC, para el control de posibles errores (y nosotros al usar strings como nmeros),
incorpora una estructura de control para el manejo de errores que est definida como:

WHEN ERROR IN
< PROCEDIMIENTO A CONTROLAR EL ERROR >
USE
< PROCEDIMEINTO QUE SOLVENTA EL ERROR >
END WHEN

Para ms detalles revisen la gua de uso del lenguaje sobre esta estructura de control propia de
True BASIC. En otros lenguajes de programacin tambin existe su equivalente, tienen que
revisar los captulos relacionados a control y manejo de errores.

En los diagramas de flujo, podremos definir a esta estructura con un solo proceso que puede
llamarse control de errores y dentro de este proceso diagramar los pasos a tomar.

8.2 FUNCIONES

Una funcin es un procedimiento especial que nos ayudar a realizar clculos de


una manera abreviada al invocarse la funcin desde un programa, o al evaluarse
una expresin que use la funcin definida.

En todos los lenguajes de programacin se pueden definir funciones.

Una caracterstica de las funciones, es que no cambian el valor de los argumentos


ingresados (parmetros). Trabaja con los valores de los argumentos, los procesa
y devuelve el valor del proceso definido con el nombre de la funcin.

Normalmente, las funciones devuelven los mismos tipos de datos que tienen los
argumentos, es decir, si los argumentos son numricos, la funcin devolver un
valor numrico, si los parmetros son de tipo string la funcin debera devolver
igualmente datos de tipo string; con todo, esto depende del nombre y tipo de
dato que bauticemos a nuestra funcin y de los parmetros que ingresarn a la
misma.

- 314 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

Otro detalle importante y que no debemos olvidar es que las funciones tambin
son algoritmos, pero definidos para trabajar cuando sean invocados para la
evaluacin de una expresin informtica o desde un programa.

En True BASIC, las funciones se definen de la siguiente manera:

FUNCTION <NOMBRE DE FUNCIN


< PROCEDIMIENTO > (PARMETROS)>

END FUNCTION

Ahora para la invocacin de la funcin desde el programa, en la seccin de


inicializacin de variables y procedimientos, generalmente al principio de cada
programa, funcin o subrutina, debemos declarar este procedimiento como:

DECLARE FUNCTION <NOMBRE DE FUNCIN>

Para ilustrar el uso de una funcin en True BASIC, hagamos por ejemplo,
funciones a los procedimientos de nuestro programa del ejemplo 63 y definamos
de esta forma los clculos de la superficie y volumen de una esfera.

EJERCICIOS RESUELTOS:

Algoritmo para calcular la superficie y volumen de una esfera


Ejemplo 68.
usando funciones. Implementar las funciones para el clculo de la
superficie y volumen de una esfera.
En este ejemplo, tenemos que utilizar dos frmulas de clculo, adems debemos
instrumentar las funciones y los valores resultantes como se pide.
Desplegaremos los resultados.

Ahora, tomamos nota del problema:


a) En este ejercicio, tendremos que usar las frmulas definidas para el
clculo de la superficie y el volumen de una esfera, estas frmulas las
implementaremos como funciones independientes del programa

- 315 -
Tras los pasos de un... Hacker

teniendo como parmetro o argumento de la funcin el valor del radio de


la misma, las frmulas a aplicar son:
S = 4 x x r2
V=4/3 xxr3
Siendo las variables r, SyV de tipo numrico.
b) Ahora tenemos que implementar las funciones ESF_SUPERFICIE y
ESF_VOLUMEN. Estas sern de tipo numrico.
c) Se nos pide finalmente mostrar un mensaje en la pantalla con los
resultados.

Definido el problema y esbozada la estrategia de solucin, definamos las


funciones como:
FUNCTION ESF_SUPERFICIE(R)
! Se calcula el valor de la superficie de una esfera.

LET ESF_SUPERFICIE = 4*PI*R^2


END FUNCTION
FUNCTION ESF_VOLUMEN(R)
! Se calcula el valor del volumen de una esfera.
LET ESF_VOLUMEN = 4/3*PI*R^3
END FUNCTION

Debemos recordar que para devolver el valor calculado, debemos asignar a la


funcin el valor obtenido antes de terminar el proceso, caso contrario la funcin
nos devolver cero como resultado.

Ahora codifiquemos el programa principal como:


! Tras los pasos de un Hacker.
! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 8. Ejemplo No. 68 del texto.
! Algoritmo que calcula la superficie y el volumen de una
! esfera, ingresando como dato el valor del radio de la
! misma. Presenta los resultados en la pantalla.
! Usa funciones para el clculo de la superficie y volumen.
!
! Autor: Nstor Marroqun.
!
! Frmulas: S = 4*PI*R^2

! V = 4/3*PI*R^3
!
! Variables:
! R numrica, a ser ingresada por el usuario.
! S numrica, almacena el clculo de 4*PI*R^2.

- 316 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

! V numrica, almacena el clculo de 4/3*PI*R^3.


!
! Funciones:
! Definiremos la funcin ESF_SUPERFICIE como numrica.
! Definiremos la funcin ESF_VOLUMEN como numrica.
! Utilizamos la funcin interna de True BASIC.
! que devuelve el valor del nmero pi.
!
! Libreras:
! Ninguna.
!
! Mdulos:
! Ninguno.
!

! ESF_SUPERFICIE
Declaramos el uso de dos funciones, denominadas como:

! ESF_VOLUMEN
DECLARE FUNCTION ESF_SUPERFICIE
DECLARE FUNCTION ESF_VOLUMEN

! Aqu empieza el proceso principal.

PRINT
! Presentamos
"Ingreseun
por
mensaje
favor el
pidiendo
valor del
al usuario
radio (R):";
que ingrese el dato.

! Ingresa por teclado el valor de R.


INPUT R
! Se calcula el valor de la superficie de una esfera.
LET
! = ESF_SUPERFICIE(R)
SeScalcula el valor del volumen de una esfera.

LET V = ESF_VOLUMEN(R)
! Se presentan los resultados.
PRINT
! Fin "Tiene
del esfera
"La algoritmo.
por de
superficie";S;"u^2"
volumen";V;"u^3"
radio";R;"u"

END

FUNCTION ESF_SUPERFICIE(R)
! Se calcula el valor de la superficie de una esfera.

LET ESF_SUPERFICIE = 4*PI*R^2


END FUNCTION
FUNCTION ESF_VOLUMEN(R)
! Se calcula el valor del volumen de una esfera.
LET ESF_VOLUMEN = 4/3*PI*R^3
END FUNCTION

Entonces tendremos una pantalla parecida a la siguiente:

- 317 -
Tras los pasos de un... Hacker

Ejecutemos este programa y veamos si esta nueva codificacin del mismo, arroja
los resultados que obtuvimos con el programa del ejemplo 63.

Como comprobamos, el programa hace exactamente los mismos clculos que el


programa del ejemplo 63, pero con la diferencia que hemos definido las

- 318 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

funciones para el clculo de la superficie y volumen de una esfera. Estas


definiciones las podremos luego incorporar en una biblioteca o librera de
funciones para ser usadas desde cualquier programa que necesite calcular la
superficie y volumen de una esfera.

Algoritmo para calcular la raz cuadrada de un nmero.


Ejemplo 69.

Implementar una funcin para el clculo de la raz cuadrada dado un


nmero cualquiera.

Nos piden ahora calcular la raz cuadrada de un nmero, ingresando como


parmetro de la funcin que la calcula el nmero dado.

Este mtodo numrico conocido como clculo de la raz cuadrada de un nmero,


para obtenerlo es necesario iterar el valor de la variable resultado hasta que se
cumpla la condicin que deseamos; es decir, que el nmero dado dividido para el
calculado sea igual al nmero calculado.

Para esto se ha definido el resultado a obtener como sigue:

B = (X/B+B)/2

Donde:

X parmetro de la funcin y valor inicial de clculo.


Bvariable numrica auxiliar para el proceso de iteracin de clculo.

Inicializamos la variable B del proceso con el valor inicial de X.

Condiciones:
Solo existen races cuadradas de nmeros positivos, es decir que el
parmetro de la funcin debe ser mayor que cero.

Repetiremos el clculo hasta que obtengamos que B sea igual a X/B.

- 319 -
Tras los pasos de un... Hacker

Desplegaremos los resultados.


Esbozada la estrategia y definido el clculo a realizar en la funcin, la codificamos
en BASIC y obtendremos algo as:

! Condicin
FUNCTION que el parmetro ingresado sea positivo.
RCUAD(X)

IF X>0 THEN
LET B=X
! Iteracin indeterminada para el clculo de la raz.
DO WHILE ROUND(B,10)<>ROUND(X/B,10)
LET B=(X/B+B)/2
LOOP
ELSE
LET
IFRCUAD=B
X=0 THEN

LET RCUAD=0
ELSE
CAUSE ERROR 12313

END IF
END FUNCTION

Ahora codifiquemos el algoritmo usando la funcin definida, podremos obtener


el siguiente cdigo fuente:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 9. Ejemplo No. 69 del texto.
! Algoritmo que
Se definir lacalcula
funcinla raz cuadrada de un nmero.
RCUAD(x)

!
! Autor: Nstor Marroqun.
!
! Frmulas: Iteraremos el valor de B mediante el clculo en la frmula:

! B = (N/B+B)/2
! hasta que se cumpla la condicin que B sea igual a N/B
!
! Variables: N numrica, a ser ingresada por el usuario.

! B numrica, almacena el clculo de (N/B+B)/2.


! X numrica, variable auxiliar para el clculo de la funcin.
! R numrica, variable que contendr el valor de la funcin RCUAD.
!
! Funciones:
! Definiremos la funcin RCUAD como numrica.
! Utilizamos la funcin interna de True BASIC

- 320 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

! que devuelve el valor de un nmero truncado a n


! decimales llamada funcin ROUND.
!
! Libreras:
! Ninguna.
!
! Mdulos: Ninguno.

! Declaramos el uso de la funcin como RCUAD:

DECLARE FUNCTION RCUAD

! Inicia el programa pidiendo el ingreso del dato.


PRINT "Deme un nmero para calcular su raz cuadrada: ";
INPUT N
LET R=RCUAD(N)
PRINT "La raz cuadrada de ";N;" es ";R
END

! Condicin
FUNCTION que el parmetro ingresado sea positivo.
RCUAD(X)

IF X>0 THEN
LET B=X
! Iteracin indeterminada para el clculo de la raz.
DO WHILE ROUND(B,10)<>ROUND(X/B,10)
LET B=(X/B+B)/2
LOOP
ELSE
LET
IFRCUAD=B
X=0 THEN

LET RCUAD=0
ELSE
CAUSE ERROR 12313

END IF
END FUNCTION

Digitado el programa obtendremos una pantalla parecida a la siguiente:

- 321 -
Tras los pasos de un... Hacker

Ahora ejecutemos el programa y observemos si obtiene los resultados que


deseamos, primero ingresando datos que sabemos debera calcular; por ejemplo,
la raz cuadrada de 1 es 1, la de 4 es 2, la de 9 es 3, si estos resultados los
obtenemos probemos con la raz cuadrada de 2 que es 1,4142

Veremos en accin nuestro programa con una pantalla parecida a las siguientes
para cada clculo del valor ingresado:

- 322 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

Raz de 1:

Raz de 4:

Raz de 9:

Raz de 2:

- 323 -
Tras los pasos de un... Hacker

Comprobamos que nuestro algoritmo y nuestra funcin obtienen correctamente


los resultados deseados.

Nota del autor:


Ahora aprendemos el uso de otra sentencia especial de nuestro True BASIC, la que invocamos
cada vez que deseamos informar al programa o usuario que se ha producido un error, la definida
con las palabras reservadas CAUSE ERROR xxx.

Esta sentencia especial la usamos para decirle a nuestro programa o usuario que no existen
races de nmeros negativos y que dada esta circunstancia se ha producido un error para el
clculo.

Algoritmo para calcular la funcin factorial. Implementar una


Ejemplo 70.
funcin que devuelva la factorial de un nmero dado.

Ahora calculemos la funcin factorial de un nmero, ingresando como parmetro


de la funcin el nmero dado.

Este mtodo numrico conocido como factorial de un nmero, se obtiene de


multiplicar el nmero dado por su inmediato inferior sucesivamente hasta llegar
a 1.
Para esto se ha definido el resultado a obtener como sigue:

F(n) = n*F(n-1)

Donde:

n parmetro de la funcin.

Condiciones:
Solo existe funcin factorial de un nmero entero positivo o cero, es decir
que el parmetro de la funcin debe ser entero y mayor o igual que cero.

Repetiremos el clculo hasta que obtengamos que n sea igual a 0.

Desplegaremos los resultados.

- 324 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

Esbozada la estrategia y definido el clculo a realizar en la funcin, la codificamos


en BASIC y obtendremos algo as:

! Funcin factorial o n!
FUNCTION FACT(N)
IF N = 0 THEN

LET FACT = 1
ELSE IF N>0 AND N=INT(N) THEN
! Recursin
LET FACT = N*FACT(N-1)
ELSE
CAUSE ERROR 123321

END IF
END FUNCTION

Nota del autor:


En este ejemplo, usamos una tcnica que en programacin se la conoce como procedimiento
recursivo, que consiste en auto invocar el mismo procedimiento hasta que una condicin sea
satisfecha. En este caso la condicin es que N sea 0.

Cuando implementemos procedimientos recursivos debemos tener muy en cuenta la cantidad de


memoria que disponemos en nuestro sistema.

Codificado el programa, obtendremos un cdigo parecido al siguiente:


! Tras los pasos de un Hacker.
! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 10. Ejemplo No. 70 del texto.
! Algoritmo
Se que
definir lacalcula
funcinla funcin
FACT(N) defactorial de un nmero.
manera recursiva.

!
! Autor: Nstor Marroqun.
!
! Frmulas: FACT = N * FACT(N-1)

!
! Variables:
! N numrica, a ser ingresada por el usuario.
!
! Funciones:
! Definiremos la funcin FACT como numrica.
! INT(x), devuelve la parte entera de un nmero.
!
! Libreras:
! Ninguna.
!

- 325 -
Tras los pasos de un... Hacker

! Mdulos:
! Ninguno.
!

! Declaramos el uso de la funcin como FACT

DECLARE FUNCTION FACT

! Inicia el proceso, pidiendo al usuario ingrese un valor.


PRINT
INPUT "De
N qu numero calcularemos su factorial:";

PRINT "El factorial de ";N;" es";FACT(N)


END

! Funcin factorial o n!
FUNCTION FACT(N)
IF N = 0 THEN

LET FACT = 1
ELSE IF N>0 AND N=INT(N) THEN
! Recursin
LET FACT = N*FACT(N-1)
ELSE
CAUSE ERROR 123321

END IF
END FUNCTION

Digitado en nuestro True BASIC, obtendremos una pantalla parecida a la


siguiente:

- 326 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

Ahora ejecutemos y probemos a ver qu hace? nuestro programa, tendremos


una pantalla como esta:

Como podemos comprobar, efectivamente 5!, es igual a 5*4*3*2*1, es decir 120.

8.3 SUBRUTINAS

Una subrutina es un procedimiento especial que nos ayudar a realizar una tarea
especfica de una manera abreviada al invocarse la misma desde un programa.
En todos los lenguajes de programacin se pueden usar subrutinas.

Las subrutinas a diferencia de las funciones pueden cambiar el valor de los


argumentos ingresados (parmetros). Trabaja con los valores iniciales de los
argumentos, los procesa y devuelve si es del caso el valor actual de los
parmetros.
Esta caracterstica que poseen las subrutinas, hacen que tomemos muy en cuenta
dnde las codificamos?, entonces, si las subrutinas son parte del programa
principal, las variables que usa sern de uso compartido con las variables del
programa principal, si la subrutina es externa al programa principal, todas las
variables que use, que no sean las que ingresan como parmetros sern de uso
local o exclusivo de la subrutina.

Normalmente, las subrutinas se usan para ahorrar la codificacin repetitiva de un


procedimiento en varios sitios de un programa, por esta utilidad al igual que las
funciones se las puede coleccionar en las denominadas libreras o bibliotecas de
procedimientos los mismos que pueden ser invocados desde cualquier programa.
Las subrutinas tambin son algoritmos, pero diseadas para trabajar

- 327
Tras los pasos de un... Hacker

independientemente de un programa especfico y ms bien sus procesos son de


carcter general, por ejemplo, es clsico el uso de subrutinas para presentar
mensajes en las denominadas cajas de dilogo, para dibujar alguna funcin, etc.
En True BASIC, las subrutinas se identifican de la siguiente manera:
SUB <NOMBRE DE SUBRUTINA >
< PROCEDIMIENTO (PARMETROS)>

END SUB

Ahora para la invocacin de la subrutina desde el programa, debemos observar


que correspondan los tipos de datos y parmetros necesarios para evitar un
error de tipo de datos o de argumentos. Se la invoca con la instruccin:
CALL <NOMBRE DE SUBRUTINA (PARMETROS)>

Ahora resolvamos algunos ejemplos de programas en los que usemos subrutinas.

EJERCICIOS RESUELTOS:

Ejemplo 71. Algoritmo que presenta la hora por 10 segundos. Implementar un


programa que presente la hora en una posicin fija de la pantalla usando
una subrutina para el efecto. Termine despus de haber transcurrido 10
segundos.

En este ejemplo, nos piden que elaboremos un programa que muestre la hora por
diez segundos. La condicin es que usemos una subrutina para hacerlo.

Empecemos, definiendo las variables que necesitaremos de forma general para


resolver el problema y esbocemos una estrategia.

Variables:
a) Necesitamos un contador de tiempo al que lo denominaremos TI y ser
de tipo numrico.
b) Necesitamos una variable para el despliegue de la hora, como se trata de
texto a presentar ser de tipo string y la denominaremos TI$.

- 328 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

c) Necesitamos posicionar el mensaje en una coordenada (modo texto) de la


pantalla, para esto debemos tener en cuenta que la pantalla en modo de
texto en True BASIC se posiciona de la siguiente manera: La esquina
superior izquierda ser el origen de las coordenadas, es decir ser la
posicin (1,1) fila 1, columna 1. Dependiendo de la resolucin de nuestro
monitor, la cantidad de filas y columnas pueden variar, pero por lo
general la coordenada mxima ser la posicin (24,80) fila 24, columna
80, esquina inferior derecha.

d) Para posicionar la coordenada usaremos las variables X e Y que sern de


tipo numrico.

Estrategia:
a) Obtenemos la hora del sistema. Usaremos las funciones internas del True
BASIC conocidas como TIME y TIME$.
b) Posicionaremos la hora (mensaje guardado en nuestra variable TI$) y
para esto utilizaremos una subrutina.

As que definamos la subrutina de la siguiente manera:

! Subrutina que presenta la hora.


SUB HORA(X,Y,TI$)
SET CURSOR Y,X
PRINT TI$
END SUB

Nota del autor:


En True BASIC para posicionar el cursor en una coordenada, se utiliza la instruccin SET
CURSORfila, columna.

Ahora codifiquemos nuestro programa que ilustra el uso de una subrutina


externa.

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.

- 329 -
Tras los pasos de un... Hacker

!
! Programa No. 11. Ejemplo No. 71 del texto.
! Algoritmo que presenta la hora por 10 segundos.
! Se usar una subrutina para el despliegue.
!
! Autor: Nstor Marroqun.
!
! Frmulas:
! Ninguna.
!
! Variables:
! X numrica, indica la columna a posicionar el mensaje.
! Y numrica, indica la fila a posicionar el mensaje.
! TI numrica, auxiliar para el clculo del tiempo.
! TI$ string, almacenar la hora actual.
!
! Funciones:
! TIME$, devuelve la hora actual del sistema.
! TIME, devuelve el nmero de segundos
! transcurridos desde la media noche.
!
! Libreras:
! Ninguna.
!
! Mdulos:
! Ninguno.
!

! Inicializa el contador de tiempo.


LET TI=TIME

DO WHILE TI+10>=TIME
LET TI$=TIME$
CALL HORA(40,13,TI$)
LOOP
CLEAR
END

! Subrutina que presenta la hora.


SUB HORA(X,Y,TI$)
SET CURSOR Y,X
PRINT TI$
END SUB

Digitaremos nuestro programa y tendremos algo parecido a esta pantalla:

- 330 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

Cuando ejecutemos el programa observaremos que efectivamente presenta la


hora en la columna 40 y la fila 13, tambin que la ejecucin del programa dura 10
segundos exactamente.

Algoritmo que calcula la posicin de un proyectil en un plano x, y


Ejemplo 72.

ingresado el ngulo de disparo, la velocidad de impulso y el tiempo de


vuelo. Implementar un programa que presente la posicin X e Y del
proyectil. Implementar una subrutina que calcule la posicin en el plano.
En este ejemplo, tenemos que ingresar 3 datos, un ngulo de disparo que por
facilidad lo definimos en grados sexagesimales y lo transformaremos en radianes,
la velocidad de impulso del proyectil y el tiempo de vuelo.

Nos piden que elaboremos un programa que muestre la posicin en un plano X


Y del proyectil en ese instante.

Las ecuaciones para el clculo solicitado vienen dadas por las siguientes
frmulas:

x = Vx.t

- 331 -
Tras los pasos de un... Hacker

y= Vy.t g.t2

Donde:

Vx = V0*Cos()

Vy = V0*Sen()

= A* /180
t, tiempo transcurrido desde el disparo.

A, ngulo del disparo.

g, constante de la gravedad que en este caso ser definida por 9,8 m/s2

V0, velocidad de impulso.


Con las frmulas dadas, ahora definamos las variables que necesitaremos de
forma general para resolver el problema y esbocemos una estrategia.

Variables:
a) Necesitamos ingresar tres datos variables para la velocidad de impulso, el
ngulo de disparo y el tiempo de vuelo transcurrido, definimos las
variables V0, A y trespectivamente.

b) Para transformar el ngulo de disparo dado de grados a radianes,


definimos la variable Alfa para este clculo.
c) Vx para el clculo de la velocidad inicial en el eje X.

d) Vy para el clculo de la velocidad inicial en el eje Y.


e) Gpara el valor de la gravedad.

Estrategia:
a) Definamos una subrutina que calcule la posicin X e Y del trayectoria del
disparo.
b) Elaboremos el programa para realizar el clculo solicitado.

- 332 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

As que definamos la subrutina de la siguiente manera:


! Subrutina que calcula la trayectoria.
SUB TRAYECTORIA(X, Y, Vo, A, T)
LET G = 9.8
LET Alfa = A*PI/180
LET Vx = Vo*COS(Alfa)
LET Y
Vy==Vy*T
X Vo*SIN(Alfa)
Vx*T - 0.5*G*T^2

END SUB

Ahora codifiquemos el programa, obtendremos algo as:


! Tras los pasos de un Hacker.
! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 12. Ejemplo No. 72 del texto.
! Algoritmo que calcula la posicin X e Y de la trayectoria
! de un proyectil dados la velocidad de impulso,
! su ngulo de disparo y el tiempo de vuelo.
!
! Se usar una subrutina para el clculo de la posicin.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Alfa = A*PI/180

! Vx = Vo*COS(Alfa)
! Vy = Vo*SIN(Alfa)
! x = Vx*t
! y = Vy*t-0.5*g*t^2
!
! Variables: X numrica, indica la posicin del proyectil.

! en el eje X del plano.


! Y numrica, indica la posicin del proyectil.
! en el eje Y del plano.
! T numrica, almacena el valor del tiempo de vuelo.
! G numrica, almacena el valor de la aceleracin de la gravedad.
! Vo
A numrica,
numrica,almacena
almacenael
elngulo
valor de
della
disparo.
velocidad de impulso.

! Vx numrica, almacena el clculo de la velocidad en el eje de las X.


! Vy numrica, almacena el clculo de la velocidad en el eje de las Y.
!
! Funciones: SIN(x), devuelve el valor de la funcin seno de x.

! COS(x), devuelve el valor de la funcin coseno de x.


! PI, devuelve el valor del nmero PI.
!
! Libreras:
! Ninguna.
!
! Mdulos:

- 333 -
Tras los pasos de un... Hacker

! Ninguno.
!

! Inicializa el proceso ingresando los datos solicitados.


PRINT "Programa que calcula la posicin X e Y de un proyectil."
PRINT
PRINT "Ingrese la velocidad de impulso (en m/s): ";
INPUT Vo
PRINT "Ingrese el ngulo de disparo (en grados): ";
INPUT A
PRINT "Ingrese el tiempo de vuelo (en segundos): ";
INPUT T
CALL TRAYECTORIA(X, Y, Vo, A, T)
PRINT
PRINT "Posicin en X del proyectil, transcurridos ";t;" segundos es ";X;"m"
PRINT "Posicin en Y del proyectil, transcurridos ";t;" segundos es ";Y;"m"
END

! Subrutina que calcula la trayectoria.


SUB TRAYECTORIA(X, Y, Vo, A, T)
LET Alfa = A*PI/180
G = 9.8
LET
LET Vx = Vo*COS(Alfa)
LET Vy Vo*SIN(Alfa)
X ==Vx*T
LET
LET Y = Vy*T - 0.5*G*T^2
END SUB

Nota del autor:


La subrutina definida (TRAYECTORIA), la podemos reutilizar en el trazo mismo de la
trayectoria del proyectil. Modifiquemos un poco este programa, al iterar el valor del tiempo de
vuelo (variable t), podremos calcular la posicin del proyectil desde que sale hasta que llega al
suelo, este ejercicio les propongo resuelvan en clase con el profesor gua.

Digitado el programa en nuestro True BASIC, obtendremos una pantalla parecida


a la siguiente:

- 334
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

Ejecutemos el programa para ver qu sucede? Tendremos una pantalla parecida


a la siguiente:

Como les propuse, el cambio podra quedar as:

- 335 -
Tras los pasos de un... Hacker

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 12 - A. Ejemplo No. 72 - A del texto.
! Algoritmo que calcula la posicin X e Y de la trayectoria
! de un proyectil dados la velocidad de impulso,
! su ngulo de disparo, se calcularn la coordenadas en funcin del tiempo.
!
! Se usar una subrutina para el clculo de la posicin.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Alfa = A*PI/180

! Vx = Vo*COS(Alfa)
! Vy = Vo*SIN(Alfa)
! x = Vx*t
! y = Vy*t-0.5*g*t^2
!
! Variables:
! X numrica, indica la posicin del proyectil.
! en el eje X del plano.
! Y numrica, indica la posicin del proyectil.
! en el eje Y del plano.
! T numrica, almacena el valor del tiempo de vuelo.
! G numrica, almacena el valor de la aceleracin de la gravedad.
! Vo
A numrica,
numrica,almacena
almacenael
elngulo
valor de
della
disparo.
velocidad de impulso.

! Vx numrica, almacena el clculo de la velocidad en el eje de las X.


! Vy numrica, almacena el clculo de la velocidad en el eje de las Y.
!
! Funciones: SIN(x), devuelve el valor de la funcin seno de x.

! COS(x), devuelve el valor de la funcin coseno de x.


! PI, devuelve el valor del nmero PI.
!
! Libreras:
! Ninguna.
!
! Mdulos: Ninguno.

! Inicializa el proceso ingresando los datos solicitados.


PRINT "Programa que calcula la posicin X e Y de un proyectil."

PRINT "Ingrese la velocidad de impulso (en m/s): ";


INPUT Vo
PRINT "Ingrese el ngulo de disparo (en grados): ";
INPUT A
LET T=0
PRINT
DO
CALL TRAYECTORIA(X, Y, Vo, A, T)
PRINT "Posicin en X del proyectil, transcurridos ";t;" segundos es ";X;"m"

- 336 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

PRINT "Posicin en Y del proyectil, transcurridos ";t;" segundos es ";Y;"m"


LET KEY
GET T=T+.01
S

LOOP UNTIL Y<=0 AND X<>0


END

! Subrutina que calcula la trayectoria.


SUB TRAYECTORIA(X, Y, Vo, A, T)
LET G = 9.8
LET Alfa = A*PI/180
LET Vx = Vo*COS(Alfa)
LET Vy = Vo*SIN(Alfa)
LET X = Vx*T
LET Y = Vy*T - 0.5*G*T^2
END SUB

Nota del autor:


En esta variacin del programa, utilizamos una funcin especial de nuestro True BASIC que
suspende temporalmente la ejecucin del programa hasta que se pulse una tecla; es la funcin
GETKEYy el valor de la tecla pulsada se almacena en la variable S. Revisen la Gua de Uso del
True BASIC para que aprendan algo ms de las instrucciones y funciones internas que posee
esta poderosa herramienta de programacin.

Algoritmo que intercambia el valor de dos variables. Implementar


Ejemplo 73.
un programa donde ingresados dos valores y asignados a dos variables,
haga que las mismas intercambien su valor. Implementar una subrutina
que realice el intercambio.

Con este ejercicio vamos a ensear una de las tcnicas ms usadas en los
procesos de clasificacin y bsqueda que en el captulo siguiente revisaremos, el
mismo que plantea lo siguiente:
a) Ingresar dos nmeros y asignarlos a dos variables A y B.

b) Presentar los valores originales de A y B.

c) Implementar una subrutina que realice el intercambio de valores.

d) Presentar los valores despus del intercambio.

Ahora, el problema real es la implementacin de la subrutina que haga el

- 337 -
Tras los pasos de un... Hacker

intercambio de los valores y para esto esbocemos una estrategia de solucin:


a) Ingresarn como parmetros a la subrutina las variables a intercambiar.

b) Necesitaremos usar una variable temporal (TEMP) para que no se pierda


uno de los valores, la lgica a seguir es la siguiente:

1. Asignamos el valor de la variable A a TEMP.

2. Asignamos el valor de la variable B a A.

3. Asignamos el valor de la variable TEMP a B.

c) Terminamos la subrutina devolviendo los valores intercambiados.

Nota del autor:


Como podemos observar se ha producido el intercambio de valor y a la variable TEMP, se la
conoce como variable de uso local de la subrutina, cuando ya dominen el uso de las tcnicas de
programacin les sugiero revisar el tema de variables locales (privadas) y globales (pblicas).

Ahora como sabemos definamos las variables a utilizar para resolver este
ejercicio de programacin:

a) Variable A, de tipo numrico.

b) Variable B, de tipo numrico.

c) Variable TEMP, de tipo numrico.

La subrutina implementada quedara as:

SUB SWAP(A,B)
LET A=B
TEMP=A

LET B=TEMP
END SUB

El programa que resuelve el problema planteado quedara as:

- 338 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.

! Programa No. 13. Ejemplo No. 73 del texto.


!
! Algoritmo que intercambia el valor de dos variables.
!
! Se usar una subrutina para realizar el intercambio.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables: A numrica, ingresada por el usuario.

! B numrica, ingresada por el usuario.


! TEMP numrica, variable temporal usada por la subrutina.
!
! Funciones:
! Ninguna.
!
! Libreras:
! Ninguna.
!
! Mdulos:
! Ninguno.
!

! Inicializa el proceso ingresando los datos solicitados.

PRINT "Programa que intercambia el valor de dos variables."


PRINT
PRINT "Ingrese el primer valor (A): ";
INPUT A
PRINT "Ingrese el segundo valor (B): ";
INPUT B
PRINT "Usted ha ingresado para A=";A;" y para B=";B;"..."
PRINT
PRINT "Realiza el intercambio..."
PRINT
CALL SWAP(A,B) ! Invoca a la subrutina de intercambio.

PRINT "Usted ahora tiene en A=";A;" y en B=";B;"..."


END

SUB SWAP(A,B)
LET B=TEMP
TEMP=A
A=B

END SUB

El cdigo digitado se vera as:

- 339 -
Tras los pasos de un... Hacker

Ejecutemos el programa y veamos qu hace nuestra subrutina?:

Obtendremos una pantalla parecida a la siguiente:

- 340 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

Luego de hacer clic, nuestro True BASIC nos informar que el programa se ha
ejecutado satisfactoriamente (Run successfully).

- 341 -
Tras los pasos de un... Hacker

- 342 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

EJERCICIOS PROPUESTOS:

Elaborar los algoritmos solicitados para resolver cada uno de los siguientes
problemas:

Ejercicio 251. Se quiere utilizar la computadora para transformar medidas de


capacidad de litros a galones. Se ingresar por teclado el valor de los litros a
transformar. Implementar una funcin para realizar el clculo. Presentar en
pantalla los resultados.
Se quiere utilizar la computadora para presentar los n trminos de una
Ejercicio 252.
razn geomtrica, se ingresarn nicamente n y la razn geomtrica.
Implementar una funcin que realice el clculo solicitado. Presentar en pantalla
los resultados, el algoritmo debe validar la informacin ingresada.

Se quiere utilizar la computadora para transformar las medidas de los


Ejercicio 253.
ngulos. Se ingresar por teclado el valor de un ngulo expresado en radianes.
Implementar una funcin para convertir de radianes a grados sexagesimales.
Presentar en pantalla los resultados.

Ejercicio 254. Se quiere utilizar la computadora para calcular la altura mxima a la


que llega un proyectil luego de ser disparado. Se ingresar por teclado el valor
del ngulo de disparo expresado en grados y la velocidad de impulso.
Implementar una funcin llamada HMAX(Vo, ALFA) la misma que realizar el
clculo y devolver el valor de la altura mxima alcanzada por el proyectil.
Presentar en pantalla los resultados.
Se quiere utilizar la computadora para calcular la distancia que alcanza
Ejercicio 255.
un mvil a velocidad constante transcurrido un tiempo dado. Se ingresar por
teclado el valor la velocidad de impulso y el tiempo transcurrido de trayectoria
(lineal). Implementar una funcin llamada Dist_Rec(Vo, T) la misma que
realizar el clculo y devolver el valor de la distancia recorrida por el mvil.
Presentar en pantalla los resultados.
Se quiere utilizar la computadora para que ingresadas tres notas de un
Ejercicio 256.
estudiante, se calcule el promedio alcanzado. Se ingresar por teclado el valor las
notas. Implementar una funcin la misma que realizar el clculo y devolver el
valor del promedio alcanzado. Presentar en pantalla los resultados.

- 343 -
Tras los pasos de un... Hacker

Se quiere utilizar la computadora para que ingresados por teclado el


Ejercicio 257.
radio inscrito de un polgono regular y el nmero de sus lados, dos funciones
calculen su rea y permetro. Presentar en pantalla los resultados.

Se quiere utilizar la computadora para que iterando (en ms,


Ejercicio 258.
milisegundos) el tiempo transcurrido en un experimento de laboratorio, se pueda
determinar las coordenadas de impacto de dos partculas que estn dotadas de
movimiento circular uniforme, por teclado se ingresarn el radio y las
coordenadas de los centros de las trayectorias, las velocidades de impulso de las
partculas. Se pide implementar las funciones y subrutinas necesarias para
resolver el problema, se deber determinar si el impacto es posible. Presentar en
pantalla los resultados.
Se quiere utilizar la computadora para que dado el radio circunscrito
Ejercicio 259.
de un polgono regular y el nmero de lados, se pueda determinar las
coordenadas donde se ubicaran sus vrtices, as como su permetro y su rea.
Implementar las funciones y las subrutinas para realizar el clculo. Los datos de
ingreso estn condicionados a que no puede ingresar un polgono con menos de 3
lados o mayor a 360 lados. El radio estar en el rango mayor que 0 a 1.000
unidades lineales de medida. Presentar en pantalla los resultados, el algoritmo
debe validar la informacin ingresada.
Se quiere utilizar la computadora para que ingresado por teclado un
Ejercicio 260.
nmero decimal, se calcule su correspondiente en una base numrica que estar
en el rango de 2 a 36. Implementar las funciones y subrutinas para realizar el
clculo. Presentar en pantalla los resultados, el algoritmo debe validar la
informacin ingresada.

NOTAS Y BIBLIOGRAFA
Sobre este tratado de Bucles, Funciones y Subrutinas, las notas han sido
elaboradas en base a publicaciones de revistas especializadas y la consulta de los
siguientes textos:

- 344 -
Bucles, funciones y subrutinas con BASIC... Captulo VIII.

- LGEBRAELEMENTAL MODERNA, M. O. Gonzlez J. D. Mancill, Editorial


KAPELUSZ, Publicado en Buenos Aires Argentina, 1.962.
- Matemticas y Astronoma, Tomo No. 11, Enciclopedia Salvat de las
Ciencias, Salvat S.A. de Ediciones, Pamplona, Espaa, 1.968.
- Fsica General, Francis W. Sears Mark W. Zemansky, Aguilar S.A. de
ediciones 1.9571.974, Publicado en MadridEspaa, 1.974.
- CMO PROGRAMAR COMPUTADORAS, URMOS.A, DE EDICIONES, Bilbao
Espaa, 1.977.
- Curso Prctico de Programacin, Intermedio Editores S.A., Bogot
Colombia, 1.984.
- EL ARTE DE PROGRAMAR ORDENADORES ALGORITMOS
FUNDAMENTALES - Volumen I, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.985.
- QL PROGAMACIN EN SUPERBASIC, Roy Atherton, MicroTextos S.A. de
ediciones, Madrid Espaa, 1.985.
- Programacin Estructurada en Lenguaje Pascal, ENCICLOPEDIA
PRCTICA DE LA INFORMTICAAPLICADA, TOMO 3, Juan Ignacio Puyol,
EDICIONESSIGLOCULTURALS.A., Madrid Espaa, Octubre de 1.986.
- EL ARTE DE PROGRAMAR ORDENADORES CLASIFICACIN Y
BSQUEDA - Volumen III, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.987.
- Structured BASIC Programming, John G. Kemeny & Thomas E. Kurtz, John
Wiley & Sons, Publicado en Estados Unidos de Norte Amrica, 1.987.
- True BASIC by Problem Solving, Brian D. Hahn, VCH Verlagsgesellschaft
mbH, Weinheim Repblica Federal de Alemania, 1.988.
- Personal Mathematics and Computing, Frank Wattenberg, MIT Press,
Publicado en Estados Unidos de Norte Amrica, 1.990.
- The Fun of Computing, John G. Kemeny, True BASIC Inc. 1.990,
Publicado en los Estados Unidos de Norte Amrica, 1.990.
- Programacin en C, Byron S. Gottfried, McGraw Hill / Interamericana de
Espaa S.A., Madrid Espaa, 1.991.
- DiscoveryPak, True BASIC Inc., True BASIC Press, Publicado en Estados
Unidos de Norte Amrica, 1.993.
- Ingeniera del Software Un enfoque prctico, Roger S. Pressman,
McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa, 1.993.

- 345 -
Tras los pasos de un... Hacker

- Organizacin y diseo de computadores La interfaz hardware /


software, David A. Patterson John L. Hennessy, McGraw Hill /
Interamericana de Espaa S.A., Madrid Espaa, 1.995.
- The YOU Based LABORATORY, TI-CBL EXPLORATIONS in Science and
Mathematics, Margo L. Mankus Frank Wattenberg, Weber State
University 1.996, Publicado por True BASIC Inc., 1.996.
- Lets Program It in True BASIC, Avery Catlin, True BASIC Press,
Publicado en Estados Unidos de Norte Amrica, 1.996.
- Programming for ENGINEERS in True BASIC, Avery Catlin, True BASIC
Press, Publicado en Estados Unidos de Norte Amrica, 1.996.
- LGEBRA LINEAL CON APLICACIONES, George Nakos David Joyner,
International Thompson Editores, Publicado por International Thompson
Editores S.A., 1.999.
- True BASIC Bronze Edition, Users Guide, John G. Kemeny Thomas E.
Kurtz, True BASIC Inc. 2.001, Publicado en los Estados Unidos de Norte
Amrica, 2.001.
- Matemtica e Informtica, Tomo No. 11, Enciclopedia Larousse del
Estudiante, Sociedad Comercial y Editorial Santiago Ltda., Santiago de
Chile, Chile, 2.000 2.002.
- Manual Moderno de Informtica, Labor Loerincs, Zamora Editores Ltda.,
Publicado por Quebecor World Bogot S.A., Impreso en Bogot
Colombia, 2.004.
- CLCULOAPLICADO, Laurence D. Hoffman, Gerald L. Bradley, Kenneth H.
Rosen, McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa,
2.004.
- La wikipedia, http://www.wikipedia.org. La enciclopedia libre de la
Internet.
- PC World Ecuador,
Magazine, http://www.pcmag.com
http://www.pcworld.com.ec/pcw_catt/index.php

- Notas de clase, Nstor Marroqun, 1.9891.994.


- Trabajos de varios autores publicados en la worldwide web.

- 346 -
INTRODUCCIN (IX)

Vendiendo algunas copias del programa de inventarios que haba desarrollado


y fruto de las recomendaciones que mis clientes hacan, empieza a crecer la
recin fundada empresa NMC Research. Hago varios contactos importantes con
algunas empresas nacionales de tecnologa en pos de redistribuir mi software de
inventarios.

Transcurra el mes de agosto de 1.992, cuando recibo inesperadamente la visita


de un muchacho de aproximadamente mi edad (22 aos) de tez triguea, delgado
y denotaba que no pona inters en su aspecto personal. Me dijo que tena algo
muy importante que comunicarme, solo se identific como Csar y segn l,
habra fundado el nuevo imperio latino de conocimiento informtico en el
ciberespacio, que sus dominios estaran en los pases latinos (toda Latino
Amrica, Espaa, Francia, Portugal, Italia, etc., en otras palabras Latino Amrica y
en Europa los dominios del antiguo imperio romano), me cont, que el medio de
comunicacin a la gran red lo tena por un acceso no autorizado (realmente
usaba el username y la password de algunos tcnicos despistados de un ISP
(Internet Service Provider) que por entonces empezaba a funcionar en Ecuador,
efectivamente era un acceso no autorizado). Por su forma de hablar y del
nerviosismo que denotaba, pens en primera instancia que tena algn problema
mental, entonces decid escucharlo pacienciosamente; me hablaba de ataques a
los servidores de correo electrnico que se estaban probando en los Estados
Unidos de Norte Amrica a travs de un nuevo servicio denominado Internet (la
red de redes), que el protocolo que lo estaban tratando de popularizar para esta
red era el TCP/IP (protocolo de comunicaciones muy usado actualmente en la
Internet, significa Transfer Control Protocol/Internet Protocol), de los conocidos
servicios de SMTP (Simple Mail Transfer Protocol) y POP (Post Office Protocol)
con los que funcionaran los famosos servidores de correo electrnico, hasta ese
entonces solamente haba tenido conocimiento de los BBS (Bulletin Board
Systems). Yo no tena ni idea de la Internet o peor an haber usado un cliente de
correo electrnico. Me comentaba que era lo que se impondra en los prximos
aos y quienes tendran acceso a publicitar sus empresas y productos a travs de
la Internet estaran a un paso de ser los pioneros del comercio electrnico
global (y por lo visto, no se equivoc en sus predicciones).

- 347 -
Tras los pasos de un... Hacker

Bueno, ese da solo le segu la corriente a tan singular personaje y me limit a


ofrecerle algo de comer y beber. Ante mi hospitalidad, notaba que tena un poco
ms de confianza y su tono de voz ya no sonaba nervioso, su actitud de timidez e
inseguridad de lo que me deca cambi radicalmente. Me propuso una apuesta,
para demostrarme que era un buen tcnico y que conoca algo ms que los
usuarios comunes y silvestres conocemos, me invit a formatear (inicializar)
el disco duro de mi computadora o que pagara lo que cueste volver a instalar el
sistema operativo y aplicativos que los tena funcionando en mi mquina, si su
procedimiento de recuperacin de informacin borrada fallaba. Acced sin
pensarlo mucho, ya que como tcnico saba que no correra ningn peligro de
daar mi computadora a lo mucho perdera mi informacin, pero como el pasado
fin de semana haba sacado el ltimo Back-Up del sistema en aproximadamente
40 disquetes de 3 de 1.44 MB de capacidad, le permit formatear mi
computadora. Ingresado el comando apropiado para el efecto en el popular
MS-DOS (FORMATC:, si no estn seguros de lo que van a hacer, por favor no lo
digiten), transcurri un breve tiempo y ya no tena informacin en mi disco. Para
cualquier usuario la computadora est inservible y sin informacin. Luego,
arranc el sistema desde unos disquetes de inicio (boot disks) que tena, ejecut
algunos programas que l mismo haba desarrollado, luego de fisgonear en los
sectores reservados de mi disco duro, mand a sobrescribir la segunda copia de
la FAT en la primera, realiz una verificacin de superficie y en mi disco
aparecieron unos directorios (hoy conocidos como carpetas de Windows para
los que usen MS-Windows), con varios nombres empezando en el DIR00001,
avanzando secuencialmente hasta tener prcticamente mi directorio raz
recuperado, luego procedi a localizar el directorio que tena el DOS, lo renombr
como DOS, a continuacin transfiri el sistema de arranque de los disquetes al
disco duro, apag la computadora y la volvi a encender. Ahora, con un utilitario
que en ese entonces era muy popular, denominado NORTON COMMANDER, me
pregunt viendo los archivos contenidos en cada directorio recuperado el
nombre original del mismo, mgicamente en pocos minutos haba recuperado mi
disco y tal cual estaba antes de haberlo formateado. Con esta demostracin, me
dijo que perteneca a un grupo de Hackers de Latino Amrica y que en su
comunidad estaban muchos tcnicos desde la Argentina hasta Mxico y que se
habra permitido visitarme para informarme que existen y que si en algn
momento necesito de su ayuda estn para servirme, sin ms detalles termin su
bebida y sali, hasta el da de hoy me explico el por qu? de esta singular visita.

- 348 -
La historia... Introduccin (IX).

A partir de ese da, viendo en persona lo que haba hecho (reconozco que tena un
conocimiento mucho ms avanzado que el mo y que solamente cierta lite de
tcnicos lo poseen), escuchado por vez primera de la existencia de la red de
redes, la famosa Internet, del correo electrnico, de protocolos de
comunicacin, de redes de computadoras, as como de ser testigo presencial de
la recuperacin casi mgica de mi informacin, decid entonces investigar un
poco ms sobre el mundo de los Hackers, su forma de trabajar y precisamente
tratar de seguir los pasos de este joven. Con el nico afn de demostrarme hasta
dnde podra llegar? al investigar estos temas y segn yo, superar sus
conocimientos.

Recuerdo como ancdota, que me toc realizar la recuperacin de la informacin


de un disco duro de una computadora personal y que por un formateo
accidental, un prestigioso abogado de la capital y que a la vez era hijo del
Registrador de la Propiedad de Quito, habra perdido. Se trataba de las minutas
de cientos de escrituras, las mismas que debera entregar a una notara para que
se celebren los respectivos contratos de compra venta de unas lotizaciones de
terrenos.
Es as que, recomendado por Ivn Franco (1.961 1.992), conoc al hijo del
Registrador de la Propiedad de Quito, hombre pacfico y afable con quien hara
una buena amistad. Emulando el procedimiento del Hacker que me haba
visitado das antes, comprobaba por mis propios medios que no era un sueo mo
la recuperacin casi mgica de la informacin borrada al formatear por
accidente un disco duro. Al poco tiempo entregu el disco recuperado y con la
satisfaccin del trabajo cumplido, el abogado gentilmente me cancel el valor
acordado por el trabajo. De estos trabajos me toc realizar varios, haciendo que
me convierta en un experto en el arte de recuperar informacin borrada.

Al ao siguiente, con los recursos econmicos que ya dispona en 1.993, pude


comprar algunos paquetes originales de la firma Microsoft, como hasta ese
entonces solo haba utilizado copias no autorizadas del sistema operativo y
algunos aplicativos, decid legalizar todo mi software e invert mucho dinero en
este proceso. Compr varios textos sobre los Hackers, los virus de
computadora, criptografa y otros temas esotricos de la computacin.

Fascinado con el relato hecho en el obra de Bruce Sterling, autor de la novela


The Hackers Crackdown: Law And Disorder On The Electronic Frontier, obra

- 349 -
Tras los pasos de un... Hacker

publicada en 1.993, donde describe algunas aventuras de jvenes prodigio,


agentes y abogados en una maraa detectivesca y judicial. Adems la prensa
local se haca eco de la vida y obra (se haba publicado algo) de un famoso
Hacker norteamericano llamado Kevin Mitnick alias CNDOR. En la televisin
pude ver la pelcula War Game (Juegos de Guerra, que se basa en las aventuras
de los Hackers). Mitnick que para el ao de 1.992 ya contaba con varias
detenciones y condenas por haberse infiltrado a cuanto servidor exista en ese
entonces y haberse apropiado de informacin valiosa. Su historial mostraba que
tena antecedentes delictivos en 1.981, 1.983, 1.987, 1.988 y el ltimo el de 1.991.
Para 1.992 ya era un hroe en el underground y a la fecha un Hacker prfugo
(hice el seguimiento de sus andanzas y de la batalla que librara contra otro
Hacker llamado Tsutomu Shimomura; quien, colaborando con el FBI, despus
de varios aos de persecucin lograron la captura de tan escurridizo delincuente
el 15 de febrero de 1.995). Cuenta la leyenda urbana tejida sobre su vida, que la
condena impuesta a Mitnick en 1.988 fue cambiada a una libertad condicional
que la mantiene hasta la fecha. Segn dicen, la sentencia consta de la prohibicin
de acercarse a una computadora a menos de 20 metros. Esta permuta judicial
supuestamente fue producto de la amenaza que la comunidad Hacker mundial
habra lanzado apenas se enter que su hroe haba sido apresado y condenado.
Retaron al poder del imperio Norte Americano con invadir prcticamente todos
los sistemas del Gobierno en Washington y sus alrededores, si no soltaban a
Mitnick al trmino de 72 horas de plasmado su reto. Nadie sabe a ciencia cierta si
esto efectivamente sucedi, pero lo real es que Mitnick vive libre bajo esta
singular condicin hasta nuestros das.

Ms adelante les seguir contando sobre la investigacin que hice acerca de los
famosos virus informticos y la criptografa, hasta tanto sigan aprendiendo un
poco ms de algunas tcnicas de programacin

- 350 -
CAPTULO IX. ARREGLOS, MTODOS DE
CLASIFICACIN Y BSQUEDA

9.1 ARREGLOS
En programacin, para algunos procedimientos necesitamos un tipo de variable
especial, la misma que puede contener varios valores y ser identificada por un
nombre.

A esta variable especial se la conoce como arreglo de datos, los mismos que
pueden ser tanto numricos, strings o booleanos.

A cada conjunto de datos que sern organizados bajo el mismo subndice de


ubicacin en este tipo de variable, se los conoce como dimensin del arreglo. El
nmero de dimensiones y de elementos por dimensin con las actuales
capacidades de memoria de las computadoras domsticas, estara limitado a la
cantidad de memoria RAM disponible de las mismas.
Un arreglo tiene dos elementos bsicos, una dimensin y un nmero de
elementos por dimensin; as, el arreglo ms elemental sera el que tiene una
dimensin y un elemento, equivaldra a una variable.
Grafiquemos un arreglo para entender este importante concepto, por ejemplo,
vamos a visualizar un arreglo de 4 dimensiones y 4 elementos por dimensin, el
arreglo ser numrico y lo vamos a denominar A.

Entonces el arreglo ser dimensionado como A(4,4,4,4), tendr un total de 256


elementos, direccionados desde el elemento A(1,1,1,1) hasta el elemento
A(4,4,4,4).

La primera dimensin tendr una estructura lineal de ubicacin de datos:

- 351 -
Tras los pasos de un... Hacker

Arreglo A
Primera Dimensin

Primer elemento del arreglo


A(1)
A(1)

A(2) Segundo elemento del arreglo


A(2)

A(3) Tercer elemento del arreglo


A(3)

Cuarto elemento del arreglo


A(4)
A(4)

La segunda dimensin tendr una estructura similar a un plano de datos:

Arreglo A
Segunda Dimensin

A(1,1) A(1,2) A(1,3) A(1,4) Segunda Dimensin A(1,j)

A(2,1) A(2,2) A(2,3) A(2,4)

A(3,1) A(3,2) A(3,3) A(3,4)

A(4,1) A(4,2) A(4,3) A(4,4)

Primera Dimensin A(i, 1)

- 352 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

La tercera dimensin tendr una estructura similar a un cubo de datos:

Arreglo A
Tercera Dimensin

Tercera Dimensin A(i,j, 1)

Segunda Dimensin A(1,j, k)


A(1,1,1) A(1,2,1) A(1,3,1) A(1,4,1)

A(2,1,1) A(2,2,1) A(2,3,1) A(2,4,1)

A(3,1,1) A(3,2,1) A(3,3,1) A(3,4,1)

A(4,1,1) A(4,2,1) A(4,3,1) A(4,4,1)

Primera Dimensin(i, 1, k)

La cuarta dimensin tendr una estructura similar a un apilamiento de cubos de


datos:

- 353 -
Tras los pasos de un... Hacker

Arreglo A
Cuarta dimensin
A(1,1,4,1) A(1,4,4,1)

A(1,1,1,1) A(1,2,1,1) A(1,3,1,1) A(1,4,1,1)

A(2,1,1,1) A(2,2,1,1) A(2,3,1,1) A(2,4,1,1)

A(3,1,1,1) A(3,2,1,1) A(3,3,1,1) A(3,4,1,1)

A(4,1,1,1) A(4,2,1,1) A(4,3,1,1) A(4,4,1,1)

A(1,1,1,2) A(1,2,1,2) A(1,3,1,2) A(1,4,1,2)

A(2,1,1,2) A(2,2,1,2) A(2,3,1,2) A(2,4,1,2)

A(3,1,1,2) A(3,2,1,2) A(3,3,1,2) A(3,4,1,2)

A(4,1,1,2) A(4,2,1,2) A(4,3,1,2) A(4,4,1,2)

A(1,1,1,3) A(1,2,1,3) A(1,3,1,3) A(1,4,1,3)

A(2,1,1,3) A(2,2,1,3) A(2,3,1,3) A(2,4,1,3)

A(3,1,1,3) A(3,2,1,3) A(3,3,1,3) A(3,4,1,3)

A(4,1,1,3) A(4,2,1,3) A(4,3,1,3) A(4,4,1,3)

A(1,1,1,4) A(1,2,1,4) A(1,3,1,4) A(1,4,1,4)

A(2,1,1,4) A(2,2,1,4) A(2,3,1,4) A(2,4,1,4)

A(3,1,1,4) A(3,2,1,4) A(3,3,1,4) A(3,4,1,4)

A(4,1,1,4) A(4,2,1,4) A(4,3,1,4) A(4,4,1,4)

- 354 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

Cada elemento del arreglo as definido A(i,j, k, l) podr contener un valor que el
usuario asigne para realizar cualquier proceso, a estas variables que ubican los
elementos de un arreglo se las conoce como subndices del arreglo. Se lee, por
ejemplo, para un arreglo de una dimensin A(i), como A de i. Para uno de dos
dimensiones A(i,j), ser A de i coma j.

En BASIC se los crea usando la instruccin:

DIM <ARREGLO(DIMENSIONES)>.

Ejemplo:
DIM A(4,4,4,4)

Para ingresar los datos a un arreglo es comn usar bucles determinados


anidados, para el ejemplo citado anteriormente, el ingreso de datos quedara de
la siguiente forma:

FOR I=1 TO 4
FOR J=1 TO 4
FOR K=1 TO 4
FOR L=1 TO 4
PRINT Ingrese el elemento ;I;,;J;,;K;,;L;:;
INPUT A(I,J,K,L)
NEXT L
NEXT K
NEXT J
NEXT I

VECTORES Y MATRICES

Los arreglos ms usados son los de una dimensin as como los de dos
dimensiones. En informtica, se denominan vectores y matrices respectivamente
(conceptos heredados de la matemtica). Sutilmente existe una diferencia
declarativa entre las dos estructuras, mientras a los vectores se los dimensiona
definiendo el nmero de elementos que contendr su nica dimensin, todas las
matrices tienen que tener dos dimensiones (nmero de filas y nmero de
columnas). As por ejemplo, el vector A(i), tiene exactamente la misma cantidad
de elementos que la matriz A(i,1) pero no son lo mismo.

Definidos de esta manera, vamos a realizar algunos ejercicios con vectores y

- 355 -
Tras los pasos de un... Hacker

matrices.

Nota del autor:


No es nuestro inters profundizar en el tema de clculos matriciales, pero debemos mencionar
que nuestro True BASIC tiene incorporadas potentes funciones para el clculo matricial, por lo
que les sugiero a quienes estn interesados en este tema especfico, revisen el conjunto de
instrucciones MAT que tiene incorporadas nuestro lenguaje de programacin.

EJERCICIOS RESUELTOS:

Algoritmo que promedia las 3 notas de 10 alumnos. Implementar


Ejemplo 74.
un programa donde ingresados los nombres de los alumnos y sus
respectivas 3 notas, nuestro programa luego de ingresados los datos,
presente el nombre del alumno, seguido de las notas y el promedio
obtenido. Usar vectores y matrices para resolver este problema.

Para resolver este problema, en primer lugar, tomemos nota de los detalles
planteados y propongamos una estrategia de solucin:
a) Tendremos que dimensionar un vector de 10 elementos N$(10), para
almacenar el listado de los alumnos, este vector ser de tipo string.

b) Hay que dimensionar una matriz de 10 filas por 4 columnas M(10,4), de


tipo numrico, aqu almacenaremos las 3 notas y en la cuarta columna
calcularemos el promedio de las tres notas.

c) Se usar la frmula:

Pi = (N(i,1) + N(i,2) + N(i,3)) / 3

Donde: Piindica el promedio del alumno i.

N(i,1), indica la primera nota del alumno i.

- 356 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

N(i,2), indica la segunda nota del alumno i.

N(i,3), indica la tercera nota del alumno i.

d) Ingresaremos los nombres de los alumnos.


e) Ingresaremos las tres notas de cada alumno.

f) Calcularemos el promedio y lo guardaremos en la cuarta columna de la


matriz definida.

g) Ahora presentaremos el listado de alumnos, notas y promedio respectivo,


con un mensaje identificativo. Por ejemplo:

Listado de promedios del curso de informtica:

Nombre: N1: N2: N3: Final:

Definamos una subrutina para cada proceso citado en los pasos d), e), f) y g).

Las subrutinas desarrolladas, podran ser como las siguientes:

SUB
! Subrutina que ingresa la lista de nombres...
INGRESO_NOMBRES(N$())

FOR I = 1 TO 10
PRINT "Ingrese el nombre del alumno: ";i
PRINT "Nombre";
INPUT N$(I)
NEXT I
END SUB

SUB
! Subrutina que ingresa las notas de cada alumno...
INGRESO_NOTAS(N$(),M(,))

FOR I = 1 TO 10
CLEAR
PRINT "Para el alumno: ";I

PRINT N$(I)
PRINT
PRINT "Ingrese las notas ..."
FOR J=1 TO 3
! Valida que la nota ingresada est en el rango de 0 a 20.
DO
PRINT "Nota";J;":";
LOOP
INPUT
UNTIL
M(I,J)
M(I,J)>=0 AND M(I,J)<=20

NEXT J
NEXT I

- 357 -
Tras los pasos de un... Hacker

END SUB

! Subrutina
SUB que
TOcalcula
PROMEDIOS(M(,))
FOR I = 1 10 los promedios de cada alumno...

FOR J = 1 TO 3
LET M(I,4) = M(I,4) + M(I,J)
NEXT J
LET M(I,4) = M(I,4)/3
NEXT I
END SUB
SUB
! Subrutina que presenta por pantalla los resultados...
PRESENTAR_DATOS(N$(),M(,))

CLEAR
PRINT "Listado de promedios del curso de informtica:"

PRINT "NOMBRE:";TAB(60);"N1:";TAB(70);"N2:";TAB(80);"N3:";TAB(90);"FINAL:"
FOR I=1 TO 10
PRINT N$(I);
FOR J=1 TO 3

PRINT TAB(50+J*10);
PRINT USING "##.##":M(I,J);
NEXT J
PRINT TAB(90);
PRINT USING "##.##":M(I,J)
NEXT I
PRINT
END SUB

La implementacin final quedara de la siguiente forma:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 14. Ejemplo No. 74 del texto.
!
! Algoritmo que calcula el promedio de 3 notas de 10 alumnos.
!
! Se usarn vectores y matrices para almacenar los datos y
! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas: M(4) = (M(1) + M(2) + M(3)) / 3

!
! Variables: I,J numricas, contadores de alumnos y notas.

! N$(10), vector string donde se almacenarn los


! las notas
M(10,4),
nombres de el promedio.
matriz
ylos numrica donde almacenaremos
alumnos.

- 358 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

!
! Funciones:
! Ninguna.
!
! Libreras:
! Ninguna.
!
! Mdulos:
! Ninguno.
!

! Inicia el proceso.

! Dimensiona los vectores y matrices.


DIM N$(10), M(10,4)

PRINT "Programa que calcula el promedio de notas de 10 alumnos..."

CALL
! Ingresa la lista de nombres...
INGRESO_NOMBRES(N$)

CALL
! Ingresa las notas de cada alumno...
INGRESO_NOTAS(N$,M)

Calcula
CALL
! los promedios de cada alumno...
PROMEDIOS(M)

CALL PRESENTAR_DATOS(N$,M)
! Presenta por pantalla los resultados...

! Fin
END

SUB
! Subrutina que ingresa la lista de nombres...
INGRESO_NOMBRES(N$())

FOR I = 1 TO 10
PRINT "Nombre";
"Ingrese el nombre del alumno: ";i

INPUT N$(I)
NEXT I
END SUB

SUB
! Subrutina que ingresa las notas de cada alumno...
INGRESO_NOTAS(N$(),M(,))

FOR I = 1 TO 10
CLEAR
PRINT "Para el alumno: ";I

PRINT N$(I)
PRINT
PRINT "Ingrese las notas ..."
FOR J=1 TO 3
! Valida que la nota ingresada est en el rango de 0 a 20.
DO
PRINT "Nota";J;":";

- 359 -
Tras los pasos de un.. Hacker

INPUT M(I, J)
LOOP UNTIL M (I, J) >=0 AND M (I, J) <=20
NEXT J
NEXT T
END SUE

! Sub rutina que calcula los promedios de cada alumno. . .


SUB PROMEDIOS (M (, ) )
EOR. T = 1. TO 1 (O
EOR J = 1. TO 3
LET M (I, 4 ) = M (I, 4 ) + M (I, J)
NEXT J

LET M (I, 4 ) = M (I, 4 )/3


NEXT T
END SUE

! Subrutina que presenta por pantalla los resultados . . .


suB PRESENTAR DATOS (NS (), M (, ) )
CILEAR

PRINT "Listado de promedios del curso de informtica:"


PRINT

PRINT "NOMBRE: "; TAB (6O) ; "N1: "; TAB (7O) ; "N2: "; TAB (8O) ; "N3: "; TAB (9O) ; "FINAL: "
EOR. T=1 TO 1 (O
PRINT NS (I) ;
EOR J=1. TO A
PRINT TAB (5 O+U* 1O) ;
PRINT USING "##. ## ": M(I, J) ;
NEXT J
PRINT TAB (90) ;
PRINT USING "##. ## ": M(I, J)
NEXT T
PRINT
END SUE

Corramos nuestro programa para ver lo que hace:

,,...,...,
IEEEEEEEiliII
File
Prgrama que calcula el promedio de notas de 10 alumnis . . .

Ingres= El nombre del alumn: 1


Ibr=8

Ingresemos los nombres de nuestros 10 alumnos.

- 360 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

Ahora ingresemos las 3 notas de cada alumno

Terminado el ingreso de datos, el programa nos presentar el resultado de la


siguiente forma:

- 361 -
Tras los pasos de un... Hacker

Nota del autor:


En este ejercicio utilizamos una instruccin que nos permite limpiar la pantalla para presentar
un mensaje, hablamos de la instruccin CLEAR. Tambin para posicionar los resultados
correctamente usamos la funcin TAB(X) que le dice a nuestro True BASIC que ubique el
cursor en la columna X de la fila que actualmente est en uso. Como dije, siempre tengan a mano
la Gua de Uso del True BASIC.

Algoritmo que resuelve el problema de los cuadrados mgicos de


Ejemplo 75.
orden n. Implementar un programa usando una matriz para almacenar los
datos, procesarlos y presentarlos. Verificar que el resultado est correcto.

Para resolver este problema, en primer lugar, investiguemos un poco qu es un


cuadrado mgico?
Un cuadrado mgico es una matriz cuadrada numrica (excepto la de orden 2),
cuyos elementos sern los nmeros del 1 hasta el cuadrado del orden de la
matriz, ingresados de forma secuencial. As el cuadrado mgico de orden 3
tendr elementos que van del 1 al 9, el de orden 4 del 1 al 16 y as sucesivamente.
La particularidad de esta matriz cuadrada de orden n, es que ubicados de una
forma especial estos nmeros; tanto los contenidos en las filas como las columnas
y las diagonales principales de la matriz sumarn la misma cantidad.

Ejemplo:

- 362 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

Cuadrado Mgico
4+5+6= 15
2 De Orden
7
3 6

2 + 7 + 6 = 15

9 5 1 9 + 5 + 1 = 15

4 3 8 4 + 3 + 8 = 15

2+5+8 = 15

6 + 1 + 8 = 15

7+5+3= 15

2+9+4= 15

- 363 -
Tras los pasos de un... Hacker

Ahora veamos el de orden 4:

Cuadrado Mgico
12
8
1 10
15
6 Orden
De 11
14
7 13 + 10 + 7 + 4 = 34

15 14 +4=34
4 1+ +

12+6+7 9=34
9 +

+10+ 11 +5=34
5 8

13 +3 +2+16=34
13 3 2 16

1 + 6 + 11 + 16 = 34

4 + 9 + 5 + 16 = 34

14 + 7 + 11 + 2 = 34

15+6+10+3=34

1+12+8+13=34

- 364 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

Si nos ponemos a resolver algunos de estos cuadrados a mano, es decir creando


las matrices cuadradas respectivas y llenndolos, observaremos que:

1. Los cuadrados de orden impar siempre se llenan de la misma forma,


empezando con el elemento que est en la ltima columna y en la fila del
centro; avanzando en forma diagonal derecha superior. Si esta supera el
lmite de la matriz, se sigue con el elemento complementario, si la
diagonal ya est ocupada se mueve una posicin a la izquierda y
continuamos con la diagonal derecha superior, hasta llegar al ltimo
elemento de la matriz.
2. Para llenar correctamente los cuadrados mgicos de orden par mltiplos
de 4, se sigue el siguiente procedimiento: Dividiremos alternativamente a
nuestra matriz en dos e intercambiaremos los valores de los elementos
correspondientes inversos, igualmente lo haremos con las filas de la
matriz hasta completar las mitades matriciales sin llegar a intercambiar
ni la fila o columna inicial con la final. Es decir, por ejemplo para el
cuadrado de orden 4, intercambiaremos en orden inverso los elementos
de la columna 2 con los de la columna 3, los de la fila 2 con los de la fila 3,
por la condicin terminar nuestro proceso ya que no podemos
intercambiar los de la columna 4 con los de la columna 1 y los de la fila 4
con los de la fila 1. As terminamos el proceso.

3. Queda como tarea de clase determinar el mtodo para resolver los


cuadrados mgicos pares no mltiplos de 4. Pero de igual forma les
presento la solucin para que la discutan con el profesor gua.

Nota del autor:


Como veremos, reutilizaremos el cdigo de la subrutina para el intercambio de los valores que
ya lo hemos visto. Justamente, esta caracterstica de las subrutinas y funciones, la de reutilizar
el cdigo sin volver a codificar, simplifica la creacin de nuevos algoritmos. Consiste en incluir
estos procedimientos generales en una librera de funciones y subrutinas o mdulo, luego
invocando a la librera podremos usar estos procedimientos en un nuevo programa.

La implementacin del programa quedara como sigue:

- 365 -
Tras los pasos de un... Hacker

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 15. Ejemplo No. 75 del texto.
!
! Algoritmo que resuelve el problema de los cuadrados mgicos.
!
! Se usar una matriz para almacenar los datos y
! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas:
! SUM1 = M(1,J) + M(2,J) + M(3,J) ... + M(I,J)
! SUM2 = M(I,1) + M(I,2) + M(I,3) ... + M(I,J)
! SUM3 = M(1,1) + M(2,2) + M(3,3) ... + M(I,J)
! SUM4 = M(1,J) + M(2,J-1) + M(3,J-2) ... + M(I,1)
!
! Variables:
! ORDEN numrica, ingresada por el usuario.
! I, J numricas, subndices de la matriz.
! BIEN numrica, bandera para verificar sumatoria.
! A, B, TEMP numricas, temporales para procedimiento
! de intercambio de valor.
! POX, POY, K numricas, temporales para procedimiento
! MEDIO, VECES numricas, temporales para procedimiento
! MEDIOX, MEDIOY numricas, temporales para procedimiento
!
! Funciones:
! Internas de True BASIC.
! ZER(), inicializa con ceros y redimensiona una
! matriz numrica a n x m elementos.
! INT(), retorna la parte entera de un nmero.
! SIZE(), retorna el valor de la dimensin elegida
! de un arreglo.
! MOD(), retorna el valor del mdulo solicitado.
!
! Libreras:
! Ninguna.
!
! Mdulos:
! Ninguno.
!

! Inicia el proceso.

! Dimensiona la matriz...

DIM N(0,0)
CLEAR
! Ingresa orden de la matriz cuadrada...
PRINT "Deme el orden del cuadrado mgico a resolver: ";
INPUT ORDEN

! Inicializa la matriz con ceros y redimensiona la matriz...

- 366 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

MAT N=ZER(ORDEN,ORDEN)

! Escoge un mtodo de llenado.


IF NOT(ORDEN/2=INT(ORDEN/2)) THEN
ELSE IF MOD(ORDEN,4)=0
CALL IMPARES(N) THEN

CALL
ELSE LLENAR(N)THEN
PARES4(N)
IF ORDEN<>2

CALL ACOMODOPAR(N)
ELSE LLENAR(N)
PARES4(N)

PRINT No existe solucin para este cuadrado


STOP
END IF

IF
! Presenta
CALL datos
ORDEN<=16 THENen
COMPROBAR(N) pantalla,
CALL si no solo comprueba datos...
PRESENTAR(N)

! Espera
GET KEY Sa que el usuario pulse una tecla para terminar...

! Limpia la pantalla.
CLEAR

! Fin
END

! Este
SUB FORproceso
LLENAR(N(,))
I=1 J=1
FOR
Inicializa TO solo para
laSIZE(N,1)
TO los
SIZE(N,2)
matriz con cuadrados
los valores de orden par...
necesarios...

LET K=K+1
LET N(I,J)=K
NEXT J
NEXT I
END SUB

! Llena el cuadrado con los nmeros en la posicin apropiada


! cuando
SUB el cuadrado es de orden impar...
LET POY=INT(SIZE(N,1)/2+1)
IMPARES(N(,))

LET FOR
FOR POX=SIZE(N,1)
I=1 TO SIZE(N,1)
J=1 TO SIZE(N,2)

LET K=K+1
IF N(POY,POX)=0 THEN
ELSE
LET POY=POY+1
LET POX=POX-2
IF POY>SIZE(N,1) THEN
LET POY=1
END IF

- 367 -
Tras los pasos de un.. Hacker

IE" POX1 THEN


LET POX=SIZE (N, 2) 1
END IE"
END IE"

LET N(POY, POX) =K


LET POX=POX+1
LET POY=POY1
IF POX>SIZE (N, 1) THEN
LET POX=1
END IE"
IE" POY1, THEN
LET POY=SIZE (N, 2)
END IE"
NEXT J
NEXT T
END SUE

! Intercambia filas complementarias y columnas complementarias


! comenzando en la mitad de la matriz . . .
SUB PARES4 (N (, ) )
LET MEDIO=SIZE (N, 1)/2
FOR VECES=1. TO MEDIO1
EOR. K=O) TO VECES1
EOR. T=1 TO 2 MEDIO
CALL SWAP (N(I, MEDIOK) , N (2* MEDIO+1I, MEDIO+1+K) )
NEXT T
EOR. T=1 TO 2 MEDIO
CALL SWAP (N (MEDIOK, I) , N(MEDIO+1+K, 2* MEDIO+1I) )
NEXT T
NEXT K
NEXT VECES
END SUE

! Procedimiento especial para cuadrados mgicos de orden par


! no mltiplo de 4 . . .
SUB ACOMODOPAR (N (, ) )
LET MEDIOY=SIZE (N, 1)/2
LET MEDIOX=SIZE (N, 1)/2+1
CALL SWAP (N(1, MEDIOX) , N(SIZE (N, 1) , MEDIOX) )
CALL SWAP (N (MEDIOY, 1) , N(MEDIOY, SIZE(N, 1 ) ) )
FOR J=2 TO SIZE (N, 1)/2
CALL SWAP (N ( 1, J.) , N ( 1, SIZE (N, 1 ) J+1 ) )
CALL SWAP (N ( U, 1 ) , N (SIZE (N, 1 ) J+1, 1 ) )
NEXT J

FOR J=SIZE (N, 2) 1. TO SIZE(N, 2)


CALL SWAP (N (SIZE(N, 2)/2, J) , N (SIZE (N, 2) /2+1, J) )
CALL SWAP (N (J, SIZE (N, 2)/2) , N(J, SIZE(N,2)/2+1) )
NEXT J
END SUE

! Procedimiento de comprobacin de valores segn condicin de


! un cuadrado mgico . . .
SUB COMPROBAR (N (, ) )
FOR I=1. TO SIZE (N, 1)
LET SUM1, SUM2, SUM3, SUM4=O
FOR J=1. TO SIZE (N, 2)

- 368 -
Arreglos, mtodos de clasificacin y bsqueda. Captulo IX.

LET SUM1=SUM1+N (I, J)


NEXT J

FOR J=1. TO SIZE (N, 2)


LET SUM2=SUM2+N (J, I)
NEXT J
IE" SUM1=SUM2 AND BIEN=0 THEN LET ETEN=0 ELSE LET. BIEN=1
NEXT T

FOR J=1. TO SIZE (N, 2)


LET SUM3=SUM3+N (J, J)
NEXT J

FOR J=1. TO SIZE (N, 2)


LET SUM4=SUM4+N (SIZE (N, 2) J+1, J.)
NEXT J
IE" SUM3=SUMA AND BIEN=0 THEN LET. BIEN=0. EL SE LET ETEN=1
IF BIEN=O THEN PRINT TAB (1, 60); "La suma es "; SUM3;" COMPROBADOl"
END SUE

! Presenta los datos conforme lo solicitado . . .


! Muestra en pantalla el cuadrado mgico resuelto . . .
SUB PRESENTAR (N (, ) )
FOR I=O TO SIZE (N, 1) 1
FOR J=O TO SIZE (N, 2) 1
SET CURSOR I 2+2, J.5+1
PRINT " ";
SET CURSOR I2+3, J5+1
PRINT " | ";
SET CURSOR I2+4, J5+1
PRINT " ";
SET CURSOR I2+3, J5+2
PRINT N(I+1, J+1)
SET CURSOR I2+3, U 5+6
PRINT " | ";
NEXT J
NEXT T
PRINT
END SUE

! Sub rutina de intercambio de datos . . .


SUB SWAP (A, B)
ILET" TEME=A
ILET A=E
ILET. E=TEME
END SUE

Ahora corramos nuestro programa y veamos lo que hace, veremos una pantalla
parecida a la siguiente:

- 369 -
Tras los pasos de un... Hacker

Para un cuadrado de orden 3:

Para un cuadrado de orden 4:

Para un cuadrado de orden 5:

- 370 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

Para un cuadrado de orden 6:

Para un cuadrado de orden 7:

Para un cuadrado de orden 8:

- 371 -
Tras los pasos de un... Hacker

Para un cuadrado de orden 9:

Para un cuadrado de orden 10:

- 372 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

9.2 MTODOS DE CLASIFICACIN

Dominados los conceptos bsicos de la programacin, ahora estudiemos algunos


mtodos que nos permiten realizar el ordenamiento de una lista de n nmeros o
n palabras, estos procedimientos se los conoce como mtodos de clasificacin.

Los algoritmos que resuelven este problema especfico, han ido evolucionando
con el tiempo; es interesante analizar las implementaciones que algunos famosos
programadores han hecho. Este anlisis nos permite ver la optimizacin del
mtodo.

Aqu podremos entender el concepto de eficiencia algortmica, ya que sin cambiar


el HARDWARE de nuestra computadora, realizaremos la misma tarea ms rpido,
es decir, los programas son ms eficientes.

En este apartado, debemos tener claro que todos los mtodos de clasificacin
hacen intercambio de valores dentro del vector definido, lo nico que cambia es
la lgica de cmo hacerlo? y cundo hacerlo?

Explicaremos algunos de los mtodos para que se entienda la mecnica de


trabajo de los algoritmos de ordenamiento. Otros, nicamente mostraremos el
cdigo fuente del mtodo y en lo posible haremos un poco de historia.

Nota del autor:


Les invito a que discutan cada una de las implementaciones de los mtodos de clasificacin
presentados con el profesor gua; y, en un pequeo laboratorio de informtica comparen la
eficiencia de cada implementacin. Pueden elaborar un informe del tiempo que se demora cada
mtodo versus el nmero de elementos, hay que tener en cuenta para que la comparacin sea
justa, se debe utilizar el mismo vector generado como entrada a las diferentes subrutinas de
ordenamiento y la misma configuracin de la computadora.

Antes que prosigan, sera bueno que intenten resolver el siguiente problema:
Dado el vector numrico A, dimensionado con 5 elementos, escriban un
programa que los ordene en forma ascendente. Los datos son:

- 373 -
Tras los pasos de un... Hacker

A(1)=3
A(2) = 1
A(3)=5
A(4) = 4
A(5)=2

Luego nuestro programa ordenar este vector como sigue:

A(1)=1
A(2)=2
A(3)=3
A(4) = 4
A(5)=5

Es necesario que traten de realizar el ejercicio propuesto, si ya estn


familiarizados con algn mtodo de ordenamiento por favor hagan cuenta que
esta es la primera vez que estn intentando abordar este problema.

Si ustedes pudieron implementar algn algoritmo que ordene el vector,


necesariamente debe encasillarse en alguno de estos mtodos generales:

1. Clasificacin por insercin. Se considera un elemento a la vez y cada


nuevo elemento se ubica en la posicin correcta en funcin de los
elementos previamente clasificados.

2. Clasificacin por intercambio. Utilizamos un mtodo de intercambio


cuando dos elementos que no estn en orden los intercambiamos para
ubicarlos correctamente, terminar el procedimiento cuando ya no sea
necesario hacer ms intercambios.

3. Clasificacin por seleccin. Con estos procedimientos se ubican los


elementos menores o mayores segn el caso y se los va ubicando en la
posicin que corresponde.

4. Mtodo propio de clasificacin. Quiz este procedimiento solo


funciona para los 5 elementos propuestos y deje de funcionar para ms
elementos.

- 374 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

En todo caso es posible que se haya inventado un nuevo mtodo de


ordenamiento.
El criterio de clasificacin para este tipo de algoritmos no es oficial, ya que
muchas implementaciones pueden combinar varias clases de ordenamiento en el
mismo algoritmo. Tambin hay que recordar que existe multitud de mtodos de
ordenamiento y solo mostraremos 9 de los ms populares.

Ahora regresando a nuestra solucin, la misma debe ser general y no tan solo
funcionar para los 5 elementos propuestos como ejercicio.

Para el laboratorio que realizaremos al final de este apartado, probaremos la


eficiencia de nuestros algoritmos con vectores que contengan 20.000, 15.000,
10.000, 5.000 y 2.500 elementos.

LA IMPLEMENTACIN
Para todos los programas ejemplo de los mtodos de ordenamiento, tendremos
que definir algunas subrutinas que nos ayudarn a mostrar un mensaje de
presentacin del programa, carga de valores iniciales aleatorios, el contenido del
vector, una funcin que nos ayude a controlar el tiempo de ejecucin de nuestro
algoritmo, una subrutina que nos ayude a realizar el intercambio de valores entre
dos variables; y, en s la subrutina de ordenamiento con el mtodo seleccionado.

As definidas estas necesidades, implementaremos dos libreras de


procedimientos y los guardaremos en los archivos MENSORT.TRU y
S_LABLIB.TRU. En la primera guardaremos las funciones y procedimientos para
mostrar los mensajes necesarios, en la otra, iremos guardando los mtodos de
ordenamiento y la subrutina de intercambio de valores entre dos variables.

Empecemos definiendo la funcin de conversin del tiempo de ejecucin, esta


funcin nos arrojar el tiempo utilizado en un formato de HH:MM:SS.SSS, es decir
horas, minutos y segundos (con una precisin en milisegundos), luego las
subrutinas auxiliares. La librera MENSORT.TRU, queda definida as:

- 375 -
Tras los pasos de un... Hacker

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Librera de procedimientos y subrutinas auxiliares para ilustrar los
! Mtodos de ordenamiento.
!
! Autor: Nstor Marroqun.

! Variables:
! A, vector numrico, contendr los datos.
! I, numrica, contador de los procesos.
! T numrica, tiempo de ejecucin.
! S numrica, temporal captura cdigo de tecla pulsada.
! N numrica, cantidad de elementos en el vector.
! HORAS$, MIN$, SEGI$, SEGF$ strings, temporales para conversin de
! tiempo de ejecucin.
! HORAS, MIN, SEG numricas, temporales para conversin de tiempo de
! ejecucin.
! V1, V2, TEMP numricas, temporales para intercambio de valores.
!
! Funciones:
! Definida por el usuario.
! Tiempo_Transcurrido$, funcin string que devuelve el valor del tiempo
! transcurrido en un formato HH:MM:SS.SSS el tiempo en segundos se
! expresar en milisegundos.
!
! Internas de True BASIC.
! SIZE(A), devuelve el nmero de elementos de un arreglo A.
! ZER(X), inicializa con ceros un arreglo numrico y lo redimensiona
! RND, funcin que calcula un nmero pseudoaleatorio.
a X elementos.

! INT(N), funcin que devuelve el valor entero de un nmero N.


! RANDOMIZE, funcin que inicializa la semilla de generacin de los
! nmeros pseudoaleatorios.
! IP(N), devuelve la parte entera del nmero N.
! FP(N), devuelve la parte fraccionaria del nmero N.
! TIME, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.
! ROUND(N,m), devuelve el nmero con m decimales aproximando el ltimo
! valor.
! TRIM$(A$), elimina los espacios exteriores de un string.
! LEN(A$), devuelve el nmero de caracteres que contiene la variable
! string.
! STR$(N), convierte un nmero a string.
! POS(X$,Y$,m), devuelve la posicin de coincidencia de la cadena Y$ en
! X$ a partir del byte m.
!
! Libreras:
! Ninguna.
!
! Mdulos:
! Ninguno.
!

EXTERNAL

- 376 -
Arreglos, mtodos de clasificacin y bsqueda. Captulo IX.

! Euncin que transforma los segundos transcurridos a un formato de:


! HH: MM:SS. SSS, los segundos se expresan en milisegundos.
EUNCTION Tiempo. Transcurrido 3 (T)
! Convierte el tiempo a horas.
LET HORAS=INT (T/36OO)
LET HORASS=TRIMS (STRS (HORAS) )
LET HORASS="OO" | O:2LEN (HORASS) | HORASS
! Convierte la fraccin de hora a minutos .
LET MIN=INT ( (THORAS 3600) /60)
LET MINS=TRIMS (STRS (MIN) )
LET MINS="OO" | O:2LEN (MINS) | MINS
! Convierte la fraccin de minuto a milisegundos.
LET SEG=ROUND ( (THORAS 36OOMIN 6O) , 3.)
! Toma la parte entera de los segundos.
LET SEGIS=TRIMS (STRS (IP (SEG) ) )
LET SEGIS="OO" [O: 2LEN (SEGIS) | SEGIS
! Toma la parte fraccionaria de los segundos.
LET SEGFS=TRIMS (STRS (FP (SEG) ) )
LET SEGFS=SEGFS "OOO"
! Verifica que existan milisegundos.
IF. Pos (SEGFS, ".")=O THEN LET SEGFS=". "SEGES
! Eorma el string para expresar los segundos con milisegundos.
LET SEGS=SEGIS, SEGFS [1:4 ]
LET. Tiempo Transcurridos=HORASS ": "MINS ": "SEGs
END FUNCTION

! Sub rutina que carga el vector con datos aleatorios . . .


suB LLENAR DATOS (A() )
! Inicializa la semilla pseudoaleatoria del generador RND.
RANDOMIZE
! Obtiene el nmero de elementos del vector A. . .
LET N=SIZE (A)
EOR. T=1 TO N

! Calcula un nmero pseudoaleatorio comprendido ente 0 y N.


LET A (I)=INT (RND (N+1) )
NEXT T
END SUE

! Sub rutina que muestra los datos del vector en pantalla . . .


suB PRESENTA VECTOR (A() )
LET N=SIZE (A)
PRINT
PRINT "Actualmente en el vector estn" ; N; "elementos : "
PRINT
! Muestra los elementos del vector . . .
EOR. T=1 TO N
PRINT A (I) ;
NEXT T
PRINT
PRINT

PRINT "Pulse una tecla para continuar. . .


PRINT
END SUE

! Subrutina que muestra un mensaje de saludo y carga por vez primera el vector. . .
SUB PRESENTAR (a ( ) )

- 377 -
Tras los pasos de un... Hacker

Inicializa
SET
! BACK 0 el color de fondo y caracteres de la pantalla...

SET COLOR 15
! Limpia la pantalla...
CLEAR
Presenta el mensaje de saludo...
PRINT "PROGRAMA SORT Ver 1.0, LABORATORIO DE INFORMATICA."
!
PRINT
PRINT "Diseo:"
PRINT Nstor Marroqun."
PRINT " 1.992 - 2.010 (c) NMC Research Ca. Ltda."
PRINT " Quito - Ecuador."
SET COLOR 7
PRINT
PRINT "Vector antes de ser ordenado:"
PRINT
! Verifica que el vector tenga datos...
IF SIZE(A)=0 THEN
! Ingresa y valida que el vector no tenga menos de 1 elemento o ms de
! 20000 elementos...
DO
PRINT "Cuntos elementos van a ser ordenados:";
INPUT N
LOOP WHILE N<1 OR N>20000
! Inicializa el vector con N datos...
MAT A=ZER(N)
CALL LLENAR_DATOS(A)
END IF
CALL
GET PRESENTA_VECTOR(A)
! Presenta
KEY S en pantalla el contenido del vector...

END SUB

! Subrutina que presenta estadstica de evaluacin...


SUB PRESENTAR_EST(A(),NMET$(),R(,))
DECLARE FUNCTION Tiempo_Transcurrido$
! Inicializa
SET BACK 0 el color de fondo y caracteres de la pantalla...

SET COLOR 15
! Limpia la pantalla...
CLEAR
! Presenta el mensaje
"PROGRAMA de saludo...
SORT Ver 1.0, LABORATORIO DE INFORMATICA."
PRINT
PRINT
PRINT "Diseo:"
PRINT Nstor Marroqun."
PRINT " 1.992 - 2.010 (c) NMC Research Ca. Ltda."
PRINT " Quito - Ecuador."
PRINT "
! Clasifica los mtodos de ordenamiento desde el ms lento al ms rpido...
CALL MAT_SHELL_SORT(R,2)
SET COLOR 7
PRINT
PRINT "Clasificacin de los mtodos evaluados por su rendimiento."
PRINT
PRINT "Criterio: Del ms rpido al ms lento."

- 378 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

PRINT
SET COLOR 15
PRINT "Mtodo:";TAB(30);"Tiempo ocupado:";TAB(50);"Elementos ordenados:"
SET COLOR 7
FOR I=1 TO 9
PRINT NMET$(R(I,1));TAB(30);Tiempo_Transcurrido$(R(I,2));TAB(50);SIZE(A)
NEXT I
PRINT
PRINT
GET KEY"Pulse
S una tecla para finalizar..."

END SUB

La librera S_LABLIB.TRU, empieza a definirse con la subrutina que intercambia


los valores de dos variables:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Librera de mtodos de ordenamiento.
!
! Autor: Nstor Marroqun.

! Variables:
! TMP vector numrico, contendr los datos.
! I, J, K, numricas, contadores de los procesos.
! N numrica, cantidad de elementos en el vector.
! V1, V2, TEMP numricas, variables temporales.
! LI, LS, R, X numricas, punteros para intercambio de valores.
!
! Funciones:
! Internas de True BASIC.
! SIZE(A), devuelve el nmero de elementos de un arreglo A.
! INT(N), funcin que devuelve el valor entero de un nmero N.
!
! Libreras:
! Ninguna.
!
! Mdulos:
! Ninguno.
!

EXTERNAL

! Subrutina que intercambia los valores entre dos variables...


SUB SWAP(V1,V2)
LET TEMP=V1
LET V1=V2
LET V2=TEMP
END SUB

- 379 -
Tras los pasos de un... Hacker

9.2.1 MTODOS POR INSERCIN

INSERCIN DIRECTA
El mtodo de insercin directa es el ms obvio y fcil de implementar, consiste
en:
a) Escoger un elemento, empezando desde el segundo del vector ingresado.

b) Compararlo con los inmediatos anteriores (estos ya estn en orden).

c) Movemos los elementos mayores.

d) Ubicamos la posicin para realizar la insercin.


e) Realizamos la insercin.

f) Repetiremos este procedimiento hasta no tener ms elementos que


insertar. Es decir haremos un bucle desde 2 hasta N elementos del
vector.
El algoritmo funciona as:

Mtodo de Insercin Directa


A(1) A(2) A(3) A(4) A(5)

3 1 5 4 2 Vector A al inicio del proceso

J=1

I=2, J=1, TEMP


I=2 1 3 5 4 2 =1

J=3

I=3 J=3, TEMP


I=3 1 3 5 4 2 , =5

J=3

I=4 J=3, TEMP


I=4 1 3 4 5 2 , =4

J=2

I=5 1 2 3 4 5 I=5 , J=2, TEMP = 2

- 380 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

Tendremos que definir los subndices I, J, que en nuestro algoritmo nos ayudarn
a ubicar los elementos a mover; y, el elemento a insertar dentro del vector A
definido.

Necesariamente para no perder el valor del elemento a insertar definiremos una


variable temporal (TEMP) para todos los procesos que analicemos en la
subrutina de ordenamiento, trabajaremos con el vector temporal TMP que ser
una copia del vector A.

La subrutina de ordenamiento quedara implementada as:

! Subrutina que ordena el vector con el mtodo de insercin.


SUB INSERCION(TMP())
LET
! N = SIZE(TMP)
Obtiene la cantidad de nmero de elementos del vector a ordenar...

! Empieza
FOR I = 2 el
TO proceso
N de ordenamiento...

LET J
FOR TEMP TMP(I)
= I=TO 2 STEP -1

IF TMP(J-1) > TEMP THEN


! Mueve una posicin si el valor es mayor.
LET TMP(J) = TMP(J-1)
ELSE
EXIT FOR
END IF
NEXT J
LET TMP(J) = TEMP
NEXT I
END SUB

Algoritmo que implementa un mtodo de clasificacin para


Ejemplo 76.

ordenar un vector de n elementos en forma ascendente. Usar el mtodo de


insercin directa. El programa tiene que verificar que la cantidad de
elementos sea entre 1 y 20.000.

Definido el problema, propongamos el cdigo solucin, quedar algo as:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 16. Ejemplo No. 76 del texto.
!
! Algoritmo que ilustra el mtodo de clasificacin llamado:
! Mtodo de insercin. (Insercin directa)
!

- 381 -
Tras los pasos de un... Hacker

! Se usar un vector numrico para almacenar los datos y


! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables: A, TMP, vectores numricos, contendrn los datos.

! I, J numricas, contadores de los procesos.


! TI, TF, T numricas, tiempo de ejecucin.
! S numrica, temporal captura cdigo de tecla pulsada.
! N numrica, cantidad de elementos en el vector.
! TEMP numrica, temporal para procedimiento.
!
! Funciones:
! Definida por el usuario.
! Tiempo_Transcurrido$, funcin string que devuelve el valor del tiempo
! transcurrido en un formato HH:MM:SS.SSS el tiempo en segundos se
! expresar en milisegundos.
!
! Internas de True BASIC.
! TIME, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.
!
! Libreras:
! MENSORT.TRU, contiene funciones y subrutinas comunes a todos los
! procedimientos de ordenamiento.
!
! S_LABLIB.TRU, contiene los mtodos de ordenamiento.
!
! Mdulos:
! Ninguno.
!
LIBRARY "MENSORT.TRU",
! Incluye "S_LABLIB.TRU"
los procedimientos guardados en la librera...

! Inicia el proceso.

! Definimos una funcin que transformar la cantidad de segundos a horas, minutos


DECLARE FUNCTION Tiempo_Transcurrido$
! y segundos...

! Vector A que contendr


Dimensionamos el vectorlos elementos
a ser a ordenarse.
utilizado.

DIM A(0)
CLEAR

! Inicializar el vector si no tiene elementos y presentar un mensaje de saludo


! y objetivo del programa.
CALL PRESENTAR(A)
SET COLOR 15
PRINT "Mtodo utilizado: Insercin."
SET COLOR 7

- 382 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

PRINT
PRINT "Inicia ordenamiento..."

! Inicializa
LET TI=TIME el tiempo de ejecucin como TI (tiempo inicial).

! Inicia el proceso de ordenamiento usando el mtodo de insercin.


CALL INSERCION(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

PRINT
CALL
PRINT
! PRESENTA_VECTOR(A)
Presenta
"Termina
el vector
ordenamiento..."
ordenado.

PRINT

! Alerta al usuario con un sonido que el proceso termin.


PLAY "o4l32dcga"
SET COLOR 15

! Muestra el tiempo utilizado.


PRINT "Tiempo requerido: ";
PRINT
SET Tiempo_Transcurrido$(TF)
COLOR 7

GET KEY S
END

! Subrutina que ordena el vector con el mtodo de insercin.


SUB INSERCION(TMP())
LET
! N = SIZE(TMP)
Obtiene la cantidad de nmero de elementos del vector a ordenar...

! Empieza
FOR el proceso
I = 2 TO N de ordenamiento...

LET J
FOR TEMP TMP(I)
= I=TO 2 STEP -1

IF TMP(J-1) > TEMP THEN


LET TMP(J) = TMP(J-1)
ELSE
EXIT FOR

END IF
NEXT J
LET TMP(J) = TEMP
NEXT I
END SUB

- 383 -
Tras los pasos de un... Hacker

Ahora con varios valores de elementos del vector de prueba, podremos ver su
comportamiento, en un grfico estadstico como el siguiente:
Mtodo: Insercin.

Elementos:
0 Tiempo (ms):
0,000
164.807,000
92.803,000
41.530,000 200.000,000
150.000,000
100.000,000
50.000,000
0,000 Insercin.
2500 2.524,000

5000 10.235,000

10000
Insercin.
15000

20000

0 10.000 20.000 30.000

MTODO DE SHELL
Donald L. Shell (1.924-), basado en el mtodo de insercin directa, presenta una
variacin a este algoritmo, la misma que la podramos llamar como Mtodo de
Clasificacin por Disminucin de Incrementos. Propuesta hecha en julio de
1.959, desde ah se lo conoce como mtodo de Shell.

La subrutina de ordenamiento quedara implementada as:

! Subrutina que ordena el vector con el mtodo de Shell.


SUB SHELL_SORT(TMP())
LET
! N=SIZE(TMP)
Obtiene
Calcula la
lmite
cantidad
inferior.
de nmero de elementos del vector a ordenar...

DOEmpieza
LET
! el proceso de ordenamiento...
LI=INT(N/2)
WHILE LI>0

! Calcula lmite superior.


DO LS=N-LI
LET

LET J=0
FOR I=1 TO LS
IF TMP(I)>TMP(I+LI) THEN
CALL
! Realiza
SWAP(TMP(I),TMP(I+LI))
intercambio de valores.

LET J=I

- 384
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

END IF
NEXT I
! Calcula nuevo lmite superior.
LET LS=J-LI
LOOP
! Calcula
WHILEnuevo
J<>0 lmite inferior.

LET LI=INT(LI/2)
LOOP

END SUB

Ejemplo 77.Algoritmo que implementa un mtodo de clasificacin para


ordenar un vector de n elementos en forma ascendente. Usar el mtodo de
Shell. El programa tiene que verificar que la cantidad de elementos sea
entre 1 y 20.000.

Definido el problema, propongamos el cdigo solucin, quedar algo as:


! Tras los pasos de un Hacker.
! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 17. Ejemplo No. 77 del texto.
!
! Algoritmo
Mtodo que ilustra
de Shell. el mtodo de clasificacin llamado:
(Insercin)

!
! Implementacin original de:
! Donald L. Shell. Julio de 1959.
!
! Clasificacin por disminucin de incrementos.
!
! Se usar un vector numrico para almacenar los datos y
! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables: A, TMP, vectores numricos, contendrn los datos.

! I, J numricas, contadores de los procesos.


! TI, TF, T numricas, tiempo de ejecucin.
! S numrica, temporal captura cdigo de tecla pulsada.
! N numrica, cantidad de elementos en el vector.
! LS, LI, TEMP numricas, temporal para procedimiento.
!
! Funciones: Definida por el usuario.

! Tiempo_Transcurrido$, funcin string que devuelve el valor del tiempo


! transcurrido en un formato HH:MM:SS.SSS el tiempo en segundos se
! expresar en milisegundos.

- 385 -
Tras los pasos de un... Hacker

!
! Internas de True BASIC.
! TIME, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.
!
! Libreras:
! MENSORT.TRU, contiene funciones y subrutinas comunes a todos los
! procedimientos de ordenamiento.
!
! S_LABLIB.TRU, contiene los mtodos de ordenamiento.
!
! Mdulos:
! Ninguno.
!
LIBRARY "MENSORT.TRU",
! Incluye "S_LABLIB.TRU"
los procedimientos guardados en la librera...

! Inicia el proceso.

! Definimos una funcin que transformar la cantidad de segundos a horas, minutos


DECLARE
! FUNCTION Tiempo_Transcurrido$
y segundos...

! Vector A que contendr


Dimensionamos el vectorlos elementos
a ser a ordenarse.
utilizado.

DIM A(0)
CLEAR

! Inicializar el vector si no tiene elementos y presentar un mensaje de saludo


! y objetivo del programa.
CALL PRESENTAR(A)
SET COLOR 15
PRINT "Mtodo utilizado: Shell Sort."
SET COLOR 7
PRINT
PRINT "Inicia ordenamiento..."

! Inicializa
LET TI=TIME el tiempo de ejecucin como TI (tiempo inicial).

! Inicia el proceso de ordenamiento usando el mtodo de insercin.


CALL SHELL_SORT(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

PRINT
PRINT "Termina ordenamiento..."
CALL
!
PRINT PRESENTA_VECTOR(A)
Presenta el vector ordenado.

! Alerta al usuario con un sonido que el proceso termin.


PLAY "o4l32dcga"
SET COLOR 15

- 386 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

! Muestra el tiempo utilizado.


PRINT "Tiempo requerido : ";
PRINT
SET Tiempo_Transcurrido$(TF)
COLOR 7

GET KEY S
END

! Subrutina que ordena el vector con el mtodo de Shell.


SUB SHELL_SORT(TMP())
LET
! N=SIZE(TMP)
Obtiene
Calcula la
lmite
cantidad
inferior.
de nmero de elementos del vector a ordenar...

DOEmpieza
LET
! Calcula
el proceso
lmite superior.
!LI=INT(N/2)
WHILE LI>0 de ordenamiento...

LET LS=N-LI
DO

LET J=0
FOR I=1 TO LS
IF TMP(I)>TMP(I+LI) THEN
CALL
! Realiza
SWAP(TMP(I),TMP(I+LI))
intercambio de valores.

ENDLET
IF J=I

NEXT I
! Calcula nuevo lmite superior.
LET LS=J-LI
LOOP
! Calcula
WHILEnuevo
J<>0 lmite inferior.

LET LI=INT(LI/2)
LOOP

END SUB

Ahora con varios valores de elementos del vector de prueba, podremos ver su
comportamiento, en un grfico estadstico como el siguiente:
Mtodo: Shell Sort.

Elementos:
0 Tiempo
0,000 (ms):
Shell Sort. Shell Sort.
4.000,000
2500 190,000
3.000,000
5000 480,000
2.000,000
10000
15000
20000 1.192,000
1.912,000
3.115,000 0,000
1.000,000

0 10.000 20.000 30.000

- 387 -
Tras los pasos de un... Hacker

9.2.2 MTODOS PORINTERCAMBIO

Ahora estudiaremos una gran familia de mtodos de ordenamiento donde el


proceso de intercambio es la caracterstica dominante, a estos mtodos tambin
se los conoce como mtodos de transposicin, que intercambian
sistemticamente pares de elementos que no estn ordenados hasta que
consiguen ubicarlos en el orden correcto y as terminar el proceso.

Revisaremos los mtodos ms populares de esta familia de algoritmos, a saber


tenemos:
MTODO DE LA BURBUJA
El mtodo de la burbuja consiste en:

a) Escoger un elemento, empezando desde el segundo del vector ingresado.

b) Compararlo con el inmediato anterior, si es mayor intercambiar sus


valores.
c) Repetiremos este procedimiento hasta no tener ms elementos que
intercambiar.

d) Repetimos todo el proceso hasta N-1 veces.


El algoritmo funciona as:

Mtodo de Intercambio
Bubble Sort

A(1)
A(2)
A(5)
A(3)
A(4) 2
4
5
1
3 I =5
21
4
1
3 I =5
22
1
3
4 I =5
13
2
3
4 I =5 4

A(J)

- 388 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

Tendremos que definir los subndices I, J, que en nuestro algoritmo nos ayudarn
a ubicar los elementos a intercambiar y las veces que haremos el procedimiento
dentro del vector A definido.

La subrutina de ordenamiento quedara implementada as:

! Subrutina que ordena el vector con el mtodo de la burbuja.


SUB FOR
LET I=1
BURBUJA(TMP())
N=SIZE(TMP)
TO N-1

FOR J=2 TO N
IF TMP(J-1)>TMP(J) THEN CALL SWAP(TMP(J-1),TMP(J))
NEXT J
NEXT I
END SUB

Ejemplo 78.Algoritmo que implementa un mtodo de clasificacin para


ordenar un vector de n elementos en forma ascendente. Usar el mtodo de
la burbuja. El programa tiene que verificar que la cantidad de elementos
sea entre 1 y 20.000.

Definido el problema, propongamos el cdigo solucin, quedar algo as:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 18. Ejemplo No. 78 del texto.
!
! Algoritmo
Mtodo de la
queBurbuja.
ilustra (Intercambio)
el mtodo de clasificacin llamado:

!
! Se usar un vector numrico para almacenar los datos y
! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables: A, TMP, vectores numricos, contendrn los datos.

! I, J numricas, contadores de los procesos.


! TI, TF, T numricas, tiempo de ejecucin.
! S numrica, temporal captura cdigo de tecla pulsada.
! N numrica, cantidad de elementos en el vector.
! LS, LI, TEMP numricas, temporal para procedimiento.

- 389 -
Tras los pasos de un... Hacker

!
! Funciones: Definida por el usuario.

! Tiempo_Transcurrido$, funcin string que devuelve el valor del tiempo


! transcurrido en un formato HH:MM:SS.SSS el tiempo en segundos se
! expresar en milisegundos.
!
! Internas de True BASIC.
! TIME, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.
!
! Libreras:
! MENSORT.TRU, contiene funciones y subrutinas comunes a todos los
! procedimientos de ordenamiento.
!
! S_LABLIB.TRU, contiene los mtodos de ordenamiento.
!
! Mdulos:
! Ninguno.
!

LIBRARY "MENSORT.TRU",
! Incluye "S_LABLIB.TRU"
los procedimientos guardados en la librera...

! Inicia el proceso.

! Definimos una funcin que transformar la cantidad de segundos a horas, minutos


DECLARE FUNCTION Tiempo_Transcurrido$
! y segundos...

! Vector A que contendr


Dimensionamos el vectorlos elementos
a ser a ordenarse.
utilizado.

DIM A(0)
CLEAR

! Inicializar el vector si no tiene elementos y presentar un mensaje de saludo


! y objetivo del programa.
CALL PRESENTAR(A)
SET COLOR 15
PRINT "Mtodo utilizado: Bubble Sort."
SET COLOR 7
PRINT
! Inicializa
PRINT
LET "Iniciael
TI=TIME tiempo de ejecucin como TI (tiempo inicial).
ordenamiento..."

! Inicia el proceso de ordenamiento usando el mtodo de intercambio.


CALL BURBUJA(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

PRINT
PRINT "Termina ordenamiento..."

! Presenta el vector ordenado.

- 390 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

CALL PRESENTA_VECTOR(A)
PRINT

! Alerta al usuario con un sonido que el proceso termin.


PLAY "o4l32dcga"
SET COLOR 15

! Muestra el tiempo utilizado.


PRINT "Tiempo requerido : ";
PRINT
SET Tiempo_Transcurrido$(TF)
COLOR 7

GET KEY S
END

! Subrutina que ordena el vector con el mtodo de la burbuja.


SUB BURBUJA(TMP())
LET
FOR N=SIZE(TMP)
I=1 TO N-1

FOR J=2 TO N
IF TMP(J-1)>TMP(J) THEN CALL SWAP(TMP(J-1),TMP(J))
NEXT J
NEXT I
END SUB

Ahora con varios valores de elementos del vector de prueba, podremos ver su
comportamiento, en un grfico estadstico como el siguiente:

Mtodo: Bubble Sort.

Elementos: Tiempo (ms): Bubble Sort.


0 0,000
500.000,000
2500 6.960,000
400.000,000
5000
10000
15000
20000 27.880,000
113.293,000
253.455,000
450.829,000 0,000
300.000,000
200.000,000 Bubble Sort.
100.000,000

0 10.00020.00030.000

MTODO PARALELO DE BATCHER


Un refinamiento al mtodo de la burbuja fue hecho por K. E. Batcher en 1.964, su

- 391 -
Tras los pasos de un... Hacker

propuesta en BASIC podra ser esta:


! Subrutina que ordena el vector con el mtodo paralelo de Batcher.
SUB INTERCAMBIO_BATCHER(TMP())
LET I=1
FOR N=SIZE(TMP)
TO N-1

FOR J=I+1 TO N
IF TMP(J)<TMP(I) THEN CALL SWAP(TMP(J),TMP(I))
NEXT J
NEXT I
END SUB

Algoritmo que implementa un mtodo de clasificacin para


Ejemplo 79.

ordenar un vector de n elementos en forma ascendente. Usar el mtodo


paralelo de Batcher. El programa tiene que verificar que la cantidad de
elementos sea entre 1 y 20.000.

Definido el problema, propongamos el cdigo solucin, quedar algo as:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 19. Ejemplo No. 79 del texto.
!
! Algoritmo
Mtodo paralelo
que ilustra
de Batcher.
el mtodo
(Intercambio)
de clasificacin llamado:

!
! Implementacin original de:
! K. E. Batcher. 1964.
!
! Se usar un vector numrico para almacenar los datos y
! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables: A, TMP, vectores numricos, contendrn los datos.

! I, J numricas, contadores de los procesos.


! TI, TF, T numricas, tiempo de ejecucin.
! S numrica, temporal captura cdigo de tecla pulsada.
! N numrica, cantidad de elementos en el vector.
!
! Funciones: Definida por el usuario.

! Tiempo_Transcurrido$, funcin string que devuelve el valor del tiempo


! transcurrido en un formato HH:MM:SS.SSS el tiempo en segundos se

- 392 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

! expresar en milisegundos.
!
! Internas de True BASIC.
! TIME, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.
!
! Libreras:
! MENSORT.TRU, contiene funciones y subrutinas comunes a todos los
! procedimientos de ordenamiento.
!
! S_LABLIB.TRU, contiene los mtodos de ordenamiento.
!
! Mdulos:
! Ninguno.
!
LIBRARY "MENSORT.TRU",
! Incluye "S_LABLIB.TRU"
los procedimientos guardados en la librera...

! Inicia el proceso.

! Definimos una funcin que transformar la cantidad de segundos a horas, minutos


DECLARE FUNCTION Tiempo_Transcurrido$
! y segundos...

! Vector A que contendr


Dimensionamos el vectorlos elementos
a ser a ordenarse.
utilizado.

DIM A(0)
CLEAR

! Inicializar el vector si no tiene elementos y presentar un mensaje de saludo


! y objetivo del programa.
CALL PRESENTAR(A)
SET COLOR 15
PRINT "Mtodo utilizado: Intercambio de Batcher."
SET COLOR 7
PRINT
PRINT "Inicia ordenamiento..."

! Inicializa
LET TI=TIME el tiempo de ejecucin como TI (tiempo inicial).

! Inicia el proceso de ordenamiento usando el mtodo de intercambio.


CALL INTERCAMBIO_BATCHER(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

PRINT
PRINT "Termina ordenamiento..."
CALL
!
PRINT PRESENTA_VECTOR(A)
Presenta el vector ordenado.

! Alerta al usuario con un sonido que el proceso termin.


PLAY "o4l32dcga"

- 393 -
Tras los pasos de un... Hacker

SET COLOR 15
! Muestra el tiempo utilizado.
PRINT "Tiempo requerido : ";
PRINT
SET Tiempo_Transcurrido$(TF)
COLOR 7

GET KEY S
END

! Subrutina que ordena el vector con el mtodo paralelo de Batcher.


SUB INTERCAMBIO_BATCHER(TMP())
LET I=1
FOR N=SIZE(TMP)
TO N-1

FOR J=I+1 TO N
IF TMP(J)<TMP(I) THEN CALL SWAP(TMP(J),TMP(I))
NEXT J
NEXT I
END SUB

Ahora con varios valores de elementos del vector de prueba, podremos ver su
comportamiento, en un grfico estadstico como el siguiente:
Mtodo: Batcher.

Elementos:
0 Tiempo (ms):
0,000
Batcher.
250.000,000
2500 3.295,000
200.000,000
5000
10000
15000
20000 13.330,000
53.827,000
120.984,000
215.520,000 0,000
150.000,000
100.000,000
Batcher.
50.000,000

0 10.000 20.000 30.000

MTODO QUICKSORT

Otra mejora sustancial al mtodo de la burbuja fue hecha por C. A. R. Hoare


(1.934-) en 1.962, a la que le denomin Quick Sort, su propuesta en BASIC
(utilizando recursin) podra ser esta:

! Subrutina que ordena el vector con el mtodo Quick Sort.


SUB QUICKSORT(TMP())

- 394 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

LET N=SIZE(TMP)
IF N=0 THEN EXIT SUB
CALL SORT(TMP,1,N)
END SUB

SUB SORT(TMP(),L,R)
LET I=L
LET J=R
LET X=TMP(INT((L+R)/2))
DO
DO WHILE TMP(I)<X
LET I=I+1
LOOP
DO LET
WHILE X<TMP(J)
J=J-1

LOOP
IF I<=J THEN
CALL SWAP(TMP(I),TMP(J))
LET I=I+1
LET J=J-1
END IF
! Inicia
LOOP elI>J
UNTIL proceso recursivo.

IF L<J THEN CALL SORT(TMP,L,J)


IF I<R THEN CALL SORT(TMP,I,R)
END SUB

Ejemplo 80.Algoritmo que implementa un mtodo de clasificacin para


ordenar un vector de n elementos en forma ascendente. Usar el mtodo
Quick Sort. El programa tiene que verificar que la cantidad de elementos
sea entre 1 y 20.000.

Definido el problema, propongamos el cdigo solucin, quedar algo as:


! Tras los pasos de un Hacker.
! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 20. Ejemplo No. 80 del texto.
!
! Algoritmo
Mtodo queSort.
Quick ilustra el mtodo de clasificacin llamado:
(Intercambio)

!
! Implementacin
C. A. R. Hoare.original
1962. de:

!
! Se usar un vector numrico para almacenar los datos y
! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas:

- 395 -
Tras los pasos de un... Hacker

! Ninguna.
!
! Variables: A, TMP, vectores numricos, contendrn los datos.

! I, J numricas, contadores de los procesos.


! TI, TF, T numricas, tiempo de ejecucin.
! S numrica, temporal captura cdigo de tecla pulsada.
! N numrica, cantidad de elementos en el vector.
! L, R, X numricas, punteros para proceso.
!
! Funciones: Definida por el usuario.

! Tiempo_Transcurrido$, funcin string que devuelve el valor del tiempo


! transcurrido en un formato HH:MM:SS.SSS el tiempo en segundos se
! expresar en milisegundos.
!
! Internas de True BASIC.
! TIME, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.
!
! Libreras:
! MENSORT.TRU, contiene funciones y subrutinas comunes a todos los
! procedimientos de ordenamiento.
!
! S_LABLIB.TRU, contiene los mtodos de ordenamiento.
!
! Mdulos:
! Ninguno.
!

LIBRARY "MENSORT.TRU",
! Incluye "S_LABLIB.TRU"
los procedimientos guardados en la librera...

! Inicia el proceso.

! Definimos una funcin que transformar la cantidad de segundos a horas, minutos


DECLARE
! FUNCTION Tiempo_Transcurrido$
y segundos...

! Vector A que contendr


Dimensionamos el vectorlos elementos
a ser a ordenarse.
utilizado.

DIM A(0)
CLEAR

! Inicializar el vector si no tiene elementos y presentar un mensaje de saludo


! y objetivo del programa.
CALL PRESENTAR(A)
SET COLOR 15
PRINT "Mtodo utilizado: Quick Sort."
SET COLOR 7
PRINT
PRINT "Inicia ordenamiento..."

! Inicializa
LET TI=TIME el tiempo de ejecucin como TI (tiempo inicial).

- 396 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

! Inicia el proceso de ordenamiento usando el mtodo de intercambio.


CALL QUICKSORT(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

PRINT
CALL
PRINT
! PRESENTA_VECTOR(A)
Presenta
"Termina
el vector
ordenamiento..."
ordenado.

PRINT

! Alerta al usuario con un sonido que el proceso termin.


PLAY "o4l32dcga"
SET COLOR 15

! Muestra el tiempo utilizado.


PRINT "Tiempo requerido : ";
PRINT
SET Tiempo_Transcurrido$(TF)
COLOR 7

GET KEY S
END

! Subrutina que ordena el vector con el mtodo Quick Sort.


SUB QUICKSORT(TMP())
LET N=SIZE(TMP)
IF N=0 THEN EXIT SUB
CALL SORT(TMP,1,N)
END SUB

SUB SORT(TMP(),L,R)
LET I=L
LET J=R
LET X=TMP(INT((L+R)/2))
DO
DO WHILE TMP(I)<X
LET I=I+1
LOOP
DO LET
WHILE X<TMP(J)
J=J-1

LOOP
IF I<=J THEN
CALL SWAP(TMP(I),TMP(J))
LET I=I+1
LET J=J-1
END IF
! Inicia
LOOP elI>J
UNTIL proceso recursivo.

IF L<J THEN CALL SORT(TMP,L,J)


IF I<R THEN CALL SORT(TMP,I,R)
END SUB

Ahora con varios valores de elementos del vector de prueba, podremos ver su

- 397 -
Tras los pasos de un... Hacker

comportamiento, en un grfico estadstico como el siguiente:


Mtodo: Quick Sort.

Elementos: Tiempo (ms): Quick Sort.


0
2500
5000 0,000
40,000
90,000 500,000
400,000

300,000
10000 191,000
200,000 Quick Sort.
15000 321,000
100,000
20000 390,000

0,000
0 10.000 20.000 30.000

MTODO DE LA SACUDIDA (CCTEL)

Otro mtodo de intercambio propuesto es una variacin al mtodo de la burbuja,


que se lo conoce como mtodo de la sacudida o mtodo de cctel, su propuesta
en BASIC podra ser esta:

! Subrutina que ordena el vector con el mtodo de la sacudida.


SUB LET
SACUDIDA(TMP())
N=SIZE(TMP)
LI=2

LET LS=N
LET I=LS
DO
FOR J=LS TO LI STEP -1
IF TMP(J)<TMP(J-1) THEN
CALL SWAP(TMP(J),TMP(J-1))
LET I=J
END IF
NEXT J
LET J=LI
FOR LI=I+1
TO LS

IF TMP(J)<TMP(J-1) THEN
CALL SWAP(TMP(J),TMP(J-1))
LET I=J
END IF
NEXT J
LOOP
LET
UNTIL
LS=I-1
LI>LS

END SUB

- 398 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

Ejemplo 81.Algoritmo que implementa un mtodo de clasificacin para


ordenar un vector de n elementos en forma ascendente. Usar el mtodo de
la sacudida. El programa tiene que verificar que la cantidad de elementos
sea entre 1 y 20.000.

Definido el problema, propongamos el cdigo solucin, quedar algo as:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 21. Ejemplo No. 81 del texto.
!
! Algoritmo
Mtodo quesacudida.
de la ilustra el mtodo de clasificacin llamado:
(Intercambio)

!
! Se usar un vector numrico para almacenar los datos y
! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables:
! A, TMP, vectores numricos, contendrn los datos.
! I, J numricas, contadores de los procesos.
! TI, TF, T numricas, tiempo de ejecucin.
! S numrica, temporal captura cdigo de tecla pulsada.
! N numrica, cantidad de elementos en el vector.
! LI, LS numricas, punteros para proceso.
!
! Funciones: Definida por el usuario.

! Tiempo_Transcurrido$, funcin string que devuelve el valor del tiempo


! transcurrido en un formato HH:MM:SS.SSS el tiempo en segundos se
! expresar en milisegundos.
!
! Internas de True BASIC.
! TIME, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.
!
! Libreras:
! MENSORT.TRU, contiene funciones y subrutinas comunes a todos los
! procedimientos de ordenamiento.
!
! S_LABLIB.TRU, contiene los mtodos de ordenamiento.
!
! Mdulos:
! Ninguno.
!

- 399 -
Tras los pasos de un... Hacker

LIBRARY "MENSORT.TRU",
! Incluye "S_LABLIB.TRU"
los procedimientos guardados en la librera...

! Inicia el proceso.

! Definimos una funcin que transformar la cantidad de segundos a horas, minutos


DECLARE
! FUNCTION Tiempo_Transcurrido$
y segundos...

! Vector A que contendr


Dimensionamos el vectorlos elementos
a ser a ordenarse.
utilizado.

DIM A(0)
CLEAR

! Inicializar el vector si no tiene elementos y presentar un mensaje de saludo


! y objetivo del programa.
CALL PRESENTAR(A)
SET COLOR 15
PRINT "Mtodo utilizado: Sacudida."
SET COLOR 7
PRINT
! Inicializa
PRINT
LET "Iniciael
TI=TIME tiempo de ejecucin como TI (tiempo inicial).
ordenamiento..."

! Inicia el proceso de ordenamiento usando el mtodo de intercambio.


CALL SACUDIDA(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

PRINT
CALL
PRINT
! Presenta
PRESENTA_VECTOR(A)
"Termina
el vector
ordenamiento..."
ordenado.

PRINT

! Alerta al usuario con un sonido que el proceso termin.


PLAY "o4l32dcga"
SET COLOR 15

! Muestra el tiempo utilizado.


PRINT "Tiempo requerido : ";
PRINT
SET Tiempo_Transcurrido$(TF)
COLOR 7

GET KEY S
END

! Subrutina que ordena el vector con el mtodo de la sacudida.


SUB SACUDIDA(TMP())
LET N=SIZE(TMP)
LET LI=2
LET LS=N
LET I=LS
DO

- 400 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

FOR J=LS TO LI STEP -1


IF TMP(J)<TMP(J-1) THEN
CALL SWAP(TMP(J),TMP(J-1))
LET I=J
END IF
NEXT J
LET J=LI
FOR LI=I+1
TO LS

IF TMP(J)<TMP(J-1) THEN
CALL SWAP(TMP(J),TMP(J-1))
LET I=J
END IF
NEXT J
LOOP
LET
UNTIL
LS=I-1
LI>LS

END SUB

Ahora con varios valores de elementos del vector de prueba, podremos ver su
comportamiento, en un grfico estadstico como el siguiente:
Mtodo: Sacudida.

Elementos:
0 Tiempo
0,000 (ms):
Sacudida. Sacudida.
300.000,000
200.000,000
100.000,000
0,000 0 10.000 20.000 30.000
2500 4.046,000

5000
10000
15000 16.494,000
66.836,000
150.016,000

20000 265.392,000

9.2.3 MTODOS PORSELECCIN

Otra gran familia de mtodos de clasificacin donde el proceso de ordenamiento


se produce por una seleccin repetida.

Revisaremos los mtodos ms populares de esta familia de algoritmos, a saber


tenemos:

- 401 -
Tras los pasos de un... Hacker

SELECCIN DIRECTA
El mtodo de seleccin directa consiste en:
a) Escoger un elemento, empezando desde el primero del vector ingresado.

b) Ubicar la posicin del elemento actual.

c) Compararlo el resto de elementos, si es mayor intercambiar sus valores.

d) Repetimos todo el proceso hasta N-1 veces.

El algoritmo funciona as:

Mtodo de Seleccin
Directa

A(1)
A(2)
A(3)
A(4)
A(5) 2
4
5
1
3 I =3
11
4
5
2 I =3
12
2
5
4 I =5
13
2
3
4 I =5 4

R=4 R=4 R=5 R=4

A(J)

Tendremos que definir los subndices I, J, que en nuestro algoritmo nos ayudarn
a ubicar los elementos a intercambiar y las veces que haremos el procedimiento
dentro del vector A definido, el puntero R mantendr el valor del elemento
seleccionado.

La subrutina de ordenamiento quedara implementada as:

- 402 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

! Subrutina que ordena el vector con el mtodo de seleccin.


SUB FOR
LET I=1
SELECCION(TMP())
N=SIZE(TMP)
TO N-1

FOR
LET J=I+1
R=I TO N

IF TMP(R)>TMP(J) THEN LET R=J


NEXT J
IF R<>I THEN CALL SWAP(TMP(I),TMP(R))
NEXT I
END SUB

Algoritmo que implementa un mtodo de clasificacin para


Ejemplo 82.

ordenar un vector de n elementos en forma ascendente. Usar el mtodo de


seleccin directa. El programa tiene que verificar que la cantidad de
elementos sea entre 1 y 20.000.

Definido el problema, propongamos el cdigo solucin, quedar algo as:


! Tras los pasos de un Hacker.
! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 22. Ejemplo No. 82 del texto.
!
! Algoritmo
Mtodo que ilustra
de seleccin el mtodo
directa. de clasificacin llamado:
(Seleccin)

!
! Se usar un vector numrico para almacenar los datos y
! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables: A, TMP, vectores numricos, contendrn los datos.

! I, J numricas, contadores de los procesos.


! TI, TF, T numricas, tiempo de ejecucin.
! S numrica, temporal captura cdigo de tecla pulsada.
! N numrica, cantidad de elementos en el vector.
! R numrica, puntero para proceso.
!
! Funciones: Definida por el usuario.

! Tiempo_Transcurrido$, funcin string que devuelve el valor del tiempo


! transcurrido en un formato HH:MM:SS.SSS el tiempo en segundos se
! expresar en milisegundos.
!
! Internas de True BASIC.
! TIME, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.

- 403 -
Tras los pasos de un... Hacker

!
! Libreras:
! MENSORT.TRU, contiene funciones y subrutinas comunes a todos los
! procedimientos de ordenamiento.
!
! S_LABLIB.TRU, contiene los mtodos de ordenamiento.
!
! Mdulos:
! Ninguno.
!
LIBRARY "MENSORT.TRU",
! Incluye "S_LABLIB.TRU"
los procedimientos guardados en la librera...

! Inicia el proceso.

! Definimos una funcin que transformar la cantidad de segundos a horas, minutos


DECLARE
! FUNCTION Tiempo_Transcurrido$
y segundos...

! Vector A que contendr


Dimensionamos el vectorlos elementos
a ser a ordenarse.
utilizado.

DIM A(0)
CLEAR

! Inicializar el vector si no tiene elementos y presentar un mensaje de saludo


! y objetivo del programa.
CALL PRESENTAR(A)
SET COLOR 15
PRINT "Mtodo utilizado: Seleccin."
SET COLOR 7
PRINT
PRINT "Inicia ordenamiento..."

! Inicializa
LET TI=TIME el tiempo de ejecucin como TI (tiempo inicial).

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL SELECCION(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

PRINT
PRINT "Termina ordenamiento..."
CALL
!
PRINT PRESENTA_VECTOR(A)
Presenta el vector ordenado.

! Alerta al usuario con un sonido que el proceso termin.


PLAY "o4l32dcga"
SET COLOR 15

! Muestra el tiempo utilizado.


PRINT "Tiempo requerido : ";
PRINT Tiempo_Transcurrido$(TF)

- 404 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

SET COLOR 7
GET KEY S
END

! Subrutina que ordena el vector con el mtodo de seleccin.


SUB FOR
LET I=1
SELECCION(TMP())
N=SIZE(TMP)
TO N-1

LET R=I
FOR J=I+1 TO N
IF TMP(R)>TMP(J) THEN LET R=J
NEXT J
IF R<>I THEN CALL SWAP(TMP(I),TMP(R))
NEXT I
END SUB

Ahora con varios valores de elementos del vector de prueba, podremos ver su
comportamiento, en un grfico estadstico como el siguiente:
Mtodo: Seleccin.

Elementos:
0 Tiempo (ms):
0,000
Seleccin.
5000
10000 7.961,000
32.657,000 150.000,000
100.000,000
2500 1.993,000

50.000,000
0,000 0 10.000 20.000 30.000
Seleccin.
15000 73.436,000

HEAP
20000 SORT
130.468,000

Un refinamiento interesante en los algoritmos de seleccin, es la propuesta hecha


por Robert W. Floyd (1.936-2.001) en 1.964, mtodo que lo denomin Heap Sort.

La subrutina de ordenamiento quedara implementada as:


! Subrutina que ordena el vector con el mtodo de seleccin.
SUB FOR
LET I
HEAPSORT(TMP())
N=SIZE(TMP)
= 2 TO N

CALL PERCOLATEUP(I,TMP)

- 405 -
Tras los pasos de un... Hacker

NEXT I
FOR CALL
I = NSWAP(TMP(1),TMP(I))
TO 2 STEP -1

NEXTCALL
I PERCOLATEDOWN(I-1,TMP)

END SUB

SUB PERCOLATEDOWN(N,TMP())
LET I=1

DO
LET J=2*I
IF J>N THEN EXIT DO
IF J+1<=N THEN
IF TMP(J+1) > TMP(J) THEN
LET J=J+1
END IF
END IF
IF TMP(I) < TMP(J) THEN
CALL SWAP(TMP(I),TMP(J))
ELSE
LET
E XITI=J
DO

END IF
LOOP
END SUB

SUB PERCOLATEUP(N,TMP())
LET I=N

DO UNTIL I=1
LETTMP(I)
IF J=INT(I/2)
> TMP(J) THEN

CALL SWAP(TMP(J),TMP(I))
ELSE
LET
E XITI=J
DO

END IF
LOOP
END SUB

Ejemplo 83.Algoritmo que implementa un mtodo de clasificacin para


ordenar un vector de n elementos en forma ascendente. Usar el mtodo de
Heap Sort. El programa tiene que verificar que la cantidad de elementos
sea entre 1 y 20.000.

Definido el problema, propongamos el cdigo solucin, quedar algo as:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 23. Ejemplo No. 83 del texto.

-406
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

!
! Mtodo
Algoritmo
HeapSort.
que ilustra
(Seleccin)
el mtodo de clasificacin llamado:

!
! Implementacin original de:
! R. W. Floyd. 1964.
!
! Se usar un vector numrico para almacenar los datos y
! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables:
! A, TMP, vectores numricos, contendrn los datos.
! I, J numricas, contadores de los procesos.
! TI, TF, T numricas, tiempo de ejecucin.
! S numrica, temporal captura cdigo de tecla pulsada.
! N numrica, cantidad de elementos en el vector.
!
! Funciones: Definida por el usuario.

! Tiempo_Transcurrido$, funcin string que devuelve el valor del tiempo


! transcurrido en un formato HH:MM:SS.SSS el tiempo en segundos se
! expresar en milisegundos.
!
! Internas de True BASIC.
! TIME, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.
!
! Libreras:
! MENSORT.TRU, contiene funciones y subrutinas comunes a todos los
! procedimientos de ordenamiento.
!
! S_LABLIB.TRU, contiene los mtodos de ordenamiento.
!
! Mdulos:
! Ninguno.
!

LIBRARY "MENSORT.TRU",
! Incluye "S_LABLIB.TRU"
los procedimientos guardados en la librera...

! Inicia el proceso.

! Definimos una funcin que transformar la cantidad de segundos a horas, minutos


DECLARE
! FUNCTION Tiempo_Transcurrido$
y segundos...

! Vector A que contendr


Dimensionamos el vectorlos elementos
a ser a ordenarse.
utilizado.

DIM A(0)
CLEAR

- 407 -
Tras los pasos de un... Hacker

! Inicializar el vector si no tiene elementos y presentar un mensaje de saludo


! y objetivo del programa.
CALL PRESENTAR(A)
SET COLOR 15
PRINT "Mtodo utilizado: HeapSort."
SET COLOR 7
PRINT
! Inicializa
PRINT
LET "Iniciael
TI=TIME tiempo de ejecucin como TI (tiempo inicial).
ordenamiento..."

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL HEAPSORT(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

PRINT
CALL
PRINT
! PRESENTA_VECTOR(A)
Presenta
"Termina
el vector
ordenamiento..."
ordenado.

PRINT

! Alerta al usuario con un sonido que el proceso termin.


PLAY "o4l32dcga"
SET COLOR 15

! Muestra el tiempo utilizado.


PRINT "Tiempo requerido : ";
PRINT
SET Tiempo_Transcurrido$(TF)
COLOR 7

GET KEY S
END

! Subrutina que ordena el vector con el mtodo de seleccin.


SUB FOR
LET I
HEAPSORT(TMP())
N=SIZE(TMP)
= 2 TO N

NEXTCALL
I PERCOLATEUP(I,TMP)

FOR CALL
I = NSWAP(TMP(1),TMP(I))
TO 2 STEP -1

NEXTCALL
I PERCOLATEDOWN(I-1,TMP)

END SUB

SUB PERCOLATEDOWN(N,TMP())
LET I=1

DO
LET J=2*I
IF J>N THEN EXIT DO
IF J+1<=N THEN
IF TMP(J+1) > TMP(J) THEN
LET J=J+1
END IF

- 408 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

END IF
IF TMP(I) < TMP(J) THEN
CALL SWAP(TMP(I),TMP(J))
LET I=J
ELSE
EXIT DO
END IF
LOOP
END SUB

SUB PERCOLATEUP(N,TMP())
LET I=N

DO UNTIL I=1
LETTMP(I)
IF J=INT(I/2)
> TMP(J) THEN

CALL SWAP(TMP(J),TMP(I))
LET I=J
ELSE
EXIT DO
END IF
LOOP
END SUB

Ahora con varios valores de elementos del vector de prueba, podremos ver su
comportamiento, en un grfico estadstico como el siguiente:
Mtodo: Heap Sort.

Elementos: Tiempo (ms): Heap Sort.


0 0,000
20000 991,000 1.500,000
1.000,000
500,000
0,000 0 10.000 20.000 30.000
2500 90,000

5000 210,000

10000
15000 451,000
711,000 Heap Sort.

MTODO DE CAMBIO
Otro mtodo de seleccin es la implementacin llamada como mtodo de cambio,
su propuesta en BASIC podra ser esta:

- 409 -
Tras los pasos de un... Hacker

! Subrutina que ordena el vector con el mtodo de seleccin.


SUB CAMBIO(TMP())
LET I=1
FOR N=SIZE(TMP)
TO N

FOR
LET J=I+1
R=I TO N

IF TMP(J)<TMP(R) THEN
ENDLET
IF X=J

NEXT J
IF R>I THEN
CALL SWAP(TMP(I),TMP(R))
END IF
NEXT I
END SUB

Ejemplo 84.Algoritmo que implementa un mtodo de clasificacin para


ordenar un vector de n elementos en forma ascendente. Usar el mtodo de
cambio. El programa tiene que verificar que la cantidad de elementos sea
entre 1 y 20.000.

Definido el problema, propongamos el cdigo solucin, quedar algo as:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 24. Ejemplo No. 84 del texto.
!
! Algoritmo
Mtodo que ilustra
de cambio. el mtodo de clasificacin llamado:
(Seleccin)

!
! Se usar un vector numrico para almacenar los datos y
! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables: A, TMP, vectores numricos, contendrn los datos.

! I, J numricas, contadores de los procesos.


! TI, TF, T numricas, tiempo de ejecucin.
! S numrica, temporal captura cdigo de tecla pulsada.
! N numrica, cantidad de elementos en el vector.
! R numrica, puntero para proceso.
!
! Funciones:
! Definida por el usuario.
! Tiempo_Transcurrido$, funcin string que devuelve el valor del tiempo

- 410
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

! transcurrido en un formato HH:MM:SS.SSS el tiempo en segundos se


! expresar en milisegundos.
!
! Internas de True BASIC.
! TIME, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.
!
! Libreras:
! MENSORT.TRU, contiene funciones y subrutinas comunes a todos los
! procedimientos de ordenamiento.
!
! S_LABLIB.TRU, contiene los mtodos de ordenamiento.
!
! Mdulos:
! Ninguno.
!

LIBRARY "MENSORT.TRU",
! Incluye "S_LABLIB.TRU"
los procedimientos guardados en la librera...

! Inicia el proceso.

! Definimos una funcin que transformar la cantidad de segundos a horas, minutos


DECLARE FUNCTION Tiempo_Transcurrido$
! y segundos...

! Vector A que contendr


Dimensionamos el vectorlos elementos
a ser a ordenarse.
utilizado.

DIM A(0)
CLEAR

! Inicializar el vector si no tiene elementos y presentar un mensaje de saludo


! y objetivo del programa.
CALL PRESENTAR(A)
SET COLOR 15
PRINT "Mtodo utilizado: Cambio."
SET COLOR 7
PRINT
PRINT "Inicia ordenamiento..."

! Inicializa
LET TI=TIME el tiempo de ejecucin como TI (tiempo inicial).

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL CAMBIO(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

PRINT
PRINT "Termina ordenamiento..."

CALL
!
PRINT PRESENTA_VECTOR(A)
Presenta el vector ordenado.

! Alerta al usuario con un sonido que el proceso termin.

- 411 -
Tras los pasos de un... Hacker

PLAY "o4l32dcga"
SET COLOR 15

! Muestra el tiempo utilizado.


PRINT "Tiempo requerido : ";
PRINT
SET Tiempo_Transcurrido$(TF)
COLOR 7

GET KEY S
END

! Subrutina que ordena el vector con el mtodo de seleccin.


SUB CAMBIO(TMP())
LET
FOR N=SIZE(TMP)
I=1 TO N

FOR
LET J=I+1
R=I TO N

IF TMP(J)<TMP(R) THEN
ENDLET
IF R=J

NEXT J
IF R>I THEN
CALL SWAP(TMP(I),TMP(R))
END IF
NEXT I
END SUB

Ahora con varios valores de elementos del vector de prueba, podremos ver su
comportamiento, en un grfico estadstico como el siguiente:
Mtodo: Cambio.

Elementos:
0 Tiempo
0,000 (ms):
Cambio.
150.000,000
2500 1.973,000

100.000,000
50.000,000
5000
10000
15000 8.141,000
32.086,000
73.045,000

Cambio.

0,000
20000 129.256,000
0 10.000 20.000 30.000

- 412
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

LABORATORIO DE INFORMTICA

Ahora, con todos estos mtodos de clasificacin aprendidos, construyamos una


librera que contenga todos los mtodos. Elaboremos un programa para probarlo
en un laboratorio y podamos apreciar la eficiencia de cada mtodo.

La librera de mtodos de ordenamiento que la guardamos en el archivo


S_LABLIB.TRU, queda finalmente definida as:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Librera de mtodos de ordenamiento.
!
! Autor: Nstor Marroqun.

! Variables:
! TMP vector numrico, contendr los datos.
! I, J, K, numricas, contadores de los procesos.
! N numrica, cantidad de elementos en el vector.
! V1, V2, TEMP numricas, variables temporales.
! LI, LS, R, X numricas, punteros para intercambio de valores.
!
! Funciones:
! Internas de True BASIC.
! SIZE(A), devuelve el nmero de elementos de un arreglo A.
! INT(N), funcin que devuelve el valor entero de un nmero N.
!
! Libreras:
! Ninguna.
!
! Mdulos:
! Ninguno.
!

EXTERNAL

! Subrutina que ordena el vector con el mtodo de insercin.


SUB INSERCION(TMP())
LET
! N = SIZE(TMP)
Obtiene la cantidad de nmero de elementos del vector a ordenar...

! Empieza
FOR I = 2 el
TO proceso
N de ordenamiento...

LET J
FOR TEMP TMP(I)
= I=TO 2 STEP -1

IF TMP(J-1) > TEMP THEN


! Mueve una posicin si el valor es mayor.
LET TMP(J) = TMP(J-1)
ELSE
EXIT FOR

- 413 -
Tras los pasos de un.. Hacker

END IE"
NEXT J

LET TMP (U) = TEMP


NEXT T
END SUE

! Sub rutina que ordena el vector con el mtodo de Shell.


suB SHELL SORT (TMB () )
! Obtiene la cantidad de nmero de elementos del vector a ordenar. . .
LET N=SIZE (TMP)
! Calcula lmite inferior.
LET LI=INT (N/2)
! Empieza el proceso de ordenamiento . . .
DO WHILE LI> (O
! Calcula lmite superior.
ILET IS=N II
DO
ILET' J=()
EOR. T=1 TO LS
IF TME (I) >TME (I+LI) THEN
! Realiza intercambio de valores .
CALL SWAP (TMP (I) ,TMP (I+LI) )
ILET' J= I
END IE"
NEXT T

! Calcula nuevo lmite superior.


ILET IS= J II
LOOP WHILE JC (O
! Calcula nuevo lmite inferior.
LET LI=INT (LI/2)
LOOP
END SUE

! Sub rutina que ordena el vector con el mtodo de la burbuja.


SUB BURBUUA (TMP ( ) )
LET N=SIZE (TMP)
EOR. T=1 TO N1
EOR J= 2 TO N

IF TMP (J1) >TMP (J) THEN CALL SWAP (TMP (J1) , TMP (U) )
NEXT J
NEXT T
END SUE

! Sub rutina que ordena el vector con el mtodo paralelo de Batcher.


suB INTERCAMBIO EATCHER (TMB () )
LET N=SIZE (TMP)
EOR. T=1 TO N1
EOR J=T+1. TO N

IF TMP (U) <TMP (I) THEN CALL SWAP (TMB (U) , TMP (I) )
NEXT J
NEXT T
END SUE

! Sub rutina que ordena el vector con el mtodo Quick Sort.


SUB QUICKSORT (TMP ( ) )
LET N=SIZE (TMP)

- 414 -
Arreglos, mtodos de clasificacin y bsqueda. Captulo IX.

IE" N=O) THEN EXIT SUE


CALL SORT (TMP, 1, N)
END SUE

SUB SORT (TMP ( ) , L, R)


ILET I=I,
ILET' J=R
LET X=TMP (INT ( (L+R)/2) )
DO

DO WHILE TMP (I) <X


LET T=I+1
LOOP

DO WHILE XTMP (U)


ILET' J= J1
LOOP
IE" T =J THEN

CALL SWAP (TMP (I) ,TMP (U) )


LET T=I+1
ILET' J= J1
END IE"
ILOOP UNTIL I> J

! Inicia el proceso recursivo.


IF LU THEN CALL SORT (TMP, L, J)
IF I<R. THEN CALL SORT (TMP, I, R)
END SUE

! Sub rutina que ordena el vector con el mtodo de la sacudida.


SUB. SACUDIDA (TMP ( ) )
LET N=SIZE (TMP)
LET LI=2
ILET IS=N
ILET I=IS
DO
FOR J=LS TO LI STEP 1
IF TMP (U) <TMP (J1) THEN
CALL SWAP (TMP (J) ,TMP (J1) )
ILET I= J
END IE"
NEXT J
ILET II= I+1
EOR J=IT TO LS

IF TMP (U) <TMP (J1) THEN


CALL SWAP (TMP (J) ,TMP (J1) )
ILET I= J
END IE"
NEXT J
LET. LS=T1
ILOOP UNTIL II > IS
END SUE

! Sub rutina que ordena el vector con el mtodo de seleccin.


SUB SELECCION (TMP ( ) )
LET N=SIZE (TMP)
EOR. T=1 TO N1
ILET' R= I
EOR J=T+1. TO N

- 415 -
Tras los pasos de un.. Hacker

IF TMP (R) >TMP (U) THEN LET R=U


NEXT J

IF R.<> I THEN CALL SWAP (TMP (I) , TMP (R) )


NEXT T
END SUE

! Sub rutina que ordena el vector con el mtodo de seleccin.


SUB HEAPSORT (TMP ( ) )
LET N=SIZE (TMP)
EOR. T = 2 TO N
CALL PERCOLATEUP (I, TMP)
NEXT T
EOR. T = N TO 2 STEP 1
CALL SWAP (TMP (1) ,TMP (I) )
CALL PERCOLATEDOWN (I1, TMP)
NEXT T
END SUE

SUB PERCOLATEDOWN (N,TMP ( ) )


ILET I =1
DO
LET. J= 2 T
IE" J>N THEN EXIT DO
IE" J+1 =N THEN
IF TMP (J+1) > TMP (U) THEN
LET. J=J+1
END IE"
END IE"
IF TME (I) < TMP (U) THEN
CALL SWAP (TMP (I) ,TMP (U) )
ILET I= J
EL SE
EXIT DO
END IE"
LOOP
END SUE

SUB PERCOLATEUP (N, TMP ( ) )


ILET I=N
DO UNTIL T=1
LET J=INT (I/2)
IF TME (I) > TMP (J) THEN
CALL SWAP (TMP (J) ,TMP (I) )
ILET I= J
EL SE
EXIT DO
END IE"
LOOP
END SUE

! Sub rutina que ordena el vector con el mtodo de seleccin.


SUB CAMBIO (TMP ( ) )
LET N=SIZE (TMP)
EOR. T=1 TO N
ILET' R= I
EOR J=T+1. TO N

-416 -
Arreglos, mtodos de clasificacin y bsqueda. Captulo IX.

IF TMP (U) <TMP (R) THEN


ILET' R= J
END IE"
NEXT J
IE" R> T THEN

CALL SWAP (TMP (I) ,TMP (R) )


END IE"
NEXT T
END SUE

! Sub rutina que intercambia los valores entre dos variables . . .


SUB SWAP (V1, V2)
LET TEME=V1.
LET. V1 =V2
LET. V.2=TEMP
END SUE

! Ordenamiento de matrices en base a una clave K.


! Sub rutina que ordena una matriz, comparando una clave K (columna)
! de una matriz con el mtodo de Shell.
suB MAT SHELL SORT (TMB (, ) , K)
! Obtiene la cantidad de nmero de elementos de la dimensin de la matriz. . .
LET N=SIZE (TMP, 1)
! Calcula lmite inferior.
LET LI=INT (N/2)
! Empieza el proceso de ordenamiento . . .
DO WHILE LI> (O
! Calcula lmite superior.
ILET IS=N II
DO
ILET' J=()
EOR. T=1 TO LS

IF TMP (I, K) >TMP (I+LI, K) THEN


! Realiza intercambio de valores .
CALL SWAP COL (TMP, I, I+LI)
ILET' J= I
END IE"
NEXT T

! Calcula nuevo lmite superior.


ILET IS= J II
LOOP WHILE JC (O
! Calcula nuevo lmite inferior.
LET LI=INT (LI/2)
LOOP
END SUE

! Sub rutina que intercambia los valores entre filas de una matriz. . .
sUB SWAE COL (TMB (, ) , I, J)
LET X=SIZE (TMP, 2)
EOR. K=1. TO X

LET TEMP=TMP (I, K)


LET TMP (I, K)=TMP (J, K)
LET TMP (J, K)=TEMP
NEXT K
END SUE

- 417 -
Tras los pasos de un... Hacker

Algoritmo que permite realizar una comparacin de los diferentes


Ejemplo 85.

mtodos de ordenamiento en forma ascendente. Usar todos los mtodos de


ordenamiento aprendidos. El programa tiene que verificar que la cantidad
de elementos sea entre 1 y 20.000.

Ahora implementemos el programa para nuestro laboratorio, puede ser la


siguiente propuesta:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 25. Ejemplo No. 85 del texto.
!
! Laboratorio de informtica.

! Programa que ilustra el uso de los mtodos de ordenamiento.


!
! Compara los diversos mtodos.
!
! Se usar un vector numrico para almacenar los datos y
! presentar los resultados.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables: A, TMP, vectores numricos, contendrn los datos.

! I, J numricas, contadores de los procesos.


! TI, TF, T numricas, tiempo de ejecucin.
! S numrica, temporal captura cdigo de tecla pulsada.
! N numrica, cantidad de elementos en el vector.
! R numrica, puntero para proceso.
!
! Funciones: Definida por el usuario.

! Tiempo_Transcurrido$, funcin string que devuelve el valor del tiempo


! transcurrido en un formato HH:MM:SS.SSS el tiempo en segundos se
! expresar en milisegundos.
!
! Internas de True BASIC.
! TIME, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.
!
! Libreras:
! MENSORT.TRU, contiene funciones y subrutinas comunes a todos los
! procedimientos de ordenamiento.
!
! S_LABLIB.TRU, contiene subrutinas con los mtodos de ordenamiento.
!

- 418 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

! Mdulos:
! Ninguno.
!
LIBRARY "MENSORT.TRU",
! Incluye "S_LABLIB.TRU"
los procedimientos guardados en la librera...

! Inicia el proceso.

! Definimos una funcin que transformar la cantidad de segundos a horas, minutos


DECLARE
! FUNCTION Tiempo_Transcurrido$
y segundos...

! Vector A que contendr


Dimensionamos el vectorlos elementos
a ser a ordenarse.
utilizado.

DIM A(0), TMP(0), R(9,2), NMET$(9)


CLEAR

FOR I=1 TO 9
! Inicializar el vector si no tiene elementos y presentar un mensaje de
! saludo y objetivo del programa.
LET
CALLR(I,1)=I
MAT PRESENTAR(A)
TMP=A

SELECT CASE I
CASE 1
LET NMET$(I)=Insercin.
SET COLOR 15
PRINT
SET COLOR
"Mtodo
7 utilizado: ;NMET$(I)

PRINT
Inicializa
LET
PRINT
! "Iniciael
TI=TIME tiempo de ejecucin como TI (tiempo inicial).
ordenamiento..."

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL INSERCION(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

LET R(I,2)=TF
CASE 2
LET NMET$(I)=Shell
SET COLOR 15 Sort.

SET
PRINT
COLOR
"Mtodo
7 utilizado: ;NMET$(I)

PRINT
Inicializa
LET
PRINT
! "Iniciael
TI=TIME tiempo de ejecucin como TI (tiempo inicial).
ordenamiento..."

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL SHELL_SORT(A)

! Captura el tiempo final de ejecucin como TF (tiempo final).

- 419 -
Tras los pasos de un... Hacker

LET TF=TIME-TI
LET R(I,2)=TF
CASE 3
LET NMET$(I)=Bubble
SET COLOR 15 Sort.

PRINT
SET COLOR
"Mtodo
7 utilizado: ;NMET$(I)

PRINT
PRINT "Inicia ordenamiento..."

! Inicializa
LET TI=TIME el tiempo de ejecucin como TI (tiempo inicial).

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL BURBUJA(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

LET R(I,2)=TF
CASE 4
LET NMET$(I)=Intercambio de Batcher.
SET COLOR 15
PRINT "Mtodo utilizado: ;NMET$(I)
SET COLOR 7
PRINT
PRINT "Inicia ordenamiento..."

! Inicializa
LET TI=TIME el tiempo de ejecucin como TI (tiempo inicial).

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL INTERCAMBIO_BATCHER(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

LET R(I,2)=TF
CASE 5
LET NMET$(I)=QuickSort.
SET COLOR 15
PRINT "Mtodo utilizado: ;NMET$(I)
SET COLOR 7
PRINT
PRINT "Inicia ordenamiento..."

! Inicializa
LET TI=TIME el tiempo de ejecucin como TI (tiempo inicial).

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL QuickSort(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

LET R(I,2)=TF
CASE 6
LET NMET$(I)=Sacudida.
SET COLOR 15

- 420
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

PRINT "Mtodo
SET COLOR 7 utilizado: ;NMET$(I)

PRINT
! Inicializa
PRINT
LET "Iniciael
TI=TIME tiempo de ejecucin como TI (tiempo inicial).
ordenamiento..."

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL SACUDIDA(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

LET R(I,2)=TF
CASE 7
LET NMET$(I)=Seleccin.
SET COLOR 15
PRINT "Mtodo utilizado: ;NMET$(I)
SET COLOR 7
PRINT
! Inicializa
PRINT
LET "Iniciael
TI=TIME tiempo de ejecucin como TI (tiempo inicial).
ordenamiento..."

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL SELECCION(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

LET R(I,2)=TF
CASE 8
LET NMET$(I)=HeapSort.
SET COLOR 15
PRINT "Mtodo utilizado: ;NMET$(I)
SET COLOR 7
PRINT
! Inicializa
PRINT
LET "Iniciael
TI=TIME tiempo de ejecucin como TI (tiempo inicial).
ordenamiento..."

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL HEAPSORT(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

LET R(I,2)=TF
CASE 9
LET NMET$(I)=Cambio.
SET COLOR 15
PRINT "Mtodo utilizado: ;NMET$(I)
SET COLOR 7
PRINT
PRINT "Inicia ordenamiento..."

- 421 -
Tras los pasos de un... Hacker

! Inicializa
LET TI=TIME el tiempo de ejecucin como TI (tiempo inicial).

! Inicia el proceso de ordenamiento usando el mtodo de seleccin.


CALL CAMBIO(A)

Captura
LET
! el tiempo final de ejecucin como TF (tiempo final).
TF=TIME-TI

LET R(I,2)=TF
CASE ELSE
END SELECT

PRINT
CALL
PRINT
! PRESENTA_VECTOR(A)
Presenta
"Termina
el vector
ordenamiento..."
ordenado.

PRINT

! Alerta al usuario con un sonido que el proceso termin.


PLAY "o4l32dcga"
SET COLOR 15

! Muestra el tiempo utilizado.


PRINT "Tiempo requerido: ";
PRINT Tiempo_Transcurrido$(TF)
SET COLOR 7
GET KEY S
MAT A=TMP
NEXT I
! Clasifica los mtodos de ordenamiento desde el peor hasta el mejor
CALL PRESENTAR_EST(A,NMET$,R)
END

RESULTADOS DEL LABORATORIO


Ejecutemos nuestro laboratorio y analicemos algunos resultados, generemos
vectores de 20.000, 15.000, 10.000, 5.000, 2.500 elementos y veamos cmo se
comportan nuestros algoritmos?

- 422
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

1. Resultados para ordenar un vector de 20.000 elementos con varios


mtodos de clasificacin:

2. Resultados para ordenar un vector de 15.000 elementos con varios


mtodos de clasificacin:

- 423 -
Tras los pasos de un... Hacker

3. Resultados para ordenar un vector de 10.000 elementos con varios


mtodos de clasificacin:

4. Resultados para ordenar un vector de 5.000 elementos con varios


mtodos de clasificacin:

- 424
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

5. Resultados para ordenar un vector de 2.500 elementos con varios


mtodos de clasificacin:

En clase con el profesor gua pueden realizar ms estudios sobre el


comportamiento de estos algoritmos, en todo caso lo importante del laboratorio
es comprobar por nosotros mismos que un problema tiene varias soluciones; y,
que conforme se va mejorando el algoritmo su eficiencia tambin mejora.

- 425 -
Tras los pasos de un... Hacker

- 426 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

EJERCICIOS PROPUESTOS:

Elaborar los algoritmos solicitados para resolver cada uno de los siguientes
problemas:

Modificar todos los algoritmos de clasificacin para que ordene


Ejercicio 261.
vectores de tipo string. Presentar en pantalla los resultados.

Modificando el programa del ejemplo 74. Hacer que el programa


Ejercicio 262.
presente el listado de alumnos ordenado alfabticamente. Presente la
clasificacin desde el mejor promedio hasta el peor. Presentar en pantalla los
resultados.
Se pide realizar un programa para calcular la suma de dos matrices A y
Ejercicio 263.
B de m x n. Implementar los algoritmos para ingreso de datos, proceso de datos y
presentacin de los resultados.
Se pide realizar un programa para que multiplique dos matrices A y B.
Ejercicio 264.
Implementar los algoritmos para ingreso de datos, proceso de datos y
presentacin de los resultados. El algoritmo debe validar las dimensiones de las
matrices para que pueda producirse la multiplicacin matricial.
Se pide realizar un programa para simular en un tablero de ajedrez el
Ejercicio 265.
paso del caballo. Implementar los algoritmos para que una matriz simule un
tablero de ajedrez, simule el movimiento de un caballo; y, finalmente calcule los
movimientos que se debe realizar para que, empezando en cualquier posicin del
tablero, el caballo pueda moverse por todos los casilleros sin pasar dos veces por
la misma posicin. Presentar el listado de los movimientos en orden de
ejecucin.

- 427 -
Tras los pasos de un... Hacker

- 428 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

9.3 MTODOS DE BSQUEDA

Otro de los problemas a los que frecuentemente nos vemos enfrentados es el de


la recuperacin de datos cuando estos estn almacenados de alguna manera.

Estos problemas tienen solucin dependiendo de cmo est almacenada la


informacin? Normalmente a esta informacin la organizamos usando arreglos y
dependiendo del objetivo que perseguimos, estos arreglos sern vectores o
matrices generalmente. Los mtodos que nos permiten la recuperacin de la
informacin, dependern de la forma en que esta es almacenada y estructurada
en una base de datos o con cierta estructura o si definitivamente est almacenada
en un caos organizacional.

As tendremos dos grandes familias de mtodos de bsqueda:


1. Mtodos de bsqueda secuencial. Cuando la informacin est
desorganizada.
2. Mtodos de bsqueda en arreglos ordenados. Cuando la informacin
est organizada.

Explicaremos los casos generales de estos mtodos, al alumno le queda la tarea


de investigar a profundidad algunas implementaciones importantes.

9.3.1 BSQUEDASECUENCIAL
Estos mtodos, cuando la informacin no est organizada de ninguna manera,
consisten en empezar a leer la informacin desde el primer byte e ir preguntando
si la porcin recuperada corresponde al dato que buscamos y as hasta terminar
de leer el medio que posiblemente contiene la informacin.
En otras palabras y aunque suene redundante la computadora empezar su
bsqueda por el principio y continuar hasta encontrar la informacin o hasta
que se termine de leer el medio correspondiente.

A manera de ejemplo y con fines didcticos exclusivamente, implementaremos


un programa que ilustra esta familia de mtodos.

- 429 -
Tras los pasos de un... Hacker

EJERCICIOS RESUELTOS:

Algoritmo que busca una palabra contenida en una variable string.


Ejemplo 86.

Implementar una funcin donde ingresada una variable string que contiene
una frase compuesta de varias palabras, nos mencione si ingresada otra se
encuentra o no en la frase.
Para resolver este problema, en primer lugar, tomemos nota de los detalles
planteados y propongamos una estrategia de solucin:

Detalles:

Necesitamos ingresar a la funcin (F_PAL, 0 falso, 1 verdadero) dos


variables string, una para que contenga la frase y la otra para realizar la
bsqueda. Definiremos las variables A$y B$.

Necesitamos algn contador para que nos indique desde dnde? y hasta
dnde? realizar el proceso, para esto definiremos la variable tpica I, una
que contenga el lmite de la bsqueda N, finalmente una variable
temporal para el clculo auxiliar respectivo, la denominaremos TEMP.

Usaremos la funcin interna del True BASIC, LEN(A$), la misma que nos
devuelve la cantidad de caracteres que contiene la variable A$, as como
la forma de localizar substrings que est definida con la siguiente
expresin A$[X:Y], indicar que se tomar desde el carcter ubicado en la
posicin X hasta el carcter ubicado en la posicin Y de la variable A$.

Ahora planteemos una estrategia de solucin, para la cual realizaremos las


siguientes acciones:

1. Ingresaremos la frase y la almacenaremos en la variable A$.

2. Pediremos que el usuario ingrese una palabra a buscar en la frase. La


almacenaremos en la variable B$.

3. Invocaremos a la funcin F_PAL(A$,B$)

4. Si F_PAL=1 presentaremos el mensaje que diga Las letras ;B$; si est


contenida, caso contrario presentar uno que diga Las letras ;B$; no
est contenida.

- 430 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

5. Fin del proceso.

Para la funcin F_PAL(A$,B$):

1. Calcularemos la cantidad de caracteres de A$, la almacenaremos en N.

2. Calculamos la cantidad de caracteres de B$, la almacenaremos en TEMP,


ya podemos saber hasta dnde movernos dentro de la frase. (N-TEMP+1)

3. Validaremos si N<TEMP, si es verdadero terminamos el proceso y


devolvemos un valor 0 (falso).

4. Inicializamos nuestro contador I=0


5. Iniciaremos nuestra bsqueda secuencial, para esto inicializamos nuestro
bucle indeterminado (I= I+1).

6. Validaremos si el substring A$[I:I+TEMP-1]=B$, si es verdadero


retornamos un valor 1 (verdadero) y terminamos el proceso.

7. Repetimos desde el paso 5 hasta que I=N-TEMP+1

8. Fin de la funcin.

La codificacin de la funcin y el programa ejemplo puede quedar as:

! Funcin que determina si B$, est contenido en A$.


FUNCTION F_PAL(A$,B$)
LET TEMP=LEN(B$)
N=LEN(A$)

IF N<TEMP THEN
LET F_PAL=0
EXIT FUNCTION
END IF
LET I=0
! Empieza el proceso de bsqueda secuencial en la variable...
DO

LET I=I+1
IF A$[I:I+TEMP-1]=B$ THEN
LET F_PAL=1
EXIT FUNCTION
END IF
LOOP UNTIL I=N-TEMP+1
END FUNCTION

Programa ejemplo:

- 431 -
Tras los pasos de un... Hacker

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.

! Programa No. 26. Ejemplo No. 86 del texto.


!
! Programa que ilustra el uso de los mtodos de bsqueda.
!
! Bsqueda secuencial.
!
! Se implementar un funcin F_PAL(A$,B$), que retornar
! 0 si no se encuentra B$ en A$, o 1 si es verdadero.
!
! Autor: Nstor Marroqun.
!
! Frmulas:
! Ninguna.
!
! Variables: I numrica, contador del proceso.
A$, B$ strings, variables que contendrn los datos.

! N, TEMP numricas, temporales de uso en la funcin.


!
! Funciones: Definida por el usuario.

! F_PAL(A$,B$), funcin numrica que devuelve:


! 0 (falso) si B$ no est contenida en A$.
! 1 (verdadero) si B$ est contenida en A$.
!
! Internas de True BASIC.
! LEN, devuelve la cantidad de segundos transcurridos desde la media
! noche del da en milisegundos.
!
! Libreras:
! Ninguna.
!
! Mdulos: Ninguno.

! Inicia el proceso.

! Definimos la funcin.

DECLARE FUNCTION F_PAL

CLEAR
PRINT "Programa que muestra el uso de un mtodo de bsqueda secuencial."

PRINT "Ingrese frase: ";


LINE INPUT A$
PRINT
PRINT "Ingrese palabra a buscar: ";
INPUT B$
IF F_PAL(A$,B$)=1 THEN

- 432
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

PRINT "Las letras ";B$;" si estn contenidas en la frase..."


ELSE

ENDPRINT
IF "Las letras ";B$;" no estn contenidas en la frase..."

END

! Funcin que determina si B$, est contenido en A$.


FUNCTION F_PAL(A$,B$)
LET N=LEN(A$)
LET TEMP=LEN(B$)
IF N<TEMP THEN
LET F_PAL=0
EXIT FUNCTION
END IF
LET I=0
! Empieza el proceso de bsqueda secuencial en la variable...
DO

LET I=I+1
IF A$[I:I+TEMP-1]=B$ THEN
LET F_PAL=1
EXIT FUNCTION
END IF
LOOP UNTIL I=N-TEMP+1
END FUNCTION

El programa al ejecutarlo, nos mostrar por ejemplo:

Cuando encuentra

Cuando no encuentra

- 433 -
Tras los pasos de un... Hacker

9.3.2 BSQUEDA ENARREGLOS ORDENADOS

Uno de los mtodos eficientes para realizar una bsqueda en un arreglo


ordenado es el que se conoce como bsqueda binaria, se estructurar una
subrutina la misma que trabaja de la siguiente manera:
1. Se recibe un dato a buscar en un vector (A(N)) ordenado, el dato puede
ser almacenado en la variable X.
2. Se inicializa una bandera de estado (FLAG = 0, falso)
3. Se calculan: Un lmite inferior (LI = 1) y un lmite superior (LS= N).
4. Se calcula un puntero denominado MEDIO como MEDIO = INT((LI+
LS)/2)
5. Se pregunta: Si A(MEDIO)<X entonces calcular LI= MEDIO+ 1.
6. Caso contrario: Si A(MEDIO)>X entonces calcular LS= MEDIO-1.
7. Caso contrario: Se encontr el dato. Retornar nuestra bandera como
verdadera (FLAG=1, verdadero). Salir del bucle.
8. Repetir desde el paso 3 mientras LI<=LS
9. Se pregunta: Si FLAG=0 entonces asignar MEDIO=LI
10. Fin de la subrutina.

Grafiquemos el funcionamiento de este mtodo de bsqueda, por ejemplo, con un


vector A con 11 elementos ordenados del 1 al 11, pidamos que nos devuelva la
posicin (puntero) que ocupa el valor 10 (dato a buscar).
Si nosotros hubiramos elegido un mtodo de bsqueda secuencial, para llegar a
la posicin donde est contenido el dato a buscar, implementaramos una
subrutina que recorra todo el vector, si en alguna posicin el dato est,
devolveramos su posicin y terminaramos el proceso. En el peor de los casos,
supongamos que el dato est en la ltima posicin, quiere decir que nuestra
subrutina debera recorrer los N elementos que tiene el vector, si nuestro vector
tiene por decir algo un milln de datos, esperaramos algn tiempo hasta que
nuestra subrutina encuentre el dato. (En el ejemplo sugerido, la funcin
secuencial debera hacer 10 pasos)
Con el mtodo de la bsqueda binaria como podremos ver, la subrutina
encuentra el dato en tan solo 3 pasos (este mtodo localiza el dato en un vector
ordenado con N elementos en un mximo de log2N comparaciones, realmente
hay que tomar la parte entera de este clculo, en un vector con 1000.000 de

- 434
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

datos tendramos que hacer un mximo de 19 comparaciones y no 1000.000),


observemos:

Bsqueda Binaria
En A(11) buscar X = 10

1 FLAG = 0 X = 10
A(N)

A(4)
A(3)
A(5)
A(2)
A(1) 2
1 LI = 1

A(6) 6 MEDIO = 6

2 A(7)
A(9)
A(8) 9
8
7 LI = 7

MEDIO = 9

3 A(11)
A(10) 11
10 LS = 11 LI = 10 MEDIO = 10 FLAG = 1

El cdigo de esta implementacin sera parecido a este:


! Bsqueda binaria en un arreglo ordenado.
SUB BIN_SEARCH(A(),X,MEDIO,FLAG)
LET FLAG=0
LET LI=LBOUND(A)
LS=UBOUND(A)
DO WHILE LI<=LS

LET MEDIO=INT((LI+LS)/2)
IF A(MEDIO)<X THEN
LET LI=MEDIO+1
ELSE IF A(MEDIO)>X THEN
LET LS=MEDIO-1
ELSE
LET FLAG=1

- 435
Tras los pasos de un... Hacker

EXIT DO
END IF
LOOP
IF
! Para
FLAG=0
usoTHEN
si deseamos
LET MEDIO=LI
insertar un dato en el vector ordenado.

END SUB

Ahora ilustremos este procedimiento con un programa ejemplo.

EJERCICIOS RESUELTOS:

Algoritmo que busca un nmero contenido en un vector ordenado.


Ejemplo 87.

Implementar una subrutina donde ingresado el vector ordenado y el dato a


buscar, nos retorne la posicin del dato solicitado o nos informe que no
existe. Desarrollar un programa que ilustre el uso de la subrutina.

Como ya est definida la estrategia de solucin, el cdigo del programa ejemplo


puede ser el siguiente:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 27. Ejemplo No. 87 del texto.
!
! Programa que ilustra el uso de los mtodos de bsqueda.
!
! Bsqueda Binaria.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables: A(N) numrico, vector que contiene N datos.

! LI, LS, MEDIO numricas, punteros del proceso.


! TEMP numrica, dato temporal.
! X numrica, dato a buscar.
! FLAG numrica, bandera de estado del proceso.
! 0 verdadero.
1 falso.

!
! Funciones: Internas de True BASIC.

! LBOUND(VECTOR), devuelve el valor del subndice menor del vector.


! UBOUND(VECTOR), devuelve el valor del subndice mayor del vector.

-436 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

! INT(X), retorna el valor entero de X.


!
! Libreras:
! Ninguna.
!
! Mdulos: Ninguno.

! Definimos el vector.
DIM A(11)

! Cargamos los datos iniciales del vector.


FOR I=1 TO SIZE(A)
READ TEMP
LET A(I)=TEMP
NEXT I

! Inicia el proceso.
CLEAR
PRINT "Programa que muestra el uso de la bsqueda binaria."
PRINT

! Ingresamos el dato a buscar en el vector.


PRINT "Dato a buscar (X): ";
INPUT X
PRINT

! Invocamos a la subrutina que hace el procedimiento.


CALL BIN_SEARCH(A,X,MEDIO,FLAG)

! Desplegamos un mensaje dependiendo del resultado de la bsqueda.


IF FLAG=1 THEN
PRINT "El dato";X;"se encuentra en la posicin";MEDIO
ENDPRINT
ELSE IF "El dato";X;"no se encuentra en el vector."

! Presentamos el contenido del vector.


PRINT
PRINT "El vector contiene: "
PRINT
FOR PRINT
I=1 TO"A(";I;")
SIZE(A) =";A(I)

NEXT I

! Datos iniciales de carga del vector ejemplo.


DATA 1,2,3,4,5,6,7,8,9,10,11

END

! Bsqueda binaria en un arreglo ordenado.


SUB BIN_SEARCH(A(),X,MEDIO,FLAG)
LET FLAG=0
LETWHILE
DO LI=LBOUND(A)
LS=UBOUND(A)
LI<=LS

- 437 -
Tras los pasos de un... Hacker

LET MEDIO=INT((LI+LS)/2)
IF A(MEDIO)<X THEN
LET LI=MEDIO+1
ELSE IF A(MEDIO)>X THEN
LET LS=MEDIO-1
ELSE
LET FLAG=1
EXIT DO

END IF
LOOP
IF
! Para
FLAG=0
usoTHEN
si deseamos
LET MEDIO=LI
insertar un dato en el vector ordenado.

END SUB

Algoritmo que ordena un vector cada vez que se ingresa un dato


Ejemplo 88.
nuevo. Implementar una subrutina donde ingresado el vector ordenado y
el dato a insertar, la misma nos retorne el vector ordenado con el dato
nuevo. Desarrollar un programa que ilustre el uso de la subrutina.

Ahora con todos estos conocimientos, refinemos un poco el mtodo de


ordenamiento de insercin, para esto utilicemos la bsqueda binaria. Se han
definido algunas estructuras de datos que trabajan con arreglos que si bien no se
han explicado en este texto, sera bueno que ustedes investiguen sobre estos
temas. Qu es una pila de datos? Qu es una cola de datos? Insercin de datos
en arreglos. He creado una pequea librera con estos procedimientos y que los
muestro para los fines didcticos pertinentes.
El cdigo de la librera ARRAYLIB.TRU es el siguiente:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Librera que contiene algunas subrutinas para usar Pilas y Colas.
!
! Bsqueda Binaria y un mtodo de ordenamiento por insercin.
!
! Autor: Nstor Marroqun.
!
! Frmulas:
! Ninguna.

! Variables:
! A(N) numrico, vector que contiene N datos.
! LI, LS, MEDIO numricas, punteros del proceso.
! TEMP numrica, dato temporal.
! X numrica, dato a buscar.
! FLAG numrica, bandera de estado del proceso.

- 438 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

! 0 verdadero.
1 falso.

!
! Funciones:
! Internas de True BASIC.
! LBOUND(VECTOR), devuelve el valor del subndice menor del vector.
! UBOUND(VECTOR), devuelve el valor del subndice mayor del vector.
! INT(X), retorna el valor entero de X.
!
! Subrutinas:
!
! Push(A,X) adiciona al arreglo numrico A el elemento X.
!
! Para pilas de datos procedimiento LIFO.
! Pop(A,X) devuelve en X el valor del ltimo elemento
! adicionado al arreglo numrico A y lo retira de A.
!
! Para colas de datos procedimiento FIFO.
! Batch(A,X) devuelve en X el valor del primer elemento
! del arreglo A y lo retira de A.
!
! Insercin de datos en un vector ordenado.
! Insert_sort(A,X) inserta el elemento X en el vector A y lo
! devuelve ordenado, A debe estar ordenado para esta operacin.
!
! Libreras:
! Ninguna.
!
! Mdulos:
! Ninguno.
!
! Librera de procedimientos con arreglos.

EXTERNAL

! Inserta datos a una pila.


SUB PUSH(A(),X)
LET REDIM
MAT N=SIZE(A)+1
A(N)

LET A(N)=X
END SUB

! Proceso LIFO en una pila.


SUB POP(A(),X)
LETN>0
IF N=SIZE(A)
THEN

LET REDIM
MAT X=A(N)A(N-1)

END IF
END SUB

! Proceso FIFO en una pila.


SUB BATCH(A(),X)
LETN>0
IF N=SIZE(A)
THEN

LET X=A(1)

- 439 -
Tras los pasos de un.. Hacker

EOR. T= 2 TO N
LET A ( I1)=A (I)
NEXT T
MAT REDIM A (N1)
END IE"
END SUE

! Bsqueda binaria en un arreglo ordenado.


sUB BIN SEARCH (A() , X, MEDIO, FLAG)
LET. FLAG=0
LET LI=LBOUND (A)
LET. LS=UBOUND (A)
DO WHILE II (=IS

LET MEDIO=INT ( (LI+LS)/2)


IF A (MEDIO) <X THEN
LET LI=MEDIO+1
EL SE IF A (MEDIO) >X THEN
LET. LS=MEDIO1
ELSE
LET. FLAG=1
EXIT DO
END IE"
LOOP
! Para uso si deseamos insertar un dato en el vector ordenado .
IE" FLAG=0 THEN LET MEDIO=LI
END SUE

! Mtodo de ordenamiento refinando el de insercin directa.


suB INSERT SORT (A(), X)
LET N=SIZE (A)
LET MEDIO=0
LET. FLAG=0
CALL BIN SEARCH (A, X, MEDIO, FLAG)
CALL INSERT DAT (A, X, MEDIO)
END SUE
! Inserta datos en un vector.
sUB INSERT DAT (A() , X, IN)
LET N=SIZE (A)
IE" IN =N AND NO (O) THEN
LET N=N+1
MAT REDIM A (N)
FOR T=N1. TO IN STEP 1
LET A (I+1)=A (I)
NEXT T
LET A (IN)=X
ELSE

CALL PUSH (A, X)


END IE"
END SUE

Sabemos como trabaja el mtodo de insercin directa, ahora planteamos la


siguiente solucin con este pequeo programa ejemplo:

- 440
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Programa No. 28. Ejemplo No. 88 del texto.
!
! Programa que mejora el mtodo de ordenamiento de insercin directa.
!
! Usando el mtodo de la Bsqueda Binaria.
!
! Autor: Nstor Marroqun.
!
! Frmulas: Ninguna.

!
! Variables: A(N) numrico, vector que contiene N datos.

! LI, LS, MEDIO numricas, punteros del proceso.


! TEMP numrica, dato temporal.
! X numrica, dato a buscar.
! FLAG numrica, bandera de estado del proceso.
! 0 verdadero.
1 falso.

!
! Funciones: Internas de True BASIC.

! SIZE(VECTOR), devuelve la cantidad de elementos del vector.


!
! Libreras:
! ARRAYLIB.TRU.
!
! Mdulos: Ninguno.

! Incluyamos los procedimientos de la librera ARRAYLIB.TRU.


LIBRARY "ARRAYLIB.TRU"

! Definimos el vector.
DIM A(0)

! Inicia el proceso.
CLEAR
PRINT "Programa que muestra una aplicacin de la bsqueda binaria."
PRINT

LET N=11
FOR I=1 TO N
PRINT "Ingrese dato a insertar en el vector: ";
INPUT X
CALL INSERT_SORT(A,X)
NEXT I

! Presentamos el contenido del vector.


PRINT
PRINT "El vector contiene: "

- 441 -
Tras los pasos de un... Hacker

PRINT
FOR PRINT
I=1 TO"A(";I;")
SIZE(A) =";A(I)

NEXT I

END

Probemos nuestro programa, primero ingresando los datos ordenados del 1 al


11, luego en orden inverso, luego con datos aleatorios.

Datos ordenados del 1 al 11:

Datos en orden inverso:

- 442 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

Datos aleatorios:

- 443 -
Tras los pasos de un... Hacker

La parte acadmica de este texto termina aqu, les invito a que por cuenta propia
investiguen los temas relacionados a manejo de archivos, grficos y sonidos en
True BASIC.

Cuando ya dominen estos tpicos, les ser fcil entender e implementar mdulos
como estructuras de un programa en True BASIC.

Hasta una prxima oportunidad en que pueda ensearles algo de manera


formal!

NOTAS Y BIBLIOGRAFA
Sobre este tratado de Arreglos, Mtodos de Clasificacin y Bsqueda, las notas
han sido elaboradas en base a publicaciones de revistas especializadas y la
consulta de los siguientes textos:

- LGEBRAELEMENTAL MODERNA, M. O. Gonzlez J. D. Mancill, Editorial


KAPELUSZ, Publicado en Buenos Aires Argentina, 1.962.
- Matemticas y Astronoma, Tomo No. 11, Enciclopedia Salvat de las
Ciencias, Salvat S.A. de Ediciones, Pamplona, Espaa, 1.968.
- CMO PROGRAMAR COMPUTADORAS, URMOS.A, DE EDICIONES, Bilbao
Espaa, 1.977.
- Curso Prctico de Programacin, Intermedio Editores S.A., Bogot
Colombia, 1.984.
- EL ARTE DE PROGRAMAR ORDENADORES ALGORITMOS
FUNDAMENTALES - Volumen I, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.985.
- QL PROGAMACIN EN SUPERBASIC, Roy Atherton, MicroTextos S.A. de
ediciones, Madrid Espaa, 1.985.
- Programacin Estructurada en Lenguaje Pascal, ENCICLOPEDIA
PRCTICA DE LA INFORMTICAAPLICADA, TOMO 3, Juan Ignacio Puyol,
EDICIONESSIGLOCULTURALS.A., Madrid Espaa, Octubre de 1.986.

- 444 -
Arreglos, mtodos de clasificacin y bsqueda... Captulo IX.

- EL ARTE DE PROGRAMAR ORDENADORES CLASIFICACIN Y


BSQUEDA - Volumen III, Donald E. Knuth, Editorial Revert S.A.,
Barcelona Espaa, 1.987.
- Structured BASIC Programming, John G. Kemeny & Thomas E. Kurtz, John
Wiley & Sons, Publicado en Estados Unidos de Norte Amrica, 1.987.
- True BASIC by Problem Solving, Brian D. Hahn, VCH Verlagsgesellschaft
mbH, Weinheim Repblica Federal de Alemania, 1.988.
- Personal Mathematics and Computing, Frank Wattenberg, MIT Press,
Publicado en Estados Unidos de Norte Amrica, 1.990.
- The Fun of Computing, John G. Kemeny, True BASIC Inc. 1.990,
Publicado en los Estados Unidos de Norte Amrica, 1.990.
- Programacin en C, Byron S. Gottfried, McGraw Hill / Interamericana de
Espaa S.A., Madrid Espaa, 1.991.
- Microsoft MASM, Assembly Language Development System Version 6.1.,
Microsoft Corporation 1.987, 1.991, 1.992 U.S. Patent No. 004955066,
Estados Unidos de Norte Amrica, 1.992.
- DiscoveryPak, True BASIC Inc., True BASIC Press, Publicado en Estados
Unidos de Norte Amrica, 1.993.
- Ingeniera del Software Un enfoque prctico, Roger S. Pressman,
McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa, 1.993.
- Organizacin y diseo de computadores La interfaz hardware /
software, David A. Patterson John L. Hennessy, McGraw Hill /
Interamericana de Espaa S.A., Madrid Espaa, 1.995.
- The YOU Based LABORATORY, TI-CBL EXPLORATIONS in Science and
Mathematics, Margo L. Mankus Frank Wattenberg, Weber State
University 1.996, Publicado por True BASIC Inc., 1.996.
- Lets Program It in True BASIC, Avery Catlin, True BASIC Press,
Publicado en Estados Unidos de Norte Amrica, 1.996.
- Programming for ENGINEERS in True BASIC, Avery Catlin, True BASIC
Press, Publicado en Estados Unidos de Norte Amrica, 1.996.
- LGEBRA LINEAL CON APLICACIONES, George Nakos David Joyner,
International Thompson Editores, Publicado por International Thompson
Editores S.A., 1.999.
- True BASIC Bronze Edition, Users Guide, John G. Kemeny Thomas E.
Kurtz, True BASIC Inc. 2.001, Publicado en los Estados Unidos de Norte
Amrica, 2.001.

- 445 -
Tras los pasos de un... Hacker

- Matemtica e Informtica, Tomo No. 11, Enciclopedia Larousse del


Estudiante, Sociedad Comercial y Editorial Santiago Ltda., Santiago de
Chile, Chile, 2.000 2.002.
- Polymorphous Encryption System, Nstor Marroqun Carrera, U.S. Patent
Application No. 20020191786 A1, Diciembre de 2.002.
- Manual Moderno de Informtica, Labor Loerincs, Zamora Editores Ltda.,
Publicado por Quebecor World Bogot S.A., Impreso en Bogot
Colombia, 2.004.
- CLCULOAPLICADO, Laurence D. Hoffman, Gerald L. Bradley, Kenneth H.
Rosen, McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa,
2.004.
- La wikipedia, http://www.wikipedia.org. La enciclopedia libre de la
Internet.
- PC World Ecuador,
Magazine, http://www.pcmag.com
http://www.pcworld.com.ec/pcw_catt/index.php

- Notas de clase, Nstor Marroqun, 1.9891.994.


- Trabajos de varios autores publicados en la worldwide web.

- 446 -
INTRODUCCIN (X)

Motivado por las cosas que decan hacen los Hackers en la novela de Sterling,
as como de la forma de trabajar de un programa antivirus que en ese entonces
era famoso (que lo llegu a conocer como Turbo Antivirus de una casa Israelita
llamada CARMEL Software Engineering Ltd.), naci en m la curiosidad de
investigar sobre los ya famosos virus de computadoras que a los Hackers se les
atribua precisamente, el aparecimiento de este tipo de programas de
computadora y en definitiva quera saber: qu eran?, cmo funcionaban?,
cmo se programaban? y por sobre todo cmo se los poda eliminar?

Con la curiosidad motivada, empiezo a investigar a profundidad esta clase de


programas; pude con mis conocimientos adquiridos de programacin en
lenguaje ensamblador para la familia de microprocesadores Intel x86,
entender algunos cdigos fuente de ciertos virus informticos que a travs del
underground de aquel entonces pude tener acceso. Jugaba un poco con estos
cdigos, modificndolos y probando para ver qu hacen estas modificaciones?
en el comportamiento del programa anfitrin, en fin, aprendiendo a programar
virus de computadoras.
Este hobby, obviamente no me traera ingresos, por el contrario, posiblemente
me traera algunos problemas con la justicia; as que, dominadas estas tcnicas,
este conocimiento solamente quedara en el plano acadmico propio. Lo digno
de resaltar de este periodo de investigacin es que me dara la luz para
programar un sistema que podra hacer frente a los virus informticos en un
futuro prximo, revolucionando la forma de atacar este problema. Es as que
empiezo a programar (en True BASIC) un prototipo de esta solucin.
Desarrollado el mismo, comienzo la fase de prueba; y, con los pocos virus reales
que haba podido coleccionar, podra ver si el prototipo funcionaba
correctamente.

Incontables das y noches las pasaba probando y probando algunas


implementaciones de mi prototipo, desarrollaba nuevas tcnicas que segn yo
iban a funcionar, pero estos engendros informticos siempre acababan
infectando mi sistema y los esfuerzos por hacerles frente pareca eran
infructuosos.

- 447 -
Tras los pasos de un... Hacker

Por aquel entonces, un amigo mo, Edgar Lazcano, me invita a colaborar en su


empresa, la misma que se dedicaba a la capacitacin informtica en algunos
colegios de la ciudad. Empezaba ya el boom de la informtica personal en
Ecuador, as como la necesidad que los estudiantes de los diferentes colegios
tengan algunas bases de esta novel ciencia. Sin pensarlo dos veces, para dar un
respiro a mi cansado cerebro, acepto ser instructor de esta materia en el Colegio
Tcnico Nacional Gran Colombia de la Ciudad de Quito; tuve el placer de
capacitar a mis inolvidables alumnas del 4to,5to y 6to curso de las especialidades
de Secretariado y Contabilidad.

Me gustaba ser profesor, a mis 23 aos (y sin compromisos mayores), tena todo
el tiempo del mundo para ensear. Siempre me gust el reto del maestro, mi
pasin era poder transmitir algo de mis conocimientos para que los mismos no
mueran, a la vez para que otra persona pueda sacar provecho de los mismos en
pos de generar una cultura informtica superior en el pas de entonces.

Termina el ao acadmico en julio de 1.993, retomo las pruebas de mi prototipo;


y, Eureka!, funcionaba y a partir de all cambiara la historia de este desconocido
programador y admirador del espritu de un Hacker. A mi programa lo
denomin Check Program (programa de chequeo), que bsicamente era un
controlador de checksums que identificaba si se ha producido algn cambio en
un programa ejecutable. Hasta aqu nada que los programas comerciales de
aquel entonces no hagan as como los que distribua gratuitamente el profesor
Ricardo Ortega.

Una familia especial de virus informticos, burlaban a mi rutina de deteccin por


nombre de virus conocido que la haba implementado en el Check Program.
Estos virus que se los conoce como virus polimorfos o polimrficos me
incitaran a profundizar, investigar y aprender en serio una fascinante
especialidad de la matemtica e informtica que se conoce como Criptologa
(ciencia que estudia los mtodos para esconder informacin as como los
mtodos para recuperarla). Precisamente estos virus, cifraban su propio cdigo
de mltiples formas haciendo que siempre aparezcan codificados de manera
diferente en cada programa infectado (polimorfismo) y que los antivirus
muchas veces no reconocan su firma caracterstica burlando as su proteccin.

Bueno, realizado el criptoanlisis de estas rutinas, pude romper esta


codificacin y hacer que no burlen ms a mi rutina de deteccin. Por esos das,

- 448 -
La historia... Introduccin (X).

un estudiante de la Escuela Politcnica Nacional del Ecuador (EPN), Guillermo


Garca me pedira que recupere de una agenda electrnica muy popular en aquel
tiempo todos los contactos, direcciones y nmeros telefnicos que un amigo suyo
tena y que habra olvidado la password de acceso. Acept el reto de
recuperarlos. Me di cuenta que esta informacin estaba cifrada, entonces decid
romper la codificacin de las secuencias que generaba, haciendo un estudio
comparativo de la informacin, que al guardar con diferentes passwords esta
agenda la procesaba. Ventajosamente el algoritmo de cifrado que estaba
implementado en la agenda no era seguro y pude con relativa facilidad reversar
el proceso y recuperar la password olvidada. A la semana entregu a mi amigo
los resultados, el nico pago que recib de este trabajo era la satisfaccin de
haber superado el reto y a la vez haber ayudado a salir de un problema a mi
amigo.

A fines de 1.993 en el Ecuador empieza a circular un virus polimorfo, que muy


probablemente era una creacin local, al que los antivirus en esa poca no lo
podan identificar, tiempo despus lo bautizaran como Three Tunes o
Pichincha, por mi parte lo habra bautizado como Jaime y para mi Check
Program era el 1784.
De su descubrimiento la prensa local haba reseado algunos artculos, as el 18
de enero de 1.994, el peridico local El Comercio recogera mi artculo en una
primera plana en la seccin Siglo 21.
Para marzo de 1.994, el hijo del Registrador me haba estado buscando para que
ayude a su padre, el REGISTRADOR DE LA PROPIEDAD DEL CANTNQUITO, en
la modernizacin institucional del Registro de la Propiedad, que ya tendra algn
tiempo intentndola y que la empresa que estaba a cargo del contrato no
satisfaca las expectativas del proyecto. Despus de la entrevista de rigor, el
Registrador de la Propiedad me nombr Jefe de Sistemas (ejerc esta funcin
hasta que firmamos un contrato de servicios entre NMC Research Ca. Ltda., y el
Registro de la Propiedad), sin perder tiempo emprendo la labor de modernizar a
la institucin. Este reto lo tomo para una vez ms, demostrarme y demostrar que
se poda automatizar un proceso legal y que se poda organizar en un archivo
digital toda la informacin sobre la historia de la transferencia de dominio,
hipotecas y gravmenes de todas las propiedades del Cantn Quito. En primer
lugar tuve que empaparme de la problemtica legal de los trmites que eran
necesarios para que un contrato de compra venta llegue a legalizarse en el

- 449 -
Tras los pasos de un... Hacker

Registro de la Propiedad, as como de todos los trmites que a partir de all se


pueden realizar (hipotecas, gravmenes, sucesiones, testamentos, etc.), eso hizo
que prcticamente viva en la institucin por casi dos meses instruyndome de
los detalles y llevndolos a un proceso automtico.

Para junio de 1.994, el Registrador de la Propiedad inauguraba los nuevos


servicios computarizados y la ciudadana quitea empez a comprobar que en
realidad con la computacin se poda bajar el tiempo de atencin al usuario, por
ejemplo: de 45 das que duraba la legalizacin de una compraventa se llegara a
entregar estos trmites en tan solo 5 o que una certificacin de gravmenes que
normalmente se atenda en 15 das se los llegara a entregar en 3.

Mientras yo seguira perfeccionando mi Check Program

Ahora sera bueno que aprendan un poco sobre los virus informticos

- 450 -
CAPTULO X. VIRUS Y ANTIVIRUS

10.1 PRELIMINARES
Virus (virus-i, veneno, jugo nocivo). Germen infeccioso de varias enfermedades
singularmente contagiosas.

La palabra virus, etimolgicamente hablando, se deriva de la expresin latina


virusi que significa veneno o jugo nocivo. Esta definicin fue utilizada y
generalizada a los factores que causan ciertas enfermedades en organismos
sanos en la dcada de los 50s gracias al explosivo conocimiento sobre los
diversos aspectos de la vida, principalmente desde que se reconoci la molcula
del ADN (cido Desoxirribonucleico) en 1.953. El crecimiento de la biotecnologa
durante toda la Guerra Fra, motiv a que ciertos monopolios fomenten la
fabricacin de las primitivas armas biolgicas que arrasaban con creces los
lmites de las sociedades pequeas, las armas de la biotecnologa se convirtieron
en verdaderas armas de destruccin mundial y precisamente los virus eran los
factores desencadenantes de estas matanzas.

Sucede adems que, los ttulos o las formas para referirnos a aspectos
tecnolgicos tienen un aire publicitario, por ejemplo, si hablramos de
"programas informticos que tienen la capacidad de auto replicarse en otros
programas, con el objeto de interferir con el normal funcionamiento de una
computadora o red, que actan sin interaccin con el usuario", solo despertara
bostezos, pero como realmente los llamamos virus informticos, entonces capta
(y de qu manera!) la atencin del pblico en general.

La palabra virus es particularmente inquietante para las personas porque


siempre es relacionada con enfermedad y muerte a gran escala, las pestes han
diezmado a la humanidad en la historia y actualmente el mortal virus del VIH
(que causa el SIDA) es muy preocupante. Con la expresin virus informtico les
damos a las mquinas un carcter de ser vivo porque pueden enfermarse.
Todo el mundo ha odo hablar de ellos y muchos los han sufrido, pero su forma de
infectar, reproducirse o atacar sigue siendo un gran misterio para la mayora.

- 451 -
Tras los pasos de un... Hacker

Una antigua mxima reza: "Si quieres vencer a tu enemigo, concelo primero"
(El arte de la guerra de Sun Tzu). Eso es lo que se intentar en este captulo: si
se ejecutan en una computadora, es que son programas, y si son programas, se
pueden comprender. Es cierto que no contamos con el cdigo fuente, pero acaso
es imprescindible? Es que no tenemos el cdigo objeto...?

Desde que en 1.987 se diera el primer caso documentado de un ataque de virus


informtico en la Universidad de Delaware, mucho se ha dicho y escrito sobre el
tema dentro de los foros ms insospechados. A pesar de ello, los virus siguen
siendo grandes desconocidos para la gran mayora, razn que sin duda
contribuye no poco a que cada vez sea mayor el nmero de ellos en expansin.
Conocer y entender la forma en que actan, se reproducen y se comportan es la
mejor forma de estar prevenido y saber cmo reaccionar?; la solucin de dar
formato al disco duro nada ms enterarse de que dentro hay un virus es bastante
extrema; y, por lo general, suele eliminar toda la informacin del disco duro... a
excepcin del propio virus.

Por otra parte, ya no en el caso de un particular, sino en el de las empresas, es


muy posible que no puedan permitirse esperar a que se saque la siguiente
versin de un antivirus que elimine el que les afecta y necesiten que alguien
realice un estudio inmediato del virus que los ataca, identifique su forma de
actuar, sus efectos y se puedan dedicar a corregirlos cuanto antes.
Este breve tratado sobre virus informticos orientar de una mejor manera y
dotar de una visin del funcionamiento y tcnicas de estos programas, pensando
que el conocimiento y el entendimiento son dos armas bsicas en la lucha contra
cualquier amenaza.

Hay quien opina que este tipo de informacin no debe hacerse pblica,
especialmente aqu en el Ecuador que incluso se considera infraccin
informtica, tipificada como delito por el Cdigo Penal Ecuatoriano en los Art.
202.1 y Art. 202.2 (artculos que se adicionaron cuando el Congreso Nacional del
Ecuador aprob la Ley de Comercio Electrnico, Firmas Electrnicas y Mensajes
de Datos, el 10 de abril de 2.002, claramente para sancionar a las actividades de
los Hackers), donde se sanciona a quienes divulguen informacin que puede ser
utilizada para fines ilegales, en especial para evitar que ms gente se dedique a
investigar temas relacionados a la seguridad informtica o fabricar virus. Pero,
ya que segn los estudiosos, la media de aparicin de virus nuevos viene a ser de

- 452 -
Virus y antivirus... Captulo X.

unos 5 o 6 cada da -por no contar las modificaciones y mutaciones sobre otros ya


existentes- es fcil llegar a la conclusin de que los sirvientes del lado oscuro o
delincuentes informticos como se los llama en Ecuador y en otras partes del
mundo, tienen ya toda la informacin que necesitan.

Normalmente las polticas de ocultacin de informacin de este tipo, con nimo


de evitar que se utilice con malos fines fracasan estrepitosamente al acabar
siempre desinformados los que sufren los ataques y nunca quienes los perpetran
cosa que ayuda a que los ataques sean mucho ms efectivos.

Nota del autor:


El autor y su grupo de colaboradores no sern responsables, ni penal, ni civilmente por el mal
uso que a esta informacin pueda darse por parte de terceros, cabe recalcar que esta obra y
toda la investigacin que conllev, se la ha realizado con fines exclusivamente didcticos. Los
hechos relatados, basados en los que sucedieron en la vida real, que por motivos de seguridad
han sido cambiados, as como algunos nombres y fechas de los acontecimientos.

La labor de investigar y aprender de forma autodidacta que ese espritu de una verdadera
actitud Hacker impone es lo que se trata de mostrar con estos relatos.

Otro detalle importante, si por alguna omisin involuntaria en la seccin de bibliografa y


fuentes de consulta, est faltando alguna fuente exacta o el derecho de autor no se ha
nombrado en alguna parte de este texto, por favor l o los autores de los artculos que fueran
consultados libremente en la Internet, nos hagan llegar las notas respectivas para los
reconocimientos que la Ley de Propiedad Intelectual en el Ecuador y los convenios
internacionales en la materia exigen (citar la fuente o reconocer el crdito debido de los
autores).

- 453 -
Tras los pasos de un... Hacker

10.2 ALGO DE HISTORIA

LOS COMIENZOS

La paternidad de la idea de un programa capaz de reproducirse se le atribuye a


John von Neumann por su artculo Theory and organization of complicated
automata del ao 1.949. Von Neumann estaba interesado en la creacin de
vidas artificiales electrnicamente, a las que daba el nombre de autmatas que,
segn l, podan reproducirse sin excesiva dificultad.

Tambin por aquel entonces, cuando empezaban a desarrollarse las primeras


computadoras, se vio la necesidad de llevar a una computadora a un estado
inicial conocido, eliminando rastros de otros programas previamente cargados.
Una solucin muy ingeniosa consista en implementar una instruccin que
simplemente se copiaba a la siguiente posicin de memoria y saltaba a ella para
seguir ejecutndose. De esta forma todo el mapa de memoria se llenaba con un
nico valor conocido: el cdigo correspondiente a la instruccin. Este fue otro
ejemplo claro de cdigo capaz de reproducirse. Seguramente basado en l, ms
adelante, en los aos 60, cobr gran popularidad el juego Core War, diseado
en los laboratorios Bell de AT&T, el que consista en que dos jugadores lanzaban
simultneamente sus programas que se reproducan en memoria hasta que sta
se agotaba. Ganaba aquel que fuera capaz de conquistar ms memoria, para lo
cual era perfectamente legal matar a las copias del adversario y robarle esa
memoria.

Aparte del mero juego, tambin se trat de darle un uso algo ms prctico a este
tipo de programas y as a finales de los aos 70, dos investigadores del Centro de
Investigacin Xerox de Palo Alto, California, idearon un programa que deba
encargarse de las labores de mantenimiento y administracin del complejo, al
que dieron el nombre de gusano. El programa dorma por el da y por la
noche se propagaba por todas las computadoras del centro de cmputo
haciendo copias de seguridad y otras tareas de gestin. Todo esto en la teora,
porque en la prctica el gusano escap de las computadoras de prueba del
laboratorio, se extendi por toda la red y paraliz todas las mquinas. Al intentar
eliminarlo, segua reapareciendo, as que no hubo ms remedio que crear otro
programa vermicida que fuera por todas las mquinas matando copias del
gusano.

- 454 -
Virus y antivirus... Captulo X.

LOS AOS 80

La palabra virus no se empez a usar hasta que Frederick B. Cohen, un


estudiante graduado de la Universidad del Sur de California, lo utiliz en 1.984
para su tesis sobre programas autoduplicadores. En ella daba la primera
definicin formal del trmino y haca un estudio matemtico de la expansin de
este tipo de engendros, mediante el cual demostr que crear un programa
detector de virus perfecto era lgicamente imposible.

Ningn detector de virus puede ser perfecto, ni es perfecto. En su tesis doctoral


para la Universidad del Sur de California, en Los ngeles, Fred Cohen (Fig. 45)
demostraba, en 1.983, que no hay ningn algoritmo general que pueda concluir
con total fiabilidad -100%- si un programa es o no un virus.

Para ello se vala de la siguiente demostracin por reduccin al absurdo, (ver


recuadro):

Supngase que existe un algoritmo general A


que, analizando cualquier programa P, devuelve
"verdadero" si y slo si P es un virus. Entonces
sera posible crear un programa P, que hiciera
lo siguiente: Si (A(P) =falso) entonces infecta el
sistema. Si (A(P) = verdadero) entonces no
infectes nada. Es decir: P es un virus si A dice
que no lo es, y no lo es si A dice que lo es. Por
contradiccin, ese algoritmo general A no
existe.
FIG. 45. FRED COHEN.

Como se dijo antes, en 1.987, el 22 de octubre, se da el primer ataque de virus del


que se tiene noticia. En realidad este virus era inofensivo (en teora, ya que
ningn virus es inofensivo) y contena la direccin y telfono de los autores: dos
hermanos en Pakistn, estudiantes de la Universidad de Lahore, aunque, al
parecer, hubo un estudiante que perdi su tesis debido a efectos secundarios del
virus; este virus, luego cuando se crearon los programas antivirus se lo denomin
Pakistani Brain.

- 455 -
Tras los pasos de un... Hacker

Tambin en ese ao se produce la primera infeccin masiva sobre computadoras


Macintosh: un consultor de Aldus Corporation se infect con un disco de juegos
y al realizar luego pruebas al programa Aldus Freehand contamin el disco
que luego distribuy su empresa. El virus se limitaba a presentar en pantalla un
mensaje universal de paz a todos los usuarios del Mac, firmado por Richard
Brandow, editor de la revista MacMag, al llegar al 2 de marzo de 1.988 (fecha del
aniversario de la aparicin del Macintosh II) y se autodestrua inmediatamente.
Pero los buenos deseos de paz pronto se transformaron en sentimientos menos
nobles.

As, tiempo despus, un banco de la isla de Malta se vio afectado por un virus que
presentaba el siguiente mensaje en la pantalla:

DISKDESTROYER - A SOUVENIR OFMALTA

I have just DESTROYED the FAT on your


Disk!!
However, I have kepta copy in RAM,

and I'm giving you

a last chance to restore your precious data.

El virus borraba la FAT (File Allocation Table) una estructura bsica de cualquier
disco/disquete que opere bajo el sistema operativo DOS o compatible, que
permite encontrar los datos, pero guardaba una copia en memoria, despus
invitaba a jugar el conocido juego del tragamonedas.
Si salan tres "L", restauraba la FAT y no se perda informacin, pero si salan tres
"?" o tres "C", destrua tambin la copia de la FAT de la RAM y se perdan todos
los datos.
Como era de esperar, el banco perdi la informacin en dos terceras partes de
sus mquinas.

- 456 -
Virus y antivirus... Captulo X.

EL COMIENZO DE LOS VIRUS


En este ao, 1.986, Basit y Amjad se percataron de que el sector de arranque
(conocido tambin como bootsector) de un disquete contena cdigo ejecutable
y que este cdigo corra siempre que se reiniciaba la PC con un disquete en la
unidad A. Tambin se dieron cuenta de que poda reemplazar este cdigo con su
propio programa, pudiendo instalarse este programa en la memoria de forma
residente (tcnica conocida en programacin como TSR, Terminate and Stay
Resident) e instalar una copia de s mismo en cada disquete para estar accesible
desde cualquier dispositivo. Como el programa se copiaba a s mismo, le dieron
el nombre de virus, por su semejanza con los virus biolgicos.

Este proyecto de virus solamente infectaba a disquetes de 360 KB, tambin en


1.986, un programador llamado Ralf Burger observ que un archivo poda hacer
una copia de s mismo por el mtodo simple de adicionarse al final de otros
archivos (tambin se conoce como append file), entonces desarroll una
demostracin de este efecto, que llam Virdem. Lo distribuy en la Chaos
Computer Conference de diciembre de ese ao, en la cual el tema principal eran
precisamente los virus, la demostracin tuvo tanto xito que Burger escribi un
libro sobre el tema, en el que no se mencionaba an a los virus del sector de
arranque.

Al siguiente ao, en 1.987, personal la Universidad de Delaware se dio cuenta de


que tenan sus computadoras un virus cuando empezaron a ver una extraa y
sospechosa etiqueta que apareca en los disquetes, eso es todo lo que este
pequeo virus haca (auto reproducirse y colocar una etiqueta). La alerta la dio
una empleada de soporte tcnico de la misma Universidad, que advirti de que
estaba encontrando la etiqueta en muchos de los disquetes.

Este mismo ao, Franz Swoboda tuvo noticias de un virus incluido en un


programa llamado Charlie, por este detalle lo llam el Virus Charlie, hubo
mucho revuelo en la opinin pblica acerca de este virus, al difundirse las dos
versiones de una misma historia: Burger afirm que haba obtenido una copia
del virus de manos de Swoboda, pero Swoboda lo neg siempre.
En cualquier caso, Burger se hizo con esa copia que envi a Bernt Fix, el cual
desarm el virus y Burger incluy en su libro la demostracin del anlisis,
despus de aadirle varios parches para variar su comportamiento. El

- 457 -
Tras los pasos de un... Hacker

comportamiento normal de Viena (o Charlie, como lo llamaba Swoboda) era


colocar un archivo entre otros ocho para reiniciar la PC (el virus parcha los
primeros cinco bytes del cdigo); Burger (o quiz Fix) reemplazaron este cdigo
con cinco espacios. El efecto fue que los archivos parchados colgaban la PC, en
vez de reiniciarlo. No fue en absoluto una gran mejora.

Mientras tanto, en los Estados Unidos de Norte Amrica; Fred Cohen acababa de
completar su tesis doctoral, que versaba precisamente sobre los virus
informticos. El doctor Cohen demostr que uno no puede escribir un programa
que sea capaz de, con un ciento por ciento de aciertos, visualizar un archivo y
decidir si es o no un virus.

Desde luego, nadie pens jams en esa posibilidad, pero Cohen hizo buen uso de
un teorema matemtico y as fue como se gan el doctorado. Sus experimentos
sobre la difusin de virus en los sistemas informticos demostraron que la
expansin de las infecciones resultaban ser mucho ms rpidas de lo que nadie
hubiera esperado.

En 1.987, Cohen visit la Universidad Lehigh, all se encontr con Ken van Wyk,
de este encuentro surgi el virus Lehigh, que nunca abandon el laboratorio,
porque slo poda infectar el archivo COMMAND.COM y daar increblemente a
su husped o host despus de tan slo cuatro replicaciones. Una de las reglas
bsicas sobre los virus dice que, aquel que dae de forma muy rpida a su
husped, no sobrevive durante mucho tiempo. De todas formas, el virus Lehigh
se hizo muy popular y foment la aparicin del grupo de noticias sobre virus de
Ken van Wyk en Usenet.

EMPIEZAN LOS PROGRAMAS ANTIVIRUS


1.988 ser recordado siempre entre los expertos en seguridad informtica como
el ao en el que empez el baile. De hecho, fue el ao en el que comenzaron a
aparecer los fabricantes de antivirus, creando una moda de lo que en principio
slo era un problema potencial. Los vendedores de software antivirus eran
pequeas compaas, que ofrecan sus productos a muy bajo precio, en algunos
casos gratuitamente. Fue en este ao cuando la compaa IBM se dio cuenta de
que tena que tomarse el asunto de los virus completamente en serio. A esta

- 458 -
Virus y antivirus... Captulo X.

conclusin no llegaron debido a la incidencia del popular gusano del rbol de


Navidad, de amplia difusin, sino porque IBM sufri un brote del virus
Cascade y se encontr en la embarazosa necesidad de tener que comunicar a
sus clientes que ellos tambin haban sido infectados. Desde este momento, el
High Integrity Laboratory de IBM fue el encargado del rea de los virus.

En ese ao aparecieron, desde luego, mltiples rebrotes de Brain, Italian,


Stoned, Cascade y Jerusalem. Esto represent la prueba definitiva de la
existencia real de los virus informticos. Peter Norton (1.943-), en una
entrevista, haba comentado que eran una leyenda urbana, como los cocodrilos
de las alcantarillas de Nueva York y un experto informtico del Reino Unido lleg
a proclamar que tena la prueba de que los virus eran un producto de la
imaginacin de mentes calenturientas...
En aquel momento, cada nueva aparicin de virus provocaba la aplicacin de un
anlisis paso a paso, el software existente era utilizado para detectar virus de
sector de arranque y solamente fuera escrito un programa antivirus de manera
excepcional para afrontar los rebrotes de Cascade y Jerusalem. Entonces
apareci el Virus B", el cual no se alojaba de manera residente en memoria,
result ser una modificacin de aquel que borraba los archivos todos los viernes
y con fecha 13. Cuando el Virus-B funcionaba, desplegaba el siguiente mensaje:
Warning! This programis infected with Virus-B! It will infectevery.COM file
in the currentsub directory!.

Un virus que se manifiesta de una manera tan evidente, obviamente no puede ser
tan pernicioso; nicamente, se trata de la demostracin de la forma de actuacin
de un virus, de ah el mensaje.

A finales de 1.988 se dieron varios sucesos importantes, en primer lugar, se


produjo la aparatosa intrusin del virus Jerusalem en una importante
institucin financiera, que durante varios das se vio en la necesidad de limpiar a
conciencia sus bases de datos.
Por otro lado, la compaa S&S imparti el primer Seminario sobre Virus, en el
cual se explic pormenorizadamente lo qu era un virus? y de qu forma
actuaba?, por ltimo, en enero del ao siguiente rebrot otra vez Jerusalem,
que se difundi ampliamente en diversas empresas e instituciones. Estaba clara
la necesidad de una herramienta que permitiera limpiar masivamente los
sistemas de cualquier virus activo.

- 459 -
Tras los pasos de un... Hacker

El doctor Alan Solomon, consciente de esta necesidad, desarroll un antivirus, le


aadi algunas herramientas que, segn su experiencia, podan ser tiles y cre
de esta forma la primera herramienta antivirus, Dr. Solomon's Antivirus
Toolkit.

A finales de 1.988, Jerusalem se haba difundido de forma espectacular por


Espaa y el Reino Unido. Debido al comportamiento destructivo de este virus, los
expertos llegaron a la conclusin de que era necesario habilitar algn tipo de
aviso para alertar a los usuarios, pero los medios de comunicacin tambin
entraron en el juego: la posibilidad de predecir la aparicin de un virus cautiv su
imaginacin y de esta forma la actividad de los virus informticos traspas las
fronteras de las universidades y empresas de informtica y lleg al usuario
normal de las PCs.
El ao de 1.989 ser siempre recordado como el ao en el que las cosas se
pusieron difciles; el virus Fu Manch (una modificacin del Jerusalem) fue
difundido por alguien annimo en el Reino Unido, junto con el 405. Por otra
parte, los blgaros y los rusos empezaron a interesarse por el tema; en marzo de
este ao, un pequeo incidente fue el aviso de la gran avalancha que se avecinaba
en Holanda, un tal Fred Vogel quien contact con Alan Solomon, para contarle
que haba encontrado un virus nuevo en su disco duro llamado Datacrime y
que estaba preocupado porque al parecer, su fecha de activacin estaba prevista
para el da 13 del mes siguiente.

Cuando el virus fue analizado, sin embargo, se lleg a la conclusin de que,


cualquier da despus del 12 de octubre de 1.989, podra dar formato a bajo nivel
el cilindro cero del disco duro (idea que la recoge y ampla un moderno virus
conocido como CIH), lo cual en la mayora de los discos, borrara la FAT, dejando
al usuario sin su informacin, tambin se desplegaba un mensaje con el nombre
del virus,Datacrime.
Se redact un informe sobre los efectos de este virus que se public en una
revista y otros medios de comunicacin se hicieron eco del caso, llegando en
junio de ese ao, a la errnea conclusin de que este virus se activara cada 12 de
octubre, cuando en realidad podra activarse cualquier da entre el 12 de octubre
y el 31 de diciembre y era capaz de borrar toda la informacin contenida en el
disco duro.

- 460 -
Virus y antivirus... Captulo X.

En Norteamrica, la prensa empez a llamarle El virus del descubrimiento y se


corri el rumor de que haba sido escrito por terroristas noruegos, hartos de que
se otorgara la autora del descubrimiento de Amrica a Coln, en vez de a Eric el
Rojo; mientras tanto, en Holanda la polica empez a distribuir un detector del
virus Datacrime, vendindolo a un dlar en todas las comisaras de polica, se
vendi muy bien; pero daba una serie de falsas alarmas, por lo que enseguida fue
sustituido por una segunda versin. Esto provoc mucha confusin en la opinin
pblica, porque realmente nadie era capaz de saber si tena o no el virus, en el
mes de julio, debido al mayor ndice de concienciacin ciudadana, un gran
nmero de compaas holandesas solicitaron informacin a IBM sobre si los
virus eran realmente un problema serio.

Existan muchas posibilidades de que una empresa pudiera infectarse de


Datacrime,Jerusalem, Cascade o Stoned. IBM contaba con un programa
de deteccin y eliminacin de virus para su uso interno, que si no ofrecan
inmediatamente a sus clientes, poda representar un menoscabo en su
reputacin. Los tcnicos saban que en cualquier momento podra producirse
una infeccin masiva de cualquiera de estos virus, en especial de Datacrime.
En septiembre de 1.989, IBM lanz su versin 1.0 de este escner, junto con una
carta en la que explicaba a sus clientes lo que era y para qu serva? Las
empresas usaron el software y se encontraron con que no estaban infectados por
Datacrime pero s por multitud de versiones de los virus vigentes en aquella
poca.

El 13 de octubre de ese ao fue viernes y por tanto, fecha posible de activacin de


dos de los virus ms conocidos en aquel momento: Jerusalem y Datacrime.
En los Estados Unidos de Norte Amrica, los avisos de alerta sobre la actividad
del Datacrime haban sido excesivos, dado el carcter prcticamente inocuo del
citado cdigo, pero no se registr ninguna infeccin. En Europa, slo afect a
unos pocos usuarios. El Instituto Nacional de Ciegos (RNIB por sus siglas en
ingls) anunci que haba sido infectado y que haba perdido gran cantidad de
datos de sus cuentas y muchos meses de trabajo, se trataba de una infeccin de
baja intensidad del Jerusalem, que haba borrado unos cuantos archivos
fcilmente reemplazables, cuatro PCs fueron infectados, pero este hecho pas a la
historia de los virus como el Gran Desastre del RNIB.
Este ao tan agitado termin con la distribucin de 20.000 copias de un famoso
cdigo malicioso, el Aids Information Disquette, que fueron enviadas por

- 461 -
Tras los pasos de un... Hacker

correo a usuarios que figuraban en bases de datos de diversos organismos, por


ejemplo la PC Business World. Este documento contena instrucciones de
instalacin detalladas que originaban la creacin de archivos y directorios
ocultos, editando el contenido de un archivo conocido como AUTOEXEC.BAT, de
modo que uno de estos archivos estaba presente en cada secuencia de arranque.
El troyano que contena, cifraba todos los archivos del disco duro, otorgndoles
los atributos alojados en l.

La consecuencia ms destacada de este incidente, es que consigui otorgar mayor


popularidad a los virus, aunque el cdigo malicioso protagonista del hecho en
realidad era un troyano. Adems, un sorprendente nmero de personas
instalaron el software, de tal manera que PC Business World tuvo que
desarrollar un programa para solucionar los daos que provoc la distribucin
de este troyano.
En el ao 1.990, surgieron algunas novedades en el panorama de los virus, Mark
Washburn haba creado el primer virus polimrfico a partir del Viena. Los
virus polimrficos representaron un paso adelante en la evolucin de los
cdigos malignos, al ser capaces de cifrar de forma diferente su cdigo cada vez
que producan una nueva infeccin; por ello, era necesario desarrollar un
algoritmo que pudiera aplicar pruebas lgicas al archivo, decidiendo de esta
manera si el cdigo era maligno o no, para crear la herramienta antivirus que
bloqueara dichos cdigos.

Aunque Washburn public el cdigo de su virus, se temi que muchos creadores


de virus decidieran crear nuevos cdigos a partir de aquel, la invasin de virus
polimrficos no tuvo mucho xito en el mercado. Adems, la mayora de las
empresas del sector (excepto Virus Bulletin, IBM y pocas ms) tampoco fueron
capaces de desarrollar herramientas antivirus apropiadas, ya que no es tan fcil
crear un algoritmo de descifrado. No obstante, la idea del polimorfismo se ha
utilizado profusamente despus en la creacin de virus ms modernos.

Otra de las consecuencias de los virus polimrficos es el incremento de las falsas


alarmas. Si un vendedor de software antivirus consigue escribir el software
apropiado para detectar algo con tantas posibilidades de mutacin como el
Viena, existen muchas posibilidades de que en realidad lo que el escner
detecte sea una lnea de cdigo inofensivo; y, una falsa alarma puede ser ms

- 462 -
Virus y antivirus... Captulo X.

engorrosa para el usuario que un autntico virus, ya que obliga a poner en


funcionamiento absolutamente todos los mecanismos antivirus de defensa.

Tambin en 1.990 asistimos a una oleada de virus procedentes de Bulgaria,


especialmente de aquellos cuyo autor se identificaba con el alias Dark Avenger.
Los virus de Dark Avenger introdujeron dos conceptos nuevos: la infeccin
rpida (el virus se instalaba en la memoria y con la simple apertura de un archivo
provocaba una infeccin vertiginosa del disco duro) y el ataque remoto (algunos
de estos virus producan una sobrescritura de cdigo cada cierto tiempo; por lo
que, si el usuario no se daba cuenta y haca un respaldo o back-up de los datos
peridicamente, auto replicaba sin querer todas las lneas de cdigo maligno).
Otros virus clsicos de parecida actuacin durante este periodo fueron Number
of the Beast y Nomenklatura.

Sin embargo, Dark Avenger era el ms creativo en el proceso de distribucin de


sus virus. Cargaba sus cdigos malignos en los BBS, infectando los programas
antivirus shareware, en sus ataques vricos inclua un archivo que cumpla la
funcin de tranquilizar a todo aquel que comprobara el tamao del archivo o
realizara un checksum, incluso se permita el lujo de incluir su cdigo fuente para
que los nefitos pudieran aprender cmo se creaban los virus?

En este mismo ao tuvo lugar otro evento en Bulgaria: la aparicin de la primera


BBS de intercambio de virus. En ella la gente poda descargarse cualquier virus
en el que estuviera interesado, si previamente haba dejado algn cdigo maligno
propio para los usuarios de este sistema; esto claro est, favoreci tanto la
creacin de nuevos virus como la difusin masiva de muchos de ellos.
En el ao 1.991, el problema de los virus ya era lo suficientemente preocupante
como para atraer a las grandes compaas productoras de software. Symantec
lanz a principios de este ao el producto Norton Antivirus y Central Pointsu
CPAV en abril. Pronto los siguieron XTree, Fifth Generation y unas cuantas
ms. Muchas de estas compaas reutilizaron los programas de otras empresas
(casi todas fueron las israeles, por ejemplo, CPAV era una versin actualizada de
un programa antivirus llamado Turbo Antivirus de la firma israel CARMEL
Software Engineering Ltd.). Pero el gran problema de este ao fue el llamado
glut. En diciembre de 1.990, haba alrededor de 100 300 virus. En diciembre
del siguiente ao, 1.000 (ya que en este ao se escribieron gran cantidad de
virus).

- 463 -
Tras los pasos de un... Hacker

Glut quiere decir algo as como superabundancia, lo cual, referido al tema de


la proliferacin de virus, caus la aparicin de mltiples y desagradables nuevos
problemas. Los programas tenan muchas limitaciones, en particular, era
necesario el almacenamiento de gran cantidad de datos en memoria para
proceder a un rastreo o scan en busca de virus que bajo la arquitectura del DOS
slo existen disponibles 640 KB de memoria RAM. Otro problema fue que
algunos escneres eran demasiado lentos, en proporcin al gran nmero de virus
que deban detectar; adems, el anlisis del virus requiere no slo su deteccin
real, sino su desinfeccin efectiva. Si cada da hubiera que proceder al anlisis de
un nuevo virus, solamente se podran detectar, analizar y desinfectar unos 250
por ao. Eso quiere decir que ms virus significa tambin ms trabajo para los
desarrolladores, adems, todos estos nuevos virus eran similares unos a otros,
provocando errores de identificacin, por lo tanto realizaban una desinfeccin
ineficaz, muchos escneres fallaban en la clasificacin del virus en cuestin. La
mayora de los virus procedan de Europa del Este y Rusia, pero en Bulgaria se
localiz otro importante foco de produccin de cdigos malignos. Enseguida
muchos pases se unieron a la nefasta carrera de produccin de virus: Alemania
con Gonorrea, Suecia con Demoralized Youth, Estados Unidos con Hellpit,
Reino Unido con Dead on Arrival y Semaj. Algunos de estos virus jams
salieron del laboratorio, pero contribuyeron a extender la fama de estos cdigos
por todo el mundo, animando a los creadores de virus a ser cada vez ms
creativos. La rapidez de creacin produjo el efecto de contribuir la copia de
cdigo: cualquier creador de virus no tena ms que descargar el cdigo fuente y
efectuar en l unos cuantos cambios.
1.991 fue tambin el ao de los virus polimrficos que tuvieron un gran impacto
sobre los usuarios. En abril de 1.991, Tequila recorri el mundo de polo a polo.
Fue escrito en Suiza y fue robado al autor por un amigo que lo introdujo en los
equipos informticos de su padre. El padre era un vendedor de software y as fue
como Tequila se difundi ampliamente.

Se trat del primer virus polimrfico difundido a escala mundial. En mayo, los
nuevos motores de bsqueda lo detectaban, pero no fue hasta septiembre que se
empez a reducir su expansin. Si no se desinfectaba totalmente exista un
riesgo de prdida de un uno por ciento de los archivos, este porcentaje se
incrementaba cada vez que se detectaba el virus pero no se desinfectaba de
forma efectiva.

- 464
Virus y antivirus... Captulo X.

En septiembre de 1.991 el virus Maltese Amoeba hizo de las suyas por toda
Europa, se trataba de otro virus polimrfico que provoc la aparicin de una
docena de variantes antes de fin de ao, todas clasificadas como de difcil
erradicacin. En este ao se anunci la inmediata aparicin de un virus que
poda tomar nada ms y nada menos que 4 billones de formas diferentes, pero
esto sucedera para 1.992 y no se trataba de un virus.

FIG. 46. EFECTOS DEL VIRUS GREEN CATERPILLAR.

En enero de 1.992 fue la fecha de aparicin de la Self Mutating Engine (MtE)


del ya mencionado Dark Avenger, en principio, la comunidad mundial pens
que se trataba de un nuevo virus, de nombre Dedicated, pero despus hizo
aparicin la MtE.

Apareci como un archivo .OBJ; con el cdigo fuente de un simple virus e


instrucciones para enlazar el archivo .OBJ a un virus, de tal manera que, al final se
poda obtener un virus polimrfico. Inmediatamente, los cazadores de virus se
pusieron a la tarea de desarrollar detectores para la MtE. Cada compaa
estableci, para hacer frente a la amenaza, diferentes tipos de estrategia; unas se
preocuparon por desarrollar soluciones para detener el cdigo maligno, mientras
que otras decidieron ignorarlo con la secreta esperanza de que no fueran
afectadas. En un principio, se crey que habra cientos y cientos de virus
haciendo uso de MtE, ya que era muy fcil de usar y permita a dichos virus

- 465 -
Tras los pasos de un... Hacker

ocultarse de forma extraordinaria. Pero los creadores de virus se dieron cuenta


rpidamente de que un escner que fuera capaz de detectar la MtE podra
detectar todos los virus que usen esta librera.

A la MtEle sigui Commander Bomber, tambin de Dark Avenger; antes de


Commander, uno poda prever fcilmente en qu archivo estaba oculto un
virus? muchos desarrolladores de productos aprovechaban esta facilidad para
crear rpidamente herramientas antivirus. Pero Commander Bomber
cambi esto, de tal manera que los escneres se vean obligados a chequear todos
los archivos o bien, localizar el virus mediante un seguimiento completo del
cdigo.

Otro virus importante que surgi durante este periodo fue Starship, se trata de
un virus completamente polimrfico, que constaba de una serie de trucos anti
debug y anti checksum, Starship solamente infectaba los archivos cuando
stos eran copiados desde el disco duro a un disquete. Por lo tanto, los archivos
residentes en el disco duro no cambiaban nunca. Pero la copia del disquete
estaba infectada, por lo que si este disquete se introduca en otro equipo y se
chequeaba el sistema por medio del checksum, ste lo aceptaba sin problemas.
El virus Starship se instalaba a s mismo en el disco duro, pero sin hacer ningn
cambio en el cdigo ejecutable, cambiaba los datos, eso s de particin,
efectuando una nueva particin en el MBR, esta nueva particin contena el
cdigo del virus, que se ejecutaba antes de pasar el control a la copia del MBR
original.

Probablemente, el virus ms importante durante 1.992 fue el conocido


Michelangelo, uno de los ms conocidos vendedores de productos antivirus
norteamericano dio la alerta: cerca de cinco millones de PCs podan venirse abajo
el 6 de marzo de ese ao, en muchas empresas cundi el pnico, cuando los
medios de comunicacin se hicieron eco de este asunto. Sin embargo, el 6 de
marzo slo tuvieron problemas entre 5.000 y 10.000 equipos informticos,
naturalmente los vendedores de software tuvieron que moderar el mpetu de sus
avisos de alarma. Quiz nunca llegaremos a saber cunta gente?, en realidad, se
vio afectada por Michelangelo, pero lo cierto es que en los das previos al 6 de
marzo la mayora de los usuarios llevaron a cabo exhaustivos exmenes de sus
equipos en pos del virus. Despus de esta fecha, muchos expertos en virus de
todo el mundo vieron como sus opiniones, siempre tenidas en cuenta, eran objeto
del ms absoluto desprecio.

- 466 -
Virus y antivirus... Captulo X.

En agosto de ese ao asistimos a la aparicin de los primeros paquetes de


creadores de virus, primero apareci el VCL (Virus Creation Laboratory), de
Nowhere Man, a continuacin Dark Angel gener el Phalcon/Skism Mass
Producer Code Generator. Estos paquetes hicieron posible que cualquier
persona pudiera hacer uso de una PC para escribir su virus personal. En el
transcurso de un ao, aparecieron, en consecuencia, docenas de nuevos virus en
el mercado, todos ellos creados mediante el uso de estas herramientas.

Hacia fines de 1.992 un nuevo grupo de creadores de virus, ARCV (Association of


Real Cruel Virus) apareci en el Reino Unido, al cabo de un par de meses, la
Unidad de Crimen Informtico de Scotland Yard los localiz y arrest, gracias a la
inestimable ayuda de la comunidad de expertos en soluciones antivirus. El
efmero florecimiento de la ARCV dur slo tres meses, durante los cuales
crearon unas cuantas docenas de nuevos virus y reclutaron a algunos miembros
para su causa particular.

Otro de los hechos destacables en este ao tan movido fue la aparicin de


personas que se dedicaban a la venta de colecciones de virus; para ser ms
precisos, se trataba realmente de colecciones de archivos, algunos de los cuales
eran virus (en la actualidad se mantiene este tipo de negocios). En los Estados
Unidos, John Buchanan ofreci su coleccin de unos cuantos miles de cdigos al
precio de 100 dlares por copia. En Europa, la Unidad Clnica de Virus sac a la
venta varias colecciones por 25 dlares la copia.

A principios de 1.993, XTREE anunci que iban a abandonar el negocio del


software antivirus. Era la primera gran compaa que renunciaba a la lucha.
Casi al mismo tiempo, un nuevo grupo de creadores de virus hizo su aparicin en
Holanda: su nombre Trident. El principal creador de virus de este grupo,
Masouf Khafir, elabor un motor polimrfico denominado, precisamente,
Trident Polymorfic Engine y lanz un virus que la utilizaba llamado GIRAFE.
A esto, le siguieron varias nuevas versiones de la TPE. Esta familia de virus es
mucho ms difcil de detectar que los de la MtE y mucho ms complejo evitar sus
falsas alarmas.

Khafir tambin lanz el primer virus que trabajaba de acuerdo con un principio
que ya fuera enunciado por Fred Cohen. El virus Cruncher era un cdigo
maligno de compresin que automticamente se inclua en archivos para
autoinstalarse en tantos equipos como fuera posible; mientras tanto, Nowhere

- 467 -
Tras los pasos de un... Hacker

Man y el grupo Nuke haban estado, tambin bastante ocupados. A principios


de este mismo ao, fue lanzado el Nuke Encryption Device (NED). Se trataba
de otro motor mutante mucho ms difcil de neutralizar que MtE. El virus
consiguiente, Itshard, pronto sigui a la aparicin de esta nueva mquina
polimrfica.

Tambin Dark Angel quiso apuntarse a la moda del polimorfismo. Este


creador de virus lanz DAME (Dark Angel's Multiple Encryptor device), se
trataba de otro motor de mutacin cuyo virus fue Trigger. Este cdigo relanz
la versin 1.4 de la TPE (de nuevo, era mucho ms complejo y difcil de erradicar
que en las versiones previas) y apareci un virus llamado Bosnia que lo
utilizaba.
Un poco despus de esta oleada de cdigos polimrficos, Lucifer Messiah, de
Anarkick Systems, haba tomado la versin 1.4 de TPE y escrito un virus
llamado POETCODE, utilizando una versin modificada de esta mquina (la
1.4b).

Pero el ms famoso de los virus polimrficos que aparecieron a principios de


1.993 fue Tremor, el cual ascendi rpidamente a las alturas de la fama cuando
fue difundido a travs de un show de la televisin alemana dedicado
precisamente a las novedades del software. El archivo infectado fue el popular
PKUNZIP.EXE, que la mayora de los receptores usaban para descomprimir
archivos adjuntos en un correo electrnico.

A mediados de ao, Trident aument su liderazgo con la inclusin de Dark


Ray y John Tardy en el grupo. Tardy haba lanzado un virus completamente
polimrfico de 444 bytes y todos los expertos estaban pendientes del grupo, en
espera de nuevas y malignas creaciones, posiblemente de rango superior. Lo
peor que tuvo lugar en este fatdico ao fue la emergencia de un creciente
nmero de paquetes de virus producidos por los kits de creacin de virus y
mquinas polimrficas, que hacan ms fcil escribir virus que los escneres
encontraban difciles de detectar.

Tambin en 1.993 desaparecieron muchas importantes empresas


desarrolladoras de software antivirus como Certus (uno de cuyos productos
ms representativos era Novi) Fifth Generation (creadores del producto
Untouchable). No obstante, tambin hubo algunas buenas noticias: la empresa
S&S International recibi el galardn Queen's Award for Technological

- 468 -
Virus y antivirus... Captulo X.

Achievement. Este premio se otorg por el lenguaje de descripcin de virus


VIRTRAN que es la base fundamental de FindVirus y VirusGuard.

Los siguientes aos conocieron una superabundancia de virus escritos por medio
de paquetes, lo cual caus enormes dificultades a los desarrolladores de software
antivirus, de repente, se hizo necesario mecanizar los procesos de anlisis de
cdigos malignos, la solucin fue la GDE (General Decrypt Engine o Mquina de
Desciframiento General), que descifraba el cdigo de un archivo sospechoso,
permitiendo as llegar a la conclusin de si se trataba o no de un virus. Esto
eliminaba el peligro de las falsas alarmas, ya que una vez que un virus es
descifrado, se facilita muchsimo el proceso de una identificacin positiva del
citado virus.
En abril del ao 1.994, la firma Central Point Software dej de existir. Central
Point lleg a ser una de las principales empresas del mercado de los
desarrolladores de soluciones antivirus, con su producto CPAV. En este mismo
ao tambin aparecieron muchas mquinas polimrficas y nuevos virus, como
SMEG, que fue lanzado por su autor como Smeg.Pathogen y Smeg.Queeg.
Debido a que estos virus se difundieron inmediatamente despus de su creacin,
supusieron una especie de curiosa prueba que denotaba la capacidad de reaccin
de las empresas desarrolladoras de antivirus.
El 26 de marzo de 1.996, Christopher Pile, de 26 aos, oriundo de Plymouth (en
Inglaterra), fue condenado de acuerdo con la Ley de Utilizacin Fraudulenta de
Equipos Informticos en conexin con la aparicin y posterior difusin de los
virus Smeg.

La aparicin de nuevos tipos de virus; as como, por desgracia, su amplia difusin


hace imposible la inclusin en este apartado de todos ellos, es por esto por lo que
a continuacin haremos una breve referencia a aquellos virus y mtodos de
propagacin ms destacados hasta la fecha que hice la investigacin de este
captulo (12 de junio de 2.002):

1.996 - Boza, Concept, Laroux, & Staog: Boza es el primer virus diseado
especficamente para archivos de Windows 95. Concept es el primer virus de
macro para Word. Laroux es el primer virus de macro para Excel. Staog es el
primer virus para Linux (realizado por los autores del Boza).

- 469 -
Tras los pasos de un... Hacker

1.998 - Strange Brew & Back Orifice: Strange Brew es el primer virus para
Java. Back Orifice es el primer virus troyano diseado para la administracin
remota de equipos, es decir, permite tomar el control de una maquina remota por
otro usuario va Internet.

FIG. 47. EFECTOS DEL VIRUS HPS

1.999 - Melissa, Corner, Tristate, & Bubbleboy: Melissa es la primera


combinacin entre un virus de macro de Word y un gusano que usa la libreta de
direcciones del Outlook y del Outlook Express para enviarse a otros va correo
electrnico. Corner es el primer virus que infecta archivos MS Project. Tristate
es el primer virus de macro multiprograma; infecta archivos de Word, Excel y de
Power Point. Bubbleboy es el primer gusano que puede activarse cuando un
usuario abre un mensaje en Microsoft Outlook. No necesita un archivo adjunto.
Bubbleboy era la prueba del concepto que luego utilizo el virus Kakampliamente
difundido gracias a esta tcnica.

2.000 - DDoS, Love Letter, Liberty (Palm), Streams, & Pirus: DDoS fue el
mayor denegador de servicios que atac cerrando importantes sitios web, tales
como Yahoo!, Amazon.com y otros. El virus Love Letter, se convirti en el gusano
que ms rpido infect a los usuarios; saturando la capacidad de los servidores

- 470 -
Virus y antivirus... Captulo X.

de correo alrededor del mundo. En agosto de 2.000 apareci el primer troyano


desarrollado para la Palm PDA, llamado Liberty y desarrollado por Aaron
Ardiri, uno de los desarrolladores del emulador de la consola Game Boy para la
Palm. Liberty, fue desarrollado como un programa de desinstalacin y fue
distribuido a unas pocas personas para ayudarles a controlar a aquellas personas
que intentasen robarles su software. Cuando fue accidentalmente puesto en
circulacin, Ardiri ayud a contener esta infeccin. Streams comenz siendo la
prueba de concepto de virus para el subsistema de archivos de la definicin NTFS
(New Technology File System) llamado Alternate Data Stream (ADS) que permite
incluir datos adicionales unidos al archivo de origen. Como prueba de concepto,
Streams no debera propagarse. Pirus es otra prueba de concepto, es un script
escrito en PHP. Intenta aadirse a archivos tipo HTML o PHP. Pirus fue
descubierto el 9 de noviembre de 2.000.

FIG. 48. EFECTOS DEL VIRUS MARLBURG.

2.001- Aparece el primer virus para servidores web Linux: El gusano Ramen
comienza a atacar sistemas Linux en enero de 2.001. Debido a la amplia
implantacin de este sistema operativo en el mundo de la Internet, este virus se
propag rpidamente, pero sin causar grandes destrozos.

- 471 -
Tras los pasos de un... Hacker

10.3 QU ESUNVIRUS INFORMTICO?

Un virus informtico, como vimos en la resea histrica de este fenmeno, es un


programa informtico (sea en cdigo ejecutable, objeto o fuente) que es capaz
de autoproducir su cdigo en otros programas informticos o computadoras, de
manera transparente al usuario, capaz de transcurrido el tiempo de
incubacin/propagacin, interferir con el normal funcionamiento de una
computadora o red de computadoras.

10.4 CMO FUNCIONAUNVIRUS INFORMTICO?

Un virus informtico en trminos generales, funciona de la siguiente manera:

1. Fase de creacin. Un programador de computadoras crea el cdigo del


virus.
2. Fase de incubacin/propagacin. Sea el mismo programador o el virus
en funcionamiento, verifica que el husped es susceptible de ser portador
del virus y permanece en estado de latencia hasta poder propagar su
cdigo hacia otro programa u otra computadora, una vez conseguido esto
procede a infectar a su vctima.
3. Fase de destruccin. Conforme est programado, una vez que se han
completado las fases anteriores procede a daar informacin o interferir
con el normal funcionamiento de una computadora hasta llegar a la
destruccin de la informacin o el grave deterioro del rendimiento de una
computadora o red de computadoras.
Ntese que hasta esta fase, la definicin de virus informtico cumple con la
definicin de Cohen.

Creacin del antivirus. El autor o alguna empresa que hacen software antivirus
presentan el antivirus.
Esta fase es opcional.

- 472 -
Virus y antivirus... Captulo X.

10.5 CLASIFICACIN DE LOS VIRUS INFORMTICOS

La clasificacin de los virus informticos es la siguiente:

Virus Per s.
Bomba Lgica.
Gusano o Worm.
Virus de Macro.
Caballo de Troya o troyano.
Fallos de seguridad en el diseo de algunos sistemas.

Todos estos programas tienen en comn la creacin de efectos perniciosos; sin


embargo, no todos pueden ser considerados como virus propiamente dichos.

VIRUSPERS
Un verdadero virus o virus per s, cumple con todas y cada una de las tres
primeras fases del funcionamiento de un virus.
Un virus per s tambin debe modificar el cdigo original del programa
husped o soporte objeto de la infeccin, para poder activarse durante la
ejecucin de dicho programa; al mismo tiempo, una vez activado, el virus suele
quedar residente en memoria para poder infectar otros programas o medios de
forma automtica y sin la intervencin del usuario.

Ejemplo: Three Tunes, Natas, etc.

BOMBA LGICA
Se trata simplemente de un virus informtico que permanece residente en su
husped y contaminando a otros programas o computadoras sanos y que solo
se activa cuando se produce una accin concreta, predeterminada por su creador,
por ejemplo: cuando se llega a una fecha especfica, cuando se ejecuta cierto

- 473 -
Tras los pasos de un... Hacker

programa, se produce determinado suceso o evento en la computadora


husped, etc.
Ejemplo: Jerusalem, Michelangelo, etc.

GUSANO O WORM
Un gusano o Worm en un programa cuya nica finalidad es la de ir consumiendo
la memoria del sistema, mediante la realizacin de copias sucesivas de s mismo,
hasta desbordar la RAM, siendo sta su nica accin maligna, dentro de este
grupo de virus, podemos tambin considerar a los VBScripts.
Ejemplo: Arj.Worm, Bloodhound.IRC.Worm, etc.

VIRUS DE MACRO
Un virus de macro es un programa pernicioso escrito en un lenguaje de alto nivel
que funciona en entornos muy especficos, por ejemplo, las aplicaciones de
Microsoft Office, su caracterstica principal es que funcionan directamente en
cdigo fuente y este fuente puede fcilmente transportase en medios de alta
difusin como son los documentos que pueden crearse con estos programas,
cuando son ledos en una computadora sana, se produce la infeccin de este
sistema, de ah en adelante todos los documentos que se creen sern portadores
de este virus.
Ejemplo: Npad, Laroux, etc.

CABALLO DE TROYA
Caballo de Troya es un programa maligno que se oculta en otro programa que es
una aplicacin vlida y de inters para el usuario. Producir sus efectos
perniciosos al ejecutarse este ltimo. En este caso, no es capaz de infectar otros

- 474 -
Virus y antivirus... Captulo X.

archivos o soportes, pero s es capaz de autoproducir su cdigo en otras


computadoras (obviamente si est programado para realizar esta labor), slo se
ejecuta una vez, aunque es suficiente, en la mayora de las ocasiones, para causar
su efecto destructivo.
Ejemplo: Parrot, SirCam, etc.

FALLOS DE SEGURIDAD EN EL DISEO DEALGUNOSSISTEMAS


Un fallo de seguridad o bug de diseo, es una condicin o serie de condiciones
que permiten a un atacante ejecutar, leer o escribir informacin en una
computadora de manera remota, la cual tenga instalado un programa en
particular. Debido a este tipo de fallos, constantemente los fabricantes de estos
programas estn publicando correcciones de estos programas, a estas
correcciones se las conoce como parches de seguridad. El usuario de estos
sistemas debe estar consciente que mientras existan estos fallos, constantemente
ver comprometida su informacin al usar estos programas.

Ejemplo: Correccin de seguridad en el Outlook Express de Microsoft.

El lmite entre virus per s y el resto de programas malignos es muy difuso,


prcticamente invisible, puesto que ya casi todos los virus existentes incorporan
caractersticas propias de uno o de varios de estos tipos de virus, as por ejemplo:
el virus Viernes 13 tambin conocido como Jerusalem es capaz de infectar otros
archivos, siendo as virus per s, pero tambin realiza su efecto destructivo
cuando se da una condicin concreta, que el da del calendario sea viernes y que
dicha fecha sea 13 de cualquier mes y ao, caracterstica propia de una bomba
lgica; por ltimo, se oculta en programas ejecutables teniendo as una cualidad
de Caballo de Troya, en este punto radica la gran confusin existente a este
aspecto.

- 475 -
Tras los pasos de un... Hacker

10.6 FORMAS DE INFECCIN

Antes de nada, hay que recordar que un virus no puede ejecutarse por si solo,
necesita un programa portador o una computadora husped, para poder
cargarse en memoria e infectar; asimismo, para poder unirse a un programa
portador necesita modificar la estructura de este, para que durante su ejecucin
pueda realizar una llamada al cdigo del virus.

Las partes del sistema ms susceptibles de ser infectadas son: El sector de


arranque de los disquetes, el sector de la tabla de particin (tambin conocido
como MBR, Master Boot Record), el sector de arranque del disco duro y los
archivos ejecutables (*.EXEy *.COM, *.Dll, *.VxD, *.WDM, etc.). Para cada una de
estas zonas tenemos un tipo de virus, aunque muchos son capaces de infectar por
s solos estos tres componentes del sistema.

En los disquetes, el sector de arranque es una zona situada al principio del disco,
que contiene datos relativos a la estructura del mismo y un pequeo programa,
que se ejecuta cada vez que arrancamos desde disquete (tambin se encuentra en
los discos duros, una parte en el MBR y otra en el Boot Sector), que se conoce
como IPL (Initial Program Loader).

En este caso, al arrancar con un disco contaminado el virus se queda residente en


memoria RAM, a partir de este momento, infectar el sector de arranque de
todos los disquetes a los que se tenga acceso, ya sea al dar formato o al hacer un
DIR en el disco (dependiendo de cmo est programado el virus).
El proceso de infeccin consiste en sustituir el cdigo de arranque original del
disco por una versin propia del virus, guardando el original en otra parte del
disco; a menudo el virus marca los sectores donde guarda el boot original como
daado, protegindolos as de posibles accesos, esto suele hacerse por dos
motivos: Primero, muchos virus no crean una rutina propia de arranque, por lo
que una vez residentes en memoria, efectan una llamada al IPL original, para
iniciar el sistema y as aparentar que se ha iniciado el sistema como siempre, con
normalidad. Segundo, este procedimiento puede ser usado como tcnica de
ocultamiento.

Normalmente un virus completo necesita ms espacio que los 512 bytes que
ocupa el sector de arranque, por lo que en ste suele copiar una pequea parte de
si mismo y el resto lo guarda en otros sectores del disco, normalmente los

- 476 -
Virus y antivirus... Captulo X.

ltimos, marcndolos como defectuosos. Sin embargo, puede ocurrir que alguno
de los virus no marquen estas zonas, por lo que al llenar el disco estos sectores
pueden ser sobrescritos y as dejar de funcionar el virus.
El sector de la tabla de particin esta situada en el primer sector del disco duro,
contiene informacin de cmo se divide el disco? y un pequeo programa de
arranque del sistema (IPL). Al igual que ocurre con el boot de los disquetes, un
virus de particin suplanta el cdigo de arranque original por el suyo propio; as,
al arrancar desde el disco duro, el virus se instala en memoria para efectuar sus
acciones. Tambin en este caso el virus guarda la tabla de particin original en
otra parte del disco, aunque algunos la marcan como defectuosa y otros no.
Muchos virus guardan la tabla de particin y a ellos mismos en los ltimos
sectores de disco, para proteger esta zona, modifican el contenido de la tabla para
reducir el tamao lgico del disco. De esta forma el DOS no tiene acceso a estos
datos, puesto que ni siquiera sabe que esta zona existe.
Con todo, el tipo de virus que ms abunda es el de archivo; en este caso usan
como vehculo de expansin los archivos de programa o ejecutables, sobre todo
los *.EXE y *.COM, aunque tambin suelen infectar a archivos de tipo *.DLL, *.VxD,
*.OVL, *.BIN, *.WDM y *.OVR. Al ejecutarse un programa infectado, el virus se
instala residente en memoria, a partir de este momento permanece al acecho; al
ejecutar otros programas, comprueba si ya se encuentran infectados. Si no es as,
se adhiere al archivo ejecutable, aadiendo su cdigo al principio o al final de ste
modificando su estructura, de forma que al ejecutarse dicho programa, primero
llame al cdigo del virus devolviendo despus el control al programa portador, de
esta manera permitiendo su ejecucin normal. (Definicin formal de un virus
hecha por Fred Cohen)

Este efecto de adherirse al archivo original se conoce tambin como hacer un


append file, este proceso aumenta de tamao del archivo al tener que albergar
en su interior al virus, siendo esta circunstancia muy til para su deteccin. De
ah que la inmensa mayora de los virus sean programados en lenguaje
ensamblador, por ser el que genera el cdigo ms compacto, veloz y de menor
consumo de memoria; un virus no seria efectivo si fuera fcilmente detectable
por su excesivo tamao o requerir demasiada memoria (en la actualidad esta
circunstancia no es muy importante). No todos los virus de archivo quedan
residentes en memoria, si no que, al ejecutarse el portador, ste infecta a otros
archivos, elegidos de forma aleatoria de ese directorio o carpeta entre otras.

- 477 -
Tras los pasos de un... Hacker

10.7 EFECTOS DESTRUCTIVOS DE LOS VIRUS

Los efectos perniciosos que causan los virus son variados; entre stos se
encuentran el formateo completo del disco duro, eliminacin de la tabla de
particin, eliminacin de archivos, disminucin del rendimiento de la
computadora hasta limites exagerados, enlaces de archivos destruidos, archivos
de datos y de programas daados, mensajes o efectos extraos en la pantalla,
emisin de msica o sonidos, etc.

10.8 FORMAS DE OCULTAMIENTO


Un virus puede considerarse efectivo si, adems de extenderse lo ms
ampliamente posible, es capaz de permanecer oculto al usuario el mayor tiempo
posible; para ello se han desarrollado varias tcnicas de ocultamiento. Para que
estas tcnicas sean efectivas, el virus debe estar residente en memoria, puesto
que debe monitorear el funcionamiento del sistema operativo. La base principal
del funcionamiento de los virus y de las tcnicas de ocultamiento, adems de la
condicin de programas residentes, la interceptacin de interrupciones. El DOS y
los programas de aplicacin se comunican entre s mediante el servicio de
interrupciones, que son como subrutinas del sistema operativo que proporcionan
una gran variedad de funciones a los programas.

Las interrupciones se utilizan, por ejemplo, para leer o escribir sectores en el


disco, abrir archivos, fijar la hora del sistema, etc. Y es aqu donde el virus entra
en accin, ya que puede sustituir alguna interrupcin del DOS por una suya
propia y as, cuando un programa solicite un servicio de esa interrupcin, recibir
el resultado que el virus determine.

Entre las tcnicas ms usuales cabe destacar el ocultamiento o stealth, que


esconde los posibles signos de infeccin del sistema. Los sntomas ms claros del
ataque de un virus los encontramos en el cambio de tamao de los archivos, de la
fecha en que se crearon y de sus atributos o en la disminucin de la memoria
disponible.
Estos problemas son indicadores de la posible presencia de un virus, pero
mediante la tcnica stealth es muy fcil (siempre que se encuentre residente el

- 478 -
Virus y antivirus... Captulo X.

virus) devolver al sistema la informacin solicitada como si realmente los


archivos no estuvieran infectados. Por este motivo es fundamental que cuando
vayamos a realizar un chequeo del disco duro arranquemos la computadora con
un disco de sistema totalmente limpio.

El autocifrado o selfencryption es una de las tcnicas vricas ms extendidas. En


la actualidad casi todos los nuevos ingenios destructivos son capaces de cifrarse
cada vez que infectan un archivo, ocultando de esta forma cualquier posible
indicio que pueda facilitar su bsqueda. No obstante, todo virus cifrado posee
una rutina de descifrado, rutina que es aprovechada por los antivirus para
determinar el origen de la infeccin.
El mayor avance en tcnicas de cifrado como ya se mencion viene dado por el
polimorfismo. Gracias a l un virus no slo es capaz de cifrarse a s mismo, sino
que adems vara la rutina empleada cada vez que infecta un archivo. De esta
forma resulta imposible encontrar coincidencias entre distintos ejemplares del
mismo virus, ante esta tcnica el tradicional mtodo de bsqueda de cadenas
caractersticas o firmas de virus se muestra intil.

Otra tcnica bsica de ocultamiento es la interceptacin de mensajes de error del


sistema. Supongamos que un virus va a infectar un archivo de un disco protegido
contra escritura; al intentar escribir en l obtendramos el siguiente mensaje:
"Error de proteccin contra escritura leyendo unidad A: Anular, Reintentar,
Fallo?", por lo que descubriramos el anormal funcionamiento de nuestro equipo.
Por esto, al virus le basta con re direccionar la interrupcin a una rutina propia
que evita la salida de estos mensajes, consiguiendo as pasar desapercibido.

10.9 PREVENCIN, DETECCIN Y ELIMINACIN

Una buena poltica de prevencin y deteccin nos puede ahorrar sustos y


desgracias, las medidas de prevencin pasan por el control, en todo momento, del
software ya instalado o que se va a instalar en nuestra computadora,
comprobando la fiabilidad de su fuente (Software Original). Esto implica la
actitud de no aceptar software pirata, ya que el pirateo es una de las principales
fuentes de contagio de un virus, siendo tambin una prctica ilegal y que hace
mucho dao a la industria del software.

- 479 -
Tras los pasos de un... Hacker

Por supuesto, el sistema operativo, que a final de cuentas es el elemento ms


importante de la computadora, debe ser totalmente fiable; si ste se encuentra
infectado, cualquier programa que ejecutemos resultar tambin contaminado.
Por esto, es imprescindible contar con una copia en disquetes del Sistema
Operativo, protegidos stos contra escritura; este ltimo punto es muy
importante, no solo para con los disquetes del Sistema Operativo, sino con el
resto de disquetes de los programas que tengamos (en la actualidad, con el uso
de CDs, esta precaucin podemos pasarla por alto).

WINDOWS 95 Y SUPERIORES

La existencia de un nuevo Sistema Operativo con bastantes diferencias tcnicas


respecto a desarrollos anteriores merece un estudio especial para comprobar
cmo reacciona ante virus conocidos y el tipo de proteccin que ofrece.

Ante la infeccin del sector de arranque (boot sector), Windows 95 reacciona


sorprendentemente bien, o al menos mucho mejor que sus antecesores. De
hecho, frente a cualquier modificacin del sector de arranque, el sistema presenta
un mensaje durante la inicializacin. Nos anuncia que algo se ha cambiado y que
la causa de tal hecho puede ser un virus de boot, aunque no necesariamente.

Tambin debemos precisar que si hay un error en la tabla de particiones, el


sistema nos da el mismo aviso que en el caso anterior, lo que sin duda puede ser
motivo de confusin. En general siempre que Windows 95 se d cuenta de un
fallo en el sistema de archivos que le impida trabajar con la totalidad de la FAT
(File Allocation Table), se inicia con el Sistema de archivos en modo seguro
MS-DOS, sugiriendo como posible causa el ataque de un virus, que Microsoft
achaque estos fallos a la accin de un virus es una solucin un tanto drstica, ya
que una falsa alarma puede ser tan peligrosa como la presencia real de un virus.

PROBLEMAS CON WINDOWS 95 Y SUPERIORES

Los nuevos sistemas operativos de Microsoft han creado ms de un problema a


las empresas de seguridad, no slo por el trabajo adicional de reprogramar sus

- 480 -
Virus y antivirus... Captulo X.

desarrollos para adecuarse a las caractersticas del nuevo entorno, sino tambin
por algunos fallos de diseo propios de Windows 95 y sus hermanos mayores
(Windows 98, Me, Windows 2000, Windows XP, Windows Vista, Windows 7).
En el MS-DOS (tambin en Windows 3.1) se podan solicitar informes al sistema
de todas las actividades realizadas, todo ello en tiempo real, desgraciadamente en
Windows 95 la cosa vara, ya que a pesar de tratarse de un sistema operativo
multitarea no se envan informes en tiempo real, sino cada determinados
intervalos de tiempo o cuando el procesador est menos ocupado. Por este
motivo la programacin de un controlador capaz de monitorizar el sistema con
seguridad es muy difcil, ya que un antivirus recibira la informacin de que se va
a producir una infeccin cuando el archivo ya est infectado.

A pesar de ello, gran parte de los antivirus para Windows 95 incluyen


controladores o drivers virtuales llamados VxD, (WDM para Windows NT,
2000, XP, Vista y 7) capaces de mantener bajo su atenta mirada el sistema en
todo momento. De todas formas, la realizacin de un controlador de este tipo
para Windows 95 no es una tarea sencilla y acarrea bastantes problemas.
Adems, es importante que la proteccin se ofrezca en todo momento, es decir,
que se controle la interfaz grfica, la versin previa del sistema operativo, las
sesiones DOS y el modo MS-DOS 7.0 (arrancando sin la interfaz o al apagar el
sistema).

VIRUS EN LA INTERNET
En ocasiones se propagan rumores que dan por cierto noticias de dudosa
procedencia, ms o menos esto es lo que ha sucedido de un tiempo a esta parte
con el virus por correo electrnico de Internet conocido como Good Times.
Lgicamente las primeras noticias de esta maligna creacin aparecieron en la red
de redes, en un mensaje alarmante que deca que si algn usuario reciba un
mensaje con el tema Good Times no deba abrirlo o grabarlo si no quera perder
todos los datos de su disco duro.

Posteriormente el mensaje recomendaba que se informara a todo el mundo y se


copiara el aviso en otros lugares. En esta ocasin el rumor es totalmente falso,
aunque todava sigue existiendo gente que se lo cree y no es raro encontrar en

- 481 -
Tras los pasos de un... Hacker

algn medio de comunicacin electrnica nuevo reenvos del mensaje original,


este tipo de mensajes, en la jerga de los expertos en seguridad informtica se los
conoce como HOAX.

10.10 QU ESUNANTIVIRUS?

Un buen programa antivirus es un programa que tiene la capacidad de


prevenir, detectar, localizar y eliminar un virus o conjunto de virus.
Este tipo de software utiliza varias tcnicas para realizar estos objetivos, las
estudiaremos levemente a continuacin.
Para la prevencin se suelen usar programas residentes que alertan al usuario en
todo momento de cualquier acceso no autorizado o sospechoso a memoria o a
disco, por lo que resultan sumamente tiles al impedir la entrada de un virus y
hacerlo en el momento en que este intenta la infeccin, facilitndonos
enormemente la localizacin del programa maligno. Sin embargo presentan
ciertas desventajas, ya que al ser residentes consumen memoria RAM y pueden
tambin resultar incompatibles con algunas aplicaciones. Por otro lado, pueden
llegar a resultar bastante molestos, puesto que por lo general suelen interrumpir
nuestro trabajo habitual con la computadora alertndonos de intentos de acceso
a memoria o a disco que en muchos casos provienen de programas sanos. A
pesar de todo, son una medida de proteccin excelente y a ningn usuario
debera faltarle un programa de este tipo.

A la hora de localizar virus, los programas usados son los detectores o escneres,
normalmente estos programas chequean primero la memoria RAM, despus de
chequear las zonas criticas del disco como el sector de particin, sector de
arranque y por ultimo los archivos almacenados en l.

Los productos antivirus han mejorado considerablemente sus algoritmos de


bsqueda, aunque en la actualidad la exploracin de cadenas o firmas de virus,
sigue siendo la tcnica ms empleada. Pero el aumento imparable del nmero de
virus y las tcnicas de camuflaje y polimorfismo que suelen emplear, hace que la
bsqueda a travs de una cadena genrica sea una tarea cada vez ms difcil. Por

- 482 -
Virus y antivirus... Captulo X.

ello, cada da es ms frecuente el lanzamiento de antivirus con tcnicas


heursticas.

La deteccin heurstica es una de las frmulas ms avanzadas de identificacin de


un virus, la bsqueda de virus mediante esta tcnica se basa en el desensamblado
del cdigo del programa que se intenta analizar con el objetivo de encontrar
instrucciones (o un conjunto de ellas) sospechosas. Sin duda, lo mejor es
disponer de un antivirus que combine la bsqueda de cadenas caractersticas o
firmas de virus y adems cuente con tcnicas heursticas.

Gracias a la heurstica se buscan programas que puedan quedarse residentes o


que sean capaces de capturar aplicaciones que se estn ejecutando, cdigo
preparado para mover o sobrescribir un programa en memoria, cdigo capaz de
auto modificar ejecutables, rutinas de cifrado y descifrado u otras actividades
propias de los virus.

Aunque las tcnicas heursticas han representado un gran avance en la deteccin


de virus desconocidos, presentan un gran inconveniente: es muy alta la
posibilidad de obtener falsos positivos y negativos. Se produce un falso
positivo cuando el antivirus anuncia la presencia de un virus que no es tal,
mientras que se llama falso negativo cuando determina que la computadora est
limpia cuando en realidad se encuentra infectada.

QUDEBEMOS BUSCARENUNANTIVIRUS?

A la hora de decidirnos por un antivirus, no debemos dejarnos seducir por la


propaganda con mensajes como "detecta y elimina 72.435 virus". Realmente
existen miles de virus, pero la gran mayora son mutaciones y familias de otros
virus; esto est bien, pero hay que tener en cuenta que un elevado nmero de
virus no han llegado ni llegaran a nuestro pas.

Por lo que de poco nos sirve un antivirus que detecte y elimine virus muy
extendidos en el mundo y que desconozca los ms difundidos en nuestra regin;
por tanto, estaremos mejor protegidos por un software que, de alguna forma, est
ms "especializado" en virus que puedan detectarse en nuestro pas.

- 483 -
Tras los pasos de un... Hacker

CMOREACCIONARANTEUNAINFECCIN?

La prevencin que se consigue con programas especializados como los monitores


de integridad y la compra de un buen antivirus son las mejores armas con las que
cuenta el usuario ante el ataque de los virus.
Si se produjera una infeccin, lo ms aconsejable es:

Respaldar la informacin importante que posea el usuario. (No


programas o aplicaciones).
Arrancar la computadora con un dispositivo que est 100% libre de virus.
Borrar todos los programas y sistema operativo del disco.
Inicializar sector de la tabla de particin y sector de arranque.
Reinstalar el sistema operativo y aplicaciones.
Instalar un programa monitor de integridad.
Instalar una versin actualizada de un buen antivirus.
Verificar que nuestra informacin no est infectada.
Restituir nuestra informacin a la computadora.

NOTAS Y BIBLIOGRAFA
Sobre este tratado de Virus y Antivirus, las notas han sido elaboradas en base a
publicaciones de revistas especializadas y la consulta de los siguientes textos:

- El arte de la guerra, Sun Tzu, Publicacin Electrnica Feedbooks,


http://www.feedbooks.com.
- CMO PROGRAMAR COMPUTADORAS, URMOS.A, DE EDICIONES, Bilbao
Espaa, 1.977.
- Manual del Microprocesador 80386, Chris H. PappasWilliam H. Murray,
III, McGraw Hill / Interamericana de Espaa S.A., Madrid Espaa,
1.983.
- CONEXIONES EN EL IBM PC/XT/AT, Teora y prctica de perifricos,
comunicaciones y configuraciones, M. D. Seyer, Red Editorial
Iberoamericana REI Andes Ltda., Prentice Hall Inc., 1.985.

- 484 -
Virus y antivirus... Captulo X.

- Criptografa: La ocultacin de mensajes y el ordenador, ENCICLOPEDIA


PRCTICA DE LA INFORMTICA APLICADA, TOMO 11, Juan Ignacio
Puyol, EDICIONES SIGLO CULTURAL S.A., Madrid Espaa, Octubre de
1.986.
- 80386 Gua del programador y Manual de referencia, Intel Corporation
1.986, Ediciones Anaya Multimedia S.A., Septiembre de 1.989.
- ABIOS for IBM PS/2 Computers and Compatibles, Phoenix Technologies
Ltd., AddisonWesley Publishing Company Inc., Junio de 1.989.
- Introduccin al 80386, Intel Corporation 1.985, Ediciones Anaya
Multimedia S.A., 1.989.
- Programacin en C, Byron S. Gottfried, McGraw Hill / Interamericana de
Espaa S.A., Madrid Espaa, 1.991.
- Microsoft MASM, Assembly Language Development System Version 6.1.,
Microsoft Corporation 1.987, 1.991, 1.992 U.S. Patent No. 004955066,
Estados Unidos de Norte Amrica, 1.992.
- Inside Windows NT, Helen Custer, Microsoft Press 1.993, Publicado en
los Estados Unidos de Norte Amrica, 1.993.
- Microsoft Windows 3.1 Users Guide, Microsoft Corporation 1.985 -
1.993, U.S. Patent No. 004974159, Estados Unidos de Norte Amrica,
1.993.
- The Hackers Crackdown: Law And Disorder On The Electronic Frontier,
Bruce Sterling, Publicado por Editorial Bantam en los Estados Unidos de
Norte Amrica, Noviembre de 1.993.
- Advanced Windows NT, The Developers Guide to the Win32 Application
Programming Interface, Jeffrey Richter, Microsoft Press 1.994,
Publicado en los Estados Unidos de Norte Amrica, 1.994.
- Microsoft MS-DOS 6.21 Users Guide, Microsoft Corporation 1.981 -
1.994, U.S. Patent No. 004955066 y U.S. Patent No. 005109433, Estados
Unidos de Norte Amrica, 1.994.
- Organizacin y diseo de computadores La interfaz hardware /
software, David A. Patterson John L. Hennessy, McGraw Hill /
Interamericana de Espaa S.A., Madrid Espaa, 1.995.
- System BIOS for IBM PCs, Compatibles, and EISA Computers, Phoenix
Technologies Ltd., AddisonWesley Publishing Company Inc., Noviembre
de 1.995.
- Hackers Los clanes de la red, Claudio Hernndez, Publicacin
Electrnica, 1.999.

- 485 -
Tras los pasos de un... Hacker

- Hackers Los piratas del chip y de Internet, Claudio Hernndez,


Publicacin Electrnica, 2.001.
- Hackers Defensa y ataque, Claudio Hernndez, Publicacin Electrnica,
Octubre de 2.002.
- Polymorphous Encryption System, Nstor Marroqun Carrera, U.S. Patent
Application No. 20020191786 A1, Diciembre de 2.002.
- Manual Moderno de Informtica, Labor Loerincs, Zamora Editores Ltda.,
Publicado por Quebecor World Bogot S.A., Impreso en Bogot
Colombia, 2.004.
- Criptografa y Seguridad en Computadores Cuarta Edicin Versin
4-0.8.1, Manuel Jos Lucena Lpez, Universidad de Jan, Publicacin
Electrnica, Marzo de 2.010.
- La wikipedia, http://www.wikipedia.org. La enciclopedia libre de la
Internet.
- PC World Ecuador,
Magazine, http://www.pcmag.com
http://www.pcworld.com.ec/pcw_catt/index.php

- Notas de clase, Nstor Marroqun, 1.9891.994.


- Trabajos de varios autores publicados en la worldwide web.

- 486 -
CAPTULO XI. LA HISTORIA

11.1 LOS COMIENZOS

Corra el ao de 1.994, para ese ao ya estaba lo suficientemente maduro mi


programa, el famoso Check Program, en ese entonces el primer y nico
PROTECTOR CONTRA VIRUS INFORMTICOS, fjense que no digo ANTIVIRUS,
pero todos los usuarios y potenciales clientes pensaban que era uno ms de los
tantos que existan en el mercado en esa poca.

Nuestra propuesta tecnolgica variaba radicalmente de la forma de trabajar de


los antivirus. Un antivirus funciona a partir de tener una base de conocimiento
de las firmas de virus conocidos y con esta, al hacer comparaciones de las
firmas conocidas contra la posible firma que podra encontrar en los archivos
instalados en la computadora, realizan este trabajo para determinar si algn
programa o la mquina est infectada por algn virus informtico, reconocerlo,
ubicarlo y posteriormente eliminarlo (no siempre este proceso es posible con los
antivirus); por su parte, mi Check Program, tambin se fundamentaba del
hecho de tener una base de conocimiento, pero de las firmas de los programas
instalados y con este conocimiento inicial, cualquier modificacin que la poda
realizar un virus informtico era inmediatamente identificada, el algoritmo de
reconocimiento de firmas de virus tena la capacidad de autoalimentarse de
nuevas definiciones (por esta particularidad no necesitaba de tener
actualizaciones de firmas de virus, que es el negocio de los programas antivirus),
localizaba los archivos infectados por la mera comparacin de sus checksums,
la innovacin consista en que a partir de la firma del programa instalado
poda realizar la desinfeccin del virus (algo as como una VACUNA
INFORMTICA), consiguiendo de esta forma garantizar, que un virus conocido
as como uno desconocido, no pueda infectar o daar la informacin
almacenada.

Al tener esta caracterstica y con ese olfato que tienen algunas personas para los
negocios, mi amigo Fidel Valencia (1.965-, ingeniero en electrnica), me propone
un trato para la comercializacin del Check Program, me dijo que un cliente

- 487 -
Tras los pasos de un... Hacker

suyo (el desaparecido Banco de Crdito) necesitara mi programa para de una


vez terminar con el dolor de cabeza que causan los virus informticos cuando
estos se manifiestan. Emprendimos entonces la gran aventura de comercializar
nuestro producto bajo la figura de distribucin y comercializacin con su
empresa denominada multihard; y la fabricante, la ya conocida NMC Research.

Causando un xito sin precedentes en la industria informtica nacional, el Check


Program, pronto acapar el inters de la prensa nacional e internacional. En
ese ao, estara invitado a dar una conferencia sobre virus, antivirus y el Check
Program, en la Convencin Nacional de Informtica que todos los aos en
octubre se celebra a la par de la tradicional Feria de Tecnologa denominada
COMPU. As que, tendra varios meses para preparar la exposicin a tan magno
evento acadmico.

La comunidad universitaria por su parte (en algunas de las universidades del


pas), empezaba a estudiar el caso Check Program, como una propuesta
exitosa y que era la prueba fehaciente, de que s se puede! crear tecnologa
local; y, que la misma era una fuente de ingresos suficientes para que jvenes
profesionales, no solamente esperen graduarse con un Ttulo Acadmico bajo el
brazo con la esperanza de ser un Jefe de Sistemas de alguna institucin pblica
o privada, sino que puedan emprender una actividad propia rentable.
Como famoso programador y aprendiz de las artes del Hacker, tuve otra extraa
visita a mediados del mes de julio de 1.994

11.2 AGENTES DEL SERVICIO DE INTELIGENCIA. EL MOMENTO


QUE EL GUILA PERDI SUS HUEVOS

Cierto da, recibo la visita de uno de mis compaeros de la Escuela Militar, me


contaba que para ese 10 de agosto (fecha patria en Ecuador, se conmemora el
Primer Grito de la Independencia en Amrica Latina) se graduaran mis
compaeros de oficiales del Ejrcito Ecuatoriano. Me solicitaba que reciba a un
agente del servicio de inteligencia que tendra algo que proponerme, ante
esta insinuacin, le digo que yo no tengo ningn problema, as que recibira con
gusto a la persona que l me recomendaba.

- 488 -
La historia... Captulo XI.

En mi oficina del Registro de la Propiedad del Cantn Quito, golpeaba la puerta


para fines de julio de 1.994, a quien lo conoc como Santiago; un tipo de tez
blanca, delgado, usaba bigote, algo calvo y de apariencia intelectual, quien vena
por la cita acordada das atrs, para conversar de algo muy importante; as, dej
por un momento mis ocupaciones cotidianas, para tener algo de privacidad, le
solicitara a mi contraparte contractual (el Registrador de la Propiedad), nos
facilite su saln privado para conversar con tan singular y distinguido seor.
Presto a escuchar su propuesta, Santiago se identifica como militar en servicio
activo y me pide que por favor mantenga en secreto su identidad, cosa que
acepto. Ahora bien, me deca que de los informes de nuestros informantes
infiltrados en la vecina Repblica del Per, los servicios de inteligencia y
contrainteligencia tenan sospechas sustentadas que se estaba planificando una
posible agresin a nuestra patria y que la misin que le haban encomendado era
tan importante y tan difcil de realizar que por sus medios o los del personal a su
mando no la podra llevar a cabo sin la ayuda de algunos expertos en informtica.
Por la fama ya adquirida y como ex militar, vea que mi colaboracin podra ser
importante; eso s, adverta que si algo sala mal, se filtraba a la opinin pblica
de alguna manera la misin o simplemente fracasaba el plan, ellos negaran
oficialmente alguna responsabilidad y si fuera del caso, mi persona, as como
alguno de mis colaboradores que estaran bajo mi supervisin, tendramos que
afrontar las consecuencias por cuenta propia. Bueno, ante tan ttrico panorama
y una vez ms con la curiosidad motivada, le pregunt, en qu consiste tu
misin?, me respondi lamentndose, que consista en convalidar el inventario
blico de nuestro vecino y hermano pas del sur, pero que no tena ni la menor
idea de cmo hacerlo?
Se haba puesto a investigar algunas operaciones de inteligencia que han
trascendido en la historia mundial y en todas ellas el denominador comn era la
participacin de tcnicos especialistas en tal o cual ciencia; y que, por los mitos
urbanos, se haba enterado del mundo de los Hackers. Al pensar que yo era uno
de ellos, su problema estara solucionado al ingresar subrepticiamente a los
Sistemas de Defensa del Per. De su formacin como agente de inteligencia y de
la misma forma como trabajan los Hackers, tendramos que crear una historia
ficticia (conocida como HF, por los Hackers bautizada como Ingeniera
Social), la misma que encubrira la operacin. Para proteger nuestras
identidades verdaderas, tambin tendramos que usar ciertos sobrenombres o
nicknames. Me atrajo el reto, pero sinceramente le dije que yo no era un

- 489 -
Tras los pasos de un... Hacker

Hacker y que no poda ayudarlo en su trabajo; sin embargo, conoca alguien que
quiz lo podra ayudar (me vino a la mente Csar); entonces, me dijo que
dispona de los recursos econmicos suficientes y que si tendra que formar un
grupo especialista, que cuente con ello, pero que definitivamente quera
arreglarse durante toda la operacin solo conmigo, porque ya me tena confianza
y estaba convencido que con mi asesora la misin encomendada la podra
cumplir.
Sin pensarlo mucho acepto el reto (como asesor del proyecto la cosa cambiaba), a
rengln seguido le menciono que necesitaramos ubicar a Csar; y, quiz algunos
tcnicos que l nos podra recomendar. Para la quincena de agosto de 1.994, el
equipo Alfa ya estaba conformado; para esta operacin quien les narra funga
como lder y asesor, mi HF fue Mr. Stealth, estaba Csar como experto en
comunicaciones, lORdByte como experto en sistemas operativos y
programacin de drivers (manejadores), Orlando experto en interaccin
hombre mquina y Bit Cracker como nuestro experto en electrnica.
Con estos cinco cerebritos, apuntando a vencer un solo reto, obtener la
informacin que Santiago necesitaba, emprendimos la gran aventura de infiltrar
nuestros propios monstruos en pos de conseguir la informacin.

Lleg el mes de septiembre, lamentablemente no podamos hacer mucho y no


porque el sistema informtico de defensa del Per sea robusto o bien
configurado, sino porque simplemente no exista una forma de realizar una
conexin remota; as que, cualquier intento tendra que ser hecho desde el
interior de la organizacin. Por el excesivo riesgo a correr, esta opcin fue
desechada.

A travs de sus contactos en el underground, Csar consigue que tengamos por


aliados a unos Hackers Croatas, quienes tendran el conocimiento de las tcnicas
que el mtico Cndor las habra usado para hacerse de informacin valiosa en los
Estados Unidos de Norte Amrica, es as que, nuestro equipo Alfa tendra soporte
logstico y tcnico de nuestros aliados europeos.
El mtico Cndor, conocera las fortalezas y debilidades de la Red del
Departamento de Defensa de los Estados Unidos de Norte Amrica, la famosa
ARPANET (Advanced Research Projects Agency Network), que fuera creada por
encargo del Departamento de Defensa de los Estados Unidos de Norte Amrica
(DoD, por sus siglas en ingls) en el ao de 1.968. En 1.969 se pondra operativa

- 490 -
La historia... Captulo XI.

esta red y para el 29 de octubre de 1.969 se transmitira el primer mensaje a


travs de la misma. Un mes despus, el 21 de noviembre de 1.969, se
establecera el primer enlace entre las universidades de Stanford y la UCLA.
ARPANET sera la columna vertebral de la Internet hasta el ao de 1.990, en que
precisamente en Estados Unidos se conclua la transicin y puesta a punto del
protocolo TCP/IP que la empezara en 1.983.

Justamente en 1.994, dejara oficialmente de funcionar ARPANET, en su


reemplazo entrara la nueva NSFNet (National Science Foundations Network, Red
Nacional de la Fundacin para la Ciencia), actualmente ANSNET (Advanced
Networks and Services, Redes y Servicios Avanzados), pero no estaba
desconectada; as que tendramos alguna oportunidad de fisgonear los
documentos que en algunos servidores estaban disponibles.

Medida la posibilidad y sin mucho que perder, se nos ocurri un plan para llegar
a obtener algn documento de importancia, el mismo que consisti en:
1. Obtener las credenciales de autenticacin de algn personal autorizado
para el ingreso a la ARPANET.
2. Con las credenciales fsicas (tipos de tarjetas y nmeros de serie de los
componentes de alguna mquina autorizada), fabricaramos
localmente un clon perfecto de esta computadora.
3. Llevado el clon a los Estados Unidos de Norte Amrica, hecha zombi
esta computadora, tendramos localmente el enlace para ingresar a la
red, una especie de router/gateway.
4. Con las credenciales lgicas (usernames y passwords de acceso),
obtendramos el nivel apropiado de acceso para fisgonear los archivos
que estbamos buscando.

Si todo sala bien, el segundo reto era la transmisin de la informacin al


Ecuador. Para ello, Csar haba desarrollado un programa que sincronizaba va
modem telefnico de larga distancia los retardos o delays de la red telefnica de
voz de aquella poca, para que nuestra computadora zombi se comunique
satisfactoriamente con su controlador en el Ecuador.
En teora funcionaba el plan. Sin perder tiempo, nuestros aliados europeos
haban podido obtener las credenciales de acceso de un coronel de la Fuerza
Area de los Estados Unidos de Norte Amrica, de una base denominada
Randolph USAir Force, gentilmente nos facilitaron estas credenciales.

- 491 -
Tras los pasos de un... Hacker

Bit Cracker, dise la computadora que sera el clon perfecto de la del coronel
norte americano, para esto y con la ayuda de un dispositivo especial denominado
grabador de PROMS, equipamiento que lo pudimos adquirir para nuestros
experimentos, Bit Cracker haba clonado satisfactoriamente los nmeros de serie
de la tarjeta de vdeo, de la tarjeta madre, de las tarjetas de comunicaciones (red,
telfono y puertos seriales). Y en menos de una semana estaba operativa esta
computadora a la que denominamos cariosamente monstruo.
Por su lado lORdByte en conjunto con Orlando, haban modificado a mano el
Sistema Operativo de la computadora (DOS con Windows 3.1), haciendo que
arranque y se dedique exclusivamente a la misin. La interfaz hombre mquina
que haba desarrollado Orlando, haca que fcilmente desde un ambiente grfico,
el operador (un agente de inteligencia militar) sin muchos conocimientos
tcnicos, solo tenga que hacer clic en ciertas opciones del programa.
Para llevar a cabo la operacin, a monstruo remotamente lo controlaramos
desde el C3I2 (Comando de Control y Comunicaciones, Inteligencia e Informtica)
creado para nuestra misin. Esto lo pudimos lograr gracias a que yo dispona del
MASM (saben que para cuando lo adquir, Microsoft desde Seattle, tuvo que
autorizar la venta, ya que para Latino Amrica estaba negado este producto) y del
conocimiento suficiente para que lORdByte solo necesite la idea y la gua para
que la ponga en prctica. Bueno, adems que con el protocolo de comunicaciones
hecho a la medida por parte de Csar, nuestro monstruo era confiable para la
transmisin de la informacin que iba a obtener. Contra reloj, estbamos
dispuestos a probar este equipo en el campo de batalla.

Rpidamente y con las instrucciones del caso, Santiago ubic esta computadora
en algn sitio en la Ciudad de San Antonio, Texas, en los Estados Unidos de Norte
Amrica. A travs de los servicios de una operadora local de telefona nos
conectbamos va telefnica (dial-up) al servidor de la ARPANET. El operador,
electrnicamente mimetizado como un usuario autorizado para ingresar a la
Red del Departamento de Defensa de los Estados Unidos de Norte Amrica,
estaba alerta de las alarmas que podan levantarse, lo nico que tena que hacer
era bajar la sesin de conexin. Este procedimiento necesariamente tena que
hacerse desde los Estados Unidos de Norte Amrica; primero, por el tiempo de
retardo entre las comunicaciones internacionales as como si hubiera existido
una llamada entrante desde el exterior esta circunstancia hara que pueda ser

- 492 -
La historia... Captulo XI.

detectado nuestro monstruo; y, segundo, perdido el enlace alguien tiene que


volver a levantarlo manualmente.

La conexin desde los Estados Unidos de Norte Amrica hacia el Ecuador, estaba
a cargo de una empresa que en ese entonces prestaba un servicio de CallBack;
es decir, desde el Ecuador se marcaba un nmero de telfono especial, cuando
este contestaba, se marcaba a qu nmero? en los Estados Unidos se quera
conectar y se colgaba el telfono. Segundos ms tarde, cuando se produca la
conexin, esta empresa llamaba a nuestro nmero y el trfico internacional era
tarifado y registrado como llamada saliente de Estados Unidos, nunca como
llamada entrante desde el Ecuador hacia Estados Unidos. Por su parte nuestro
monstruo, haca sus llamadas desde el mismo territorio norte americano y con la
seguridad que la conexin no se iba a caer, ya que confibamos en la calidad de
las telecomunicaciones del primer mundo.

El engao al sper sistema anti todo de la Red de Comunicaciones del


Departamento de Defensa de los Estados Unidos de Norte Amrica tena xito.
Vamos a recordar las principales razones y gracias a la maestra, que en su
momento el Cndor pudo desplegar para que haciendo uso de la Ingeniera
Social como su principal arma de ataque, podamos mimetizarnos como uno ms
de la red:
1. Al tener las credenciales fsicas apropiadas, el sistema de autenticacin de
la red, al pedir que nuestra computadora se identifique a travs de su
direccin MAC (Media Access Control), el nmero que enviaba como
respuesta a nivel fsico, era un nmero autorizado o cualquiera de los
otros valores como nmeros de serie de la tarjeta madre, de vdeo, etc.,
que pudieran haber sido requeridos, simplemente eran nmeros
autorizados.
2. El sistema al requerir la posicin geogrfica de la conexin telefnica,
mostraba que se la estaba haciendo desde la Ciudad de San Antonio, en
el Estado de Texas, por tanto era totalmente creble para el sistema, que
un coronel de la base militar, que justamente funciona en el Estado de
Texas, est pidiendo acceso a la red.
3. Con los username y password del mismo coronel y conectndonos a una
hora especfica que no delatara nuestra intromisin, adems, que para el
sistema debera ser creble que el coronel estaba en su casa trabajando.
Nuestra conexin pasaba desapercibida.

- 493 -
Tras los pasos de un... Hacker

En la operacin en s, nuestra computadora tena acceso a algunos servidores de


la CIA, FBI, NASA, DoD, en fin, la red estratgica. Pudimos ubicar una carpeta que
contena la informacin buscada, justamente del estado operacional y logstico
del armamento blico de nuestro vecino, sin entender mucho del contenido de los
documentos lo nico que hicimos, al levantar una sesin annima de FTP, fue
transferir rpidamente estos archivos a nuestro monstruo. Esta operacin
durara aproximadamente un mes, ya que nuestra sesin jalaba datos con una
prioridad baja en el sistema (a una hora especfica, durante un tiempo limitado),
para no levantar sospechas en un probable acortamiento del ancho de banda de
la red y as delatar nuestra presencia (una especie de streaming a baja
prioridad).

Terminada la intrusin (para el da de Accin de Gracias de 1.994) y con la


informacin en nuestro monstruo, el siguiente paso era la transmisin a nuestro
C3I2, que era una simple laptop a cargo de Csar, quien por unos largos 3 das,
estaba al control de recibir correctamente y en orden los paquetes que monstruo
transmita desde los Estados Unidos. Empezaba el mes de diciembre de 1.994,
cuando por fin tenamos una copia de los archivos que los habamos obtenido y
sin perder tiempo los grabamos en un disquete de 3 HD DS. Enseguida, le
entregamos la informacin a Santiago. Por su parte Santiago emita la orden para
que nuestro operador en San Antonio, destruya fsicamente a monstruo y regrese
al Ecuador.

Cumplida la orden y sin la ms mnima sospecha por parte del Gobierno Norte
Americano, que este agente haba realizado quiz una de las ms arriesgadas,
subrepticias y complicadas misiones que la historia de las operaciones de
inteligencia y los Hackers ecuatorianos que participaron en esta misin puedan
contar a sus nietos; en cambio yo, como espectador y supervisor del equipo
puedo contarles a ustedes lo que pas.

Acto seguido, se destruy toda evidencia de los equipos, respaldos, programas y


cdigos fuente desarrollados para tan singular misin, nicamente en nuestras
mentes estaba el Know How de la operacin. Nunca sera reconocida
oficialmente, nunca nuestros nombres constarn en la Historia Oficial del
Ecuador, en definitiva, esta operacin como todas las que realizan los
CABALLEROS DEL SILENCIO, quedara en el ms absoluto secreto, alimentando
los mitos y leyendas de las famosas operaciones de inteligencia.

- 494 -
La historia... Captulo XI.

Bueno, no s a ciencia cierta qu hicieron nuestros estrategas con la informacin


obtenida?, pero las Pginas de Gloria que escribieron nuestras Fuerzas
Armadas del Ecuador en la Historia del Conflicto Armado entre Ecuador y Per,
que se suscit de enero a marzo de 1.995 entre estas dos naciones hermanas,
estoy seguro que nuestra accin colabor en algo al xito obtenido.

Por nuestra parte, el nico premio recibido (aparte de la gratitud eterna de


Santiago y su equipo), era ese Know How. La satisfaccin de haber superado otro
reto y haber aprendido algo de las famosas historias ficticias (esta historia es
as por su naturaleza). Una ventaja adicional, se pudo refinar (y de qu manera!)
nuestras tcnicas de Ingeniera Social.

11.3 LA CONFIRMACIN QUE EL INVENTO SERVA

Avanzaba el ao de 1.995, ocupado por la promocin y ventas que se iban


incrementando por parte de nuestro mayorista multihard; en el mes de marzo
lanzbamos al mercado la versin 4.01 de nuestro producto estrella, el famoso
Check Program y con esta versin, prcticamente arrasaramos el mercado.
Con ms reportajes de la prensa nacional, nuestra fama y prestigio creci y se
consolid, ahora el reto era mantenernos. A la par de mis funciones como Jefe de
Sistemas del Registro de la Propiedad del Cantn Quito, continuaba en mi
investigacin de nuevos algoritmos y formas de mejorar la velocidad de la rutina
de rastreo que haca el escner del Check Program, a la vez que, descubierta la
forma, esta investigacin hara que el Sistema Administrador del Registro de la
Propiedad tambin mejore sus prestaciones.
Para mediados de este memorable ao de 1.995, pudimos hacer la venta ms
grande hasta ese da del Check Program, que fuera de 1.200 licencias para el
Grupo Financiero Popular, una institucin bancaria slida y prestigiosa que tena
sus operaciones en Ecuador, Colombia y Venezuela; su principal, el Banco
Popular del Ecuador, haba convocado a un concurso para escoger la mejor
tecnologa antivirus; as, se creara para esta prueba un laboratorio donde los
ms famosos productos antivirus del mundo participaban. Como producto
nacional estbamos nosotros, participaron los siguientes productos antivirus:

Norton Antivirus.

- 495 -
Tras los pasos de un... Hacker

Virus Scan de McAfee.


Dr. SolomonsAntivirus Toolkit.
F-prot.
PC-Cilin.
OYSTER.
Otros menos importantes.
Como protectores contra virus, solamente nosotros con nuestro Check
Program.
Para el da convocado, cada casa probara el producto de sus rivales y defendera
las bondades del suyo; as los expertos locales e internacionales (recuerdo a un
experto consultor contratado por el Banco Popular para este laboratorio, un
estadounidense de apellido Sherman), haran hasta lo imposible para hacer fallar
al producto de la competencia a buena lid. Nuestra teora estaba definitivamente
validada y consolidada, el Check Program fue el nico producto que resisti sin
problemas a todos los ataques que intentaron nuestros contrincantes, por el
contrario, con algunos virus caseros, hicimos que fallen todos los productos
competidores. Se nos adjudic el contrato y fruto de esta venta, pude adquirir el
primero de mis autos en octubre de 1.995.

Cierto da, revisando la prensa observo una publicacin donde se invitaba a los
inventores ecuatorianos a participar en la feria Ecuador qu inventas?,
organizada por un particular en el Centro de Exposiciones Quito. Decido
participar con mi Check Program y en este evento recibira otra de las extraas
visitas que para ese entonces ya no me sorprendan

Al stand de exposicin, el da de la inauguracin de la feria se acerc un tipo


mucho mayor que yo. A todas luces era un extranjero, el mismo que despus de
mirar algunos de los inventos ecuatorianos expuestos me correspondi
atenderlo. Con una amplia sonrisa me salud y seguidamente pregunt qu era
lo que estaba exponiendo?, le respond que era un protector contra virus
informticos, me replic humm..., un antivirus!, le dije NO!, UN PROTECTOR
CONTRA VIRUS, me solicit que le explique la diferencia y cautiv el inters de
este enigmtico personaje. El interrogatorio tcnico dur aproximadamente
unas 3 horas, lleg el momento del almuerzo y el gringo comprara unas
hamburguesas con su bebida correspondiente. Gentilmente me las brindaba para
compartir este popular almuerzo americano. Por la tarde de ese da recorri

- 496 -
La historia... Captulo XI.

una vez ms la feria e interrogaba a cada expositor su invento. Al terminar el da,


me consult si poda venir maana y acompaarme en las exposiciones, a lo que
asentgustosamente.

FIG. 49. PREMIO AJANVANDEBULT POR SU PATENTEUS004429302.

Efectivamente mi singular amigo, lleg ms puntual que ingls a la cita; y, como


parte de su elegante atuendo tena un portafolios con algunos documentos; ahora
s, vendran las presentaciones formales, me dijo que se llamaba Jan Vandebult
(1.942 1.998) y que tambin era inventor, me mostr un libro de la USPatent
Office donde constaban algunas patentes otorgadas por sus creaciones en
sistemas de seguridad (Pat. No. US004666735, US004583099, US004560445,
US004555414, US004527310, US004429302, US004373163, US004369557,
US004356477, US004221025, US004012813, US003974581 y US003947930),
me dijo era el inventor de los sistemas (antenas) que detectan a la salida de los
centros comerciales, si alguien intenta sacar alguna mercadera sin pagar.

Realmente me sorprendi que un cientfico de esa jerarqua est en nuestro pas


y que por esas cuestiones del destino; ahora, estuviramos juntos
intercambiando experiencias y vivencias tcnicas. Con una facilidad y retentiva

- 497 -
Tras los pasos de un... Hacker

sorprendente, empez a exponer nuestro invento; me dijo que para tener xito
en el mundo comercial, algunas veces hay que hacer participar a gente
importante y con currculo en el asunto, as las puertas se abriran con ms
facilidad. No vi ninguna mala intensin, por el contrario, empec a aprender del
mundo de la propiedad intelectual internacional y de los negocios a alto nivel.

Desde aquel da, hasta el da de su fallecimiento, trabajaramos en la promocin y


venta de nuestro programa

11.4 LA VISITA A HOLANDA


Por esas mismas fechas, en una empresa transnacional de venta de
computadoras, los principales directivos me haban solicitado una asesora, ya
que se convirtieron en uno de nuestros principales distribuidores.

En un saln adjunto a la sala de capacitacin estaba el profesor Ricardo Ortega


por otra circunstancia ajena al motivo de mi presencia; al saludarlo, me dijo que
haba escuchado algo de mi programa, pero que al no haberlo visto en persona no
saba si funcionaba o no. Con el reto en ciernes y viendo la actitud de ansiedad
que tenan los tcnicos a los que estaba capacitando, ya que Ricardo Ortega era
un experto en el campo de los virus y antivirus, queran saber si el producto que
iban a distribuir tena un buen criterio del maestro. Como testigos de esta
singular prueba, no qued de otra que suspender la charla y dejar que Ricardo
evale mi producto con varios virus que l tena. Para lo cual, al infectar una
computadora que gentilmente la empresa distribuidora nos facilit para este
singular reto. Me dijo que el virus que haba activado tambin haba infectado a
mi Check Program. Al reiniciar la computadora, se qued estupefacto al ver que
mi sistema haba detectado a su virus, que lo haba desactivado y que lo haba
removido de todos los archivos infectados, sin llegar a entender bien lo que
estaba haciendo mi programa, me dijo cmo hizo eso?, a lo que le respond
framente y con voz lacnica investiga! (Recordaba sus mismas palabras, las
que me haba dicho cuando le solicit explicacin sobre los famosos pop up que
les cont anteriormente). El grupo de tcnicos al ver esto, le pusieron ms
empeo a entender y promocionar nuestro producto.

- 498 -
La historia... Captulo XI.

Para el 9 de julio de 1.996, Jan habra concertado una cita de negocios en su pas
natal Holanda.
Con maletas en mano, emprendimos la aventura de comercializar el Check
Program a escala mundial.

Llegamos a la ciudad de Miami, como conexin internacional hacia Holanda,


recorrimos el aeropuerto para hacer tiempo y a la hora planificada emprendimos
travesa hacia la Ciudad de msterdam, capital de Holanda. Despus de
aproximadamente 12 horas de vuelo, estbamos pisando suelo europeo. Pasados
los filtros de migracin y fuera del aeropuerto, en una empresa de alquiler de
autos, Jan alquilaba uno para seguir nuestra travesa por tierra y a la vez conocer
tan pequeo y hermoso pas. Nuestro destino final era una pequea ciudad
llamada Harderwijk, donde tiene su sede la empresa holandesa de tecnologa
denominada Atlas Software B.V.
Nos alojamos en un acogedor hotel, el hotel de la familia Baars. Core y Wim,
amigos de Jan y dueos de un grupo de importantes empresas de tecnologa en
Europa nos daban la bienvenida, contentos de ver a los aos a su amigo
empezaron a departir jovialmente.
En este viaje y por pedido mo nos acompa mi amigo el hijo del Registrador,
quien velara por nuestros intereses desde el punto de vista legal. Al da
siguiente, nos presentaban a Harry quien era gerente de la empresa Atlas
Software B.V. Al siguiente da, nos comunicaba que seran los tcnicos ms
especializados de esta empresa los que evaluaran al Check Program.

Empezamos las exposiciones tcnicas, luego de que Jan y Harry firmaran un


acuerdo de confidencialidad sobre la tecnologa que se iba a exponer, su grupo de
desarrolladores, todos ellos japoneses, a los que cariosamente los identificamos
como los taki taki, empezaron a preguntarme sobre la tecnologa desarrollada
y cules eran las diferencias tcnicas? con los antivirus que ellos conocan, al
cabo de unos das de debate tcnico y de su anlisis, por fin Harry nos comunica
que tiene el informe; adems, que Core y Wim tienen que hacernos una
propuesta. Sin perder tiempo Jan asiste a esta reunin y regresa con el borrador
de la propuesta, que bsicamente consista en que nos compraban los derechos
de autor por un milln de dlares y por los siguientes 9 aos conforme vayan las
ventas un milln ms por ao. Es decir, diez millones de dlares. Pero faltaban
tres puntos que tenamos que discutir, as que en la oficina de Harry los tratamos,

- 499 -
Tras los pasos de un... Hacker

siempre la traduccin oficial la haca Jan. La negociacin palabras ms, palabras


menos fue as:
1. Harry se refiri al nombre del Check Program y dijo que ese nombre no
significaba nada, que pensaban cambiarlo por Atlas Antivirus o algo as.
Pens que al vender los derechos de autor, el que los compraba tena la
libertad de ponerle el nombre que quisiera, as que acept este punto.
2. Nstor Marroqun, quin es Nstor Marroqun? (en el mundo
tecnolgico), se preguntaba Harry, se contest nadie; as que, el
programa deba ser producto del desarrollo del grupo de programadores
de Atlas, ya que todos sus programadores eran afamados y reconocidos
en el mundo. No me gust mucho la idea de ceder mi autora, pero el fin
justificaba los medios, le dije que estaba de acuerdo.
3. Luego ley en la caja del producto Hecho en Ecuador, qu es Ecuador?,
se volvi a preguntar Harry. Si bien no entenda mucho el idioma, pero
los gestos son muy decidores; molesto le repliqu, dime t qu es
Ecuador?, a lo que respondi, solamente bananas y petrleo,
tecnolgicamente nada; por ese amor a la patria que mi formacin
militar haba consolidado y dejndome llevar por mi corazn, le dije, eso
si que no, no voy a aceptar que cambies el origen de la tecnologa, el
producto se desarroll en Ecuador, la tecnologa es Ecuatoriana Te
acepto que cambies el nombre de mi producto, que cambies mi nombre
como autor del producto, pero que cambies el origen, eso si que no. El
producto va Hecho en Ecuador, sino no hay convenio. Jan y Harry a
toda costa me queran hacer ver la conveniencia comercial para el
producto, que diga que es hecho en Holanda, pero haba tomado mi
decisin. Algo que me haba enseado el Registrador de la Propiedad, en
alguna conversacin que tuvimos, era que el hombre de bien respeta su
palabra y nunca cambia la decisin tomada as le cueste la vida, as que no
hubo poder sobre la tierra para que traicione a mi patria y por ende a la
regin. Es decir, nunca un producto de alta tecnologa podra ser
fabricado o inventado en algn pas del tercer mundo como decan.
Como podrn suponer, no firm el contrato, quiz perd una excelente
oportunidad de negocio pero a veces la dignidad no tiene precio y justamente
ese es el mensaje de esta ancdota.

- 500 -
La historia... Captulo XI.

Al da siguiente, otra vez con nuestras maletas en mano, decidimos por unos
das ms conocer un poco de Europa y visitar a algunos familiares de Jan a los
que vera tambin a los aos. Atravesamos por tierra toda Holanda y parte de
Alemania, pasaramos por Dsseldorf hasta llegar a Frankfurt, donde
tomaramos nuestro vuelo de regreso a Quito.

11.5 LA CACERA DE BRUJAS

Para septiembre de 1.996, otra vez recibo una inesperada visita, en esta ocasin,
estaba siendo detenido extrajudicialmente para investigaciones por un capitn
de la Polica Nacional, al detener mi auto e identificarse como polica (al que lo
llamaremos solamente como Danilo), me supo decir que vena por largo tiempo
haciendo una investigacin y que sobre la misma mi testimonio era importante.
Seguidamente, me invit a una suite en un lujoso hotel de Quito donde tendra
una larga conversacin con este oficial.

Me mencion, que esta suite la utilizaban para hacer negocios con


narcotraficantes u otros altos jefes de varias mafias, que al infiltrar agentes en
estas organizaciones los invitaban a cerrar los negocios en este lugar. Este sitio
tena instalados de forma oculta algunos equipos de grabacin de audio y vdeo
para recabar las evidencias testimoniales necesarias, el mismo que era financiado
por parte de la DEA (Drug Enforcement Administration), tambin me dijo que l
en verdad era un agente del Gobierno Norte Americano y que estaba prestando
sus servicios en la Polica Nacional, eso de Capitn de la Polica era solamente una
historia ficticia para poder operar en el pas legalmente

Ms sorprendido que asustado por la revelacin que me hiciera este personaje,


me dijo que el verdadero fin de su investigacin era recabar evidencias de una
infiltracin a la Red del Departamento de Defensa de los Estados Unidos de Norte
Amrica y que supuestamente tendra que ver con un grupo de Hackers
ecuatorianos a los que el Gobierno de los Estados Unidos de Norte Amrica
requerira su extradicin de confirmarse el hecho. Con este antecedente, ahora s
estaba asustado, pero en la realidad yo no era ningn Hacker, yo no haba hecho
ningn programa y por sobre todo yo no saba nada de las tecnologas para hacer
hacking a ningn sistema.

- 501 -
Tras los pasos de un... Hacker

El hombre saba todo dnde viva?, dnde noms haba estudiado?, quines
eran mis familiares?, cunto dinero tena?, si haba declarado impuestos?,
quines eran mis amigos?, etc.

Con toda esta informacin, que solamente un verdadero polica investigador


poda tener acceso para sus indagaciones, cre definitivamente que si era quien
deca ser, mi ltimo da en Ecuador precisamente sera ese, ya que me dijo que si
no colaboraba diciendo todo lo que s al respecto libre y voluntariamente,
ellos tenan un avin de la Fuerza Area Norte Americana, justamente aparcado
en Quito porque por esos das haban hecho algunas donaciones de equipamiento
para las Fuerzas Armadas y Polica del Ecuador y que maana estara en una fra
prisin en Estados Unidos declarando por las malas todo.

Obviamente, recordaba las palabras que aos atrs Santiago me haba dicho,
negaremos toda responsabilidad y tendrn que afrontar las consecuencias
solos, pareca que ese da haba llegado. Como estaba pactado, negaba
rotundamente que yo tuviera algo que ver en el asunto y que conociera a algn
Hacker. Entonces Danilo me dijo, si no conoces a ningn Hacker, el Hacker eres
t. Palidecpor la acusacin que me estaba haciendo, si bien en el Ecuador de ese
entonces las actividades del hacking no eran penadas por la Ley, en Estados
Unidos s. Saba de antemano lo que le haba sucedido al mtico Cndor el ao
anterior y muchos otros que estaban purgando la osada de conocer algo ms
(tambin claro est, que su gran conocimiento lo haban utilizado para beneficio
propio de una forma no muy tica).

Ante mi negativa oficial, me hizo escuchar algunas grabaciones que tena del
testimonio de algunos altos oficiales que mencionaban que la operacin acaecida
en 1.994, habra sido iniciativa de nosotros y que las Fuerzas Armadas nada
tenan que ver en el asunto. Con tremenda revelacin a cuestas, negociamos los
trminos del testimonio, acordamos que si les contaba cmo se hizo la
intromisin? l abogara con sus superiores para evitar nuestra extradicin, pero
que no garantizaba nada. As le cont cmo? bajo mi supervisin Csar,
lORdByte, Orlando y Bit Cracker organizamos la operacin de infiltracin de
monstruo en la Red del Departamento de Defensa de los Estados Unidos de Norte
Amrica. Pero no me explicaba cmo ni cundo? se pudieron haber dado cuenta
de la intromisin (ya que como buenos Hackers los muchachos no haban dejado
ninguna pista del hecho), por lo que le ped que me contara esta parte de la
historia. Justamente, me replic, nunca nos dimos cuenta hasta que algunos

- 502 -
La historia... Captulo XI.

informantes que tenemos infiltrados en las mismas Fuerzas Armadas y Polica


nos alertaron del hecho, es as que queremos saber la forma en que lo hicieron
para evitar en un futuro que alguien vuelva a infiltrarse usando su tcnica. Lo
cierto es, que el ataque realizado de la forma relatada anteriormente, hasta
nuestros das mientras no cambien las polticas de seguridad, no es posible
evitarlo, nada es seguro ya que se explota la vulnerabilidad de la lgica humana y
tendramos que cambiar a la humanidad para que esto sea seguro.

Qu es lo que aprendimos de esta ancdota?

Realmente los equipos y los protocolos de autenticacin son seguros, pero los
humanos que no respetan las reglas para el ingreso a estos sistemas, los
transforman en inseguros y es aqu donde se explota esta vulnerabilidad, por esto
la Ingeniera Social es y ser la reina de las tcnicas de infiltracin mientras la
humanidad exista.

A partir de este momento se desencadenara la cacera de brujas, se intent


ubicar el paradero de mis compaeros de andanzas y para este objetivo
movilizaron a todos los grupos de lite posibles, ya que la palabra de los altos
oficiales estaba contradicha por nosotros, eso s no se poda soportar, se
elaboraron supuestos informes de inteligencia militar donde se sugera que se
nos habra prohibido el ingreso a todas las unidades militares por supuestamente
ser delincuentes.

Bueno, la investigacin seguira por varios aos ms mientras yo trabajaba y


continuaba promocionando mi Check Program, eso s me advirti Danilo, que
siempre estaran pendientes de nuestros pasos, pero que hasta no tener una
prueba contundente en contra nuestra, legalmente no podran hacer nada.

11.6 LA COMDEX DE LA VEGAS DE 1.997


Para el mes de octubre de 1.996, el hijo del Registrador (amigo y socio de un tipo
de tez colorada, pequeo, gordito, de pelo ensortijado, que usaba bigote y de
apariencia honesta), me coment que en una fracasada empresa que haba

- 503 -
Tras los pasos de un... Hacker

formado con l, dedicada a la importacin de repuestos automotrices las cosas no


andaban bien y me pidi que ayude a su socio. Para este relato protegeremos su
verdadera identidad por el nombre de Patricio Pez. (Uno de los derechos
humanos es el de respetar el buen nombre y fama de las personas, no tengo nada
personal en contra de este y todos los individuos que aliados con l, a partir de su
salida de mi empresa se han dedicado a la ingrata tarea de menoscabar mi fama y
mi buen nombre. Es por esta razn, que cambiar por nombres ficticios a todos y
cada uno de los personajes malvados de esta historia, cualquier parecido con la
vida real es mera coincidencia).
Por su parte, el Registrador de la Propiedad me haba aconsejado que no confe
en este tipo, que lo nico que haba hecho fuera abusar de la confianza de su hijo.
Que para lo nico que serva era para beber y pasar un rato agradable pero nada
ms (este consejo fruto de su experiencia deb haberlo acogido y no desecharlo
como lo hice).

Decid entonces nombrarlo como Gerente Comercial y dejarle a cargo de todas


las operaciones de mi empresa, as como presentarle todos mis contactos para
ver si poda con esa ayuda vender algo. Todo esto lo hice con la sana intensin de
sacarlo de su crisis econmica y emocional (y bien aconseja el sabio proverbio
popular cra cuervos y te sacarn los ojos). Para noviembre de 1.996, a mi
empresa personal decidimos darle personera jurdica y nacera la famosa y
prestigiada NMC Research Ca. Ltda.
Con Jan seguamos impulsando a nuestro producto en el mercado internacional y
confiando en las habilidades de vendedor de Patricio, decidimos terminar la
exclusividad con nuestro mayorista nacional multihard. Empezamos a vender
nuestro producto directamente a varios clientes. As se desenvolvi
comercialmente gran parte del ao de 1.997. Por su lado, Jan haba formado en
Estados Unidos la Check Program Software Inc., para distribuir en este territorio
nuestro Check Program, as se firmaron los convenios de distribucin y
exclusividad respectivos.

Lleg el mes de octubre de 1.997, recibo una llamada desde Estados Unidos de
Jan, quien me dijo que estaba ya alquilado el stand de exposicin y reservadas
nuestras habitaciones en el Hotel Hilton Las Vegas, ya que participaramos
exponiendo nuestro producto en la famosa y prestigiada feria de tecnologa
informtica que cada ao se realizaba en la Ciudad de Las Vegas.

- 504 -
La historia... Captulo XI.

Se trataba de la exposicin internacional de tecnologa denominada Comdex Fall


del mes de noviembre de 1.997. No lo poda creer!, nos estbamos yendo a la
meca de la tecnologa mundial y nuestro programa tendra que demostrar lo
bueno que era. As que, preparamos a medida de nuestras posibilidades este
viaje. Partimos hacia Las Vegas y Jan nos esperaba en nuestro stand, nos
mostraba los preparativos que hasta ese da los haba hecho. Tomamos un
descanso y decidimos conocer la feria. Estaba impresionado! este evento no
tena comparacin con los que hasta ese da haba conocido, miles de expositores
de todo el mundo, miles y miles de visitantes de igual forma de todo el mundo, las
ms prestigiosas casas tanto en SOFTWARE como en HARDWARE presentaban
sus innovaciones que las liberaran al ao siguiente al comercio, era todo un
despliegue de marketing, publicidad, dinero y tecnologa.

Presentbamos nuestro invento y cmo no!, estaba tambin nuestra


competencia. As, al enterarse de nuestra presencia, vinieron como moscas a la
miel, en primer lugar los tcnicos de Symantec Corporation (la casa fabricante del
Norton Antivirus), seguidamente la gente de McAfee (productora del Antivirus
Virus Scan) entre los ms importantes. Como parte del jurado calificador de la
feria estaba un reconocido cientfico informtico y consultor en el rea de virus y
antivirus, se trataba del Dr. Doren Rosenthal de Rosenthal Engineering, quien
habra ideado un banco de pruebas y que al superarlo sin problemas, nuestro
producto calificaba con una Nominacin al Premio a la Mejor Nueva Tecnologa
presentada en la feria. Publicada la lista de finalistas por parte de PC Week el 17
de noviembre de 1.997, la cosa era oficial. Con este reconocimiento que la
industria informtica mundial hiciera a nuestro producto, las propuestas de
negocios empezaron a llover. Con sorpresa reciba la visita de Core y Wim, los
amigos holandeses de Jan, quienes al ver los resultados obtenidos nos dijeron
que segua en pie su oferta. Jan les mencion con cierto orgullo, que ahora la
industria conoca que el producto era ecuatoriano, que su autor era Nstor
Marroqun y que el nombre del producto ya era famoso, es decir la industria
identificaba al Check Program, por tanto los trminos del contrato cambiaran
un poco si yo decida firmarlo, pero a esa fecha uno solo de los potenciales
clientes que haba mostrado inters en adquirir nuestro producto, que era el City
Bank, nos reportara ingresos por cuatro millones de dlares, as que tambin su
oferta econmica debera cambiar.
Todo eso fue una ilusin, a la semana, nuestra competencia reaccion de una
forma que no imaginamos Symantec y McAfee a nivel mundial ofertaron

- 505 -
Tras los pasos de un... Hacker

distribucin gratuita de sus productos as como sus actualizaciones por dos aos,
no pudimos vender una sola licencia fuera de Amrica Latina.

La leccin aprendida de esta experiencia, los monopolios no van a ceder


fcilmente su mercado.

11.7 LA PERSECUCIN JUDICIAL

Pero bien dice otro adagio popular la ambicin rompe el saco, justamente esto
le sucedi a Patricio, al ver como se desenvolvieron los hechos en la feria de Las
Vegas, me hizo firmar un convenio en donde le reconocera un alto porcentaje de
las utilidades que generaran estas millonarias supuestas ventas (que realmente
eran producto del trabajo de Jan y el mo), pero por ayudarlo acceda este hecho.
Cerrado el balance contable para ese ao de 1.997, conforme al convenio firmado
se liquid las utilidades que le correspondan a Patricio, a pesar que en 1.997
nunca hizo una sola venta por su cuenta. Al recibir el cheque por sus utilidades,
me lo rechaz y me dijo que estaba muy poco y que posiblemente yo estara
haciendo una doble contabilidad, cosa que me sorprendi porque precisamente
l estaba a cargo del negocio; en todo caso, acept someter a 4 auditoras la
contabilidad de la empresa y en todas ellas se confirmaban los valores que yo
haba liquidado.

Llegado el mes de marzo de 1.998, recibo un correo electrnico de uno de


nuestros distribuidores en Costa Rica, donde nos mencionaban que queran hacer
un nuevo pedido. Al recibir este correo, me sorprend, ya que no saba que les
habamos vendido un primer pedido y peor an que el mismo haba sido
cancelado. Cuando les requiero que me enven una copia de la factura y del pago
realizado, con sorpresa veo un contrato firmado por Patricio a nombre de mi
empresa y que l en su nombre haba cobrado un cheque por veinte mil dlares
americanos. No lo poda creer, en quien confiaba y me haba dicho que es el ms
honesto de los hombres sobre la tierra, l mismo que nunca traicionara a sus
amigos, lo estaba haciendo. Con estas evidencias me daba cuenta que el
Registrador de la Propiedad no se equivoc en su consejo, por el contrario,
adquirira un enemigo personal que a partir de su salida de mi empresa como el
ms vil de los delincuentes, habra jurado terminar mi carrera porque segn l

- 506 -
La historia... Captulo XI.

por su trabajo, yo era un famoso y prestigiado creador de tecnologa informtica


en el mundo.
Patricio se encarg de daar mi buen nombre y prestigio, ya que peor que una
amante traicionada, me segua los pasos y a donde iba a promocionar mi
producto, l se encargaba de hablar mal de mi persona y de cmo lo haba
despedido de mi empresa!
Con la lengua viperina de este tipo, su estrategia de desprestigio estaba dando
resultado y haba conseguido apartarme de algunos de los contactos que yo
mismo le haba presentado e incluso alguno de ellos se declaraba tambin
enemigo mo y formaran una coalicin en mi contra.

Seguidamente para el 11 de junio de 1.998 tendra otro revs, fallecera


trgicamente en un accidente casero mi buen amigo Jan Vandebult, con esto
Patricio cantaba victoria porque pens que estaba terminada la NMC Research
Ca. Ltda., as como mi carrera.

Segua trabajando e investigando la fascinante ciencia de la Criptologa; pero en


ese tiempo, la cosa no fue tan fcil ya que este tipo para el 13 de octubre de 1.998
presentara una demanda penal en mi contra, porque segn l lo habra estafado
en la liquidacin del giro comercial del ao fiscal de 1.997. As empezaran las
mltiples acciones judiciales que pretendan definitivamente enterrar mi
nombre, me defend respondiendo a cada una de ellas y conforme a las pruebas
contundentes que probaban mi inocencia; para sustentar su demanda, intentara
la ms vil de las tretas al hacer que los Jefes del Comando Conjunto de Las
Fuerzas Armadas del Ecuador vuelquen su poder en mi contra, ya que les habra
dicho que yo iba a revelar la operacin del pasado 1.994 y que las negociaciones
de paz que estaban en curso con el Per se veran supuestamente amenazadas al
revelarse esta operacin. As, supuestamente se violentara la Ley de reserva de
la informacin clasificada como secreta que manda tener estos datos y
documentos archivados al menos 10 aos.
Esto lo conseguira gracias a que tambin volcara en su favor el poder judicial
que tena en ese entonces el Registrador de la Propiedad y con algunos parientes
suyos que para ese entonces eran altos Jefes Militares, conseguira forjar un
informe de inteligencia militar atribuido supuestamente a la DIRECCIN DE
INTELIGENCIA DEL COMANDO CONJUNTO DE LAS FUERZAS ARMADAS, el cual lo
utilizara como prueba en mi contra en los mltiples juicios propuestos.

- 507 -
Tras los pasos de un... Hacker

La leccin a aprender de esta ancdota, nunca cuenten los secretos a nadie, por
esto precisamente son secretos. (Otra cosa es compartir conocimientos).

11.8 EL PREMIO A LA INNOVACIN TECNOLGICA EN AMRICA


LATINA EN 2.000
Corra el ao de 1.999, por la persecucin judicial y mala fama dada a mi empresa
las ventas disminuyeron ostensiblemente, as como se mantenan las ofertas de
gratuidad de los productos de la competencia. Para marzo de este ao recibira
sorpresivamente en mi oficina la visita de Danilo, quien me deca que estaba por
jubilarse y salir de la organizacin para la que trabajaba as como de la Polica
Nacional. Me propone ayudarme a vender el Check Program y como pronto
estara sin nada que hacer, prefera dedicarse al comercio. Por los contactos que
tena pensaba le iba a ir muy bien. Acepto la insinuacin y empieza a
promocionar el producto.

Llegado el mes de junio de 1.999 en la Ciudad de Guayaquil, por los contactos que
pudo hacer Danilo formamos una empresa con personajes muy poderosos, tanto
en el mbito poltico, econmico y social del Ecuador y de toda Amrica. La
empresa que la bautizamos como MDTechnology S.A., hara que retome el rumbo
del xito, mi aporte a la sociedad comercial justamente consisti en ceder los
derechos de autor del Check Program, por el contrario recibira un excelente
pago mensual como socio y lder del equipo de investigacin y desarrollo de la
recin formada empresa. As comenzaba una nueva pgina en esta historia.
Para el ao 2.000, la empresa francesa transnacional de telecomunicaciones
ALCATEL, haba hecho la convocatoria pblica para que los investigadores y
creadores nacionales de tecnologa participen en el III Concurso Alcatel a la
Innovacin Tecnolgica en Amrica Latina. Mis socios deciden patrocinar mi
candidatura y con un nuevo producto al que lo denominamos MD Lock
participamos en este evento.
Se realizaron las exposiciones del caso ante el jurado (el nuevo producto era un
cifrador de flujo que tambin estaba siendo examinado por la comunidad
criptogrfica mundial), pas algn tiempo y con sorpresa recibimos una llamada
de los organizadores del evento, quienes nos pedan confirmemos nuestra

- 508 -
La historia... Captulo XI.

presencia para el mircoles 20 de septiembre de 2.000 a la ceremonia de


premiacin. Recuerdo que habl varias veces con la coordinadora de relaciones
pblicas de Alcatel en el Ecuador, la Lcda. Rebeca Villota, quien me deca que
deba estar en persona en el evento y que no poda mandar a ningn
representante, tambin su ofrecimiento que si no tena dinero para la
movilizacin desde Guayaquil a Quito, ellos correran con este gasto, pero que era
imprescindible mi presencia. Les confirm mi asistencia y que no se preocupen
por la logstica.
Como ancdota, en este concurso tambin haba estado participando el profesor
Ricardo Ortega con un trabajo que solucionaba el problema del ao 2.000 en las
computadoras. De este detalle me enteraba el da de la premiacin porque lo vi a
la entrada del evento, me acerqu a saludarlo y conversamos brevemente. Otra
sorpresa, me enteraba que estaba trabajando con Patricio, quien lo estara
promoviendo en el negocio, as que decid dejar la conversacin porque me daba
cuenta que tambin me haba indispuesto con el que haba sido mi profesor.
En el evento empezaron a llamar por orden de prelacin, del menor al mayor
puntaje obtenido por los participantes y por ende la posicin obtenida en el
concurso. Nombraban a los 36 participantes y a medida que avanzaba la lista, la
emocin y la inquietud por saber el ganador creca, algo parecido a lo que
habamos vivido en 1.997. Al cabo de casi una hora de iniciado el evento, haban
ya nombrado a 35 de los participantes y faltaba el ganador, al escuchar nuestro
nombre, no lo poda creer!, nuestra tecnologa ganaba el certamen y
calificaramos para la final latinoamericana en Lima, capital del Per en octubre
de ese ao.

Tampoco quera creer lo que estaba sucediendo en la mesa directiva, all estaba
Patricio vociferando y reclamando al jurado el por qu haba ganado un
delincuente el premio?, causando un bochorno su actitud, la misma que me oblig
al siguiente da a justificar el hecho ante los organizadores y a presentar las
pruebas de descargo. Ventajosamente su sana crtica evalu los argumentos y el
premio no me fue retirado, por el contrario estaba confirmada mi presencia en el
Per para el prximo mes.

La leccin aprendida en esta participacin, muchas veces el alumno supera al


maestro

- 509 -
Tras los pasos de un... Hacker

FIG. 50. PREMIO A NSTOR MARROQUN POR SUTRABAJO MD LOCK.

11.9 ATRAPENAL DELINCUENTE!

Para evitar el viaje, Patricio por su lado movera cielo y tierra, con tretas y
ardides jurdicos conseguira que se me extienda una orden de aprehensin en mi
contra, pero no contaba que mis socios no iban a permitir que se salga con la suya
e interponiendo algn recurso jurdico hicieron que la misma sea liberada pero
despus del evento de Lima. Para el 1 de diciembre de 2.000, en su poder el
instrumento jurdico pedira apoyo a la misma Inteligencia Militar y Policial para
dar cacera al delincuente.

Llegaba de Guayaquil a visitar a mi familia en Quito y exista todo un despliegue


policial y militar, me estaban esperando a la entrada de mi domicilio. Al
percatarme de este inusual recibimiento, decido ingresar a una casa vecina y
como era conocido para la seora duea de casa, me permiti el acceso ya que le
justifiqu un supuesto olvido de las llaves de mi casa. Una vez en el interior de mi
casa, le pregunto a mi esposa desde qu hora estn montando guardia afuera
todos esos tipos?, se sorprendi primero de mi presencia ya que no haba
escuchado el abrir de alguna de las puertas de la casa y en segundo lugar de mi
pregunta. Inmediatamente se acerca a la ventana y observa a toda una cuadrilla

- 510 -
La historia... Captulo XI.

de agentes vestidos de civil esperando a que llegue. Decido bajar hasta el garaje
donde estaba aparcado mi vehculo, escucho acercarse el auto de un vecino y al
parar en mi garaje es abordado por dos de estos agentes, los mismos que le
preguntan si l es Nstor Marroqun?, mi vecino lo nico que supo decirles es
que en esa casa vive y que no sabe nada. Estaba confirmado, me estaban dando
cacera, ahora la pregunta era cmo hacer? para salir sin levantar sospechas y
ponerme a buen recaudo. Danilo me haba confirmado a travs de sus contactos
que mis telfonos normales, as como mi celular estaban intervenidos, ahora me
explicaba el cmo? Patricio saba al detalle todos mis movimientos, pero en fin,
en ese instante no era mi preocupacin este asunto; entonces, se me ocurri
utilizar la trampa para que el cazador sea cazado. Le digo a mi esposa que
marque desde el telfono de mi casa al celular de mi hermana y le diga que me
vaya a esperar al centro comercial que funciona cerca de mi casa en el sur de la
capital, porque supuestamente ese da llegara por transporte terrestre a Quito y
que mi llegada sera a eso de las 22h00, tambin le digo que tendra que salir en
el auto a verme al centro comercial. Tramado el plan lo ejecutamos y era de
verse la cola que tena mi auto, dos mviles oficiales llenos de agentes lo
siguieron, aprovech la distraccin y ahora estaba en pie de guerra.
Sal armado hasta los dientes, ya que le dije a mi esposa que si alguien intentaba
atraparme por algo que no haba cometido, pues bien, si me detienen ser por
algo, y ese algo sera justamente la agresin a la persona que se cruce por mi
camino.

Ventajosamente para todos, nadie se enter, primero de mi llegada y segundo de


mi salida. As que nunca tuve que hacer uso de ningn otro recurso que tena a
mi disposicin. Bueno, prfugo de la justicia, decido llegar a la casa de mis
padres. Cuando se enteran de toda la historia no lo podan creer, preocupados
por mi seguridad empiezan a mover sus contactos para que pueda estar a buen
recaudo. Para el da 4 de diciembre de 2.000, la boleta de captura estaba
notificada oficialmente y ante el pedido de mis abogados, rendira fianza y la
orden de aprehensin sera revocada para el 5 de diciembre de 2.000 en plenas
fiestas de Quito.
Para enero de 2.001 un Tribunal Penal de Quito estaba convocndome a la
primera audiencia de juzgamiento que por la supuesta estafa se iba a realizar.
Patricio y el grupo de poder aliado haban negociado ya mi pena y estara
redactada mi sentencia a 5 aos de prisin por haberlo estafado. El amanuense a

-511 -
Tras los pasos de un... Hacker

cargo de mi caso que coincidencialmente haba sido alumno de uno de mis


abogados defensores, le avisa que todo estaba dicho y que en la audiencia todo
sera un show, pero que me iban a condenar. Ante esta noticia mi abogado me
llama el fin de semana y me dice que vaya urgentemente a su casa. Por su tono de
voz, sospecho que algo malo estaba sucediendo, as que, sin perder tiempo
avanzo hasta su casa, me conversa la situacin y que l no vea alguna forma legal
de evitarlo.
Por la tarde, visitamos a Danilo en su casa y le contamos el hecho, se le
empezaron a ocurrir varias ideas, crear alguna historia ficticia que permita evitar
la audiencia, pero el nico problema era que tena que ser creble y verificable, no
encontrbamos la salida. Como ltimo recurso decidimos echarnos
definitivamente a la fuga, mi esposa que tiene familia en Manab les haba
solicitado que me dieran refugio por un tiempo hasta que el asunto se calme.
Rpidamente hice la maleta y con Danilo empezamos el largo viaje. A eso de las 4
de la madrugada del da domingo de ese fin de semana, al pasar por un puente va
a Crucita en Manab, somos interceptados por unos asaltantes en la carretera;
estos delincuentes nunca esperaran que tanto Danilo como mi persona
estbamos armados y alertas, al percatarse Danilo de su presencia
intercambiaramos fuego. Terminada la balacera mi auto qued prcticamente
destruido. Los delincuentes tampoco salieron ilesos y algunos de estos fueron
heridos, as pusieron sus pies en polvorosa. Al poco tiempo la Polica destacada
en Manab llegaba al lugar de los hechos y Danilo se identifica como Oficial de la
Polica Nacional y ordena que se siga hasta dar con los delincuentes. Por mis
heridas superficiales, los mdicos policiales me realizan algunos exmenes en el
policlnico que tiene la misma Polica en su cuartel. Herido por los vidrios que
haban explotado por los impactos de los proyectiles en mi auto, me diagnostican
imposibilidad de asistir a cualquier actividad hasta que sanen mis heridas. Con el
parte policial y los informes mdicos respectivos pudimos justificar conforme a
derecho la inasistencia a la audiencia de juzgamiento planificada.
Por esos das a Danilo se le ocurri que la nica forma de evitar que la sentencia
redactada fuera ejecutada, era precisamente metiendo preso a Patricio para que
no asista a la audiencia de juzgamiento. Al no existir acusador particular y con
los dictmenes absolutorios emitidos por todos los fiscales que haban opinado
en mi caso, as los jueces tengan redactada la sentencia, legalmente no podran
ejecutarla. En mente este plan, ideamos la forma que conforme a derecho se
extienda una orden de captura en contra de Patricio. Danilo mismo se encarg de

- 512
La historia... Captulo XI.

montar el operativo policial; liderando el grupo de agentes que respaldados con


la orden judicial, procedieron a la captura y encarcelacin de Patricio
supuestamente por 24 horas para investigaciones.
En nuestros pases cuando se tiene algn padrino de importancia, la letra de la
Ley muchas veces no sirve para nada. As Patricio permaneci 6 das detenido
hasta que pudo salir pidiendo auxilio a sus contactos y aliados poderosos. El
partido estaba empatado, dos poderes estaban combatiendo tras cuerdas y cada
uno por su lado mova los hilos que poda.

El Tribunal Penal vuelve a convocar a la audiencia, pero hasta que llegue ese da,
al Presidente de este Tribunal habamos conseguido sancionar por su falta de
atencin a nuestros pedidos y solo despachar las exigencias de la otra parte.
Tambin para esa fecha la Corte Superior de Pichincha haba suspendido del
cargo por 90 das al Registrador de la Propiedad, ya que se estaba realizando una
auditora a los libros del Registro de la Propiedad por parte del Consejo Nacional
de la Judicatura. En estas condiciones me presento a la audiencia el da
convocado para el efecto. Solamente asist con mis abogados defensores, algunos
familiares y amigos. Por el lado de la otra parte no asistieron ni las moscas que
siempre acompaan a este tipo de gente.
En funcin de los mritos procesales y de las pruebas actuadas, el Tribunal Penal
me absuelve de todos los cargos y ratifican la inocencia que haba sido puesta en
duda. La sentencia sera apelada con un recurso de casacin y su ejecutoria
todava esperara un ao ms para ser legal mi absolucin.

A rengln seguido y con la sangre en el ojo, Patricio y su grupo asesor consiguen


que un periodista de dudosa fama, me invitara a una entrevista radial en la
prestigiosa radio La voz de la capital, quien me invit a discutir sobre
tecnologa informtica y a compartir los logros que haba obtenido con mi Check
Program y el reciente premio conseguido a la innovacin tecnolgica en
Amrica Latina. Creyendo en la tica profesional del periodista, y sin que se me
hubiera advertido que tambin se tratara los temas relacionados a las falsas
acusaciones que se imputaban hasta ese entonces, no llev ningn documento de
descargo que desvirte las mismas. En el clmax de la entrevista me empieza a
preguntar sobre mis problemas legales, sorpresivamente exhibe un forjado
informe de inteligencia militar (confirmada esta falsedad dado que en un juicio
penal sustanciado en 2.009 conforme a derecho se declar la falsedad de tal

- 513 -
Tras los pasos de un... Hacker

supuesto informe militar) donde entre varios improperios se prohba mi ingreso


a los distintos repartos militares a nivel nacional. Posteriormente dicho
periodista se neg a otorgarme una segunda entrevista para desvirtuar de forma
contundente estas infamias. Atentando flagrantemente al derecho humano de la
libertad de expresin y rplica que la tica periodstica impone a nivel mundial.
El tiempo y mi trabajo honesto, han sido la mejor arma para callar la ignominia
de periodistas mediocres que se escudan en el poder de algunos medios de
comunicacin, que en la actualidad estn muy lejos de cumplir sus funciones de
forma tica, profesional e imparcial.

11.10 EL HACK A UN PORTAL BANCARIO

Nuestro paso por MD Technology S.A., arroj algunos productos que usan
tcnicas criptogrficas para asegurar las transacciones que los mismos hacan.
As, con el motor de cifrado de flujo galardonado en el ao 2.000, el famoso MD
Lock, se implement el sistema que soportaba a la primera tarjeta de crdito
virtual, el mismo que lo bautizramos como V-Card que hasta la actualidad es
usado por una importante institucin financiera en el Ecuador.
Para probar que no eran tan seguros los productos de la competencia y que los
portales web desarrollados para esa poca, que estaban publicitndose iban a
tener los principales bancos del pas. Decidimos burlar el sistema de
autenticacin de un importante portal financiero del Ecuador recin inaugurado.
Para esto, con lORdByte y Orlando que trabajaban conmigo en la empresa de
Guayaquil, quienes me haban acompaado en algunas de las aventuras que les
he contado, preparamos algunas creaciones interesantes que bsicamente eran
unos key loggers que capturaban los users y las passwords digitadas en la
computadora de algn cliente y que se mostraban en la pantalla principal para el
acceso al portal financiero. A partir de all capturaba todo lo que digitaba la
vctima para realizar algunas transacciones va Internet, tengo que aclarar que
esto pasa cuando se ha instalado un key logger en la computadora de la vctima.
La sesin levantada, si usa el protocolo SSL (Secure Socket Layer) entre la
computadora de la vctima y el hostbancario es segura.

- 514 -
La historia... Captulo XI.

Concertamos una cita con el jefe de tecnologa de esta importante institucin


financiera. Para el da acordado, al recibirnos y poder demostrarle la seguridad
de nuestro producto (vale mencionar que hasta la fecha se ha podido realizar una
transaccin fraudulenta usando la V-Card, de esto ya han pasado 10 aos), se
ufanaba de toda la inversin que habran realizado en el desarrollo del portal. Si
haba alguien que demuestre que su sistema era inseguro, nos mencion, que
exista un premio de 200.000 dlares americanos, mi gerente le dijo que no
apueste tanto dinero a la seguridad de su portal.

Con su anuencia para hacer el experimento, el ataque fue as:

1. Se inocul un key logger en una animacin de una popular caricatura de


la poca.
2. Invitando por medio de un correo electrnico a rerse un poco con la
caricatura adjunta en el texto del asunto del correo y suplantando la
direccin de correo electrnico de un contacto de nuestra vctima. Se
procedi a enviarle este correo electrnico.
3. Todos los firewalls, ids, ips, antivirus y dems dispositivos y programas
que estaban instalados en toda la infraestructura del banco para evitar
justamente que esto pase, no detectaron nada y nuestra vctima al estar
confiada que su correo lleg sin ninguna alerta del caso sera un archivo
seguro. Adems al ver que el mismo fue enviado por un amigo, nuestra
vctima procedi a divertirse viendo la caricatura.
4. Acto seguido, se le invit a levantar una sesin del portal y que ingrese a
su cuenta bancaria para verificar su saldo.
5. Cerr la sesin y supuestamente no haba pasado nada.

En menos de diez segundos, a mitelfono celular llegaba un mensaje de texto con


el user y el pin bancario digitado para el ingreso a la cuenta de nuestra vctima.
Cuando le muestro a este confiado y orgulloso jefe de tecnologa su identificacin
y su pin de acceso, el tipo qued ms blanco que papel bond, acababa de palpar
que la seguridad de su portal no serva de mucho y que cualquiera podra estar
fisgoneado las cuentas de sus clientes. Bueno, mi gerente para romper el hielo a
son de broma le pidi el cheque por los 200.000 dlares.

Cautivado el inters y comprobando que nuestro esquema transaccional era


totalmente superior al suyo, nos planteaba una posible negociacin. Que dejemos
a prueba el sistema por un ao en su banco y que despus negociaramos la

- 515 -
Tras los pasos de un... Hacker

venta. Migerente no acept esta propuesta y no se pudo cerrar ningn trato con
esta importante institucin financiera. Lo bueno del asunto era que se estaba
publicitando nuestra nueva tecnologa.

La leccin a aprender de esta ancdota, nunca confen en los mensajes de nadie,


especialmente siviene va Internet.

11.11 REVENTANDO CLAVES DE LAS CUENTAS DE CORREOS


ELECTRNICOS

Continuamos publicitando nuestros nuevos productos, llegamos otra vez a las


instituciones militares y para variar, otra vez colaboramos con un agente del
Servicio Secreto al que lo conocimos como John Phillips

Ahora trabajando como auxiliares de John Phillips, de vez en cuando, este agente
nos peda que le colaboremos obteniendo las passwords de algunas cuentas de
correos electrnicos de diversas personas que por alguna circunstancia estaban
bajo investigacin y as poder fisgonear sus comunicaciones.

Para realizar este trabajo, existen mltiples productos que pueden simular una
conexin para autenticarse en una cuenta de correo electrnico (realmente con
estos productos se puede validar el acceso de forma remota a cualquier red).
Conseguir estos productos no es difcil, tampoco podemos afirmar que las casas
fabricantes y las que los distribuyen estn vendiendo un producto para hacer
hacking, sino una herramienta para verificar si las redes son seguras.

Volviendo a recordar las famosas tcnicas de la Ingeniera Social, al hacer un


estudio de nuestras vctimas y teniendo la informacin necesaria, uno puede
crear un diccionario de potenciales claves de acceso y con estas herramientas
para verificar la seguridad informtica, se pueden probar estas claves hasta
que obtengamos una respuesta favorable (a esta tcnica se la conoce como
ataque de diccionario). Podremos comprar las herramientas, pero no podemos
comprar los diccionarios de claves, as todos los aprendices de Hacker se limitan
a probar un ataque por la fuerza bruta y sinceramente podrn esperar aos
hasta encontrar la clave apropiada.

- 516 -
La historia... Captulo XI.

No les voy a ensear el cmo se construye un buen diccionario de claves? pero


tengo que contarles que existen frmulas estadsticas y matemticas que usan las
tcnicas del criptoanlisis para generar estas posibles claves y as poder crear
estos diccionarios. Con este mtodo los criptoanalistas pueden recuperar la
informacin cifrada que potencialmente encuentran en algunas computadoras
cuando existen sospechas que las mismas tienen informacin importante.
De delincuentes, ahora trabajando para los intereses de algn gobierno estos
tcnicos se transforman en hroes, su ego es alimentado por la admiracin de
todos aquellos que ven la magia que se puede hacer con las computadoras,
reventar claves, acceder subrepticiamente a sistemas, etc. Estos chicos prueban
una y otra vez que no existe ni existir un sistema seguro. Como expertos en esta
materia su nivel esta por encima del bien y del mal.

La leccin a aprender en este apartado, la tecnologa en si misma no es buena ni


es mala, todo depende para el fin que se la use. Mucho cuidado en equivocarse de
bando.

11.12 SUPLANTANDO DIRECCIONES DE CORREO ELECTRNICO


Para mayo de 2.001, se haba generado una polmica al interior del mismo
Comando Conjunto de las Fuerzas Armadas del Ecuador, cuando se culpaba al
Jefe del Comando Conjunto de haber enviado un comprometedor correo
electrnico a un prestigioso medio de comunicacin escrita del pas, con esta
oportunidad y retomadas las buenas relaciones con los agentes de inteligencia
militar, el responsable de una unidad especial denominada G2, nos pide que les
ayudemos de alguna forma a demostrar que el Jefe del Comando Conjunto habra
sido objeto de suplantacin de su direccin de correo electrnico.

Tambin estaba en pleno anlisis la Ley de Comercio Electrnico, Firmas


Electrnicas y Mensajes de datos del Ecuador para su segundo y definitivo debate
en el Congreso Nacional. Exista en la comunidad informtica nacional ciertos
temores que a un simple correo electrnico o a un fax se le pueda otorgar la
categora de prueba en un proceso penal y de esta forma, poder incriminar a
alguien como responsable por el contenido de tal informacin.

- 517 -
Tras los pasos de un... Hacker

Esto pareca estaba sucediendo con el Comandante General del Comando


Conjunto de las Fuerzas Armadas al que se atribua la autora del misterioso
correo electrnico enviado das atrs.
Con lORdByte y Orlando, pudimos suplantar una direccin de correo electrnico
de una agregadura militar y enviar, asumiendo este nombre, un correo
electrnico al Ministerio de Defensa Nacional, para probar que cualquiera que
tenga ciertos conocimientos tcnicos, eventualmente suplantara una direccin
de correo electrnico e incriminara potencialmente a alguien de su contenido.
Con otra demostracin en el prestigioso diario El Universo de la Ciudad de
Guayaquil, la tcnica usada por lORdByte para suplantar una direccin de correo
electrnico, desnudaba la facilidad que sin poseer herramientas especiales,
supuestamente se habra enviado una carta de renuncia de un redactor del medio
a la direccin electrnica de su jefe.
De esta forma y sin lugar a dudas, se pudo probar que no exista seguridad que el
correo electrnico que se atribua al Jefe del Comando Conjunto sea de quien dice
ser. Esta seguridad de verificacin por parte del destinatario de un correo
electrnico la consigue cuando el emisor firm electrnicamente su correo.

Los casos referidos en esta historia no eran correos electrnicos firmados


digitalmente, por lo que carecan de seguridad que el emisor sea realmente quien
suscriba el correo.
Esta inseguridad de poder determinar al emisor de un mensaje, se conoce como
repudio a la informacin y evitar esta circunstancia, es de vital importancia en
los protocolos bancarios, ya que un usuario del banco bien podra negar alguna
autorizacin electrnica que realmente la habra emitido en su momento.
Con estos hechos, para hacer pblico este malestar de la forma que estaba
redactado el proyecto de Ley y de paso que el Jefe del Comando Conjunto pueda
desvirtuar las sospechas en su contra, el peridico luego de la investigacin de
rigor, public un artculo titulado Hackers en Ecuador? el 15 de julio de 2.001.

Posteriormente, sera invitado a disertar sobre esta problemtica en la


Convencin Nacional de Informtica que se llev a cabo ese ao en la Ciudad de
Guayaquil. Por estas disertaciones, sufr algunos ataques de quienes
patrocinaban el texto del proyecto, pero a la final estos artculos que hacan

- 518 -
La historia... Captulo XI.

relacin a la responsabilidad penal de quien emite un simple correo electrnico o


un fax, as como sus penas seran reformados con la condicin de que las cartas
estn electrnicamente firmadas.

La leccin aprendida de esta ancdota es que se puede falsificar fcilmente la


direccin de una cuenta de correo electrnico, pero es extremadamente difcil
falsificar una firma electrnica.

11.13 EL CIFRADOR DE FLUJO NMC STREAM

Los administradores de M.D. Technology S.A., para comercializar a nivel mundial


el Check Program esperaban que el mismo est definitivamente desarrollado y
probado en todas las plataformas comerciales, incluso para la nueva Windows
XP que por esa poca Microsoft estaba lanzando al mercado. Esto es casi
imposible si no se dispone de la mano de obra necesaria y calificada, ya que las
tecnologas que hacan funcionar al Check Program dependan del kernel de
los Sistemas Operativos. Los Sistemas Operativos evolucionan y estos cambios
hacen que casi todas las aplicaciones tengan que ser reimplementadas y vueltas a
probar. Envueltos en este crculo vicioso, vi que no tena futuro nuestro invento,
pero la propuesta tcnica (la idea) hecha en el Check Program, actualmente la
usan entre otros en las funciones de inoculacin como as la han bautizado el
Norton Antivirus y Kaspersky Antivirus entre los ms importantes

Decid ceder mi paquete accionario a los socios mayoritarios de esta empresa y


agradeciendo la oportunidad decid seguir por cuenta propia investigando y
desarrollando sistemas.

As en junio de 2.003 regreso a establecer mi base de operaciones en Quito y


reactivar a m dormida empresa NMC Research Ca. Ltda.

Finalizaba el ao de 2.003, para ese tiempo estaban ya lo suficientemente


maduros y consolidados mis conocimientos en Criptologa (Tcnicas
Criptogrficas y de Criptoanlisis), as surge una nueva propuesta tcnica y
convencido que la definicin del Criptosistema Invulnerable, el criptosistema
que fuera diseado en 1.917 por Mauborgne y Vernam, el mismo que en la

- 519 -
Tras los pasos de un... Hacker

dcada de 1.940 Claude Shannon lo estudiara y concluira que formalmente


cumple con su criterio seguro.
El reto era ahora plasmar este algoritmo con una implementacin prctica, la
comunidad criptogrfica dice que esto no es posible, pero vamos a ver que la
propuesta hecha en el Generador de Flujo Simtrico que lo bautizamos como
NMC Stream, esta teora se lleva a la prctica.

La principal razn que arguyen los criptlogos es que la clave de cifrado que
alimentara al cifrador que cumple el Criterio Seguro de Shannon, sera tan
grande como el mensaje mismo, as que para intercambiar entre emisor y
receptor esta clave, equivaldra a intercambiar en s al mensaje.
Con el NMC Stream, efectivamente podemos alimentar a nuestro generador
pseudoaleatorio una semilla tan grande como el mensaje mismo (primer
condicionante del Algoritmo de Mauborgne y Vernam), en la prctica solo
necesitamos alimentar a nuestro Generador de Flujo Simtrico semillas que al
menos tengan 240 bits de longitud.
En teora con esta configuracin bsica, se podra repetir un ciclo del flujo
generado cumplido el primer Yottabyte de transmisin.
En el Anexo I, describimos el documento tcnico de la implementacin y la
propuesta de nuestro NMC Stream en febrero de 2.004.

11.14 EL SISTEMA DE COMUNICACIONES SEGURO (NMC SCS)

Implementado y publicado el documento tcnico del NMC Stream, creamos un


producto que sirve para asegurar la informacin personal que lo bautizamos
como NMC Sistema de Comunicaciones Seguro, comercialmente conocido como
NMCSCS, producto lanzado al mercado en el ao de 2.005.

Actualmente este programa tiene ms de 5.000 usuarios en el mundo, entre ellos


estn como los ms representativos a Las Fuerzas Armadas Ecuatorianas, que
han incorporado nuestra tecnologa para asegurar sus sistemas de
comunicaciones y correo electrnico, as como algunas agencias de inteligencia

- 520 -
La historia... Captulo XI.

ecuatorianas y del exterior que han confiado sus operaciones en la seguridad que
brinda nuestro sistema.
El NMC SCS es un programa parecido al PGP (Pretty Good Privacy, de Phil
Zimmermann) pero a diferencia de este ltimo, incorpora en su esquema de
cifrado de archivos y correo electrnico el NMC Stream. La forma en que
guarda la clave de acceso no es en base de una funcin hash conocida sino una
creativa forma de combinar criptografa asimtrica con el NMC Stream
haciendo computacionalmente intratable un ataque por la fuerza bruta. Por lo
dems hacen prcticamente lo mismo.

Ms informacin de este producto la pueden conseguir en


http://www.nmcresearch.com

11.15 ACTUALIDAD
En el ao de 2.007, volvimos a reeditar la persecucin jurdica de aos atrs, los
enemigos han retomado fuerzas y han vuelto a atacar, nosotros por nuestra
cuenta, con ms tecnologa, conocimientos y madurez, hemos podido sobrellevar
las vicisitudes que estas actividades acarrean.

Para nuestros amigos que en su momento no apreciaron nuestra generosidad al


no haber tomado acciones en su contra cuando nos hirieron, difamaron,
desacreditaron y vilipendiaron, en otras palabras abusando de su poder y su
prestigio, pensaron que podan hacer con nosotros lo que quisieran. Ahora que
han vuelto por sus fueros creyendo que las cosas y la suerte les volveran a
sonrer estn obteniendo lo que han buscado arduamente.

Patricio actualmente esta enfrentando un proceso penal por haber forjado


prueba en los juicios que me siguiera aos atrs.
El periodista de la radio, tambin est enfrentando otro proceso penal por delitos
cometidos a travs de los medios de comunicacin y est probando un poco de su
propia medicina.

- 521 -
Tras los pasos de un... Hacker

En fin, nos han obligado a reaccionar, en esta nueva batalla los hemos trado a
nuestros dominios, porque desde la clandestinidad, es decir, en nuestro ambiente
de vida, los estamos combatiendo, controlando y vigilando.
Sin darles mucha importancia a sus actividades, por nuestra parte seguimos
investigando, desarrollando tecnologa y por sobre todo aprendiendo.
Quiz algn da lleguemos a tener el conocimiento necesario para iluminar a
quienes estn tras los pasos de un Hacker

FIN

- 522 -
BREVE GLOSARIO DE TRMINOS

Este glosario de acrnimos y trminos es fundamental para entender algunas de


las situaciones que les he relatado. En la jerga informtica y sobre todo en la
nueva cibercultura, existe todo un diccionario de acrnimos y significados. He
recopilado y revisado algunas de las definiciones, muchas de estas las he
corregido y latinoamericanizado del trabajo inicial de Claudio Hernndez,
periodista y escritor espaol de temas relacionados justamente con el mundo de
los Hackers.

Pueden obtener ms informacin de estas excelentes obras que ha publicado


Claudio en:
Correo
Pgina web:
electrnico:
http://perso.wanadoo.es/claudio_hernandez/
claudio_hernandez@wanadoo.es

Tambin una excelente fuente de informacin para ampliar estos conceptos, los
mismos que han sido resumidos de los publicados en la Enciclopedia Libre de la
Internet:

http://www.wikipedia.org

A
baco.- Dispositivo creado en la antigua China como elemento para hacer aritmtica de una forma asistida para
agilizar los clculos.

ABC (Atanasoff-Berry Computer).- Primera computadora digital electrnica elaborada por del Dr. John Vincent
Atanasoff y su auxiliar Clifford Edward Berry.

cido Desoxirribonucleico.-Ver ADN.

ADA.- Lenguaje de programacin de computadoras creado en 1.975.

Administracin Nacional de Aeronutica y del Espacio.-Ver NASA.

ADN (DNA, cido Desoxirribonucleico Deoxyribonucleic Acid).- El cido desoxirribonucleico, frecuentemente


abreviado como ADN (y tambin DNA, del ingls Deoxyribonucleic Acid), es un tipo de cido nucleico, una

- 523 -
Tras los pasos de un... Hacker

macromolcula que forma parte de todas las clulas. Contiene la informacin gentica usada en el desarrollo y
el funcionamiento de los organismos vivos conocidos y de algunos virus biolgicos, siendo el responsable de su
transmisin hereditaria.

Address.- Ver direccin.

Advanced Encryption Standard.-Ver AES.

Advanced Micro Devices.- Ver AMD.

Advanced Networks and Services.- Ver ANSNET.

Advanced Research Projects Agency Network.-Ver ARPANET.

AES (Advanced Encryption Standard).- Algoritmo de cifrado de datos estandarizado por la administracin de los
Estados Unidos de Norte Amrica, tambin conocido como Rijndael (pronunciado "Rain Doll" en ingls), es un
esquema de cifrado por bloques adoptado como un estndar de cifrado. El AES fue anunciado por el Instituto
Nacional de Estndares y Tecnologa (NIST) como FIPS PUB 197 de los Estados Unidos (FIPS 197) el 26 de
noviembre de 2.001 despus de un proceso de estandarizacin que dur 5 aos. Se transform en un estndar
efectivo el 26 de mayo de 2.002. Desde 2.006, el AES es uno de los algoritmos ms populares usados en
criptografa simtrica.

El cifrador fue desarrollado por dos criptlogos belgas, Joan Daemen y Vincent Rijmen, ambos estudiantes de la
Katholieke Universiteit Leuven, y enviado al proceso de seleccin AES bajo el nombre Rijndael.

Aficin.-Ver hobby.

Agencia Central de Inteligencia.-Ver CIA.

lgebra de Boole.- Propuesta por el matemtico George Boole, pero fue Claude Shannon en su tesis de maestra
en el MIT, que demostr cmo el lgebra booleana se poda utilizar en el anlisis y la sntesis de la conmutacin
y de los circuitos digitales. La tesis despert un inters considerable cuando apareci en 1.938 en las
publicaciones especializadas. En 1.940 le fue concedido el Premio a ingenieros americanos del Instituto
Americano Alfred Nobel de Estados Unidos, una concesin dada cada ao a una persona de no ms de treinta
aos. Un cuarto de siglo ms tarde H. H. Goldstine, en su libro "Las computadoras desde Pascal hasta Von
Neumann", cit su tesis como una de las ms importantes de la historia que ayud a cambiar el diseo de
circuitos digitales.

ALGOL (ALGOrithmic Language, Lenguaje orientado para aplicaciones cientficas).- Lenguaje de programacin
de computadoras creado en 1.958.

ALGOrithmic Language.- Ver ALGOL.

Algoritmo.- En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del latn, dixit
algorithmus y ste a su vez del nombre del matemtico persa Al-Khowarizmi) es un conjunto prescrito de
instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos
sucesivos que no generen dudas a quien lo ejecute. Dados un estado inicial y una entrada, siguiendo los pasos
sucesivos se llega a un estado final y se obtiene una solucin.

-524 -
Breve glosario de trminos...

Alias.-Vernickname.

ALU (Arithmetic Logic Unit, UAL, Unidad Aritmtico Lgica).- En computacin, la Unidad Aritmtico Lgica
(UAL), o Arithmetic Logic Unit (ALU), es un circuito digital que calcula operaciones aritmticas (como suma,
resta, multiplicacin, divisin, etc.) y operaciones lgicas (si, y, o, no), entre dos nmeros.

Muchos tipos de circuitos electrnicos necesitan realizar algn tipo de operacin aritmtica, as que incluso el
circuito dentro de un reloj digital tendr una ALUminscula que se mantiene sumando 1 al tiempo actual, y se
mantiene comprobando si debe activar el pitido del temporizador, etc.

Por mucho, los ms complejos circuitos electrnicos son los que estn construidos dentro de los chips de
microprocesadores modernos como el Intel Core Do. Por lo tanto, estos procesadores tienen dentro de ellos un
ALU muy complejo y poderoso. De hecho, un microprocesador moderno (y los mainframes) pueden tener
mltiples ncleos, cada ncleo con mltiples unidades de ejecucin, cada una de ellas con mltiples ALU.

AMD (Advanced Micro Devices).- Advanced Micro Devices, Inc. es una de las compaas ms grandes del mundo
en produccin de microprocesadores compatibles x86 (junto a Intel) y uno de los ms importantes fabricantes de
CPUs, GPUs, chipsets y otros dispositivos semiconductores. Fue fundada en 1.969 y su central est situada en
Sunnyvale, California.

American National Standards Institute.- Ver ANSI.

American Standard Code for Information Interchange.- Ver ASCII.

Anonymous FTP.-Ver FTP annimo.

ANSI (American National Standards Institute).- El Instituto Nacional Estadounidense de Estndares (ANSI, por
sus siglas en ingls: American National Standards Institute) es una organizacin sin nimo de lucro que
supervisa el desarrollo de estndares para productos, servicios, procesos y sistemas en los Estados Unidos de
Norte Amrica. ANSI es miembro de la Organizacin Internacional para la Estandarizacin (ISO) y de la
Comisin Electrotcnica Internacional (International Electrotechnical Commission, IEC). La organizacin tambin
coordina estndares del pas estadounidense con estndares internacionales, de tal modo que los productos de
dicho pas puedan usarse en todo el mundo. Por ejemplo, los estndares aseguran que la fabricacin de objetos
cotidianos, como pueden ser las cmaras fotogrficas, se realice de tal forma que dichos objetos puedan usar
complementos fabricados en cualquier parte del mundo por empresas ajenas al fabricante original. De ste
modo, y siguiendo con el ejemplo de la cmara fotogrfica, la gente puede comprar carretes para la misma
independientemente del pas donde se encuentre y el proveedor del mismo.

ANSNET (Advanced Networks and Services, Redes y Servicios Avanzados).- Reemplazo de la NSFNet para el
funcionamiento de la Internet.

Antivirus (Antivirus).- Programa de computadora diseado para la deteccin, localizacin y eliminacin de virus
informticos.

Apache (Apache).- Servidor HTTP de dominio pblico basado en el sistema operativo Linux. Apache fue
desarrollado en 1.995 y es actualmente uno de los servidores HTTP ms utilizados en la red.

Apodo.-Vernickname.

Aplicacin.-Ver aplicativo.

- 525 -
Tras los pasos de un... Hacker

Aplicativo (application, aplicacin).- Programa o conjunto de programas que llevan a cabo un trabajo o funcin
directamente al servicio de un usuario en un determinado momento.

Aplicativos en chip.-Ver FIRMWARE.

Applet (aplicacioncita, aplique).- Pequea aplicacin escrita en Java y que se difunde a travs de la red para
ejecutarse en el navegador cliente.

Application.-Ver aplicativo.

Appz.- En la Internet existen miles de pginas bajo este nombre. En ellas se albergan programas completos,
evidentemente crackeados. Para acceder a un Appz, dichas pginas te exigen visualizar otras pginas de
contenido sexual o pornogrfico. Los Appz son a todas luces, programas ilegales que a menudo contienen virus
informticos embebidos.

Apuntador.-Ver puntero.

Archivo (file, fichero).-Unidad significativa de informacin que puede ser manipulada por el sistema operativo
de una computadora. Un archivo tiene una identificacin nica formada por un "nombre" y un "apellido", en el
que el nombre suele ser de libre eleccin del usuario y el apellido suele identificar el contenido o el tipo de
archivo. As, en el archivo prueba.txt el apellido "txt" seala que se trata de un archivo que contiene
informacin en texto plano.

Arithmetic Logic Unit.-Ver ALU.

Armadura (Armoring).- Se trata de una tcnica utilizada por algunos programadores de virus informticos,
mediante la cual se impide su examen por medio de otros programas como por ejemplo los antivirus.

Armoring.-Ver armadura.

ARPANET (Advanced Research Projects Agency Network).- Red de computadoras que fue creada por encargo
del Departamento de Defensa de los Estados Unidos (DoD por sus siglas en ingls) como medio de comunicacin
para los diferentes organismos del pas. El primer nodo se cre en la Universidad de California, Los ngeles y
fue la espina dorsal de la Internet hasta 1.990, tras finalizar la transicin al protocolo TCP/IPiniciada en 1.983.

Artificial intelligence.- Ver inteligencia artificial.

ASCII (American Standard Code for Information Interchange).- El cdigo ASCII (acrnimo ingls de American
Standard Code for Information Interchange Cdigo Estadounidense Estndar para el Intercambio de
Informacin), pronunciado generalmente [ski], es un cdigo de caracteres basado en el alfabeto latino tal como
se usa en ingls moderno y en otras lenguas occidentales. Fue creado en 1.963 por el Comit Estadounidense de
Estndares (ASA, conocido desde 1.969 como el Instituto Estadounidense de Estndares Nacionales, o ANSI) como
una refundicin o evolucin de los conjuntos de cdigos utilizados entonces en telegrafa. Ms tarde, en 1.967,
se incluyeron las minsculas, y se redefinieron algunos cdigos de control para formar el cdigo conocido como
US-ASCII.

El cdigo ASCII utiliza 7 bits para representar los caracteres, aunque inicialmente empleaba un bit adicional (bit
de paridad) que se usaba para detectar errores en la transmisin. A menudo se llama incorrectamente ASCII a
otros cdigos de caracteres de 8 bits, como el estndar ISO-8859-1 que es una extensin que utiliza 8 bits para
proporcionar caracteres adicionales usados en idiomas distintos al ingls, como el espaol.

-526 -
Breve glosario de trminos...

ASCII fue publicado como estndar por primera vez en 1.967 y fue actualizado por ltima vez en 1.986. En la
actualidad define cdigos para 33 caracteres no imprimibles, de los cuales la mayora son caracteres de control
obsoletos que tienen efecto sobre cmo se procesa el texto, ms otros 95 caracteres imprimibles que les siguen
en la numeracin (empezando por el carcter espacio).

Casi todos los sistemas informticos actuales utilizan el cdigo ASCII o una extensin compatible para
representar textos y para el control de dispositivos que manejan texto como el teclado.

Assembler.-Ver lenguaje mquina.

Assembly language.- Ver lenguaje mquina.

Autenticacin (authentication, autentificacin).-Verificacin de la identidad de una persona, dispositivo o de


un proceso para acceder a un recurso y poder realizar determinada actividad. Tambin se aplica a la
verificacin de identidad del origen de un mensaje.

Autentificacin.-Ver autenticacin.

Authentication.-Ver autenticacin.

Atanasoff-Berry Computer.-Ver ABC.

AT&TBell Laboratories.-Ver Bell Telephone Laboratories.

AVR.- Los Hackers conocen por estas siglas a las tarjetas electrnicas que permiten emular el funcionamiento de
una tarjeta inteligente. En los Estados Unidos de Norte Amrica esta tarjeta ha sido empleada para abrir los
canales de DishNet y Expresvu. Se denominan AVR tambin, porque el microcontrolador que poseen estas
tarjetas es una AVR de Atmel.

B
Backbone (columna vertebral, eje central, eje troncal).- Nivel ms alto en una red jerrquica. Se garantiza que
las redes aisladas (stub) y de trnsito (transit) conectadas al mismo backbone estn interconectadas.

BackDoor (puerta trasera).- Se conoce como puerta trasera que puede estar presente en cualquier tipo de
software, ya sea un sistema operativo o el software de un microcontrolador. Los Hackers por ejemplo, hacen uso
de los backdoors para leer y escribir en tarjetas inteligentes cuando se habla de servicios de televisin pagada.

Bajar.-Ver download.

Banner (anuncio, pancarta).- Imagen, grfico o texto de carcter publicitario, normalmente de pequeo tamao
que aparece en una pgina web y que habitualmente enlaza con el sitio web del anunciante.

BASIC (Beginners All-purpose Symbolic Instruction Code, Lenguaje de uso general).- Lenguaje de programacin
de computadoras creado en 1.964.

Basic Input/Output System.-Ver BIOS.

- 527 -
Tras los pasos de un... Hacker

BASICA.-Versin de BASIC popular en la dcada de 1.980.

baud.-Ver baudio.

baudio (baud).- Es la unidad de transmisin de datos la cual nos indica la velocidad a la que son transmitidos
entre un emisor y un receptor, nos indica la cantidad o tasa de transferencia de bits por segundo.

BBS (Bulletin Board Systems).- Es un software para redes de computadoras que permite a los usuarios
conectarse al sistema (a travs de la Internet o a travs de una lnea telefnica) y utilizando un programa
terminal (o telnet si es a travs de la Internet), realizar funciones tales como descargar software y datos, leer
noticias, intercambiar mensajes con otros usuarios, disfrutar de juegos en lnea, leer los boletines, etc.

Beginners All-purpose Symbolic Instruction Code.-Ver BASIC.

Bell Telephone Laboratories Inc. (Hoy conocida como AT&T Bell Laboratories).- Los Laboratorios Bell (en
ingls: Bell Labs) son varios centros de investigacin cientfica y tecnolgica ubicados en ms de diez pases y
que pertenecen a la empresa estadounidense Lucent Technologies, denominada tambin como Bell Labs
Innovations, una divisin de (Alcatel-Lucent). Sus orgenes se remontan a los Laboratorios Telefnicos Bell, los
cuales fueron fundados en el ao de 1.925 en el estado de Nueva Jersey por la empresa AT&T.

Durante muchos aos los laboratorios manejaron uno de los presupuestos ms elevados en el mundo de la
investigacin tecnolgica a raz del monopolio ejercido por AT&T en la industria telefnica estadounidense.
Entre sus patentes y descubrimientos ms importantes destacan la libreta de un solo uso, el transistor, el lser, la
fibra ptica, la tecnologa DSL, la telefona mvil, los satlites de comunicaciones, el sistema operativo Unix y el
lenguaje de programacin C. Once de sus investigadores han ganado seis Premios Nobel.

En 1.984, a raz de la reestructuracin de AT&T, una parte de los laboratorios se convirti en la empresa
Bellcore. El resto pas a formar parte de Lucent Technologies en 1.996 y posteriormente sus empleados fueron
divididos entre los departamentos de investigacin y desarrollo de las empresas AT&T Research y Lucent
Technologies en los que un elevado tanto por ciento siguen all, desempeando su gran labor.

BIOS (Basic Input/Output System).- El Sistema Bsico de Entrada/Salida o BIOS (Basic Input-Output System ) es
un cdigo de software que localiza y reconoce todos los dispositivos necesarios para cargar el sistema operativo
en la RAM; es un software muy bsico instalado en la placa base que permite que sta cumpla su cometido.
Proporciona la comunicacin de bajo nivel, el funcionamiento y configuracin del hardware del sistema que,
como mnimo, maneja el teclado y proporciona salida bsica (emitiendo pitidos normalizados por el altavoz de
la computadora si se producen fallos) durante el arranque. El BIOS usualmente est escrito en lenguaje
ensamblador. El primer trmino BIOS apareci en el sistema operativo CP/M, y describe la parte de CP/M que se
ejecutaba durante el arranque y que iba unida directamente al hardware (las mquinas de CP/M usualmente
tenan un simple cargador arrancable en la ROM, y nada ms). La mayora de las versiones de MS-DOS tienen un
archivo llamado MSDOS.SYS o IO.SYS que es anlogo al CP/M BIOS.

El BIOS (Basic Input-Output System) es un sistema bsico de entrada/salida que normalmente pasa inadvertido
para el usuario final de computadoras. Se encarga de encontrar el sistema operativo y cargarlo en memoria
RAM. Posee un componente de hardware y otro de software, este ltimo brinda una interfaz generalmente de
texto que permite configurar varias opciones del hardware instalado en la PC, como por ejemplo el reloj, o desde
cules dispositivos? de almacenamiento iniciar el sistema operativo (Windows, GNU/Linux, Mac OS X, etc.).

El BIOS gestiona al menos el teclado de la computadora, proporcionando incluso una salida bastante bsica en
forma de sonidos por el altavoz incorporado en la placa base cuando hay algn error, como por ejemplo un
dispositivo que falla o debera ser conectado. Estos mensajes de error son utilizados por los tcnicos para

- 528 -
Breve glosario de trminos...

encontrar soluciones al momento de armar o reparar un equipo. Basic Input/Output System - Sistema bsico de
entrada/salida de datos). Programa que reside en la memoria EPROM (Ver Memoria BIOS no-voltil). Es un
programa tipo firmware. La BIOS es una parte esencial del hardware que es totalmente configurable y es donde
se controlan los procesos del flujo de informacin en el bus de la computadora, entre el sistema operativo y los
dems perifricos. Tambin incluye la configuracin de aspectos importantsimos de la mquina.

bit (bit, bitio).-Unidad mnima de informacin digital que puede ser procesada por una computadora. Proviene
de la contraccin de la expresin inglesa binary digit (dgito binario).

Bit Cracker.- Personaje que encarna en la historia a un experto en electrnica y diseo de computadoras.

Bitio.- Ver bit.

Bombardeo postal.- Ver mail bombing.

Boot Sector (Sector de arranque).- El sector de arranque es un rea reservada en los discos duros, disquetes u
otros dispositivos de almacenamiento, que contienen algunas de las primeras instrucciones ejecutadas por la PC
cuando esta arranca.

Bounce.- Ver rebote.

Browser (ojeador, navegador, visor, visualizador).- Aplicativo para visualizar documentos en la WWWy navegar
por la Internet. Se fundamentan en varios algoritmos que pueden decodificar archivos en hipertexto, facilitando
la navegacin por los servidores de informacin de la Internet; cuentan con funcionalidades multimedia y
permiten indistintamente la navegacin por servidores de la WWW, FTP, Gopher, el acceso a grupos de noticias,
la gestin del correo electrnico, etc.

BSA (Business Software Alliance -- Alianza del Sector del Software).- Organismo creado en 1.988 por diversas
empresas del sector del software para defender sus derechos de propiedad intelectual sobre los programas que
desarrollan.

Bug.-Ver error.

Bucanero(s).- Personajes fuera del underground que son peores que los Lamers, ya que no aprenden nada ni
conocen la tecnologa. Comparados con los piratas informticos, los bucaneros slo buscan el comercio negro de
los productos entregados por los Copyhackers. Los bucaneros slo tienen cabida fuera de la red, ya que dentro
de ella, los que ofrecen productos Crackeados pasan a denominarse piratas informticos, as puestas las cosas, el
bucanero es simplemente un comerciante, el cual no tiene escrpulos a la hora de explotar un producto de
Cracking a un nivel masivo.

Bulletin Board Systems.-Ver BBS.

Burroughs.- La Corporacin Burroughs fue creada en 1.886 como la American Arithmometer Company en St.
Louis, Missouri, Estados Unidos, para dedicarse a la venta de las mquinas sumadoras inventadas por William
Seward Burroughs.

La compaa se mud a Detroit en 1.904 y cambi su nombre a Burroughs Adding Machine Company, en honor a
Burroughs, quien muri en 1.898. La Burroughs se convirti en la ms grande fbrica de sumadoras de los
Estados Unidos de Norte Amrica, aunque para 1.950 venda ms que calculadoras bsicas, como por ejemplo
mquinas de escribir y computadores.

- 529 -
Tras los pasos de un... Hacker

En 1.953 la Burroughs Adding Machine Company cambi su nombre a Burroughs Corporation y aument su
produccin de productos de computacin, sobre todo en el rea bancaria. Esta decisin fue tomada despus de
la compra de la empresa ElectroData Corporation de Pasadena, California, originalmente una divisin de
Consolidated Electrodynamics Corporation. ElectroData haba construido la Datatron 205 y empezaba a trabajar
en la Datatron 220. El primer producto importante de la unin de estas dos empresas fue la computadora B205
de tubos (o vlvulas de vaco).

La Corporacin Burroughs desarroll tres arquitecturas avanzadas, basadas en la idea del diseo dirigido por
lenguaje, como el Algol, COBOL o Fortran. Todas estas arquitecturas eran consideradas como mainframes.

Bus de datos (Data bus).- Parte de un circuito electrnico utilizado en ciertos dispositivos que se conectan a
una computadora para la transmisin y flujo de los datos con la finalidad de procesarlos automticamente.

Business Software Alliance.-Ver BSA.

Byte (byte, octeto).- Conjunto significativo de bits que representan un carcter en algn cdigo para el
procesamiento o la transmisin de informacin.

ByteCode (Cdigo binario).-Versin compilada de un programa de computadora desarrollado en algn lenguaje


de alto nivel, pero que no puede ser ejecutado directamente sino que necesita de un motor del lenguaje de
programacin para que el algoritmo implementado funcione en cualquier sistema operativo. Ejemplo de estas
versiones de programas en bytecode lo son las libreras compiladas en True BASIC y Java.

C
C.- Lenguaje de programacin de computadoras creado en 1.978.

C3I2 (Comando de Control y Comunicaciones, Inteligencia e Informtica).- Expresin de uso militar que identifica
a una unidad especial que se encarga de realizar y monitorizar comunicaciones, realizar inteligencia y procesar
esta informacin haciendo uso de la informtica.

CAD (Computer Aided Design, Diseo Asistido por Computadora).- El diseo asistido por computadora u
ordenador, ms conocido por sus siglas inglesas CAD (computer-aided design), es el uso de un amplio rango de
herramientas computacionales que asisten a ingenieros, arquitectos y a otros profesionales del diseo en sus
respectivas actividades.

CAM (Computer Aided Manufacturing, Fabricacin Asistida por Computadora).- La fabricacin asistida por
computadora (en Hispanoamrica) o fabricacin asistida por ordenador (en Espaa), tambin conocida por las
siglas en ingls CAM (Computer Aided Manufacturing), implica el uso de computadores y tecnologa de cmputo
para ayudar en todas las fases de la manufactura de un producto, incluyendo la planificacin del proceso y la
produccin, mecanizado, calendarizacin, administracin y control de calidad, con una intervencin del
operario mnima.

CASE (Computer Aided Software Engineering, Ingeniera de Software Asistida por Computadora).- Las
herramientas CASE son diversas aplicaciones informticas destinadas a aumentar la productividad en el
desarrollo de software reduciendo el coste de las mismas en trminos de tiempo y de dinero. Estas
herramientas nos pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas
como el proceso de realizar un diseo del proyecto, clculo de costes, implementacin de parte del cdigo

- 530 -
Breve glosario de trminos...

automticamente con el diseo dado, compilacin automtica, documentacin o deteccin de errores entre
otras.

CD-ROM (Compact Disc - Read Only Memory, Disco Compacto - Memoria de Slo Lectura).- Un CD-ROM es un
disco compacto utilizado para almacenar informacin no voltil, el mismo medio utilizado por los CD de audio,
puede ser ledo por una computadora con lectora de CD. Un CD-ROM es un disco de plstico plano con
informacin digital codificada en una espiral desde el centro hasta el borde exterior.

CD-RW (Compact Disc - Read / Write, Disco Compacto Lectura / Escritura).- Disco compacto utilizado para
almacenar informacin que puede ser escrita, leda y borrada de manera similar a un disquete o disco duro.

CDC(Control Data Corporation).- En la dcada de 1950's los transistores empiezan a formar parte de los
circuitos digitales de las computadoras y, poco despus de que sus inventores (Shockley, Brattain y Bardeen)
recibieran el Premio Nobel de Fsica de 1.956, stos empiezan a ganar terreno en el mercado. Es en este marco,
concretamente en 1.957, cuando nacen varias empresas decididas a hacerse un sitio en el mercado de los
llamados Computadoras de Segunda Generacin, empresas entre las que destacan la Control Data Corporation
(CDC) y Honeywell entre otras.

Cellular phone.- Ver telfono celular.

Celular.-Ver telfono celular.

Central Intelligence Agency.-Ver CIA.

Central Processing Unit.-Ver CPU.

Csar.- Personaje que encarna en la historia a un experto en telecomunicaciones y protocolos de comunicacin


utilizados en la Internet y otras redes.

CI.-Ver circuito integrado.

CIA (Central Intelligence Agency, Agencia Central de Inteligencia).- La Agencia Central de Inteligencia (CIA,
Central Intelligence Agency) es, junto con la Agencia de Seguridad Nacional, la agencia gubernamental de los
Estados Unidos de Norte Amrica encargada de la recopilacin, anlisis y uso de inteligencia, mediante el
espionaje en el exterior, ya sean gobiernos, corporaciones o individuos que pueda afectar la seguridad nacional
del pas. Su sede central est ubicada en Langley, Virginia.

Antes de diciembre de 2.004, la CIA ha sido literalmente la organizacin de inteligencia central para el gobierno
de los Estados Unidos de Norte Amrica. El Acta de la Reforma de Inteligencia y Prevencin del Terrorismo de
2.004 cre la oficina del Director de Inteligencia Nacional (DNI), que se hizo a cargo de alguna parte del
gobierno y la comunidad de inteligencia (CI) en toda la funcin que anteriormente haban sido objetivo para la
CIA. El Directorio de Inteligencia Nacional gestiona los Estados Unidos de Norte Amrica a la Comunidad de
Inteligencia de los Estados Unidos de Norte Amrica as como al ciclo de inteligencia.

Cuando se habla de la CIA, es fundamental entender que es una de las mayores comunidades de inteligencia a
gran escala de su principal serie de responsabilidades. La comunidad de inteligencia tiene an una poltica
interna, aunque un nmero cada vez mayor de interagencias "centrales", as como la informacin de reparto de
mecanismo de la Intellipedia espera que mejore.

- 531 -
Tras los pasos de un... Hacker

Ciber- (Cyber-).- Prefijo utilizado ampliamente en la comunidad de la Internet para denominar conceptos
relacionados con las redes (cibercultura, ciberespacio, cibernauta, etc.). Su origen es la palabra griega cibernao,
que significa "conducir una nave".

Ciberbasura (Cybertrash).- Todo tipo de informacin almacenada o difundida por la red que es
manifiestamente molesta o peligrosa para la salud mental de los internautas. Dcese tambin de quienes
cuelgan basura en la Internet.

Cibercultura (Cyberculture).- Conjunto de valores, conocimientos, creencias y experiencias generadas por la


comunidad internutica a lo largo de la historia de la red. Al principio era una cultura elitista; ms tarde, con la
popularizacin de la Internet, la cibercultura es cada vez ms parecida a la "cultura" a secas, aunque conserva
algunas de sus peculiaridades originales.

Ciberespacio (Cyberspace).- Trmino creado por William Gibson en su novela fantstica Neuromante para
describir el mundo de las computadoras y la sociedad creada entorno a ellas.

Cibernauta (Cybernaut).- Persona que navega por la red.

Ciberpolica (Cybercop).- Funcionario policial especializado en realizar investigaciones en la Internet.

Ciberzapeo (Cyberzapping).- Accin de pasar de forma rpida y compulsiva de una pgina a otra dentro de un
sitio web o de un sitio web a otro.

Cifrado (encryption, encriptacin).- El cifrado es el tratamiento de un conjunto de datos, contenidos o no en un


paquete a fin de impedir que nadie excepto el destinatario de los mismos pueda leerlos. Hay muchos tipos de
cifrado de datos, que constituyen la base de la seguridad de la Internet o una red en particular.

Circuito integrado (CI, Integrated Circuit, IC).- Es una pastilla pequea de material semiconductor, de algunos
milmetros cuadrados de rea, sobre la que se fabrican circuitos electrnicos generalmente mediante
fotolitografa y que est protegida dentro de un encapsulado de plstico o cermica. El encapsulado posee
conductores metlicos apropiados para hacer conexin entre la pastilla y un circuito impreso.

CISC (Complex Instruction Set Computer, Computadora que funciona con un Conjunto de Instrucciones
Complejas).-Tipo de arquitectura de microprocesadores en contraposicin a la RISC.

Clave.- Ver Key.

Clave de bsqueda.- Ver Keyword.

Clic (click, cliqueo/cliquear, pulsacin/pulsar).- Accin de tocar un mando cualquiera de un ratn de


computadora una vez colocado el puntero del mismo sobre una determinada rea de la pantalla con el fin de dar
una orden a la computadora.

Click.- Ver clic.

Client.-Ver cliente.

Cliente (client).- Es un sistema o proceso que solicita a otro sistema o proceso que le preste un servicio. Una
estacin de trabajo que solicita el contenido de un archivo a un servidor de archivos es un cliente de este
servidor. Un programa que solicita un correo electrnico o su vez tambin lo puede transmitir a un servidor de
correo electrnico es un cliente de este servidor.

- 532 -
Breve glosario de trminos...

Clipper chip.- Dispositivo de cifrado que el gobierno de los Estados Unidos de Norte Amrica intent hacer
obligatorio mediante ley en 1.995 para poder controlar el flujo de transmisiones criptogrficas a travs de redes
digitales de telecomunicacin.

Clon.- Dcese de la computadora que tiene una configuracin exactamente igual a una de marca, pero sus
componentes no son homologados por alguna fbrica de renombre.

COBOL (COmmon Business Oriented Language, Lenguaje orientado a la gestin en negocios).- Lenguaje de
programacin de computadoras creado en 1.951.

Cdigo binario.-Ver bytecode.

Cdigo mquina.-Ver lenguaje mquina.

Comando de Control y Comunicaciones, Inteligencia e Informtica.-Ver C3I2.

COmmon Business - Oriented Language.- Ver COBOL.

Compact Disc-Read Only Memory.-Ver CD-ROM.

Compilador (Compiler).- Es un aplicativo que revisa la sintaxis de algn algoritmo implementado en un


lenguaje de alto nivel (si existiera errores los informar al usuario), cuya finalidad es convertir estas
instrucciones en una versin del programa implementado a su correspondiente en lenguaje mquina o
programa ejecutable.

Compiler.-Ver compilador.

Compact Disc-Read Only Memory.-Ver CD-ROM.

Compact Disc-Read/Write.-Ver CD-RW.

Complex Instruction Set Computer.-Ver CISC.

Computadora (Computer, ordenador).- Podemos definir a una computadora como la mquina electrnica
creada por el hombre capaz de procesar informacin de una manera veloz, ordenada y de forma automtica (no
inteligente) segn lo indique un programa de computadora.

Computadora Personal.-Ver PC.

Computer.-Ver computadora.

Computer Aided Design.-Ver CAD.

Computer Aided Manufacturing.-Ver CAM.

Computer Aided Software Engineering.-Ver CASE.

Computer Program.-Ver programa de computadora.

Cndor (Ver Kevin Mitnick).- Nickname adoptado por el Hacker norteamericano Kevin Mitnick. Ave carroera
del altiplano sudamericano.

- 533 -
Tras los pasos de un... Hacker

Conjunto de instrucciones (Instruction Set, Chipset).- Se conoce por este nombre a todas las instrucciones
bsicas que estn grabadas en una ROM y que las puede obedecer un microprocesador, microcontrolador o chip
especializado de control de algn dispositivo a las cuales un programa puede invocar.

Contrasea.-Ver password.

Control Data Corporation.-Ver CDC.

Control Program/Monitor.-Ver CP/M.

Control Unit.-Ver CU.

Controlador (Driver, manejador).- Programa diseado para el correcto funcionamiento de un dispositivo en un


sistema operativo determinado. En la jerga underground, programa que ordena la operacin remota y
subrepticia de alguna computadora a la que previamente se la hace zombi.

Conversacin.- Ver chat.

Cookie (cuqui, espa, delator, fisgn, galletita, pastelito, rajn, sopln).- Conjunto de caracteres que se
almacenan en el disco duro o en la RAM de la computadora cuando un usuario accede a las pginas de
determinados sitios web. Se utilizan para que el servidor requerido pueda conocer las preferencias del usuario y
otros datos. Dado que pueden ser un peligro para la intimidad de los usuarios, stos deben saber que los
navegadores permiten desactivar los cuquis versus cookie.

Copyhacker(s).- Personajes del underground solo conocida en el terreno del crackeo de hardware.

Estos especialistas emplean la Ingeniera Social para convencer y entablar amistad con los verdaderos Hackers,
les copian los mtodos de ruptura y despus se los venden a los bucaneros.

Los Copyhackers divagan entre la sombra del verdadero Hacker y el Lamer.

Estos personajes poseen conocimientos de la tecnologa y son dominados por la obsesin de ser superiores,
pero no terminan de aceptar su posicin. Por esta razn extraen informacin del verdadero Hacker para
terminar su trabajo.

La principal motivacin de estos personajes es el dinero.

Core War.-Juego de computadora desarrollado en la dcada de 1.960.

Correo-e.- Ver correo electrnico.

Correo electrnico (electronic mail, correo-e, e-mail).- Es un servicio de red que permite a los usuarios enviar y
recibir mensajes rpidamente (tambin denominados mensajes electrnicos o cartas electrnicas) mediante
sistemas de comunicacin electrnicos. Principalmente se usa este nombre para denominar al sistema que
provee este servicio en la Internet, mediante el protocolo SMTP, aunque por extensin tambin puede verse
aplicado a sistemas anlogos que usen otras tecnologas. Por medio de mensajes de correo electrnico se puede
enviar, no solamente texto, sino todo tipo de documentos digitales. Su eficiencia, conveniencia y bajo coste (con
frecuencia nulo) estn logrando que el correo electrnico desplace al correo ordinario para muchos usos
habituales.

Cortafuegos.-Verfirewall.

- 534 -
Breve glosario de trminos...

CP/M (Control Program / Monitor).- Es un sistema operativo desarrollado por Gary Kildall para el
microprocesador Intel 8080 (los Intel 8085 y Zilog Z80 pueden ejecutar directamente el cdigo del 8080, aunque
lo normal es que se entregara el cdigo recompilado para el microprocesador de la mquina). Se trata del
sistema operativo ms popular entre las computadoras personales en los aos 1.970. Aunque fue modificado
para ejecutarse en un IBM PC, el hecho que IBM eligiera MS-DOS, al fracasar las negociaciones con Digital
Research, hizo que el uso de CP/M disminuyera hasta hacerlo desaparecer.

El acrnimo CP/M significa Control Program for Monitors, es decir, Programa de control para monitores. En la
poca, la barra inclinada (/) tena esta acepcin de "diseado para". No obstante, Gary Kildall redefini el
significado del acrnimo poco despus.

CP/M se convirti en un estndar de la industria para las primeras microcomputadoras.

CPU (Central Processing Unit, UCP, Unidad Central de Proceso, microprocesador).- La unidad central de
procesamiento o CPU (por el acrnimo en ingls de central processing unit), o simplemente el procesador o
microprocesador, es el componente en una computadora, que interpreta las instrucciones y procesa los datos
contenidos en los programas de la computadora. Las CPU proporcionan la caracterstica fundamental de la
computadora digital (la programabilidad) y son uno de los componentes necesarios encontrados en las
computadoras de cualquier tiempo, junto con el almacenamiento primario y los dispositivos de entrada/salida.
Se conoce como microprocesador el CPU que es manufacturado con circuitos integrados. Desde mediados de los
aos 1.970, los microprocesadores de un solo chip han reemplazado casi totalmente todos los tipos de CPU, y
hoy en da, el trmino CPU es aplicado usualmente a todos los microprocesadores.

La expresin "unidad central de proceso" es, en trminos generales, una descripcin de una cierta clase de
mquinas de lgica que pueden ejecutar complejos programas de computadora. Esta amplia definicin puede
fcilmente ser aplicada a muchas de las primeras computadoras que existieron mucho antes que el trmino CPU
estuviera en amplio uso. Sin embargo, el trmino en s mismo y su acrnimo han estado en uso en la industria
de la informtica por lo menos desde el principio de los aos 1.960. La forma, el diseo y la implementacin de
las CPU ha cambiado drsticamente desde los primeros ejemplos, pero su operacin fundamental ha
permanecido bastante similar.

Las primeras CPU fueron diseadas a la medida como parte de una computadora ms grande, generalmente una
computadora nica en su especie. Sin embargo, este costoso mtodo de disear los CPU a la medida, para una
aplicacin particular, ha desaparecido en gran parte y se ha sustituido por el desarrollo de clases de
procesadores baratos y estandarizados adaptados para uno o muchos propsitos. Esta tendencia de
estandarizacin comenz generalmente en la era de los transistores discretos, computadoras centrales, y
microcomputadoras, y fue acelerada rpidamente con la popularizacin del circuito integrado (IC), ste ha
permitido que sean diseados y fabricados CPU ms complejos en espacios pequeos (en el orden de
milmetros). Tanto la miniaturizacin como la estandarizacin de los CPU han aumentado la presencia de estos
dispositivos digitales en la vida moderna mucho ms all de las aplicaciones limitadas de mquinas de
computacin dedicadas. Los microprocesadores modernos aparecen en todo, desde automviles, televisores,
neveras, calculadoras, aviones, hasta telfonos mviles o celulares, juguetes, entre otros.

Crack.- Es sinnimo de rotura o de quitar las seguridades de algn producto, por lo tanto sus vctimas son los
productos tanto de software como de hardware. As es fcil comprender que un Cracker debe conocer
perfectamente las dos caras de la tecnologa, esto es la parte de programacin y la parte fsica de la electrnica.

Cracker(s).- Personajes del underground que estn al nivel de los Hackers pero sus motivaciones son distintas,
es el primer eslabn de una familia rebelde de especialistas. Cracker es aquel Hacker fascinado por su capacidad
de romper sistemas y software, que se dedica nica y exclusivamente a Crackear sistemas.

- 535 -
Tras los pasos de un... Hacker

Para los grandes fabricantes de sistemas y la prensa, este grupo es el ms rebelde de todos ya que siempre
encuentran el modo de romper una proteccin. Pero el problema no radica ah, sino en que esta rotura es
difundida normalmente a travs de la Internet para conocimiento de otros, en esto comparten la idea y la
filosofa de los Hackers.

En la actualidad es habitual ver como se muestran los Cracks de la mayora del Software de forma gratuita a
travs de la Internet.

Criptoanlisis (Cryptoanalysis).- Es la parte de la Criptologa que tiene por objeto el desarrollo de mtodos para
el descifrado de criptogramas cuando se ignora la clave.

Criptografa (Cryptography).- Trmino formado a partir del griego kryptos (oculto), significa segn el
diccionario acadmico:"Arte de escribir con clave secreta o de un modo enigmtico".

Es criptogrfico cualquier procedimiento que permita a un emisor ocultar el contenido de un mensaje de modo
que slo personas en posesin de determinada clave puedan leerlo, tras haberlo descifrado.

Criptologa (Cryptology).- Es el estudio matemtico y cientfico de la Criptografa as como del Criptoanlisis.

Cryptoanalysis.-Ver criptoanlisis.

Cryptography.-Ver criptografa.

Cryptology.-Ver criptologa.

CU (Control Unit, UC, Unidad de Control).- Bloque funcional de la CPU, se encarga de organizar las operaciones a
seguir en el microprocesador o microcontrolador.

Cuqui.-Ver cookie.

Cyber.-Ver ciber.

Cybercop.-Ver ciberpolica.

Cyberculture.-Ver cibercultura.

Cybernaut.-Ver cibernauta.

Cybertrash.-Ver ciberbasura.

Cyberspace.- Ver ciberespacio.

Cyberzapping.-Ver ciberzapeo.

CH
Charla.-Ver chat.

- 536 -
Breve glosario de trminos...

Chat (conversacin, charla, chateo, tertulia).- Comunicacin simultnea entre dos o ms personas a travs de la
Internet. Hasta hace poco tiempo slo era posible la "conversacin" escrita pero los avances tecnolgicos
permiten ya la conversacin en audio y vdeo.

Chateo.- Ver chat.

Check Program.- Primer protector contra virus de computadoras desarrollado por Nstor Marroqun Carrera en
la Repblica del Ecuador en el ao de 1.993. Nominado en 1.997 al premio a la mejor nueva tecnologa
presentada en la Feria Comdex Fall97 en Las Vegas, Nevada, Estados Unidos de Norte Amrica. Su forma de
trabajar introdujo en la industria informtica la tcnica de la inoculacin de un programa ejecutable, para de
esta forma hacer frente a los virus informticos desconocidos por parte de los programas antivirus.

Checksums.- Se conoce con este nombre a una funcin informtica especial, que permite a un programa de
computadora, determinar la consistencia o integridad de algn dato o archivo, para este proceso actualmente se
utilizan las denominadas funciones hash.

Chip (chip).- Circuito integrado en un soporte de silicio, formado por transistores y otros elementos electrnicos
miniaturizados. Es un elemento esencial de las tarjetas que conforman una computadora. Literalmente
significa astilla o papa frita.

Estos circuitos tambin pueden ser especializados en alguna tarea en la computadora, as tendremos los chips
de vdeo, de sonido, de comunicaciones, etc.

Chipset.-Ver conjunto de instrucciones.

Christopher Pile.- Hackeringls.

D
Daemon.-Ver demonio.

Dark Angel.- Seudnimo de uno de los creadores de virus.

Dark Avenger.-Seudnimo de uno de los creadores de virus ms famoso de todos los tiempos.

Dark Ray.-Seudnimo de uno de los creadores de virus.

DARPA (Defense Advanced Research Projects Agency--Agencia de Proyectos de Investigacin Avanzada para la
Defensa).- Organismo dependiente del Departamento de Defensa norteamericano (DoD) encargado de la
investigacin y desarrollo en el campo militar y que jug un papel muy importante en el nacimiento de la
Internet a travs de la red ARPANET.

Data bus.-Ver bus de datos.

Data Encryption Standard.-Ver DES.

De-encryption.-Ver descifrado.

- 537 -
Tras los pasos de un... Hacker

DEA (Drug Enforcement Administration -- Administracin de Cumplimiento de Leyes sobre las Drogas).- Es la
agencia del Departamento de Justicia de los Estados Unidos dedicada a la lucha contra el contrabando y el
consumo de drogas en los Estados Unidos. Pese a compartir jurisdiccin con el FBI en el mbito interno, es la
nica agencia responsable de coordinar y perseguir las investigaciones antidroga en el extranjero.

DEC (Digital Equipment Corporation).- Fue una compaa americana considerada pionera en la fabricacin de
minicomputadores. Se fund en 1.957, y existi hasta 1.998, cuando fue adquirida por COMPAQ (la cual, a su vez,
sera adquirida por Hewlett-Packard en el 2.002). Digital abri el mercado de la produccin de
minicomputadoras, con su popular serie PDP, asentando las bases para la posterior creacin de las
computadoras personales.

El acrnimo DEC fue oficialmente utilizado por Digital, despus de haber sido descartado por Dairy Equipment
Company de Madison (Wisconsin) a fin de evitar un conflicto de patentes de marcas con esta.

Sus productos PDP y VAX fueron probablemente las minicomputadoras ms populares para las comunidades
cientficas y de la ingeniera durante los aos 70 y los aos 80. Hasta el 2.005, sus cadenas de produccin
todava eran fabricadas bajo el nombre de HP (Hewlett-Packard).

Digital Equipment no debera ser confundida con Digital Research; las dos eran entidades distintas; o con
Western Digital (a pesar del hecho de que esta fabric el chipset LSI-11 que posteriormente sera utilizado por
Digital Equipment en las computadoras PDP-11/03).

Defense Advanced Research Projects Agency.-Ver DARPA.

Delay (retraso).-Tiempo de retraso que se programa en cualquier protocolo de comunicacin para sincronizar
una transmisin de datos.

Demonio (Daemon).- Aplicacin UNIX que est permanentemente en alerta en un servidor de la Internet para
realizar determinadas tareas como, por ejemplo, enviar un mensaje de correo electrnico o transmitir una pgina
web. Daemon es una palabra latina que significa espritu (bueno o malo) o demonio.

DeoxyribonucleicAcid.-Ver ADN.

Departamento de Defensa.-Ver Departamento de Defensa de los Estados Unidos de Norte Amrica.

Departamento de Defensa de los Estados Unidos de Norte Amrica (United States Department of Defense,
DoD, Departamento de Defensa -- Department of Defense).- Es el ministerio del gobierno de Estados Unidos de
Norte Amrica, encargado de las fuerzas militares del pas, todo el tiempo.

Su director es el secretario de defensa, que forma parte del gabinete presidencial. Su sede central se encuentra
en El Pentgono en Arlington (Virginia), cerca de Washington D.C.

Este departamento se cre por la fusin del Departamento de la Armada y del Departamento de Guerra en 1.947
bajo la presidencia de Harry Truman.

El Departamento de Defensa controla actualmente los tres departamentos militares: el Departamento de la


Armada (que incluye tanto la Armada como el Cuerpo de Marines), el Departamento del Ejrcito (responsable del
Ejrcito) y del Departamento de la Fuerza Area (responsable de la Fuerza Area). Tambin tiene bajo su tutela
al Estado Mayor Conjunto, a los Unified Combatant Command y a algunas otras agencias de defensa como la
Missile Defense Agency, que se encarga del escudo antimisiles.

- 538 -
Breve glosario de trminos...

El Departamento de Defensa y el Pentgono poseen 700 u 800 bases alrededor del mundo, en 63 pases. Sus
bases tienen una extensin total de 120.191 kilmetros cuadrados.

Department of Defense.- Ver Departamento de Defensa de los Estados Unidos de Norte Amrica.

DES (Data Encryption Standard -- Estndar de Cifrado de Datos).- Algoritmo de cifrado de datos estandarizado
por la administracin de EE.UU.

Desbordamiento.-Ver overflow.

Descargar.- Ver download.

Descifrado (de-encryption, desencriptacin).- Recuperacin del contenido real de una informacin cifrada
previamente.

Desencriptacin.-Ver descifrado.

Dial-up (conexin por lnea conmutada).- Conexin temporal, en oposicin a conexin dedicada o permanente,
establecida entre computadora a travs de una lnea telefnica normal. Dcese tambin del hecho de marcar un
nmero de telfono.

Digital Equipment Corporation.-Ver DEC.

Digital Research, Inc. (en espaol: Investigacin Digital) (DR o DRI; originalmente Intergalactic Digital
Research, que en espaol sera: Investigacin Digital Intergalctica).- Fue una compaa fundada por el Dr.
Gary Kildall para comercializar y desarrollar su sistema operativo CP/M y otros productos. sta fue la primera
empresa de software en el mundo enfocada a las microcomputadoras.

No debe confundirse Digital Research con Digital Equipment Corporation, no hay ninguna relacin entre ambas.
Su sede principal se encontraba en Pacific Grove, California.

Los sistemas operativos de la compaa, comenzando por el CP/M para las microcomputadoras basadas en los
procesadores Intel 8080/ZiLOGZ80, fueron el estndar de facto de su momento, tal y como el MS-DOS y el MS
Windows lo fueron despus. Los productos de DRincluido el CP/M original y sus varias versiones, DR-DOS, que
fue una versin de CP/M compatible con MS-DOS, y MP/M, el CP/M multiusuario.

El primer sistema operativo de 16 bits fue CP/M-86, que fue finalmente desechado en favor del MS-DOS de
Microsoft. Luego lleg CP/M Concurrente, una versin monousuario del MP/M-86 multitarea que proporcionaba
consolas virtuales desde donde las aplicaciones podan iniciarse para ser ejecutadas de manera concurrente.
Posteriores versiones de este sistema, que gradualmente daban soporte a aplicaciones MS-DOS y al sistema de
archivos FAT, fueron llamadas DOS Concurrente, DOS Concurrente XMy DOS Concurrente 386.

Poco despus de la aparicin del Intel 80286, DR introdujo un sistema operativo radicalmente novedoso de
tiempo real, inicialmente llamado DOS-286 y posteriormente Flex OS. Este sistema utilizaba la mayor capacidad
de direccionamiento de memoria de la nueva CPU para proporcionar un entorno multitarea ms flexible. Tena
un conjunto pequeo pero potente de APIs de sistema, cada una con su versin sncrona y asncrona. Tambin
soportaba Pipes, y todos los recursos nombrados podan ser renombrados configurando variables de entorno.
Este sistema tuvo una buena acogida en los puntos de venta y fue adoptado por el IBM 4690.

Digital Research fue comprada por Novell en 1.991, principalmente para obtener acceso al mercado de los
Sistemas Operativos.

- 539 -
Tras los pasos de un... Hacker

DR produjo un conjunto de lenguajes de programacin, compiladores e intrpretes para las plataformas


soportadas por sus sistemas operativos, incluyendo C, PASCAL, COBOL, Forth, PL/I, PL/M, BASIC, y Logo.
Tambin crearon una versin para la microcomputadora del estndar grfico GKS (relacionado con NAPLPS)
llamado GSX, y ms tarde usado como la base de su GUI GEM. Menos conocidos son sus programas de aplicacin,
limitados principalmente al DR-DRAW basado en GSX y un pequeo conjunto de programas GUI para GEM.

Digital signature.-Verfirma digital.

Digital Versatile Disk.-Ver DVD.

Direccin (address).- En la Internet, dcese de la serie de caracteres numricos o alfanumricos, que identifican
un determinado recurso de forma nica y permiten acceder a l. En la red existen varios tipos de direcciones de
uso comn: direccin de correo electrnico (e-mail address), direccin IP (IPaddress, direccin en la Internet)y
direccin hardware o MAC (hardware or MACaddress).

Direccin IP (IP address).- Direccin de 32 bits definida por el Protocolo Internet en STD 5, RFC 791. Se
representa usualmente mediante notacin decimal separada por puntos. Un ejemplo de direccin IP es
193.127.88.345

Disco Compacto - Lectura / Escritura.-Ver CD-RW.

Disco Compacto - Memoria de Slo Lectura.-Ver CD-ROM.

Disco duro (Hard disk).- Dispositivo de gran capacidad de almacenamiento que funciona en base a discos de
metal (duros) recubiertos de un material electromagntico.

Disco flexible.- Ver disquete.

Diseo Asistido por Computadora.-Ver CAD.

Disk Operating System.-Ver DOS.

Diskette.-Ver disquete.

Disquete (Diskette, Disco flexible, Floppy disk).- Dispositivo de almacenamiento que funciona en base a discos
plsticos (flexibles) recubiertos de un material electromagntico.

DNA.- Ver ADN.

DoD (Department of Defense, Departamento de Defensa).-Ver Departamento de Defensa de los Estados Unidos de
Norte Amrica.

DOS (Disk Operating System).- Con estas siglas se conoce a una gran familia de Sistemas Operativos que se
hicieron muy populares en las dcadas de 1.970 y 1.980, los ms populares fueron CP/M (DR-DOS), Q-DOS,
MS-DOS, PC-DOS y MSX-DOS.

Download (bajar, descargar).- En la Internet, proceso de transferir informacin desde un servidor de


informacin a una computadora que acta como cliente del mismo.

Driver.-Ver controlador.

- 540 -
Breve glosario de trminos...

Dropper.- Un Dropper es un programa que no es un virus informtico, pero que posee la capacidad de grabar
virus informticos cuando se ejecuta. El Dropper as, consigue burlar a los antivirus, puesto que su cdigo no
contiene nada malicioso en un principio.

Drug Enforcement Administration.-Ver DEA.

DVD (Digital Versatile DiskDisco Verstil Digital).- El DVD (pronunciado divid en ingls e Hispanoamrica y
deved o deuved en Espaa, segn la Real Academia Espaola), cuyas siglas corresponden a Digital Versatile
Disk (disco verstil digital) o tambin Digital Video Disc (disco de video digital), es un dispositivo de
almacenamiento ptico cuyo estndar surgi en 1.995.

Unidad de DVD: el nombre de este dispositivo hace referencia a la multitud de maneras en las que se almacenan
los datos: DVD-ROM (dispositivo de lectura nicamente), DVD-R y DVD+R (solo pueden escribirse una vez),
DVD-RW y DVD+RW (permiten grabar y borrar las veces que se quiera). Tambin difieren en la capacidad de
almacenamiento de cada uno de los tipos.

E
e-mail.-Ver correo electrnico.

EBCDIC (Extended Binary Coded Decimal Interchange Code).- Es un cdigo estndar de 8 bits usado por las
computadoras mainframe IBM. IBM adapt el EBCDIC del cdigo de tarjetas perforadas en los aos 1.960 y lo
promulg como una tctica customer-control cambiando el cdigo estndar ASCII.

EBCDIC es un cdigo binario que representa caracteres alfanumricos, controles y signos de puntuacin. Cada
carcter est compuesto por 8 bits = 1 byte, por eso EBCDIC define un total de 256 caracteres.

Existen muchas versiones (codepages) de EBCDIC con caracteres diferentes, respectivamente sucesiones
diferentes de los mismos caracteres. Por ejemplo al menos hay 9 versiones nacionales de EBCDIC con Latn 1
caracteres con sucesiones diferentes.

Echelon.- Sistema de satlites norteamericanos que permiten espiar a los usuarios que usen algn dispositivo
electrnico para comunicarse. El sistema Echelon permite interceptar comunicaciones de telfono, radio o de
Internet. Los satlites de Echelon no son los nicos elementos de este sistema de espionaje, adems de ellos,
podemos encontrarnos con sistemas capturadores de seales de radio, escneres y sistemas informticos.

EDVAC (Electronic Discrete Variable Automatic Computer, es decir Computadora Automtica Electrnica de
Variable Discreta).- Fue una de las primeras computadoras electrnicas. A diferencia de la ENIAC, no era
decimal, sino binaria y tuvo el primer programa diseado para ser almacenado. Este diseo se convirti en el
estndar de arquitectura para la mayora de las computadoras modernas.

El diseo de la EDVAC es considerado un xito en la historia de la informtica.

El diseo de la EDVAC fue desarrollado an antes de que la ENIAC fuera puesta en marcha y tena la intencin de
resolver muchos de los problemas encontrados en el diseo de la ENIAC. As como la ENIAC, la EDVAC fue
construida por el laboratorio de investigacin de balstica de Estados Unidos de la universidad de Pensilvania. A
los diseadores de la ENIAC, J. Presper Eckert y John William Mauchly se les uni el gran matemtico John von
Neumann. Un contrato para construirla fue firmado en abril de 1.946 con un presupuesto inicial de 100.000

- 541 -
Tras los pasos de un... Hacker

USD y el contrato llam al aparato el Calculador Discreto Electrnico Automtico Variable (Electronic Discrete
Variable Automatic Calculator en ingls).

EEPROM (Electrically Erasable Programmable Read Only Memory).- EEPROM o E2PROM son las siglas de
Electrically-Erasable Programmable Read-Only Memory (ROM programable y borrable elctricamente). Es un
tipo de memoria ROM que puede ser programado, borrado y reprogramado elctricamente, a diferencia de la
EPROM que ha de borrarse mediante un aparato que emite rayos ultravioletas. Son memorias no voltiles.

Las celdas de memoria de una EEPROM estn constituidas por un transistor MOS, que tiene una compuerta
flotante (estructura SAMOS), su estado normal esta cortado y la salida proporciona un 1 lgico.

Aunque una EEPROM puede ser leda un nmero ilimitado de veces, slo puede ser borrada y reprogramada
entre 100.000 y un milln de veces.

Estos dispositivos suelen comunicarse mediante protocolos como I2C, SPI y Microwire. En otras ocasiones, se
integra dentro de chips como microcontroladores y DSPs para lograr una mayor rapidez.

La memoria flash es una forma avanzada de EEPROM creada por el Dr. Fujio Masuoka mientras trabajaba para
Toshiba en 1.984 y fue presentada en la Reunin de Aparatos Electrnicos de la IEEE de 1.984. Intel vio el
potencial de la invencin y en 1.988 lanz el primer chip comercial de tipo NOR.

El Comercio.- Importante medio escrito de comunicacin social de la Repblica del Ecuador.

El Universo.- Importante medio escrito de comunicacin social de la Repblica del Ecuador.

Electrically Erasable Programmable Read Only Memory.-Ver EEPROM.

Electronic Discrete Variable Automatic Computer.-Ver EDVAC.

Electronic mail.-Ver correo electrnico.

Electronic Numerical Integrator And Computer.-Ver ENIAC.

Encriptacin.-Ver cifrado.

Encryption.-Ver cifrado.

ENIAC (Electronic Numerical Integrator And Computer -- Computadora e Integrador Numrico Electrnico).
Computadora utilizada por el Laboratorio de Investigacin Balstica del Ejrcito de los Estados Unidos. Fue la
primera computadora de propsito general. Adems est relacionada con el Colossus, que se us para descifrar
cdigo alemn durante la Segunda Guerra Mundial y destruido tras su uso para evitar dejar pruebas, siendo
recientemente restaurada para un museo britnico. Era totalmente digital, es decir, que ejecutaba sus procesos
y operaciones mediante instrucciones en lenguaje mquina, a diferencia de otras mquinas computadoras
contemporneas de procesos analgicos.

Presentada en pblico el 15 de febrero de 1.946.

La ENIAC fue construida en la Universidad de Pennsylvania por John Presper Eckert y John William Mauchly,
ocupaba una superficie de 167 m y operaba con un total de 17.468 vlvulas electrnicas o tubos de vaco que a
su vez permitan realizar cerca de 5.000 sumas y 300 multiplicaciones por segundo. Fsicamente, la ENIAC tena
17.468 tubos de vaco, 7.200 diodos de cristal, 1.500 rels, 70.000 resistencias, 10.000 condensadores y 5

- 542
Breve glosario de trminos...

millones de soldaduras. Pesaba 27 Tm, meda 2,4 m x 0,9 m x 30 m; utilizaba 1.500 conmutadores
electromagnticos y rels; requera la operacin manual de unos 6.000 interruptores, y su programa o software,
cuando requera modificaciones, demoraba semanas de instalacin manual.

EPN (Escuela Politcnica Nacional del Ecuador).- Prestigiado centro de estudios superiores de la Repblica del
Ecuador, es una de las primeras Politcnicas que se formaron en Latino Amrica. La Escuela Politcnica
Nacional, tambin conocida como EPN es una universidad pblica y el ms antiguo instituto de educacin
superior tcnica del Ecuador. Fue fundado en Quito por el presidente Gabriel Garca Moreno en 1.869.

EPROM (Erasable Programmable Read Only Memory).- EPROM son las siglas de Erasable Programmable
Read-Only Memory (ROM programable borrable). Es un tipo de chip de memoria ROM no voltil inventado por el
ingeniero Dov Frohman. Est formada por celdas de FAMOS (Floating gate Avalanche-injection Metal-Oxide
Semiconductor) o "transistores de puerta flotante", cada uno de los cuales viene de fbrica sin carga, por lo que
son ledos como 0 (por eso, una EPROM sin grabar se lee como 00 en todas sus celdas). Se programan mediante
un dispositivo electrnico que proporciona voltajes superiores a los normalmente utilizados en los circuitos
electrnicos. Las celdas que reciben carga se leen entonces como un 1.

Erasable Programmable Read Only Memory.-Ver EPROM.

Error (bug, insecto, gazapo).-Trmino aplicado a los errores descubiertos al ejecutar un programa informtico.
Fue usado por primera vez en el ao 1.945 por Grace Murray Hooper, una de las pioneras de la programacin
moderna, al descubrir como un insecto (bug) haba daado un circuito de la computadora Mark I.

Escuela Politcnica Nacional del Ecuador.- Ver EPN.

Escuela Superior Militar Eloy Alfaro.-Ver ESMIL.

Escuela Superior Politcnica del Ejrcito.-Ver ESPE.

ESMIL (Escuela Superior Militar Eloy Alfaro).- Prestigiado centro de estudios superiores de la Repblica del
Ecuador donde ser forman los oficiales del Ejrcito Ecuatoriano y algunos de otros pases de Latino Amrica
conforme algunos convenios de intercambio y asistencia en materia militar.

ESPE (Escuela Superior Politcnica del Ejrcito).- Prestigiado centro de estudios superiores de la Repblica del
Ecuador. Tiene su origen en la Escuela de Oficiales Ingenieros, creada el 16 de junio de 1.922. Actualmente
cuenta con sedes en Sangolqu(principal), Latacunga, Santo Domingo de los Tschilas.

Exabyte.- Medida de la informacin que equivale a 260 bytes.

Extended Binary Coded Decimal Interchange Code.-Ver EBCDIC.

F
Fabricacin Asistida por Computadora.-Ver CAM.

FAT (File Allocation Table Tabla de Localizacin de Archivos).- Es un sistema de archivos desarrollado para
MS-DOS, as como el sistema de archivos principal de las ediciones no empresariales de Microsoft Windows hasta
Windows Me.

- 543 -
Tras los pasos de un... Hacker

El formato FAT es relativamente sencillo. A causa de ello, es un formato popular para disquetes admitido
prcticamente por todos los sistemas operativos existentes para la computadora personal. Se utiliza como
mecanismo de intercambio de datos entre sistemas operativos distintos que coexisten en la misma computadora,
lo que se conoce como entorno multiarranque. Tambin se utiliza en tarjetas de memoria flash y dispositivos
similares.

Las implementaciones ms extendidas de FAT tienen algunas desventajas. Cuando se borran y se escriben
nuevos archivos tiende a dejar fragmentos dispersos de stos por todo el soporte. Con el tiempo, esto hace que
el proceso de lectura o escritura sea cada vez ms lento. La denominada desfragmentacin es la solucin a esto,
pero es un proceso largo que debe repetirse regularmente para mantener el sistema de archivos en perfectas
condiciones. FAT tampoco fue diseado para ser redundante ante fallos. Inicialmente solamente soportaba
nombres cortos de archivo: ocho caracteres para el nombre ms tres para la extensin. Tambin carece de
permisos de seguridad: cualquier usuario puede acceder a cualquier archivo.

FBI (Federal Bureau of Investigations -- Bur Federal de Investigaciones).- Tambin conocido como Oficina
Federal de Investigacin es el principal brazo de investigacin del Departamento de Justicia de los Estados
Unidos de Norte Amrica.

Las oficinas centrales del FBI estn ubicadas en Washington, DC, y tambin hay 56 oficinas locales ubicadas en
las principales ciudades de los Estados Unidos, as como ms de 400 organismos residentes en pequeas
ciudades y pueblos en toda la nacin, y ms de 50 oficinas internacionales, llamadas "Diplomacias Legales", en
embajadas de Estados Unidos en todo el mundo.

El artculo 28, del Cdigo de los Estados Unidos, en la seccin 533, autoriza al ministro de Justicia para "
designar a funcionarios para descubrir crmenes... contra los Estados Unidos," y otros estatutos federales dan la
autoridad al FBI y la responsabilidad de investigar crmenes especficos. Actualmente, el FBI tiene jurisdiccin
investigadora sobre las violaciones de ms de 200 categoras de crmenes federales, de esta forma se convierte
en la agencia policial federal ms grande del mundo. El Top Ten de los sospechosos ms buscados ha sido usado
desde 1.949 para notificar a la poblacin acerca de los fugitivos ms peligrosos.

Federal Bureau of Investigations.-Ver FBI.

Fichero.-Ver archivo.

File.- Ver archivo.

File Allocation Table.- Ver FAT.

File Transfer Protocol.-Ver FTP.

Finger (apuntar con el dedo, dedo).- Programa que muestra informacin acerca de un(os) usuario(s)
especifico(s) conectado(s) a un sistema local o remoto. Habitualmente se muestra los nombres y apellidos, hora
de la ultima conexin, tiempo de conexin sin actividad, lnea del terminal y situacin de ste. Puede tambin
mostrar archivos de planificacin y de proyecto del usuario.

Firewall (cortafuegos).- Sistema que se coloca entre una red local (LAN) y la Internet. La regla bsica es
asegurar que todas las comunicaciones entre dicha red y la Internet se realicen conforme a las polticas de
seguridad de la organizacin que lo instala. Adems, estos sistemas suelen incorporar elementos de privacidad,
autentificacin, etc.

- 544 -
Breve glosario de trminos...

Firma digital (digital signature).- Informacin cifrada que identifica al autor de un documento electrnico y
permite conservar la integridad del contenido del mismo, verifica que el contenido no ha cambiado y adems
confirma que pertenece a quien dice ser su emisor.

Firmware (Aplicativos en chip).- Es un bloque de instrucciones de programa para propsitos especficos,


grabado en una memoria de tipo no voltil (ROM, EEPROM, flash, etc.), que establece la lgica de ms bajo nivel
que controla los circuitos electrnicos de un dispositivo de cualquier tipo. Al estar integrado en la electrnica
del dispositivo es en parte hardware, pero tambin es software, ya que proporciona lgica y se dispone en algn
tipo de lenguaje de programacin. Funcionalmente, el firmware es el intermediario (interfaz) entre las rdenes
externas que recibe el dispositivo y su electrnica, ya que es el encargado de controlar a sta ltima para
ejecutar correctamente dichas rdenes externas.

Encontramos firmware en memorias ROM de los sistemas de diversos dispositivos perifricos, como en
monitores de video, unidades de disco, impresoras, etc., pero tambin en los propios microprocesadores, chips
de memoria principal y en general en cualquier circuito integrado.

Muchos de los firmwares almacenados en ROM estn protegidos por Derechos de Autor.

El programa BIOS de una computadora es un firmware cuyo propsito es activar una mquina desde su
encendido y preparar el entorno para la instalacin de un Sistema Operativo complejo, as como responder a
otros eventos externos (botones de pulsacin humana) y al intercambio de rdenes entre distintos
componentes de la computadora.

En un microprocesador el firmware es el que recibe las instrucciones de los programas (tambin conocido como
conjunto de instrucciones) y las ejecuta en la compleja circuitera del mismo, emitiendo rdenes a otros
dispositivos del sistema.

Floppy disk.-Ver disquete.

FORmula TRANslation.- Ver FORTRAN.

FORTH (FOuRTH-generation language).- Lenguaje de programacin de computadoras creado en 1.960.

FORTRAN (FORmula TRANslation, Lenguaje orientado a la resolucin de frmulas, muy usado en aplicaciones
cientficas).- Lenguaje de programacin de computadoras creado en 1.954.

FOuRTH-generation language.- Ver FORTH.

Fred Cohen.- Es un afamado cientfico norteamericano en Ciencias de la Computacin, tambin es conocido


como el padre del concepto de los virus informticos.

Free Software (Software Libre).- Programas desarrollados y distribuidos segn la filosofa de dar al usuario la
libertad de ejecutar, copiar, distribuir, estudiar, cambiar y mejorar dichos programas (Linux es un ejemplo de
esta filosofa). El software libre no es siempre software gratuito (equivocacin bastante habitual que tiene su
origen en que la palabra inglesa free significa ambas cosas).

Freeware (programas de libre distribucin, programas gratuitos, programas de dominio pblico).- Programas
informticos que se distribuyen a travs de la red de forma gratuita.

- 545 -
Tras los pasos de un... Hacker

FTP (File Transfer Protocol-- Protocolo de Transferencia de Archivos).- Protocolo que permite a un usuario de
un sistema acceder o transferir archivos desde y hacia otro sistema en una red. FTP es tambin habitualmente
el nombre del programa que el usuario invoca para ejecutar el protocolo.

FTP annimo (anonymous FTP).- El FTP annimo permite a un usuario de la Internet copiar documentos,
archivos, programas y otros datos contenidos en archivos existentes en numerosos servidores de informacin
sin tener que proporcionar su nombre de usuario y una contrasea (password). Utilizando el nombre especial
de usuario anonymous o a veces ftp, el usuario de la red podr superar los controles locales de seguridad y
podr acceder a archivos pblicos situados en un sistema remoto.

Funcard.- Se trata de una variante de tarjeta electrnica basada en un microcontrolador de Atmel. Esta tarjeta
electrnica esta siendo utilizada para emular sistemas de televisin pagada como SecaMediaguard o Nagra.

G
Gateway (portn, pasarela).- Hoy se utiliza el trmino router en lugar de la definicin original de gateway. Una
pasarela es un programa o dispositivo de comunicaciones que transfiere datos entre redes que tienen funciones
similares pero implantaciones diferentes. No debera confundirse con un convertidor de protocolos.

Gigabyte.- Medida de la informacin que equivale a 230 bytes.

Global System for Mobile communication.-Ver GSM.

GNU.- El proyecto GNU fue iniciado por Richard Stallman con el objetivo de crear un sistema operativo
completamente libre: el sistema GNU.

El 27 de septiembre de 1.983 se anunci pblicamente el proyecto por primera vez en el grupo de noticias
net.unix-wizards. Al anuncio original, siguieron otros ensayos escritos por Richard Stallman como el "Manifiesto
GNU", que establecieron sus motivaciones para realizar el proyecto GNU, entre las que destaca "volver al espritu
de cooperacin que prevaleci en los tiempos iniciales de la comunidad de usuarios de computadoras".

GNU General Public License.- Ver GNU GPL.

GNU GPL (GNU General Public License Licencia Pblica General de GNU).- Es una licencia creada por la Free
Software Foundation en 1.989 (la primera versin), y est orientada principalmente a proteger la libre
distribucin, modificacin y uso de software. Su propsito es declarar que el software cubierto por esta licencia
es software libre y protegerlo de intentos de apropiacin que restrinjan esas libertades a los usuarios.

Existen varias licencias "hermanas" de la GPL, como la licencia de documentacin libre de GNU (GFDL), la Open
Audio License, para trabajos musicales, etc., y otras menos restrictivas, como la MGPL, o la LGPL (Lesser General
Publical License, antes Library General Publical License), que permiten el enlace dinmico de aplicaciones libres
a aplicaciones no libres.

GNU/Linux.-Ver Linux.

- 546 -
Breve glosario de trminos...

Gopher.- Es un servicio de Internet consistente en el acceso a la informacin a travs de mens. La informacin


se organiza de forma arborescente: slo los nodos contienen mens de acceso a otros mens o a hojas, mientras
que las hojas contienen simplemente informacin textual. En cierto modo es un predecesor de la Web, aunque
slo se permiten enlaces desde nodos-mens hasta otros nodos-mens o a hojas, y las hojas no tienen ningn
tipo de hiperenlaces.

El protocolo Gopher fue presentado en 1.991 por la Universidad de Minnesota, y su nombre puede proceder
tanto de la mascota de la universidad (un gopher, una ardilla de tierra), como del coloquial go-fer, ir-por o "ir a
por/buscar informacin".

Aunque los servidores gopher que quedan son testimoniales, el navegador Firefox todava tiene soporte para el
mismo. Internet Explorer lo elimin en 2.002, despus de descubrirse una vulnerabilidad.

GSM (Global System for Mobile communication -- Sistema Global para comunicaciones Mviles).- Sistema
compatible de telefona mvil digital desarrollado en Europa con la colaboracin de operadores,
Administraciones Pblicas y empresas. Permite la transmisin de voz y datos a travs de las redes de celulares.

Guerra Fra.- Se denomina Guerra Fra al enfrentamiento ideolgico que tuvo lugar durante el siglo XX, desde
1.945 (fin de la Segunda Guerra Mundial) hasta el fin de la URSS y la cada del comunismo que se dio entre 1.989
(Cada del Muro de Berln) y 1.991 (golpe de estado en la URSS), entre los bloques occidental-capitalista,
liderado por Estados Unidos, y oriental-comunista, liderado por la Unin Sovitica. Este enfrentamiento tuvo
lugar a los niveles poltico, ideolgico, econmico, tecnolgico, militar e informativo. Ninguno de los dos
bloques tom nunca acciones directas contra el otro, razn por la que se denomin al conflicto "guerra fra".

Estas dos potencias se limitaron el pico actual como "ejes" influyentes de poder en el contexto internacional, y a
la cooperacin econmica y militar con los pases aliados o satlites de uno de los bloques contra los del otro.

Si bien estos enfrentamientos no llegaron a desencadenar una guerra mundial, la entidad y la gravedad de los
conflictos econmicos, polticos e ideolgicos comprometidos, marcaron significativamente gran parte de la
historia de la segunda mitad del siglo XX. Las dos superpotencias deseaban implantar su modelo de gobierno en
todo el planeta. Los lmites temporales del enfrentamiento se ubican entre 1.945 y 1.947 (fin de la Segunda
Guerra Mundial y fin de la posguerra respectivamente) hasta 1.985 (inicio de la Perestroika) y 1.991 (disolucin
de la Unin Sovitica).

Gur (guru).- Persona a la que se considera, no siempre con razn, como el sumo manantial de sabidura sobre
un determinado tema. Nicholas Negroponte es considerado el mximo gur en lo que se refiere a la Internet y la
llamada Sociedad de la Informacin.

GW-BASIC.-Versin de BASIC muy popular en la dcada de 1.980.

H
Hacker(s).- Personaje del underground que tiene el mximo conocimiento en un tema especializado y una
filosofa de vida dedicada a la investigacin y comnmente a compartir estos conocimientos con el fin de que si
existiera algn error en la implementacin de algn sistema, este se pueda corregir. Para algunos organismos
de control y de investigacin del mundo y la prensa es el primer eslabn de una sociedad delictiva en la
Internet. Estos personajes son expertos en sistemas avanzados. En la actualidad se centran en los sistemas
informticos y de comunicaciones. Dominan la programacin y la electrnica para lograr comprender sistemas

- 547 -
Tras los pasos de un... Hacker

tan complejos como la comunicacin mvil. Su objetivo principal es comprender los sistemas y el
funcionamiento de ellos. Les encanta entrar remotamente en computadoras, con el fin de decir aquello de he
estado aqu pero no modifican ni se llevan nada de la computadora atacada.

Normalmente son quienes alertan de un fallo en algn programa comercial y lo comunican al fabricante.
Tambin es frecuente que un buen Hacker sea finalmente contratado por alguna importante empresa de
seguridad.

El perfil del Hacker idneo es aquel que se interesa por la tecnologa, al margen de si lleva gafas, es delgado o
lleva incansablemente encima un telfono celular de grandes proporciones. Emplea muchas horas detrs de
una computadora, pero para nada debe ser un obsesivo de estas mquinas. No obstante puede darse el caso.

Este grupo es el ms experto y menos ofensivo, ya que no pretenden serlo, a pesar de que poseen conocimientos
de programacin, lo que implica el conocimiento de la creacin de Virus o Crack de un software o sistema
informtico.

Hard disk.-Ver disco duro.

Hardware.- Trmino utilizado en las Ciencias de la Computacin para referirse a todo el equipamiento que
conforma una computadora as como a sus dispositivos y otros aparatos que pueden interconectarse con la
misma.

Harvard Mark I.- Ver Mark I.

Hertzio (Smbolo Hz).- El hertzio, hercio o hertz, es la unidad de frecuencia del Sistema Internacional de
Unidades. Proviene del apellido del fsico alemn Heinrich Rudolf Hertz, que descubri la propagacin de las
ondas electromagnticas. El nombre fue establecido por la Comisin Electrotcnica Internacional (IEC por sus
siglas en ingls) en 1.930. Este fue adoptado por la Conferencia General de Pesos y Medidas (CGPM, Confrence
gnrale des poids et mesures) en 1.960, reemplazando el nombre anterior de ciclos por segundo (cps), as
como sus mltiplos relacionados, principalmente kilociclos por segundo (kc/s), megaciclos por segundo (Mc/s)
y el ocasionalmente utilizado kilomegaciclo por segundo (kMc/s) y gigaciclo por segundo (Gc/s). El trmino
ciclo por segundo fue completamente reemplazado por hercio hacia los aos de 1.970.

Heurstica.- Se trata de una tcnica mediante la cual se examina el cdigo de un archivo ejecutable en busca de
funciones o acciones que son generalmente asociadas con la actividad vrica. Este mtodo, utilizado por los
Antivirus, a veces hace saltar la alarma en archivos que no estn realmente infectados.

HF (Historia Ficticia).-Trmino de uso militar que denota el uso de un alias o una operacin para la encubierta
de otra usando nombres y situaciones ficticias.

Historia Ficticia.- Ver HF.

Hoax (bulo, camelo).- Trmino utilizado para denominar a rumores falsos, especialmente sobre virus
informticos inexistentes que se difunden por la red, a veces con mucho xito causando al final casitanto dao
como si se tratase de un virus informtico real.

Hobby (Aficin).- Una aficin (tambin llamado hobby o hobbie, y a veces tambin pasatiempo) es una actividad
cuyo valor reside en el entretenimiento de aquel que lo ejecuta, que algunas veces no busca una finalidad
productiva concreta y se realiza en forma habitual.

- 548 -
Breve glosario de trminos...

Generalmente el trmino aficionado o amateur se aplica a todo aquello que se realiza sin un carcter de ejercicio
profesional, por aficin personal. As, por ejemplo, un deportista amateur es aquel que, en contraste con uno
profesional, practica un deporte por aficin, es decir, sin que ello tenga una motivacin econmica.

Bsicamente, se trata de la persona que hace algo slo por vocacin.

El otro significado de la palabra, tal vez un poco olvidado deriva de la lengua francesa, a su vez derivada de la
raz de la palabra en latn, la cual significa "amar a" o "el amador de". En este sentido un amateur puede ser tan
hbil como un profesional, sin embargo su motivacin es el amor o la pasin por una cierta actividad y no tiene
el fin de ganar dinero por realizarla.

Honeywell (NYSE: HON).- Es una importante corporacin multinacional norte americana que produce una
variedad de productos de consumo, servicios de ingeniera y sistemas aeroespaciales para una amplia variedad
de clientes, desde clientes particulares a grandes corporaciones y gobiernos.

Honeywell es una de las compaas del Fortune 500 con una mano de obra superior a 100,000 empleados. Tiene
su sede en Morristown (Nueva Jersey). La compaa forma parte del ndice burstil Dow Jones.

Honeywell tiene muchas marcas que los consumidores pueden conocer. Algunos de los productos ms
conocidos son la gama para el hogar de termostatos y productos para el automvil vendidos bajo los nombres
de Prestone, Fram y Autolite.

Host (sistema anfitrin, sistema principal / albergar, dar albergue).- Servidor o computadora que, mediante la
utilizacin de los protocolos TCP/IP, permite a los usuarios comunicarse con otros sistemas anfitriones de una
red.

Los usuarios se comunican utilizando programas de aplicacin, tales como el correo electrnico, Telnet, WWWy
FTP. La acepcin verbal (to host) describe el hecho de almacenar algn tipo de informacin en un servidor
ajeno.

HTML (HyperText Markup Language -- Lenguaje de Marcado de Hipertexto).- Es el lenguaje de marcado


predominante para la elaboracin de pginas web. Es usado para describir la estructura y el contenido en forma
de texto, as como para complementar el texto con objetos tales como imgenes. HTML se escribe en forma de
"etiquetas", rodeadas por corchetes angulares (<,>). HTML tambin puede describir, hasta un cierto punto, la
apariencia de un documento y puede incluir un script (por ejemplo Javascript), el cual puede afectar el
comportamiento de navegadores web y otros procesadores de HTML.

HTML tambin es usado para referirse al contenido del tipo de MIME text/html o todava ms ampliamente
como un trmino genrico para el HTML, ya sea en forma descendida del XML (como XHTML 1.0 y posteriores) o
en forma descendida directamente de SGML (como HTML 4.01 y anteriores).

HTTP (HyperText Transfer Protocol).- Es el protocolo usado en cada transaccin de la World Wide Web. HTTP
fue desarrollado por el World Wide Web Consortium y la Internet Engineering Task Force, colaboracin que
culmin en 1.999 con la publicacin de una serie de RFC, el ms importante de ellos es el RFC 2616 que
especifica la versin 1.1. HTTP define la sintaxis y la semntica que utilizan los elementos de software de la
arquitectura web (clientes, servidores, proxies) para comunicarse. Es un protocolo orientado a transacciones y
sigue el esquema peticin-respuesta entre un cliente y un servidor. Al cliente que efecta la peticin (un
navegador web o un spider) se lo conoce como "user agent" (agente del usuario). A la informacin transmitida
se la llama recurso y se la identifica mediante un localizador uniforme de recursos (URL). Los recursos pueden
ser archivos, el resultado de la ejecucin de un programa, una consulta a una base de datos, la traduccin
automtica de un documento, etc.

- 549 -
Tras los pasos de un... Hacker

HTTP es un protocolo sin estado, es decir, que no guarda ninguna informacin sobre conexiones anteriores. El
desarrollo de aplicaciones web necesita frecuentemente mantener estado. Para esto se usan las cookies, que es
informacin que un servidor puede almacenar en el sistema cliente. Esto le permite a las aplicaciones web
instituir la nocin de "sesin", y tambin permite rastrear usuarios ya que las cookies pueden guardarse en el
cliente por tiempo indeterminado.

HyperText Markup Language.- Ver HTML.

HyperText Transfer Protocol.-Ver HTTP.

Hz.-Ver Hertzio.

I
IA.-Ver inteligencia artificial.

IBM (International Business Machines Co., NYSE: IBM, conocida coloquialmente como el Gigante Azul).- Es una
empresa multinacional que fabrica y comercializa herramientas, programas y servicios relacionados con la
informtica. IBM tiene su sede en Armonk (Nueva York, Estados Unidos) y est constituida como tal desde el 15
de junio de 1.911, pero lleva operando desde 1.888.

Con alrededor de 390.000 empleados repartidos en unos 161 pases, esta empresa tiene ingresos de 103.600
millones de dlares en 2.008, IBM es la empresa de servicios basados en tecnologa de informacin ms grande
del mundo y una de las pocas que lleva operando desde el siglo XIX hasta la actualidad.

Tiene una presencia principal en prcticamente todos los segmentos relacionados con las tecnologas de la
informacin; de hecho, en los aos recientes, ms de la mitad de sus ingresos vienen de sus ramas de consultora
y servicios y no de la fabricacin de equipos. Adems es una firme patrocinadora del software libre.

IBM PC.- Primera computadora personal creada en 1.981 por la IBM.

IC.-Ver circuito integrado.

Ingeniera de Software Asistida por Computadora.-Ver CASE.

Instruction Set.-Ver conjunto de instrucciones.

Integrated Circuit.-Ver circuito integrado.

Integrated Electronics Corporation.-Ver Intel Corporation.

Intel Corporation (Integrated Electronics Corporation).- Es el ms grande fabricante de chips semiconductores


principalmente microprocesadores y microcontroladores. La compaa es la creadora de la serie de procesadores
x86, los procesadores ms comnmente encontrados en la mayora de las computadoras personales. Intel fue
fundada el 18 de julio de 1.968 como Integrated Electronics Corporation (aunque un error comn es el de que
"Intel" viene de la palabra intelligence) por los pioneros en semiconductores Robert Noyce y Gordon Moore, y
muchas veces asociados con la direccin ejecutiva y la visin de Andrew Grove.

- 550 -
Breve glosario de trminos...

Inteligencia Artificial (IA, Artificial Intelligence).- Se denomina inteligencia artificial (IA) a la rama de las
Ciencias de la Computacin dedicada al desarrollo de agentes racionales no vivos.

Para explicar la definicin anterior, entindase a un agente como cualquier cosa capaz de percibir su entorno
(recibir entradas), procesar tales percepciones y actuar en su entorno (proporcionar salidas), y entindase a la
[racionalidad] como la caracterstica que posee una eleccin de ser correcta, ms especficamente, de tender a
maximizar un resultado esperado (este concepto de racionalidad es ms general y por ello ms adecuado que
inteligencia para definir la naturaleza del objetivo de esta disciplina).

Por lo tanto, y de manera ms especfica la inteligencia artificial es la disciplina que se encarga de construir
procesos que al ser ejecutados sobre una arquitectura fsica producen acciones o resultados que maximizan una
medida de rendimiento determinada, basndose en la secuencia de entradas percibidas y en el conocimiento
almacenado en tal arquitectura.

Existen distintos tipos de conocimiento y medios de representacin del conocimiento. El cual puede ser
cargado en el agente por su diseador o puede ser aprendido por el mismo agente utilizando tcnicas de
aprendizaje.

Tambin se distinguen varios tipos de procesos vlidos para obtener resultados racionales, que determinan el
tipo de agente inteligente. De ms simples a ms complejos, los cinco principales tipos de procesos son:

Ejecucin de una respuesta predeterminada por cada entrada (anlogas a actos reflejos en seres
vivos).
Bsqueda del estado requerido en el conjunto de los estados producidos por las acciones posibles.
Algoritmos genticos (anlogo al proceso de evolucin de las cadenas de ADN).
Redes neuronales artificiales (anlogo al funcionamiento fsico del cerebro de animales y humanos).
Razonamiento mediante una lgica formal (anlogo al pensamiento abstracto humano).

Tambin existen distintos tipos de percepciones y acciones, pueden ser obtenidas y producidas,
respectivamente por sensores fsicos y sensores mecnicos en mquinas, pulsos elctricos u pticos en
computadoras, tanto como por entradas y salidas de bits de un software y su entorno software.

Varios ejemplos se encuentran en el rea de control de sistemas, planificacin automtica, la habilidad de


responder a diagnsticos y a consultas de los consumidores, reconocimiento de escritura, reconocimiento del
habla y reconocimiento de patrones. Los sistemas de IA actualmente son parte de la rutina en campos como
economa, medicina, ingeniera y la milicia, y se ha usado en gran variedad de aplicaciones de software, juegos
de estrategia como ajedrez de computadora y otros videojuegos.

International Business Machines Co.- Ver IBM.

International Organization for Standardization.-Ver ISO.

Internet.-Conjunto de servidores interconectados a nivel mundial, los mismos que a su vez interconectan redes
particulares y pblicas a travs de los ISP (Internet Service Provider), creando una red de redes, el protocolo
usado para la transmisin de los distintos servicios que presta esta red es el TCP/IP as como todos los
protocolos derivados de este. Tiene principalmente servidores para WWW, FTP, canales de noticias, correo
electrnico, resolucin de nombres de dominio, etc.

Internet Service Provider.-Ver ISP.

- 551 -
Tras los pasos de un... Hacker

Intrprete (Interpreter).- Es un programa que ejecuta un algoritmo escrito en un lenguaje de alto nivel
instruccin por instruccin, en contraposicin al concepto de compilador.

Interpreter.-Ver intrprete.

IPaddress.- Ver direccin IP.

Irdeto.- Sistema de encriptacin de seales digitales, de algunas plataformas de televisin alemanas.


Actualmente los Hackers han dado con el algoritmo de este sistema, consiguiendo as, emular dicho sistema.

ISO (International Organization for Standardization).- La Organizacin Internacional para la Estandarizacin o


ISO (del griego, (isos), 'igual', y cuyo nombre en ingls es International Organization for Standardization),
nacida tras la Segunda Guerra Mundial (23 de febrero de 1.947), es el organismo encargado de promover el
desarrollo de normas internacionales de fabricacin, comercio y comunicacin para todas las ramas industriales
a excepcin de la elctrica y la electrnica. Su funcin principal es la de buscar la estandarizacin de normas de
productos y seguridad para las empresas u organizaciones a nivel internacional.

-La ISO es una red de los institutos de normas nacionales de 160 pases, sobre la base de un miembro por pas,
con una Secretara Central en Ginebra (Suiza) que coordina el sistema. La Organizacin Internacional de
Normalizacin (ISO), con sede en Ginebra, est compuesta por delegaciones gubernamentales y no
gubernamentales subdivididos en una serie de subcomits encargados de desarrollar las guas que contribuirn
al mejoramiento ambiental.

Las normas desarrolladas por ISO son voluntarias, comprendiendo que ISO es un organismo no gubernamental
y no depende de ningn otro organismo internacional, por lo tanto, no tiene autoridad para imponer sus normas
a ningn pas.

Est compuesta por representantes de los organismos de normalizacin (ON) nacionales, que produce normas
internacionales industriales y comerciales. Dichas normas se conocen como normas ISO y su finalidad es la
coordinacin de las normas nacionales, en consonancia con el Acta Final de la Organizacin Mundial del
Comercio, con el propsito de facilitar el comercio, el intercambio de informacin y contribuir con normas
comunes al desarrollo y a la transferencia de tecnologas.

ISP (Internet Service Provider Proveedor de Servicios de la Internet).- Un proveedor de servicios de la Internet
(o ISP, por sus siglas del ingls Internet Service Provider) es una empresa que brinda conexin a la Interneta sus
clientes. Un ISP conecta a sus usuarios a la Interneta travs de diferentes tecnologas como DSL, Cablemdem,
GSM, Dial-up, Wifi, entre otros. Muchos ISP tambin ofrecen servicios relacionados con la Internet, como el
correo electrnico, alojamiento web, registro de dominios, servidores de noticias, etc.

J
Java.- Lenguaje de programacin de computadoras desarrollado en 1.991.

Java Community Process (Proceso de la Comunidad Java).- Establecido en 1.998, es un proceso formalizado el
cual permite a las partes interesadas a involucrarse en la definicin de futuras versiones y caractersticas de la
plataforma Java.

- 552 -
Breve glosario de trminos...

El proceso JCP conlleva el uso de Java Specification Request (JSR), las cuales son documentos formales que
describen las especificaciones y tecnologas propuestas para que sean aadidas a la plataforma Java. Las
revisiones pblicas formales de JSRs son controladas antes de que los JSR se conviertan en final y sean votados
por el Comit Ejecutivo JCP. Un JSR final suministra una implementacin de referencia la cual da una
implementacin libre de la tecnologa en cdigo fuente y un Kit de Compatibilidad de Tecnologa para verificar la
especificacin de la API.

El JCP mismo est descrito por un JSR. Desde 2.006, la versin actual de JCP en uso es 2.6 como se describe por
JSR 215.

Afinales del 2.008, el JCP est compuesto por ms de 1.200 miembros, todos ellos empresas a la vanguardia en el
sector tecnolgico y del desarrollo de software.

John Tardy.-Seudnimo de uno de los creadores de virus.

Joke.- Se trata de una aplicacin que al principio uno cree que est ante la infeccin de un malicioso virus, pero
en realidad se trata de una broma pesada con final feliz.

Kevin Mitnick (alias Cndor, nacido el 6 de agosto de 1.963).- Es uno de los crackers y phreakers ms
famosos de los Estados Unidos de Norte Amrica. Su nickname o apodo fue Cndor. Su ltimo arresto se
produjo el 15 de febrero de 1.995, tras ser acusado de entrar en algunos de los servidores ms seguros de
Estados Unidos. Ya haba sido procesado judicialmente en 1.981, 1.983 y 1.987 por diversos delitos
electrnicos.

El caso de Kevin Mitnick (su ltimo encarcelamiento) alcanz una gran popularidad entre los medios
estadounidenses por la lentitud del proceso (hasta la celebracin del juicio pasaron ms de dos aos), y las
estrictas condiciones de encarcelamiento a las que estaba sometido (se le aisl del resto de los presos y se le
prohibi realizar llamadas telefnicas durante un tiempo por su supuesta peligrosidad).

Tras su puesta en libertad en 2.002, Kevin Mitnick se dedica a la consultora y el asesoramiento en materia de
seguridad, a travs de su compaa Mitnick Security (anteriormente llamada Defensive Thinking).

La vida de Kevin Mitnicky, en especial, la persecucin que condujo a su captura en 1.995, han dado lugar a
multitud de libros y otro material de ficcin. De entre todos destaca la novela Takedown, que relata su ltimo
arresto, y de la cual han sacado una pelcula con el mismo ttulo, Takedown, en el ao 2.000.

Otra novela algo menos conocida es The Fugitive Game, escrita por Jonathan Littman. En ella tambin se narran
los hechos acontecidos los ltimos aos antes de su arresto, aunque desde una perspectiva ms intimista y no
tan enfocada al autobombo por parte de los captores como la anterior.

Uno de los miembros del equipo que contribuy al arresto de Mitnick fue Tsutomu Shimomura, experto en
seguridad informtica e hijo del profesor Osamu Shimomura, uno de los tres ganadores del Premio Nobel de
Qumica 2.008.

- 553 -
Tras los pasos de un... Hacker

Key (clave).- Cdigo de signos convenidos para la transmisin de mensajes secretos o privados. En los sistemas
de televisin pagada, las Keys, son las encargadas de descifrar las seales de televisin.

KeyGenerator.-Se denominan as a los programas creados por los Crackers, los cuales son capaces de generar
las claves de registro de un programa Shareware.

Estos generadores de registro, normalmente muestran el nmero de serie a introducir en la aplicacin que se
quiere registrar. Cada KeyGeneratorresponde a un algoritmo especfico.

Keystroke.-Ver pulsacin.

Keyword (clave de bsqueda, palabra clave).- Conjunto de caracteres que puede utilizarse para buscar una
informacin en un buscador o en un sitio web.

Kilobyte.- Medida de la informacin que equivale a 210 bytes.

L
Lamer(s).- Este grupo de personajes del underground quizs es el que ms nmero de miembros posee y quizs
son los que mayor presencia tienen en la red. Normalmente son individuos con ganas de hacer Hacking, pero
que carecen de cualquier conocimiento.

Habitualmente son individuos que apenas si saben lo que es una computadora, pero el uso de esta y las grandes
oportunidades que brinda la Internet, convierten al nuevo internauta en un obsesivo ser que rebusca y relee
toda la informacin que le fascina y que se puede encontrar en la Internet. Normalmente la posibilidad de
entrar remotamente en otro sistema o la posibilidad de girar un grfico en la pantalla de otra computadora, le
fascinan enormemente.

Este es quizs el grupo que ms peligro acontece en la red ya que ponen en prctica todo el Software de Hackeo
que encuentran en la red. As es fcil ver como un Lamer prueba a diestra y siniestra un programa para
bombardero de correo electrnico, el mismo que enva a algn servidor de correo electrnico miles de mensajes
repetidos hasta colapsar el sistema y despus se mofa autodenominndose Hacker.

Tambin emplean de forma habitual programas sniffers para controlar la red, interceptan tu contrasea y correo
electrnico, despus te envan varios mensajes con una direccin falsa amenazando tu sistema, pero en realidad
no pueden hacer nada ms que cometer el error de decir que poseen el control completo de tu disco duro an
cuando la computadora est desconectada.

LAN (Local Area Network -- Red de rea local).- Una red de rea local, red local o LAN (del ingls local area
network) es la interconexin de varias computadoras y perifricos. Su extensin est limitada fsicamente a un
edificio o a un entorno de 200 metros, o con repetidores podra llegar a la distancia de un campo de 1 kilmetro.
Su aplicacin ms extendida es la interconexin de computadoras personales y estaciones de trabajo en oficinas,
fbricas, etc., para compartir recursos e intercambiar datos y aplicaciones. En definitiva, permite una conexin
entre dos o ms equipos.

El trmino red local incluye tanto el hardware como el software necesario para la interconexin de los distintos
dispositivos y el tratamiento de la informacin.

- 554 -
Breve glosario de trminos...

Large Scale Integration.-Ver LSI.

LCD (Liquid Crystal Display Pantalla de cristal lquido).- Es una pantalla delgada y plana formada por un
nmero de pxeles en color o monocromos colocados delante de una fuente de luz o reflectora. A menudo se
utiliza en dispositivos electrnicos de pilas, ya que utiliza cantidades muy pequeas de energa elctrica.

Lenguaje mquina (assembly language, ensamblador, assembler, cdigo mquina).- Es el sistema de cdigos
directamente interpretable por un circuito microprogramable, como el microprocesador de una computadora o
el microcontrolador de un autmata (un PLC). Este lenguaje est compuesto por un conjunto de instrucciones
que determinan acciones a ser tomadas por la mquina. Un programa de computadora consiste en una cadena
de estas instrucciones de lenguaje de mquina (ms los datos). Estas instrucciones son normalmente
ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos.
El lenguaje de mquina es especfico de cada mquina o arquitectura de la mquina, aunque el conjunto de
instrucciones disponibles pueda ser similar entre ellas.

Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan con dos nicos niveles de
tensin. Dichos niveles, por abstraccin, se simbolizan con el cero, 0, y el uno, 1, por eso el lenguaje de mquina
slo utiliza dichos signos. Esto permite el empleo de las teoras del lgebra booleana y del sistema binario en el
diseo de este tipo de circuitos y en su programacin.

Una visin tpica de la arquitectura de computadores como una serie de capas de abstraccin: hardware,
firmware, ensamblador, kernel, sistema operativo y aplicaciones.

Claude Elwood Shannon, en su Analysis of Relay and Switching Circuits, y con sus experiencias en redes de
conmutacin, sent las bases para la aplicacin del lgebra de Boole a las redes de conmutacin.

Una red de conmutacin es un circuito de interruptores elctricos que al cumplir ciertas combinaciones
booleanas con las variables de entrada, define el estado de la salida. Este concepto es el ncleo de las puertas
lgicas, las cuales son, por su parte, los ladrillos con que se construyen sistemas lgicos cada vez ms complejos.

Shannon utilizaba el rel como dispositivo fsico de conmutacin en sus redes. El rel, a igual que una lmpara
elctrica, posee dos estados: 1 0, esto es, est activado, encendida, o est desactivado, apagada.

El desarrollo tecnolgico ha permitido evolucionar desde las redes de rels electromagnticos de Shannon a
circuitos con tubos de vaco, luego a redes transistorizadas, hasta llegar a los modernos circuitos integrados cuya
cspide lo forman los circuitos microprogramados.

Licencia Pblica General de GNU.-Ver GNU GPL.

Liquid Crystal Display.-Ver LCD.

Linux (Linux, GNU Linux).- Es uno de los trminos empleados para referirse a la combinacin del ncleo o kernel
libre similar a Unix denominado Linux, que es usado con herramientas de sistema GNU. Su desarrollo es uno de
los ejemplos ms prominentes de software libre; todo su cdigo fuente puede ser utilizado, modificado y
redistribuido libremente por cualquiera bajo los trminos de la GPL (Licencia Pblica General de GNU) y otra
serie de licencias libres.

A pesar de que Linux (ncleo) es, en sentido estricto, el sistema operativo, parte fundamental de la interaccin
entre el ncleo y el usuario (o los programas de aplicacin) se maneja usualmente con las herramientas del
proyecto GNU o de otros proyectos como GNOME. Sin embargo, una parte significativa de la comunidad, as

- 555 -
Tras los pasos de un... Hacker

como muchos medios generales y especializados, prefieren utilizar el trmino Linux para referirse a la unin de
ambos proyectos.

A las variantes de esta unin de programas y tecnologas, a las que se les adicionan diversos programas de
aplicacin de propsitos especficos o generales se las denomina distribuciones. Su objetivo consiste en ofrecer
ediciones que cumplan con las necesidades de un determinado grupo de usuarios. Algunas de ellas son
especialmente conocidas por su uso en servidores y supercomputadoras donde tiene la cuota ms importante del
mercado. Segn un informe de IDC, GNU/Linux es utilizado por el 78% de los principales 500 servidores del
mundo, otro informe le da una cuota de mercado de 89% en los 500 mayores supercomputadores. Con menor
cuota de mercado el sistema GNU/Linux tambin es usado en el segmento de las computadoras de escritorio,
porttiles, computadoras de bolsillo, telfonos mviles, dispositivos empotrados, videoconsolas y otros
dispositivos.

LISP (LISt Processing).- Lenguaje de programacin de computadoras creado en 1.959.

LISt Processing.-Ver LISP.

Local Area Network.-Ver LAN.

Lgica.- La lgica es una ciencia formal y una rama de la filosofa que estudia los principios de la demostracin e
inferencia vlida. La palabra deriva del griego antiguo (logike), que significa "dotado de razn,
intelectual, dialctico, argumentativo", que a su vez viene de (logos), "palabra, pensamiento, idea,
argumento, razn o principio".

LOGO.- Lenguaje de programacin de computadoras creado en 1.975.

lORdByte.- Personaje que encarna en la historia a un experto en programacin a bajo nivel, experto en lenguajes
mquina y manejadores de dispositivos.

LSI (Large Scale Integration, integracin a gran escala).-Ver circuito integrado.

M
MAC (Media Access Control -- Control de Acceso al Medio).- En redes de computadoras la direccin MAC es un
identificador de 48 bits (6 bloques hexadecimales) que corresponde de forma nica a una ethernet de red. Se
conoce tambin como la direccin fsica en cuanto a identificar dispositivos de red. Es individual, cada
dispositivo tiene su propia direccin MAC determinada y configurada por el IEEE (los ltimos 24 bits) y el
fabricante (los primeros 24 bits) utilizando el OUI. La mayora de los protocolos que trabajan en la capa 2 del
modelo OSI usan una de las tres numeraciones manejadas por el IEEE: MAC-48, EUI-48, y EUI-64 las cuales han
sido diseadas para ser identificadores globalmente nicos. No todos los protocolos de comunicacin usan
direcciones MAC, y no todos los protocolos requieren identificadores globalmente nicos.

Las direcciones MAC son nicas a nivel mundial, puesto que son escritas directamente, en forma binaria, en el
hardware en su momento de fabricacin. Debido a esto, las direcciones MAC son a veces llamadas "Direcciones
Quemadas Dentro" (BIA, por las siglas de Burned-in Address).

Si nos fijamos en la definicin como cada bloque hexadecimal son 8 dgitos binarios (bits), tendramos:

- 556 -
Breve glosario de trminos...

6*8=48 bits nicos

En la mayora de los casos no es necesario conocer la direccin MAC, ni para montar una red domstica, ni para
configurar la conexin a la internet. Pero si queremos configurar una red wifi y habilitar en el punto de acceso
un sistema de filtrado basado en MAC (a veces denominado filtrado por hardware), el cual solo permitir el
acceso a la red a adaptadores de red concretos, identificados con su MAC, entonces necesitamos conocer dicha
direccin. Dicho medio de seguridad se puede considerar como un refuerzo de otros sistemas de seguridad, ya
que tericamente se trata de una direccin nica y permanente, aunque en todos los sistemas operativos hay
mtodos que permiten a las tarjetas de red identificarse con direcciones MAC distintas de la real.

La direccin MAC es utilizada en varias tecnologas entre las que se incluyen:

Ethernet
802.3 CSMA/CD
802.5 o redes en anillo a 4 Mbps o 16 Mbps Token Ring
802.11 redes inalmbricas (WIFI).
ATM

Mac.- Abreviatura de Macintosh.

Macintosh (abreviado Mac).- Es el nombre con el que actualmente nos referimos a cualquier computadora
personal diseada, desarrollada, construida y comercializada por Apple Inc. El Macintosh 128Kfue lanzado el 24
de enero de 1.984. Fue la primera computadora personal que se comercializ exitosamente, que usaba una
interfaz grfica de usuario (GUI) y un mouse en vez del estndar de esa poca: la interfaz por lnea de comandos.
La lnea de produccin de Macs en la actualidad vara desde el bsico Mac mini de escritorio hasta los servidores
de rango medio como Xserve. Los sistemas Mac tienen como objetivo principal de mercado el hogar, la
educacin y la creatividad profesional. La produccin de Mac est basada en un modelo de integracin vertical
en los que Apple proporciona todos los aspectos de su hardware y crea su propio sistema operativo que viene
preinstalado en todas las Macs. Esto contrasta con las PC preinstalados con Microsoft Windows, donde un
vendedor proporciona el sistema operativo y mltiples vendedores crean el hardware. En ambos casos, el
hardware permite el funcionamiento de otros sistemas operativos: las Mac modernas, as como las PC son
capaces de soportar sistemas operativos como Linux, FreeBSD y Windows, ste ltimo gracias al software Apple
Boot Camp o a otros softwares de virtualizacin como por ejemplo Parallels Desktop o VMWare Fusion. En la
actualidad tambin es posible modificar el sistema operativo de Apple para hacerlo compatible con la mayora
de hardware existente; es el llamado movimiento OSx86.

Los primeros Macintosh estaban basados en los microprocesadores de la familia Motorola MC68000, de
tecnologa CISC. En marzo de 1.994, Apple introdujo en la gama Macintosh los chips PowerPC del Consorcio
Apple/IBM/Motorola, que suponan el cambio a la tecnologa RISC. En el 2.006 Apple inici la transicin desde la
lnea de PowerPC a los procesadores Intel con arquitectura x86. Los Macs actuales usan la serie de
microprocesadores Intel Core 2 Duo, Intel Core i5, Intel Xeon e Intel Core i7. Todos los modelos de Mac actuales
vienen con una versin nativa de la ltima versin de Mac OS X, que desde el 28 de agosto de 2.009 est en su
versin Mac OS X v10.6 Snow Leopard.

Mail bombing (bombardeo postal).- Envo indiscriminado y masivo de mensajes de correo electrnico. En la
actualidad existe en la Internet buena cantidad de aplicaciones que con solo pulsar un botn, permiten hacer
Mailbombing.

Mail Server.- Ver Servidor de Correo Electrnico.

- 557 -
Tras los pasos de un... Hacker

Malware.- Los malware son todo tipo de software que implica una funcin maliciosa, como lo son los virus
informticos, los Caballos de Troya o las bombas lgicas por citar algunos.

Manejador.-Ver controlador.

Manufactura Asistida por Computadora.-Ver CAM.

Mark I (Harvard Mark I).- Fue la primera computadora electromecnica construida en la Universidad Harvard
por Howard H.Aiken en 1.944, con la subvencin de IBM. Tena 760.000 piones y 800 kilmetros de cable y se
basaba en la mquina analtica de Charles Babbage.

La computadora Mark I empleaba seales electromagnticas para mover las partes mecnicas. Esta mquina
era lenta (tomaba de 3 a 5 segundos por clculo) e inflexible (la secuencia de clculos no se poda cambiar);
pero ejecutaba operaciones matemticas bsicas y clculos complejos de ecuaciones sobre el movimiento
parablico de proyectiles.

Funcionaba con rels, se programaba con interruptores y lea los datos de cintas de papel perforado.

Mquina Analtica.- Primera computadora mecnica creada por el matemtico Charles Babbage en 1.834.

Mquina Diferencial.- Primera calculadora mecnica creada por el matemtico Charles Babbage en 1.830.

Massachusetts Institute of Technology.-Ver MIT.

MASM (Microsoft Macro Assembler, Microsoft Assembly Language).- Es un ensamblador para la familia x86 de
microprocesadores. Fue producido originalmente por Microsoft para el trabajo de desarrollo en su sistema
operativo MS-DOS, y fue durante cierto tiempo el ensamblador ms popular disponible para ese sistema
operativo. El MASM soport una amplia variedad de facilidades para macros y programacin estructurada,
incluyendo construcciones de alto nivel para bucles, llamadas a procedimientos y alternacin (por lo tanto,
MASM es un ejemplo de un ensamblador de alto nivel). Versiones posteriores agregaron la capacidad de
producir programas para los sistemas operativos Windows. MASM es una de las pocas herramientas de
desarrollo de Microsoft para las cuales no haba versiones separadas de 16 bits y 32 bits.

Masouf Khafir.-Seudnimo de uno de los creadores de virus.

Master Boot Record.-Ver MBR.

MBR (Master Boot Record, Tabla de particiones).- Es el sector de arranque propio de un disco duro, dentro del
cual se define la estructura del resto de la informacin contenida en el mismo. En este sentido, cada disco duro
independientemente del nmero de particiones que posea, contiene un nico MBR, aunque cada unidad ctese
C: D: E: tiene su propio sector lgico de arranque (bootsector).

MD Lock.-Algoritmo de cifrado de flujo simtrico desarrollado por Nstor Marroqun Carrera en 1.999, ganador
del III Premio Alcatel a la Innovacin Tecnolgica en Amrica Latina en el ao 2.000. Predecesor del NMC
Stream.

MD Technology S.A.- Empresa ecuatoriana fundada en 1.999 para la comercializacin de programas de


computacin, en especial el Check Program y el MD Locky sus aplicaciones.

Media Access Control.- Ver MAC.

- 558 -
Breve glosario de trminos...

Megabyte.- Medida de la informacin que equivale a 220 bytes.

Mensaje Cifrado.-Ver cifrado.

Mensaje Descifrado.-Ver descifrado.

Mtodo de clculo.- Procedimiento matemtico similar a un algoritmo para la solucin de algn problema en
particular.

Microcontrolador.- Es un circuito integrado o chip que incluye en su interior las tres unidades funcionales de
una computadora: unidad central de procesamiento, memoria y unidades de E/S (entrada/salida).

Microprocesador.-Ver CPU.

Microprocesadores Intel x86.- Familia de procesadores fabricados por Intel desde 1.972, responden a una
arquitectura CISC.

Microsoft Corporation (NASDAQ: MSFT).- Es una empresa multinacional estadounidense, fundada en 1.975
por Bill Gates y Paul Allen. Dedicada al sector de la informtica, con sede en Redmond, Washington, Estados
Unidos. Microsoft desarrolla, fabrica, licencia y produce software y equipos electrnicos. Siendo sus productos
ms usados el sistema operativo Microsoft Windows y la suite Microsoft Office, los cuales tienen una importante
posicin entre las computadoras personales. Con una cuota de mercado cercana al 90% para Office en 2.003 y
para Windows en el 2.006. Siguiendo la estrategia de Bill Gates de "tener una estacin de trabajo que funcione
con nuestro software en cada escritorio y en cada hogar".

La compaa tambin suele ser nombrada como MS, por sus iniciales en el NASDAQ: (NASDAQ: MSFT) o
simplemente como Redmond, debido a la gran influencia que tiene sobre la localidad de su centro de
operaciones. Tiene 93.000 empleados en 102 pases diferentes y cont con unos ingresos de 51.120 millones de
dlares durante el ao 2007.

Fundada para desarrollar y vender intrpretes de BASIC para el Altair 8800, a mediados de los 80 consigui
dominar el mercado de las computadoras personales con el sistema operativo MS-DOS. La compaa inici una
Oferta Pblica de Venta en el mercado de valores en 1.986, la cual, debido a la subida de cotizacin de las
acciones, llev a 4 empleados a convertirse en multimillonarios y a 12.000 en millonarios.

Durante su historia, ha sido objeto de crticas, como acusaciones de realizar prcticas monopolsticas que la han
llevado ante la Comisin Europea y el Departamento de Justicia de los Estados Unidos.

Microsoft afianz su posicin en otros mercados como el de sistemas operativos y suites de oficina, con recursos
como la red de televisin por cable MSNBC, el portal de Internet MSN, y la enciclopedia multimedia Microsoft
Encarta, producto y servicio cancelado por la empresa a primeros de 2.009 debido a la competencia de la libre
Wikipedia. La compaa tambin comercializa hardware como el ratn de Microsoft y productos de
entretenimiento casero como Xbox, Xbox 360, Zune y WebTV. Microsoft ha dado soporte a sus usuarios a travs
de Usenet en grupos de noticias y en la Internet, tambin premia con la categora de Microsoft MVP (Most
Valuable Professional) a aquellos voluntarios que demuestran ser tiles en la asistencia a los clientes. Su web
oficial es una de las pginas ms visitadas de la red, recibiendo por da ms de 2'4 millones de visitas nicas
segn datos de Alexa, que situ el 11 de mayo de 2.008 a Microsoft.com como la 14 pgina web con ms visitas
del mundo.

Microsoft Assembly Language.- Ver MASM.

- 559 -
Tras los pasos de un... Hacker

Microsoft Macro Assembler.-Ver MASM.

Microsoft Office.- Producto de Microsoft principalmente integrado de un procesador de palabras denominado


Word, una hoja de clculo llamada Excel, un motor de base de datos bautizado Access y un presentador de
diapositivas cuyo nombre es PowerPoint.

Microsoft Windows.- Ver Windows.

Mimetizado.- Es la accin de tomar el color, forma o textura del ambiente con el fin de ocultarse. El mimetismo
(del gr. , imitable) es una habilidad que ciertos seres vivos poseen para asemejarse a otros seres de su
entorno (con los que no guarda relacin) y a su propio entorno para obtener alguna ventaja funcional.

El objeto del mimetismo es engaar a los sentidos de los otros animales que conviven en el mismo hbitat,
induciendo en ellos una determinada conducta. Los casos ms conocidos afectan a la percepcin visual, pero
tambin hay ejemplos de mimetismo auditivo, olfativo o tctil.

Probablemente el ejemplo ms popular es el del camalen, cuyos colores de la piel cambian segn el entorno
donde se desplace. Aunque algunos cientficos consideran que no es un verdadero mimetismo sino una
coloracin crptica.

MIT (Massachusetts Institute of Technology, Instituto Tecnolgico de Massachusetts).- Es una de las principales
instituciones dedicadas a la docencia y a la investigacin en Estados Unidos, especialmente en ciencia, ingeniera
y economa. El Instituto est situado en Cambridge, Massachusetts y cuenta con numerosos premios Nobel entre
sus profesores y antiguos alumnos. El MIT es considerado como una de las mejores universidades de ciencia e
ingeniera del mundo.

MIX.- Computadora terica que ejecuta un lenguaje ensamblador de igual nombre, creado por Donald E. Knuth
para explicar la implementacin de los algoritmos descritos en su obra The Art of Computer Programming.

Modchip.- El Modchip es un microcontrolador que instalado en una consola Playstation, permite leer sin
problemas juegos piratas. Estos juegos se denominan piratas porque son copias alteradas de un juego original.
El Modchip identifica el disco pirata y entrega a su salida el cdigo de un disco original. Este cdigo se
denomina boot de arranque del disco.

MOSC.- Los Hackers denominan as, al arte de modificar una tarjeta de acceso inteligente. El MOSC permite a los
Hackers, recuperar el funcionamiento de una tarjeta de televisin pagada que ha sido dada de baja. El MOSC
tambin permite modificar los paquetes contratados en las plataformas digitales. Actualmente los Hackers son
capaces de hacer MOSC en tarjetas de sistemas Irdeto, Nagra y SecaMediaguard.

Motorola (NYSE: MOT).- Es una empresa estadounidense especializada en la electrnica y las


telecomunicaciones, establecida en Schaumburg, Illinois, un suburbio de Chicago.

Mouse.- Ver ratn.

Mvil.-Ver telfono celular.

Mr. Stealth.- Personaje que encarna en la historia al protagonista de la misma, un experto en informtica,
electrnica y criptologa.

MSX.- Estndar de la arquitectura de computadoras para el hogar orientado a que varios fabricantes de
computadoras y perifricos puedan intercambiar programas y dispositivos, muy popular en la dcada de 1.980.

- 560 -
Breve glosario de trminos...

MSX BASIC.-Versin de BASIC muy popular en la dcada de 1.980, utilizado por todos los equipos que fueran
diseados bajo el estndar MSX.

MSX-DOS.- Sistema operativo muy popular en la dcada de 1.980, utilizado por todos los equipos que fueran
diseados bajo el estndar MSX, muy parecido en sus comandos al popular MS-DOS.

N
Nagravision.- Sistema de cifrado empleado por la plataforma digital Via Digital. Su creador, Kudelsky, es
tambin el creador del sistema Nagra empleado por C+ terrestre. Ambos sistemas estn Hackeados en la
actualidad. Los Hackers recientemente han obtenido el algoritmo de dichos sistemas que en ambos casos es
totalmente diferente. Nagra analgico emplea un mtodo TripleDES y Nagra Digital un mtodo RSA.

NASA (National Aeronautics and Space Administration, Administracin Nacional de Aeronutica y del Espacio).
NASA son las siglas, en ingls, para la Administracin Nacional de Aeronutica y del Espacio (National
Aeronautics and Space Administration) de los Estados Unidos de Norte Amrica, que es la agencia
gubernamental responsable de los programas espaciales.

National Aeronautics and Space Administration.-Ver NASA.

National Computer Security Association.-Ver NCSA.

National Science Foundation's Network.-Ver NSFNet.

Navegador.-Ver browser.

NCR.- La corporacin NCR es una TIC especializada en soluciones para la venta al por menor y la industria
financiera. Sus principales productos son: cajas registradoras (puntos de venta en supermercados), cajeros
automticos, sistemas procesadores de cheques (es decir, los leen e interpretan), escneres de cdigos de
barras, consumibles para empresas y bases de datos a gran escala. Es adems una de las primeras empresas en
cuanto a servicios de mantenimiento para productos tecnolgicos.

La compaa se fund en 1.884 y fue comprada AT&T en 1.991. Como resultado de una reestructuracin de
AT&T en 1.996, NCR volvi a ser una compaa independiente. En aquella reestructuracin tambin se separ
de AT&T Lucent Technologies. NCRfue la nica compaa que retom su nombre original.

El 26 de enero del ao 2.006 la compaa report unos beneficios de 6.028 millones de dlares.

NCSA (National Computer Security Association).- Acrnimo de uno de los organismos en los Estados Unidos de
Norte Amrica ms conocidos e importantes en el campo de la lucha contra los virus informticos.

La NCSA esta especializada en virus informticos, la evolucin de los mismos y el estudio para combatir a estos
grmenes de la era de la informtica.

Newbie.- Es un novato o ms particularmente es aquel que navega por la Internet, tropieza con una pgina de
Hacking y descubre que existe un rea de descarga de buenos programas de Hackeo. Despus se baja todo lo
que puede y empieza a trabajar con los programas.

- 561 -
Tras los pasos de un... Hacker

Al contrario que los Lamers, los Newbies aprenden el Hacking siguiendo todos los cautos pasos para lograrlo y
no se mofa de su logro, si no que aprende.

Nibble.- Conjunto de 4 bits que representan a un dgito hexadecimal.

Nickname (alias, apodo).- Nombre usualmente corto y fcil de recordar que se utiliza en lugar de otro nombre
usualmente largo y difcil de recordar.

NMC Research Ca. Ltda.- Empresa ecuatoriana fundada en 1.996 por Nstor Marroqun Carrera (NMC),
destinada principalmente al anlisis, diseo, implementacin y mantenimiento de programas de computadoras
as como su comercializacin. Empresa especializada en temas de seguridad informtica y aplicaciones para uso
militar.

NMCSCS (NMCSistema de Comunicaciones Seguro, Secure Communication System).- Programa desarrollado en


2.006, orientado a la proteccin de documentos personales, as como a su intercambio de manera segura entre
dos o ms usuarios a travs de cualquier medio de comunicacin, utilizando tcnicas de cifrado simtrico
propietario conocido como algoritmo NMCStream, y tcnicas de cifrado asimtrico para el intercambio de claves
(RSA).

NMC Stream.- Algoritmo de cifrado de flujo simtrico desarrollado por Nstor Marroqun Carrera en 2.003,
llevando a la prctica la teora criptogrfica del criptosistema invulnerable o cifrador de Vernam. Algoritmo
implementado y optimizado para la plataforma Windows x86 por Galo Vinuesa Snchez, desarrollador y experto
informtico para la NMC Research Ca. Ltda.

Nokia.- Actualmente es el primer fabricante de telfonos mviles del mundo, adems de una de las principales
empresas del sector de las telecomunicaciones. Con sede en Keilaniemi de Espoo (Finlandia), Nokia es una de
las marcas ms conocidas dentro y fuera de la Unin Europea.

Nokia tambin produce infraestructura para redes de telefona mvil y otros equipamientos de
telecomunicaciones para aplicaciones como la telefona tradicional por voz, RDSI, acceso a la internet por banda
ancha, radio profesional mvil, voz sobre IP y una lnea de receptores de satlite. Nokia provee equipo de
comunicacin mvil para todo mercado y protocolos de comunicaciones mviles incluyendo: TDMA, GSM,
CDMA y W-CDMA.

Nombre de usuario.-Ver username.

Nowhere Man.-Seudnimo de uno de los creadores de virus.

NSFNet (National Science Foundation's Network).- La NSFNET comenz con una serie de redes dedicadas a la
comunicacin de la investigacin y de la educacin. Fue creada por el gobierno de los Estados Unidos (a travs
de la National Science Foundation), y fue reemplazo de ARPANET como backbone de la Internet. Desde entonces
ha sido reemplazada por las redes comerciales.

O
Octeto.-Ver byte.

Olfateadores.- Versniffers.

- 562 -
Breve glosario de trminos...

Operador del sistema.-Ver sysop.

Ordenador.-Ver computadora.

Orlando.- Personaje que encarna en la historia a un experto en programacin de aplicaciones en especial en el


diseo e implementacin de interfaces hombre mquina, que permiten un fcil uso de los recursos de un
sistema.

Overflow (Desbordamiento).- Cuando el resultado de sumar dos o ms nmeros (hablando en sistema numeral
decimal) es igual o mayor que 10 (diez), se coloca la primera cifra bajo la columna que se est sumando y la
segunda cifra marca el desbordamiento y se aade a la siguiente columna a la izquierda. En otros pases
tambin es conocido como reserva. Ejemplo: en la suma 6+8 = 14, la cifra 1, marca el acarreo y debe sumarse a
la siguiente columna de acuerdo al valor relativo de la misma; en este caso es cero, por tanto, puede expresarse
como 0 + 1 = 1.

En informtica es motivo de fuertes precauciones para evitar su aparecimiento o tratarlo si aparece. Al realizar
una operacin aritmtica en binario, si el bit ms alto resulta conllevar un acarreo, no hay forma de representar
una cifra ms para ese acarreo.

Por ejemplo, si sumamos dos nmeros de 32 bits y solo podemos representar su resultado en 32 bits pero el
resultado conlleva un acarreo, necesitaramos 33 bits para poder representarlo, pero como esto no es posible,
ese valor se pierde dando lugar a un error de clculo.

P
Packet.-Ver paquete.

Palabra clave.- Verkeyword.

Pantalla de cristal lquido.-Ver LCD.

Paquete (packet).- Dcese de la unidad de datos que se enva a travs de una red. En la Internet la informacin
transmitida es dividida en paquetes que se reagrupan en su destino al ser recibidos.

Parche.- Ver patch.

PASCAL.- Lenguaje de programacin de computadoras creado en 1.970. Matemtico francs que dise la
primera sumadora mecnica a la que llam PASCALINA.

PASCALINA.- Primera sumadora mecnica creada en 1.642 por el matemtico francs Blaise Pascal.

Password (contrasea, palabra de paso).- Conjunto de caracteres alfanumricos que permite a un usuario el
acceso a un determinado recurso o la utilizacin de un servicio dado.

Patch (Parche).- Es una aplicacin bajo DOS o Windows que permite modificar el cdigo a una aplicacin
Shareware. El cdigo modificado permite ejecutar dicha aplicacin saltndose las protecciones del Software.

Pay-Per-View.-Ver PPV.

- 563 -
Tras los pasos de un... Hacker

Payload o Payload Activation Date.- Los Payloads se conocen como funciones de activacin de la carga
explosiva. Los Payloads provienen o se emplean mucho en el campo militar de all la palabra de activar la carga
explosiva. La funcin Payload aplicada a un virus informtico, implica que este se activar independientemente
de la fecha en la que se infect la PC. De esta forma se reconoce que una computadora puede infectarse un da
distinto al de la reproduccin del virus. Dicha activacin puede ir en funcin de la fecha o por un determinado
nmero de rdenes o acciones de la PC. Una vez alcanzado dichos parmetros de activacin, el virus hace efecto
en la PC.

PC (Personal Computer, Computadora Personal).- Computadora de uso general orientada a satisfacer las
necesidades computacionales de un usuario en su casa u oficina. Viene configurada por lo general con un
monitor, teclado, ratn de computadora, una impresora y la computadora propiamente dicha.

Personal Computer.-Ver PC.

Petabyte.- Medida de la informacin que equivale a 250 bytes.

Peter Norton.- Famoso desarrollador norteamericano de herramientas para recuperacin de datos y


desfragmentacin de discos.

PGP (Pretty Good Privacy--Privacidad Bastante Buena, Privacidad de las Buenas).- Conocido programa de libre
distribucin, escrito por Phil Zimmermann, que impide, mediante tcnicas de criptografa, que archivos y
mensajes de correo electrnico puedan ser ledos por otros. Puede tambin utilizarse para firmar digitalmente
un documento o un mensaje, realizando as la autentificacin del autor.

Phreaker(s).- Este grupo de personajes del underground es bien conocido en la red por sus conocimientos en
telefona. Un Phreaker posee conocimientos profundos de los sistemas de telefona, tanto terrestres como
mviles. En la actualidad tambin poseen conocimientos de tarjetas prepago, ya que la telefona celular las
emplea habitualmente.

Sin embargo es, en estos ltimos tiempos, cuando un buen Phreaker debe tener amplios conocimientos sobre
informtica, ya que la telefona celular o el control de centralitas es la parte primordial a tener en cuenta y/o
emplean la informtica para su procesado de datos.

Piccard.- Las piccards son tarjetas electrnicas basadas en el chip de Microchip 16F84, con las cuales los Hackers
han conseguido emular diferentes sistemas de televisin pagada. En 1.994 los Hackers rompieron el sistema de
Videocrypt con este tipo de tarjetas. En la actualidad, estn siendo empleadas para CSD en toda Europa.

Pixel (Picture element).- Un pxel o pixel, plural pxeles (acrnimo del ingls picture element, "elemento de
imagen") es la menor unidad homognea en color que forma parte de una imagen digital, ya sea esta una
fotografa, un fotograma de vdeo o un grfico.

Ampliando lo suficiente una imagen digital (zoom), por ejemplo en la pantalla de una computadora, pueden
observarse los pxeles que componen la imagen. Los pxeles aparecen como pequeos cuadrados o rectngulos
en color, en blanco o en negro, o en matices de gris. Las imgenes se forman como una matriz rectangular de
pxeles, donde cada pxel forma un rea relativamente pequea respecto a la imagen total.

En las imgenes de mapa de bits o en los dispositivos grficos cada pxel se codifica mediante un conjunto de
bits de longitud determinada (la llamada profundidad de color); por ejemplo, puede codificarse un pxel con un
byte (8 bits), de manera que cada pxel admite 256 variaciones (28 variaciones con repeticin de 2 valores
posibles en un bit tomados de 8 en 8). En las imgenes de color verdadero, se suelen usar tres bytes para definir

- 564 -
Breve glosario de trminos...

un color; es decir, en total podemos representar un total de 224 colores, que suman 16.777.216 opciones de
color (32 bits son los mismos colores que 24 bits, pero tiene 8 bits ms para transparencia).

Para poder transformar la informacin numrica que almacena un pxel en un color, hemos de conocer, adems
de la profundidad y brillo del color (el tamao en bits del pxel), el modelo de color que estamos usando. Por
ejemplo, el modelo de color RGB (Red-Green-Blue) permite crear un color componiendo tres colores bsicos: el
rojo, el verde y el azul. De esta forma, en funcin de la cantidad de cada uno de ellos que usemos veremos un
resultado u otro. Por ejemplo, el color amarillo se obtiene mezclando el rojo y el verde. Las distintas
tonalidades del amarillo se obtienen variando la proporcin en que intervienen ambas componentes. En el
modelo RGB es frecuente que se usen 8 bits para representar la proporcin de cada una de las tres componentes
primarias. De esta forma, cuando una de las componentes vale 0, significa que esta no interviene en la mezcla y
cuando vale 255 (281) significa que interviene aportando el mximo de ese tono.

La mayor parte de los dispositivos que se usan con una computadora (monitor, escner, etc.) usan el modelo
RGB.

Un pxel alcanza los 8 bits (28 colores), 24 bits (224 colores) o 48 bits (240 colores), este ltimo valor de precisin
slo se obtiene con escneres o cmaras de gama alta (que usen formato raw o tiff, no en jpg).

Polimorfismo.- Se trata de la capacidad que poseen algunos tipos de virus informticos, que permite mediante
esta tcnica, modificar la forma del propio virus cada vez que se reproduce. Con esta tcnica se logra crear
miles de versiones diferentes del mismo virus en tan solo unas horas. Esto implica, que el antivirus apenas
puede detectarlo con seguridad. Para ello un virus polimrfico, cuenta con una pequea cabecera que se
modifica en cada infeccin. El resto del cdigo no se altera, sino que simplemente se cifra para ocultar su
verdadero cdigo. El cdigo cifrado vara de una infeccin a otra, mientras que la cabecera siempre acta como
codificador/decodificador del propio virus.

Pontificia Universidad Catlica del Ecuador.-Ver PUCE.

POP (Post Office Protocol -- Protocolo de la oficina de correo).- En informtica se utiliza el Post Office Protocol
(POP3, Protocolo de la oficina de correo) en clientes locales de correo para obtener los mensajes de correo
electrnico almacenados en un servidor remoto. Es un protocolo de nivel de aplicacin en el Modelo OSI.

Post Office Protocol.-Ver POP.

PPV (Pay-Per-View, pago por pase, pago por visin).- Servicio de televisin que permite al usuario ver un
determinado programa (por ejemplo, un partido de ftbol, un concierto o una pelcula) emitido en formato
codificado, mediante el pago de una tarifa.

Pretty Good Privacy.-Ver PGP.

Procesador.- Ver CPU.

Proceso de la Comunidad Java.-Ver Java Community Process.

Program.-Ver programa de computadora.

Programa (Program).-Ver programa de computadora.

Programa de computadora (Computer program, programa, program).- Implementacin en algn lenguaje de


programacin de computadoras que lleva a cabo las definiciones hechas por un Algoritmo.

- 565 -
Tras los pasos de un... Hacker

Programmable Read Only Memory.-Ver PROM.

PROM (Programmable Read Only Memory Memoria de solo lectura Programable).- PROM es el acrnimo de
Programmable Read-Only Memory (ROM programable). Es un chip de memoria donde el valor de cada bit
depende del estado de un fusible (o antifusible), que puede ser quemado una sola vez. Por esto la memoria
puede ser programada (pueden ser escritos los datos) una sola vez a travs de un dispositivo especial, un
grabador de PROM. Estas memorias son utilizadas para grabar datos permanentes en cantidades menores a las
ROMs, o cuando los datos deben cambiar en muchos o todos los casos.

Pequeas PROM han venido utilizndose como generadores de funciones, normalmente en conjuncin con un
multiplexor. A veces se preferan a las ROM porque son bipolares, habitulamente Schottky, consiguiendo
mayores velocidades.

Proveedor de Servicios de la Internet.- Ver ISP.

Pseudocdigo (falso lenguaje).- Es una descripcin de alto nivel de un algoritmo que emplea una mezcla de
lenguaje natural con algunas convenciones sintcticas propias de los lenguajes de programacin, como
asignaciones, ciclos y condicionales. Es utilizado para describir algoritmos en libros y publicaciones cientficas, y
como producto intermedio durante el desarrollo de un algoritmo.

El pseudocdigo est pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto
puede omitir detalles irrelevantes que son necesarios en una implementacin. Programadores diferentes
suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programacin
concretos. Sin embargo, el pseudocdigo en general es comprensible sin necesidad de conocer o utilizar un
entorno de programacin especfico, y es a la vez suficientemente estructurado para que su implementacin se
pueda hacer directamente a partir de l.

PUCE (Pontificia Universidad Catlica del Ecuador).- Es la universidad privada ms antigua y ms prestigiosa
de la Repblica del Ecuador, fundada en 1.946 por los jesuitas y por el Sr. Arzobispo de Quito, Card. Carlos Mara
de la Torre, durante la segunda presidencia del Dr. Jos Mara Velasco Ibarra. Cofundador y primer Rector fue el
insigne humanista, traductor de Virgilio y catedrtico P. Aurelio Espinosa Plit, S.J. La primera facultad en
funcionar fue la de Jurisprudencia; su primer decano fue el diplomtico y Canciller de la Repblica, Julio Tobar
Donoso.

La Universidad Catlica es conocida por el prestigio de varias de sus principales facultades y por ser una de las
universidades de la lite quitea y ecuatoriana. En el 2.010 es acreditada como la mejor universidad de Quito y
como la mejor universidad privada del Ecuador.

Su sede principal est en la capital del pas, Quito. Tiene sedes en Ibarra, Esmeraldas, Ambato, Manab y Santo
Domingo. Es una obra educativa reconocida como "Pontificia" por la Santa Sede. Su Gran Canciller es el
Arzobispo de Quito y su direccin est confiada desde su fundacin a la Compaa de Jess.

Puerta trasera.-Ver Back Door.

Pulsacin (Keystroke).- Oprimir una tecla en una computadora o hacer clic en un ratn de computadora.

Puntero (Apuntador).- Es una variable que referencia una regin de memoria; en otras palabras es una variable
cuyo valor es una direccin de memoria. Si se tiene una variable p de tipo puntero que contiene una direccin de
memoria en la que se encuentra almacenado un valor v se dice que papunta a v. Los punteros son utilizados en
informtica por los programadores.

- 566 -
Breve glosario de trminos...

Trabajar con punteros implica la no manipulacin de las variables en s, sino manejar direcciones de memoria en
la cuales residen los datos.

(El puntero del ratn) es el rastro electrnico que aparece en el monitor de la computadora y que obedece a los
movimientos del mouse. Sirve para sealar o apuntar reas de la pantalla. Dependiendo del software este puede
presentar distintas apariencias, velocidades y rastros.

Q
Quick BASIC.-Versin de BASIC muy popular en las dcadas de 1.980 y 1.990.

R
RadioShack Corporation (ex-Tandy Corporation).- Es una empresa estadounidense. Administra una cadena
de tiendas de artculos electrnicos en Estados Unidos y en varias partes de Europa, Amrica Central y Amrica
del Sur. A partir de 2.003, pas a contar con ms de 6.000 tiendas en los Estados Unidos y comunic tener un
rendimiento lquido de USD$4,25 miles de millones (2.007). La sede de la RadioShack est localizada en Fort
Worth, Texas.

RAM (Random Access Memory Memoria de Acceso Aleatorio).- Es la memoria desde donde el procesador recibe
las instrucciones y guarda los resultados. Es el rea de trabajo para la mayor parte del software de una
computadora. Existe una memoria intermedia entre el procesador y la RAM, llamada cach, pero sta slo es
una copia (de acceso rpido) de la memoria principal (tpicamente discos duros) almacenada en los mdulos de
la RAM.

Se trata de una memoria de estado slido tipo DRAM en la que se puede tanto leer como escribir informacin.

Se utiliza como memoria de trabajo para el sistema operativo, los programas y la mayora del software. Es all
donde se cargan todas las instrucciones que ejecutan el procesador y otras unidades de la computadora. Se dicen
de acceso aleatorio porque se puede leer o escribir en una posicin de memoria con un tiempo de espera igual
para cualquier posicin, no siendo necesario seguir un orden para acceder a la informacin de la manera ms
rpida posible.

La frase memoria RAM se utiliza frecuentemente para referirse a los mdulos de memoria que se usan en las
computadoras personales y servidores. En el sentido estricto, los mdulos de memoria contienen un tipo, entre
varios de memoria de acceso aleatorio, ya que las ROM, memorias Flash, cach (SRAM), los registros en
procesadores y otras unidades de procesamiento tambin poseen la cualidad de presentar retardos de acceso
iguales para cualquier posicin. Los mdulos de RAM son la presentacin comercial de este tipo de memoria,
que se compone de circuitos integrados soldados sobre un circuito impreso, en otros dispositivos como las
consolas de videojuegos, esa misma memoria va soldada sobre la tarjeta principal.

Random Access Memory.-Ver RAM.

Ratn (Mouse).- Perifrico de una computadora muy utilizado para diseo grfico y para ingresar comandos en
un entornogrfico (GUI) de algn sistema operativo.

- 567 -
Tras los pasos de un... Hacker

Read Only Memory.-Ver ROM.

Rebote (bounce).- Devolucin de un mensaje de correo electrnico debido a error en la entrega al destinatario.

Red Global Mundial.- Ver www.

Reduced Instruction Set Computer.-Ver RISC.

Retraso.-Ver delay.

Retrovirus.- Se trata de un tipo de virus que ataca o impide la infeccin de los virus antivirus.

Rijndael.-Ver AES.

RISC (Reduced Instruction Set Computer, Computadora que funciona con un Conjunto de Instrucciones
Reducidas).-Tipo de arquitectura de microprocesadores en contraposicin a la CISC.

ROM (Read Only Memory -- Memoria de slo lectura).- Es una clase de medio de almacenamiento utilizado en
computadoras y otros dispositivos electrnicos. Los datos almacenados en la ROM no se pueden modificar -al
menos no de manera rpida o fcil- y se utiliza principalmente para contener el firmware (software que est
estrechamente ligado a hardware especfico, y es poco probable que requiera actualizaciones frecuentes) u otro
contenido vital para el funcionamiento del dispositivo.

En su sentido ms estricto, se refiere slo a mscara ROM -en ingls MROM- (el ms antiguo tipo de estado
slido ROM), que se fabrica con los datos almacenados de forma permanente, y por lo tanto, su contenido no
puede ser modificado. Sin embargo, las ROM ms modernas, como EPROM y Flash EEPROM se pueden borrar y
volver a programar varias veces, an siendo descritos como "memoria de slo lectura (ROM), porque el proceso
de reprogramacin en general es poco frecuente, relativamente lento y, a menudo, no se permite la escritura en
lugares aleatorios de la memoria. A pesar de la simplicidad de la ROM, los dispositivos reprogramables son ms
flexibles y econmicos, por dicha razn, las mscaras ROM no se suelen encontrar en hardware producido a
partir de 2.007.

Router (direccionador, encaminador, enrutador).- Vergateway.

RSA (Rivest, Shamir, Adleman).- Algoritmo de criptografa asimtrica de amplia utilizacin, patentada por los
autores que le dan nombre.

S
S.I.-Ver sistema internacional de unidades.

Script.- Los Scripts son archivos que contienen comandos que permiten agrupar rdenes que se dan a travs del
teclado. Los Scripts son ampliamente utilizados en la Internet y en la programacin automatizada de tareas.

Scripts kiddies.-Verskid kiddies.

Seca Mediaguard.-Sistema de acceso condicional empleado por la plataforma de C+ y CSD en Espaa y resto de
Europa. En la actualidad los Hackers ya conocen la forma de decodificar las seales cifradas bajo este formato.

- 568 -
Breve glosario de trminos...

Sector de arranque.- Ver bootsector.

Serialz.- Los Serialz estn disponibles en pginas del underground en la Internet. Estas pginas contienen miles
de Serialz que no son otra cosa que nmeros de registros de aplicaciones informticas.

Servidor de Correo Electrnico (Mail Server).- Servidor o computadora que es parte de una red que est
configurada para la recepcin y envo de correos electrnicos.

Set-top box (caja de conexin, mdulo de conexin).- Dispositivo multifuncin que permite la recepcin y
distribucin en el mbito domstico de seales procedentes de diversos tipos de redes de comunicacin (radio,
televisin, telfono, cable, satlite, Internet, etc.).

Shareware (programas compartidos).- Dcese de los programas informticos que se distribuyen a prueba, con el
compromiso de pagar al autor su precio una vez probado el programa y/o pasado cierto tiempo de uso.

Sharp LH5801.- Microprocesador implementado por Tandy en la calculadora/computadora TRS-80.

SIDA.- Ver VIH.

Simple Mail Transfer Protocol.-Ver SMTP.

Sistema Internacional de Unidades (S.I.).- El Sistema Internacional de Unidades (abreviado SI del francs: Le
Systme International d'Units), tambin denominado Sistema Internacional de Medidas, es el nombre que recibe
el sistema de unidades que se usa en la mayora de los pases y es la forma actual del sistema mtrico decimal.
El SI tambin es conocido como sistema mtrico, especialmente en las naciones en las que an no se ha
implantado para su uso cotidiano. Fue creado en 1.960 por la Conferencia General de Pesos y Medidas, que
inicialmente defini seis unidades fsicas bsicas. En 1.971 se aadi la sptima unidad bsica, el mol.

Una de las principales caractersticas, que constituye la gran ventaja del Sistema Internacional, es que sus
unidades estn basadas en fenmenos fsicos fundamentales. La nica excepcin es la unidad de la magnitud
masa, el kilogramo, que est definida como la masa del prototipo internacional del kilogramo o aquel cilindro
de platino e iridio almacenado en una caja fuerte de la Oficina Internacional de Pesos y Medidas.

Las unidades del SI son la referencia internacional de las indicaciones de los instrumentos de medida y a las que
estn referidas a travs de una cadena ininterrumpida de calibraciones o comparaciones. Esto permite alcanzar
la equivalencia de las medidas realizadas por instrumentos similares, utilizados y calibrados en lugares
apartados y por ende asegurar, sin la necesidad de ensayos y mediciones duplicadas, el cumplimiento de las
caractersticas de los objetos que circulan en el comercio internacional y su intercambiabilidad.

Entre el 2.006 y el 2.009 el SI se ha unificando con la norma ISO 31 para formar el Sistema Internacional de
Magnitudes (ISO/IEC 80000, con la sigla ISQ).

Skid Kiddies (Scripts kiddies).- Personajes del underground que normalmente se pasan todo el da navegando
por la red con la sola intencin de bajarse de ella todo tipo de aplicaciones. Despus, sin detenerse a leer los
manuales o archivos Leme, ejecutan todas las aplicaciones, mientras estn conectados a la Internet. Esta
accin, a menudo conlleva a colapsar la red, ya que es posible que ejecute un programa muy daino.

SMTP (Simple Mail Transfer Protocol-- Protocolo Simple de Transferencia de Correo).- Es un protocolo de la
capa de aplicacin. Protocolo de red basado en texto utilizado para el intercambio de mensajes de correo
electrnico entre computadoras u otros dispositivos (PDA's, telfonos mviles, etc.). Est definido en el RFC
2821 y es un estndar oficial de la Internet.

- 569 -
Tras los pasos de un... Hacker

Sniffers (Olfateadores).- Se llama as a ciertas aplicaciones que son capaces de vigilar una conexin o sistema
electrnico. Tambin pueden recibir el nombre de caza-puertos o escaneador de puertos.

Software.-Trmino utilizado en las Ciencias de la Computacin para referirse a todos los programas que pueden
ser ejecutados en un dispositivo electrnico para el procesamiento automtico de la informacin. Son todos los
aplicativos, sistemas operativos, lenguajes de programacin y programas de control de dispositivos que
conforma una computadora.

Software Libre.- Ver free software.

Spam (bombardeo publicitario, buzonfia).- Envo masivo, indiscriminado y no solicitado de publicidad a travs
de correo electrnico.

Spectravideo SVI-738Xpress.-Computadora domstica muy popular en la dcada de 1.980, equipada con un


microprocesador Zilog Z80, fabricada en 1.985 por Spectravideo Intl Ltd.

Stealth.- Es la tcnica que permite a algunos tipos de virus permanecer ocultos en un sistema operativo y en
consecuencia a cualquier aplicacin antivirus.

Streaming (Transmisin en flujo).- El streaming consiste en la distribucin de audio o video por la Internet. La
palabra streaming se refiere a que se trata de una corriente continua (sin interrupcin). El usuario puede
escuchar o ver en el momento que quiera. No es necesario estar suscrito para escuchar o ver. Este tipo de
tecnologa permite que se almacenen en un bfer lo que se va escuchando o viendo. El streaming hace posible
escuchar msica o ver videos sin necesidad de ser descargados previamente. Sintetizando, desde la aparicin
del Real Audio 1.0 de la compaa Real Networks se puede tener una radio en lnea.

Sysop (Operador del sistema).- Persona responsable del funcionamiento de un sistema o de una red.

Sun.-Ver Sun Microsystems.

Sun Microsystems (NASDAQ: JAVA).- Es una empresa informtica recientemente comprada por Oracle
Corporation antes era parte de Silicon Valley, fabricante de semiconductores y software.

Fue constituida en 1.982 por el alemn Andreas von Bechtolsheim y los norteamericanos Vinod Khosla, Bill Joy,
Scott McNealy y Marcel Newman. Las siglas SUN se derivan de Stanford University Network, proyecto que se
haba creado para interconectar en red las bibliotecas de la Universidad de Stanford. En ese ao introducen al
mercado su primera estacin de trabajo que desde su inicio trabaj con el protocolo TCP/IP, protocolo sobre el
cual se rige la mayor parte del trfico de la Internet.

Algunos de sus productos han sido servidores y estaciones de trabajo para procesadores SPARC, los sistemas
operativos SunOS y Solaris, el NFS, la plataforma de programacin Java y conjuntamente con AT&T, la
estandarizacin del UNIX System V Release 4. Adems de otros proyectos quizs menos rentables, como un
nuevo entornogrfico, NeWS o la interfaz grfica de usuario OpenLook.

T
Tabla de particiones.-Ver MBR.

- 570 -
Breve glosario de trminos...

Tandy RadioShack TRS-80 Pocket Computer II.- Computadora de bolsillo fabricada por la Tandy Corporation
(Ver RadioShack Corporation) en 1.982. Tandy comercializ una lnea de computadoras de bolsillo que fueron
fabricadas, dependiendo del modelo, por Sharp Corporation o por Casio. Tenan procesadores de 4 de 8 bits, el
lenguaje de programacin BASIC en ROM y cierta capacidad de expansin. Varias podan expandirse con una
impresora y un grabador de casetes.

TCP/IP (Transfer Control Protocol/Internet Protocol).- Protocolo de comunicaciones muy usado actualmente
en la Internet. La familia de protocolos de Internet es un conjunto de protocolos de red en los que se basa la
Internet y que permiten la transmisin de datos entre redes de computadoras. En ocasiones se le denomina
conjunto de protocolos TCP/IP, en referencia a los dos protocolos ms importantes que la componen: Protocolo
de Control de Transmisin (TCP) y Protocolo de Internet (IP), que fueron los dos primeros en definirse, y que son
los ms utilizados de la familia. Existen tantos protocolos en este conjunto que llegan a ser ms de 100
diferentes, entre ellos se encuentra el popular HTTP (HyperText Transfer Protocol), que es el que se utiliza para
acceder a las pginas web, adems de otros como el ARP (Address Resolution Protocol) para la resolucin de
direcciones, el FTP (File Transfer Protocol) para transferencia de archivos, y el SMTP (Simple Mail Transfer
Protocol) y el POP (Post Office Protocol) para correo electrnico, TELNET para acceder a equipos remotos, entre
otros.

El TCP/IP es la base de la Internet, y sirve para enlazar computadoras que utilizan diferentes sistemas operativos,
incluyendo PC, minicomputadoras y servidores sobre redes de rea local (LAN) y rea extensa (WAN).

TCP/IP fue desarrollado y demostrado por primera vez en 1.972 por el Departamento de Defensa de los Estados
Unidos de Norte Amrica, ejecutndolo en ARPANET, una red de rea extensa de dicho departamento.

La familia de protocolos de la Internet puede describirse por analoga con el modelo OSI (Open System
Interconnection), que describe los niveles o capas de la pila de protocolos, aunque en la prctica no corresponde
exactamente con el modelo en la Internet. En una pila de protocolos, cada nivel soluciona una serie de
problemas relacionados con la transmisin de datos, y proporciona un servicio bien definido a los niveles ms
altos. Los niveles superiores son los ms cercanos al usuario y tratan con datos ms abstractos, dejando a los
niveles ms bajos la labor de traducir los datos de forma que sean fsicamente manipulables.

El modelo de la Internet fue diseado como la solucin a un problema prctico de ingeniera.

El modelo OSI, en cambio, fue propuesto como una aproximacin terica y tambin como una primera fase en la
evolucin de las redes de computadoras. Por lo tanto, el modelo OSI es ms fcil de entender, pero el modelo
TCP/IP es el que realmente se usa. Sirve de ayuda entender el modelo OSI antes de conocer TCP/IP, ya que se
aplican los mismos principios, pero son ms fciles de entender en el modelo OSI.

El 1 de enero de 2.010 el Protocolo TCP/IP cumpli 27 aos.

Telfono celular (Cellular phone, mvil, telefnico, telfono mvil, celular).- Telfono porttil sin cables
conectado a una red celular que permite al usuario su empleo en cualquier lugar cubierto por la seal celular.
Una red celular y los telfonos a ellas conectadas, puede ser digital o analgica. Si la red es digital el telfono
puede enviar y recibir informacin a travs de la Internet.

Telfono mvil.-Ver telfono celular.

Tempest.- Los Hackers son capaces de obtener informacin de una PC, an si esta no est conectada a la red. La
tcnica denominada Tempest permite, mediante dispositivos especiales, capturar la seal de RF irradiada por
un monitor, para as, reproducir en otro, la informacin que est desplegando su vctima. Los mtodos Tempest
son muy sofisticados y caros, por lo que su uso esta limitado a espionajes industriales y militares.

- 571 -
Tras los pasos de un... Hacker

Teora de la Informacin.- Es una rama de la teora matemtica de la probabilidad y la estadstica que estudia
la informacin y todo lo relacionado con ella: canales, compresin de datos, criptografa y temas relacionados.

Fue iniciada por Claude E. Shannon a travs de un artculo publicado en el BellSystem Technical Journal en
1.948, titulado Una teora matemtica de la comunicacin.

Terabyte.- Medida de la informacin que equivale a 240 bytes.

Terminate and Stay Resident.-Ver TSR.

Texas Instruments (TI).- Ms conocida en la industria electrnica como TI, es una empresa norteamericana
con sede en Dallas (Texas, EE. UU.), que desarrolla y comercializa semiconductores y tecnologa para
computadoras. TI es el tercer mayor fabricante de semiconductores del mundo tras Intel y Samsung, es el
mayor proveedor de circuitos integrados para telfonos mviles. Igualmente, es el mayor productor de
procesadores digitales de seal y semiconductores analgicos. Otras reas de actividad incluyen circuitos
integrados para mdem de banda ancha, perifricos para computadoras, dispositivos digitales de consumo y
RFID.

TI.- Ver Texas Instruments.

Toshiba Corporation (Tshiba, ).- Es una compaa japonesa dedicada a la manufactura de aparatos
elctricos y electrnicos cuya sede est en Tokio. Ocupa el 7 puesto en la lista de grandes compaas
mundiales de su campo. En la actualidad Toshiba ocupa el 5 puesto a nivel mundial en ventas de Laptops, con
el 5.2% de las ventas mundiales. Durante el ao comercial 2.000-01 la empresa factur por 5.951.357 millones
de yenes y obtuvo un beneficio neto de 96.168.000.000. Trabajan para Toshiba 188.042 empleados (2.001).

Toshiba Satellite 2400 CDS.- Computadora porttil fabricada por Toshiba en 2.002.

Transfer Control Protocol/Internet Protocol.-Ver TCP/IP.

Transistor.- Es un dispositivo electrnico semiconductor que cumple funciones de amplificador, oscilador,


conmutador o rectificador. El trmino "transistor" es la contraccin en ingls de transfer resistor ("resistencia
de transferencia"). Actualmente se los encuentra prcticamente en todos los aparatos domsticos de uso diario:
radios, televisores, grabadoras, reproductores de audio y video, hornos de microondas, lavadoras, automviles,
equipos de refrigeracin, alarmas, relojes de cuarzo, computadoras, calculadoras, impresoras, lmparas
fluorescentes, equipos de rayos X, tomgrafos, ecgrafos, reproductores mp3, telfonos mviles, etc.

Trigger.- Como su nombre indica, es un disparador, el cual permite a un programador de virus informticos,
controlar la fecha de activacin del mismo.

Triple DES.- En criptografa el Triple DES se llama al algoritmo que hace triple cifrado del DES. Tambin es
conocido como TDES o 3DES, fue desarrollado por IBM en 1.978.

True BASIC Inc.- Empresa de los Estados Unidos de Norte Amrica fundada por John G. Kemeny y Thomas E.
Kurtz los creadores del BASIC para la difusin y comercializacin de una actualizacin de su trabajo. Versin de
BASIC a la que denominaron True BASIC.

True BASIC.-Versin de BASIC creada por los autores originales del lenguaje en 1.982, muy usada en el campo
de la enseanza de la programacin.

- 572 -
Breve glosario de trminos...

TSR (Terminate and Stay Resident Terminar y Permanecer Residente).- Un TSR es un programa capaz de
ejecutarse e instalar en memoria una funcin residente del mismo, la cual permanecer activa durante todo el
tiempo que la PC est activa. Despus de esto, el programa finaliza su funcin. Los TSR no tienen porque ser
especialmente dainos, ya que por citar un ejemplo, cada vez que enciende su computadora, esta carga varios
tipos de TSR, como por ejemplo el driver del ratn.

Tsutomu Shimomura.- HackerJapons-Americano experto en seguridad informtica e hijo del profesor Osamu
Shimomura, uno de los tres ganadores del Premio Nobel de Qumica 2.008.

Tunneling.- El Tunneling es la tcnica con la cual es posible que un virus informtico pueda pasar desapercibido
frente a los mdulos de deteccin, mediante punteros directos a los vectores de interrupcin. Esta tcnica es
tambin empleada por los propios antivirus actuales.

Turbo BASIC.-Versin de BASIC estructurado muy popular en la dcada de 1.990.

U
UAL.- Ver ALU.

UC.-Ver CU.

UCP.- Ver CPU.

Underground.-Se conoce como underground todo lo que esconde mtodos de Hacking, Cracking o Phreaking en
general. En realidad el trmino underground es empleado por los escritores para referirse a este nuevo mundo
que puebla las nuevas tecnologas y sobre todo la comunidad de la Internet.

UNICODE.- Es un estndar de codificacin de caracteres diseado para facilitar el tratamiento informtico,


transmisin y visualizacin de textos de mltiples lenguajes y disciplinas tcnicas adems de textos clsicos de
lenguas muertas. El trmino Unicode proviene de los tres objetivos perseguidos: universalidad, uniformidad y
unicidad.

Unicode especifica un nombre e identificador numrico nico para cada carcter o smbolo, el code pointo punto
de cdigo, adems de otras informaciones necesarias para su uso correcto: direccionalidad, capitalizacin y
otros atributos. Unicode trata los caracteres alfabticos, ideogrficos y smbolos de forma equivalente, lo que
significa que se pueden mezclar en un mismo texto sin la introduccin de marcas o caracteres de control.

Este estndar es mantenido por el Unicode Technical Committee (UTC), integrado en el Unicode Consortium, del
que forman parte con distinto grado de implicacin empresas como: Microsoft, Apple, Adobe, IBM, Oracle, SAP,
Google, instituciones como la Universidad de Berkeley, y profesionales y acadmicos a ttulo individual. El
Unicode Consortium mantiene estrecha relacin con ISO/IEC, con la que mantiene un acuerdo desde 1.991 con el
objetivo de mantener la sincronizacin entre sus estndares que contienen los mismos caracteres y puntos de
cdigo.

El establecimiento de Unicode ha sido un ambicioso proyecto para reemplazar los esquemas de codificacin de
caracteres existentes, muchos de los cuales estn muy limitados en tamao y son incompatibles con entornos
plurilinges. Unicode se ha vuelto el ms extenso y completo esquema de codificacin de caracteres, siendo el
dominante en la internacionalizacin y adaptacin local del software informtico. El estndar ha sido

- 573 -
Tras los pasos de un... Hacker

implementado en un nmero considerable de tecnologas recientes, que incluyen XML, Java y sistemas
operativos modernos.

La descripcin completa del estndar y las tablas de caracteres estn disponibles en la pgina web oficial de
Unicode. La referencia completa se publica, adems, en forma de libro impreso cada vez que se libera una nueva
versin principal. La versin digital de este libro est disponible de forma gratuita. Las revisiones y adiciones
se publican de forma independiente.

Unidad Aritmtico Lgica.-Ver ALU.

Unidad Central de Proceso.-Ver CPU.

Unidad de Control.-Ver CU.

UNIVACI (UNIVersal Automatic Computer I, Computadora Automtica Universal I). Fue la primera computadora
comercial fabricada en Estados Unidos. Fue diseada principalmente por J. Presper Eckert y John William
Mauchly, tambin autores de la segunda computadora electrnica estadounidense, la ENIAC. Durante los aos
previos a la aparicin de sus sucesoras, la mquina fue simplemente conocida como UNIVAC. Se don a la
universidad de Harvard y Pensilvania. Fue la primera computadora fabricada para un propsito no militar,
desde el ao 1.941.

Univac.- Empresa Norteamericana que comercializ la UNIVAC.

UNIVersal Automatic Computer I.-Ver UNIVACI.

UNIX, Unix (UNIX, Unix).- Sistema operativo interactivo y de tiempo compartido creado en 1.969 por Ken
Thompson. Reescrito a mitad de la dcada de los '70 por AT&T alcanz enorme popularidad en los ambientes
acadmicos y ms tarde en los empresariales, como un sistema porttil robusto, flexible y portable muy
utilizado en los servidores de la Internet.

Usenet (Users Network -- Red de usuarios).- Es una red consistente en un sistema global de discusin en la
Internet, que evoluciona de las redes UUCP. Fue creado por Tom Truscott y Jim Ellis, estudiantes de la
Universidad de Duke, en 1.979. Los usuarios pueden leer o enviar mensajes (denominados artculos) a distintos
grupos de noticias ordenados de forma jerrquica. El medio se sostiene gracias a un gran nmero de servidores
distribuidos y actualizados mundialmente, que guardan y transmiten los mensajes.

User.-Ver username.

Username (Nombre de usuario, User).- Palabra o nombre identificativo en una red asignado a una persona o
computadora en algn sistema que permite que en conjunto con una password, este pueda trabajar con el
servidor o con los aplicativos autorizados a su perfil. En otras palabras permite autenticarse a un usuario en
una red o sistema.

Users Network.- Ver usenet.

V
Very Large Scale Integration.-Ver VLSI.

- 574 -
Breve glosario de trminos...

Videocrypt.- Sistema de cifrado de vdeo diseado por Thompson para los canales de pago Sky en la era
analgica.

Videoguard.- Sistema de cifrado de seales digitales de televisin, empleado actualmente por el grupo Sky.

VIH (Virus de Inmunodeficiencia Humana que causa el SIDA).- El Virus de la Inmunodeficiencia Humana (VIH)
fue descubierto y se consider como el agente de la naciente epidemia de SIDA por el equipo de Luc Montagnier
en Francia en 1.983. El virin es esfrico, dotado de una envoltura y con una cpside proteica. Su genoma en
una cadena de ARN monocatenario que debe copiarse provisionalmente a ADN para poder multiplicarse e
integrarse en el genoma de la clula que infecta. Los antgenos proteicos de la envoltura exterior se acoplan de
forma especfica con protenas de la membrana de las clulas infectables, especialmente de los linfocitos T4.

El proceso de conversin de ARN en ADN es una caracterstica principal de los retrovirus y se lleva a cabo
mediante acciones enzimticas de transcriptasa inversa. Con la demostracin de la existencia de la
transcriptasa inversa, se inici en la dcada de 1.970 la bsqueda de los retrovirus humanos, que permiti el
aislamiento en 1.980 del virus de la leucemia de clulas T del adulto, HTLV-I (R. Gallo y cols.)

Virus.-Ver virus de computadora. Germen infeccioso causante de algunas enfermedades.

Virus de computadora.-Ver virus informtico.

Virus de Inmunodeficiencia Humana.- Ver VIH.

Virus informtico (virus de computadora, virus).- Programa que se duplica a si mismo en un sistema
informtico incorporndose a otros programas que son utilizados por varios sistemas. Estos programas pueden
causar problemas de diversa gravedad en los sistemas que los almacenan.

VLSI (Very Large Scale Integration, integracin en escala muy grande).- La integracin en escala muy grande de
sistemas de circuitos basados en transistores en circuitos integrados comenz en los aos 1.980, como parte de
las tecnologas de semiconductores y comunicacin que se estaban desarrollando.

Los primeros chips semiconductores contenan slo un transistor cada uno. A medida que la tecnologa de
fabricacin fue avanzando, se agregaron ms y ms transistores, y en consecuencia ms y ms funciones fueron
integradas en un mismo chip. El microprocesador es un dispositivo VLSI.

La primera generacin de computadoras dependa de vlvulas de vaco. Luego vinieron los semiconductores
discretos, seguidos de circuitos integrados. Los primeros CIs contenan un pequeo nmero de dispositivos,
como diodos, transistores, resistencias y capacitores (aunque no inductores), haciendo posible la fabricacin de
compuertas lgicas en un solo chip. La cuarta generacin (LSI) consista de sistemas con al menos mil
compuertas lgicas. El sucesor natural de la LSI fue la VLSI (varias decenas de miles de compuertas en un solo
chip). Hoy en da, los microprocesadores tienen varios millones de compuertas en el mismo chip.

Hacia principios de 2.006 se comercializaban microprocesadores con tecnologa de hasta 65 nm, en 2.010 se
comercializan chips con tecnologa de 32 nm.

- 575 -
Tras los pasos de un... Hacker

W
WarCard.- Se trata de una guerra abierta en la que intervienen nicamente tarjetas electrnicas que emulan a
otras tarjetas inteligentes. En la actualidad el War Card se basa en los ataques continuos mediante ECM, que
envan las plataformas digitales como CSD o Va, hacia las tarjetas no oficiales. Estos ataques modifican o
invalidad dichas tarjetas tambin denominadas piratas. Despus los Hackers las reactivan de nuevo. Esto es en
definitiva la WarCard.

Warez.- Los Warez son programas completos que se ofrecen a travs de CD. Existen multitud de pginas que
contienen Warez. Los Warez no respetan los derechos de autor.

Wetware (materia hmeda).- En la jerga de los piratas informticos significa cerebro.

Whirlwind I.- La computadora Whirlwind fue desarrollada en el MIT. Es la primera en trabajar a tiempo real,
utilizar video displays para salida, en definitiva, la primera en no ser un simple sustituto electrnico de la antigua
maquinaria mecnica. Diseada directamente para el SAGE (USA Air forces Semi Automatic Ground
Environment) e indirectamente para casi todo tipo de negocios y empresas.

Wildlist.- Bajo este nombre se esconde una lista de todos los virus conocidos. Dicha lista permite comprobar el
tipo de amenazas que sufren los usuarios de computadoras.

Windows (Microsoft Windows).- Es una serie de sistemas operativos desarrollados por Microsoft desde 1.981,
ao en que el proyecto se denominaba "Interface Manager".

Anunciado en 1.983, Microsoft comercializ por primera vez el entorno operativo denominado Windows en
noviembre de 1.985 como complemento para MS-DOS, en respuesta al creciente inters del mercado en una
interfaz grfica de usuario (GUI). Microsoft Windows lleg a dominar el mercado de las computadoras
personales del mundo, superando al del Mac OS, el cual haba sido introducido previamente a Windows. En
octubre de 2.009, Windows tena aproximadamente el 91% de la cuota de mercado de sistemas operativos en
equipos cliente que acceden a la Internet. Las versiones ms recientes de Windows son Windows 7 para
computadoras de escritorio, Windows Server 2008 R2 para servidores y Windows Mobile 6.5 para dispositivos
mviles.

World Wide Web.- Ver www.

WWW.-Servidor que aloja las conocidos sitios web y las pginas web.

Es un sistema de documentos de hipertexto o hipermedios enlazados y accesibles a travs de la Internet. Con un


navegador web, un usuario visualiza sitios web compuestos de pginas web que pueden contener texto,
imgenes, videos u otros contenidos multimedia, y navega a travs de ellas usando hiperenlaces.

La Web fue creada alrededor de 1.989 por el ingls Tim Berners-Lee y el belga Robert Cailliau mientras
trabajaban en el CERN en Ginebra, Suiza, y publicada en 1.992. Desde entonces, Berners-Lee ha jugado un papel
activo guiando el desarrollo de estndares Web (como los lenguajes de marcado con los que se crean las pginas
web), y en los ltimos aos ha abogado por su visin de una Web Semntica.

- 576 -
Breve glosario de trminos...

Y
Yottabyte.- Medida de la informacin que equivale a 280 bytes.

Z
Zettabyte.- Medida de la informacin que equivale a 270 bytes.

ZiLOG Inc. (NASDAQ: ZILG).- A menudo escrito Zilog, es un fabricante de microprocesadores, siendo su
producto ms conocido el Zilog Z80 de 8 bits. Zilog fue fundada en California en 1.974 por Federico Faggin, el
cual haba trabajado en Intel Corporation como diseador jefe del microprocesador Intel 4004 y posteriormente
del Intel 8080.

En 1.976 la compaa crea el Zilog Z80. El Z-80 Z80 es un microprocesador construido en tecnologa NMOS, y
est basado en el Intel 8080. Bsicamente es una ampliacin de ste, con lo que admite todas sus instrucciones.
Con este nuevo producto Faggin realiz una gira por el mundo buscando potenciales clientes.

Un ao despus sale al mercado la primera computadora que hace uso del Z80, la Tandy TRS-80 Model 1 con un
Z80 a 1,77 MHz y 4 KB de RAM. Acaba desplazando al Intel 8080 del mercado por su menor precio y mayores
prestaciones. El mercado de computadoras personales y de hogar acaba prcticamente repartido a medias
entre el Z80 y el MOS 6502. Varias videoconsolas como la Coleco, Sega Master System o Sega Game Gear la
utilizan como CPU principal, y la Game Boy lo integra como un ncleo modificado. Una vez en la poca de los 16
bits es usado como procesador secundario por la Sega Mega Drive/Sega Genesis o la Neo Geo Pocket. Se utiliza en
varias tarjetas inteligentes de ampliacin de IBM PC (como controladoras SCSI)

Tras del Z80, Zilog introduce varios procesadores de 16 bits y 32 bits, pero sin mucho xito, por lo que la
compaa se orienta al mercado de microcontroladores, produciendo CPUs bsicas y Circuitos Integrados para
Aplicaciones Especficas (ASICs/ASSPs) construidos alrededor del ncleo de sus procesadores. Adems de
procesadores, Zilog ha fabricado numerosos componentes electrnicos. Uno de los ms famosos es el
controlador de comunicaciones seriales Zilog Z8530 que puede encontrarse en los Sun SPARCstations y
SPARCservers hasta la SPARCstation 20.

La compaa se convierte en una subsidiaria de Exxon en 1.980, pero la direccin y los empleados la recompran
en 1.989. Se realiza una OPV en 1.991 (Zilog cotiza en bolsa en NASDAQ bajo el smbolo ZILG). En el ao 1.995
crean el V-Chip que permite funciones de control para padres en televisores estadounidenses. Es adquirida por
Texas Pacific Group en 1.998, que, tras del desplome de precios del mercado de chips, reorganiza la compaa
tras declararse en suspensin de pagos en 2.001. Ese mismo ao Ziloglanza el eZ80, un procesador orientado al
mercado de telecomunicaciones, empleado por la compaa espaola Data Voice en su gama de automarcadores.
Es adems uno de los lderes del mercado de controladores infrarrojos (incluidos en los mandos a distancia).

Zilog Z80 (Z80).- Es un microprocesador de 8 bits cuya arquitectura se encuentra a medio camino entre la
organizacin de acumulador y de registros de propsito general. Si consideramos al Z80 como procesador de
arquitectura de registros generales, se sita dentro del tipo de registro-memoria.

Fue lanzado al mercado en julio de 1.976 por la compaa Zilog, y se populariz en los aos 80 a travs de
computadoras como el Sinclair ZX Spectrum, Amstrad CPC o las computadoras del sistema MSX. Es uno de los
procesadores de ms xito del mercado, del cual se han producido infinidad de versiones clnicas, y sigue
siendo usado de forma extensiva en la actualidad en multitud de dispositivos empotrados.

- 577 -
Tras los pasos de un... Hacker

Zombi.-Computadora que instalados ciertos programas permite que alguien controle remotamente su sistema.

- 578 -
ANEXOS

- 579 -
Tras los pasos de un... Hacker

- 580 -
ANEXO I. NMC STREAM

DESCRIPCIN Y FORMALIZACIN DEL NMCSTREAM


NMC Stream es un algoritmo simtrico de cifrado de flujo, desarrollado por el
equipo de Investigacin y Desarrollo de la empresa NMC Research Ca. Ltda.,
equipo liderado por Nstor Marroqun Carrera, que implementa las definiciones
hechas en 1.917 por Mauborgne y Vernam [1] que inventaron un algoritmo de
cifrado, seguro segn el criterio seguro de Shannon [2].

El algoritmo implementa un generador pseudoaleatorio [3], alimentado por una


semilla de longitud variable y que constituye bsicamente una mquina de
estado finito [4], cuyo estado viene dado por el valor de la semilla de tamao n, y
que en cada paso da como resultado un bloque de la secuencia de tamao n/3.

El generador pseudoaleatorio puede generar secuencias de bytes


extremadamente grandes antes de producir un ciclo, ciclo que est en funcin de
la longitud de la semilla.

El algoritmo de cifrado se define como:

oi = h(ki-1,D)

ci = w(oi,mi)

(1)
El algoritmo de descifrado se define como:

oi = h(ki-1,D)

mi = w(oi,ci)

(2)
Donde ki-1 es la clave calculada anterior al estado i-simo de la funcin h; mi y ci,
son la i-sima porcin del texto claro y cifrado respectivamente y w es una
funcin reversible, usualmente or exclusivo, finalmente los valores de k0 y D

- 581 -
Tras los pasos de un... Hacker

(tabla de valores constantes), constituyen los valores iniciales que alimentan al


generador h.
Tabla de valores constantes del algoritmo NMC Stream

210 220 204 231 124 165 254 7 9 218 19 89 85 16 43 191


33 228 62 48 36 146 148 97 213 17 109 188 18 202 240 0
208 213 180 108 163 61 225 178 131 114 76 180 238 63 11 122
181 50 119 189 160 26 39 78 60 159 169 22 224 177 132 141
210 93 253 185 189 70 149 50 41 67 104 94 195 69 229 176
254 3 194 84 171 177 230 46 200 170 10 155 93 247 203 128
192 140 59 25 183 87 103 201 137 90 239 172 6 79 53 80
243 15 225 219 80 163 18 183 152 162 23 168 244 8 187 240
186 118 84 74 5 64 121 90 154 199 220 149 77 14 246 139
99 142 193 216 135 1 11 251 143 96 221 217 48 15 185 212
58 58 30 123 59 250 112 35 169 36 7 167 193 147 20 200
63 208 111 227 76 72 91 184 56 215 106 83 159 228 156 49
42 65 91 71 222 178 199 170 30 89 98 138 34 130 107 161
209 17 134 4 151 236 117 96 92 27 100 32 37 152 206 146
248 173 38 28 250 246 28 198 101 147 174 179 207 100 190 66
127 157 168 19 79 205 21 16 203 198 123 174 72 132 126 221
253 2 223 188 57 82 41 242 13 217 24 22 224 237 44 166
47 51 179 20 31 9 65 248 176 118 143 196 144 247 44 97
81 45 64 171 40 86 10 88 135 112 128 129 212 153 164 3
116 55 68 117 136 54 75 150 211 109 214 252 131 150 29 251
111 121 252 153 243 249 29 74 207 73 187 137 77 54 120 138
227 82 43 175 85 133 231 27 173 94 67 144 102 104 66 233
110 95 157 241 186 75 235 202 105 103 235 108 6 245 49 209
195 158 140 116 162 206 115 120 158 5 249 124 241 230 1 78
92 255 51 201 12 215 106 182 69 223 148 192 214 35 34 0
134 2 73 114 31 21 181 236 37 12 155 62 234 130 232 40
126 23 102 245 61 32 161 233 113 151 55 184 239 122 167 56
70 172 52 4 24 39 81 175 68 98 216 142 26 119 232 164
13 194 83 110 71 191 141 88 145 99 219 125 226 255 127 87
105 165 190 60 129 107 237 25 145 53 139 95 166 222 14 154
197 226 196 46 38 211 156 115 33 238 218 182 113 86 8 160
136 242 45 244 133 57 101 42 197 125 234 47 229 52 205 204

Tabla 5. Valores de la constante D.

- 582 -
NMC Stream... Anexo I.

La clave k (ki) ser una secuencia de bits de longitud mltiplo de 240, protegida e
intercambiada de manera segura utilizando cualquier algoritmo de clave pblica
considerado seguro.

Al inicio del proceso de cifrado; dado el valor inicial k, este valor ser calculado
conforme los resultados de cada estado de la funcin h, realimentando este valor
y por consiguiente tendremos el conjunto de claves dados por el valorki, para el
siguiente estado de h; D es una tabla constante cuyos valores estn especificados
en la Tabla 5.

DEFINICIN ALGORTMICA DEL NMCSTREAM

La siguiente seccin contiene una especificacin detallada del Algoritmo NMC


Stream, especificacin que para evitar ambigedades, usa las siguientes
convenciones:
a b. Representa la asignacin del valor de b a la variable a.

a[x]. Siendo a una secuencia de bytes, representa el x-simo byte de la


secuencia, con x = 1 para seleccionar el primer elemento.

aa
modb.
a.
b.b.
concat(a,b).
sub(A,n,m).
alen(s).
. b. Representa la concatenacin de las secuencias de bytes a y b.

Representa la longitud en bytes de la secuencia s.

Representa la funcin a mdulo b.

Devuelve la subcadena de A desde la posicin n hasta mambas


inclusive.

Representa la cadena vaca.

Rotacin con reentrada b bits a la izquierda de la secuencia a.

Rotacin con reentrada b bits a la derecha de la secuencia a.

Operacin lgica and entre a y b.

Operacin lgica or entre a y b.

Operacin lgica xor entre a y b.

Negacin lgica de a.

- 583 -
Tras los pasos de un... Hacker

LA FUNCIN H

La funcin generadora de la secuencia pseudoaleatoria, propuesta en el algoritmo


NMC Stream, definido en sus dos usos en (1) y (2) como funcin h, produce una
secuencia de bytes de longitud arbitraria a partir de una cadena inicial que
tambin la llamaremos semilla o germen- de bytes de longitud mltiplo de 30.

La funcin h (ki-1,D), siendo ki-1 la semilla empleada, D es una tabla de valores


definidos y constantes en los procesos de cifrado y descifrado, valores que
observamos en la Tabla 2; esta funcin nos devuelve un par (oi,ki), donde oi es una
secuencia de bytes cuya longitud es un tercio que la de ki-1, donde ki ser un nuevo
valor de la semilla para el estado isimo de la funcin h. Con esta definicin
podemos iterar las llamadas a la funcin h para obtener una secuencia de
longitud arbitraria, conforme est requerido para cifrar un texto claro de
longitud variable.

Definimos la funcin h(ki-1,D) que generar una secuencia oi de longitud n/3 a


partir de una ki-1 de longitud n, y una nueva semilla ki tambin de longitud n:

Funcin: h(k,D)
Devuelve: o

Modifica: k

1. a1 0
2. a2 0
3. a3 0
4. a4 0
6. Repetirklen ik
idesde i=1 hasta 3:
5. a1 = )(
1 mod][ 512

6.1. Repetir desde j=1 hasta len(k):


6.1.1. k[j] ((k[j]+a1) mod 256) D[a1+1]
6.1.2. a1 (a1+(j-1)+(i-1)*len(k)) mod 512
6.2. Si (D[a1+1] 128)/128 = 1 hacer:
6.2.1. k k 1
Caso contrario hacer:

6.2.2. k k 1

- 584 -
NMC StreamC). Anexo I.

Repetir desde i=1 hasta 3:


7.1. izquierda <- concat(izquierda, sub(k,(i-1)*30+1,
(i-1)*30+10))
7.2. centro - COncat(Centro, Sub(k,(i-1)*30+11,(i-1)*30+20))
7.3. derecha - COncat(derecha,Sub(k,(i-1)*30+21, i30))
a2 e- izquierda (1] + izquierda[2]
a 3 - CentrO[1] + CentrO[2]
10. a4 - derecha[1] + derecha[2]
11. izquierda e- randomstream (izquierda, D, a1, a2, a3, a 4)
12. centro - randomstream (centro, D,a1,a2,a3,a 4)
13. derecha - randomstream (derecha,D, a1,a2,a3,a4)
14. a1 - a1 mod 256
15. a2 - a2 mod 256
16. a3 e- a3 mod 256
17. a4 - a4 mod 256
18. o -8
19. Repetir desde i=1 hasta len(k)/3:
19.1. ize-izquierda[i]
19.2. Ce - CentrO[i]
19.3. de - derecha[i]
19.4. r1 - ((iz+ ce) mod 256) 3 a1
19.5. r2 - ((de + iz) mod 256) 3 ce
19.6. r3 - ((de + a 4) mod 256) A iz
19.7. r4 - (iz A de) 2 ce
19.8. r5 - (a1 + ce+ de + a2) mod 256
19.9. r6 - ((iz+ a2) mod 256) g de
19.10. r7 - ((de + a3) mod 256) &o ce
19.11. r8 - ((iz+ a4) mod 256) A a1
19.12. r9 - (Ce A a 4) 3 iz
19.13. r10 -(iz + ce+ de + a4) mod 256
19.14. O J1 (3) J2 (3) J3 (3) J4 (3) Jr.5 (3) Jr6 (3) J7 (3) J8 (3) J9 (3) J"10
20. Repetir desde i=1 hasta 2:
20.1. Repetir desde j=1 hasta len(k):
20.1.1. kj] - ((kj]+a1) mod 256) 3 Da1+1]
20.1.2. a1 e- (a1+(j-1)+(i-1)*len(k)) mod 512
20.2. Si (D[a1+1] A 128)/128 = 1 hacer:
20.2.1. k -k 1
Caso Contrario hacer:

20.2.2. k - k 1

- 585 -
Tras los pasos de un.. Hacker

21. Devolver o y k

Funcin: randomstream (aux, Da 1 a2 a3 a 4)


Devuelve: aux

Modifica: a 1, a2, a3, q4

1. Repetir desde i=1 hasta len(aux):


1.1. Si (a 1=> 0) A (a 1<= 127) hacer:
1.1.1. CIUIX CIUIX 1

Caso contrario si (a 1=> 128) A (a 1<= 255) hacer:

1.1.2. Repetir desdej=1 hasta len(aux):


1.1.2.1. auxIj]=auXIj] & Da2+1:a2+1]
Caso contrario si (a 1=> 256) A (a 1<= 383) hacer:

1.1.3. Repetir desdej=1 hasta len(aux):


1.1.3.1. auxIj]=auXIj] & D[a3+1:a3+1]
Caso contrario si (a 1=> 384) A (a 1<= 511) hacer:

1.1.4. CIUIX CIUIX y 1

1.2. a1 - (a 1 + auxi) mod 512


1.3. a2 - (a 1 + a2+ auxil) mod 512
1.4. a3 - (a2+ a3 + auxil) mod 512
1.5. a4 - (a3+ a 4 + auxil) mod 512
2. Devolver aux , a 1, a2, a3 y q4

APROXIMACIN AL NIVEL DE SEGURIDAD_ALCANZADO

En este punto haremos un breve anlisis del nivel aproximado de seguridad que
ofrece el algoritmo NMC StreamC).

El diseo del algoritmo detallado, no ha revelado ningn mtodo efectivo para


descubrir la semilla o clave que alimenta al generador definido en sus dos usos en
(1) y (2) como funcin h, sin embargo podemos decir lo siguiente:

- 586 -
NMC Stream... Anexo I.

Cada valor de la semilla genera un bloque cuya longitud es un tercio que la de la


propia semilla, por lo que en principio, nunca se podr recuperar toda la semilla a
partir de un fragmento de la secuencia. (Definicin de una funcin resumen[5])
El procedimiento de generacin de la semilla para el siguiente estado de la
funcin h, es independiente del proceso de generacin del flujo pseudoaleatorio
correspondiente (estado i-simo de la funcin h), por lo que es
computacionalmente intratable [6] intentar combinar las posibles evidencias
obtenidas a lo largo de los resultados de los estados de la funcin h, para
recuperar la semilla inicial correspondiente.
Salvo intentar un ataque alimentando por fuerza bruta [7] los valores de la
semilla k, el mejor ataque que puede llevarse a cabo para recuperar el valor de la
semilla, a partir de un fragmento de la secuencia generada por la funcin h
(principal consideracin de las propiedades de un algoritmo de cifrado de flujo
simtrico [8]), se implementara de la siguiente manera:

Dado un byte de la secuencia generada por la funcin h, existen 272


combinaciones vlidas de valores r1, r2, r3, r4, r5, r6, r7, r8, r9 y r10. Para cada
una de ellas podemos recuperar entre 256 posibles combinaciones de los valores
de izquierda[i], centro[i], derecha[i], a1, a2, a3 y a4, si observamos en la definicin
el paso 19 del algoritmo de la funcin h.

En este punto, el algoritmo dependiendo del valor de la variable a1, hace una
serie de operaciones en funcin de la longitud de la variable aux, y es tal el
nmero de combinaciones posibles necesarias para reversar el proceso de la
funcin randomstream que hace computacionalmente intratable el problema de
obtener el valor calculado para aux y los valores de a1, a2, a3, a4, y as tratar de
obtener los valores originales de las cadenas izquierda, centro y derecha antes de
entrar a la funcin randomstream, podemos observar este problema en el paso 10
del algoritmo de la funcin h y en la funcin randomstream.

Llegado a este punto, podemos concluir que el nivel de seguridad alcanzado para
la funcin randomstream est por el orden de 2(n/3)*8 operaciones para probar los
valores de las variables izquierda, centro y derecha respectivamente, as como a1,
a2, a3, a4.

Estas consideraciones arrojan un orden de complejidad de 2208 para obtener


todos los posibles valores de semilla (k) que podran generar un byte concreto,

- 587 -
Tras los pasos de un... Hacker

adems tendramos que partir de todos los bytes del primer bloque generado por
la funcin h para poder eliminar las posibilidades incompatibles, esto nos lleva a
un sistema cuya complejidad algortmica estara muy superior a 2200 pasos para
la menor configuracin de trabajo de NMC Stream y cuyos requerimientos de
memoria para poder llevarlo a cabo lo hace computacionalmente inviable.

Luego de realizar las siguientes pruebas estadsticas de aleatoriedad a la


secuencia generada por la funcin h, a saber se realizaron las siguientes pruebas:

Prueba monobit.
Prueba 2 bits.
Prueba de poker.
Prueba de series.
Prueba de autocorrelacin.
Prueba de Maurer.
Para estas pruebas se consideraron los siguientes parmetros:

Se generaron 2.000 semillas realmente aleatorias, para cada una de las siguientes
longitudes de semilla: 240,480, 720, 960, 1.200 y 1.440 bits, para esto se utiliz
un dispositivo generador aleatorio. (Combina los estados de la temperatura con
una precisin de una dcima de grado Celsius, la hora con la fecha del sistema
con precisin de milisegundos, la velocidad y direccin del viento en un momento
determinado del da)
Con estas semillas, se generaron 12.000 secuencias de 28958.720 bytes. (Un
total de informacin de 323,64 GB)
El tiempo necesario para correr estas pruebas fue de 180 das, con una
computadora equipada con un procesador a 1,8 GHz, memoria RAM de 1 GB y un
arreglo de discos duros de 480 GB.

Aplicamos la prueba monobita cada secuencia.


Realizamos la prueba 2bits a cada secuencia.
Corremos la prueba de poker con los siguientes valores de prueba para
m: 6,7,8,9 y 10.
Aplicamos la prueba de series con un valor de prueba de k=23.

- 588 -
NMC Stream... Anexo I.

Ejecutamos la prueba de autocorrelacin con los siguientes valores de


prueba para d: 3.535, 14.140, 56.560, 226.240, 904.960, 3619.840 y
14479.360.
La prueba de Maurer con valores de prueba para L en el rango de 6 a 14,
Q=10*2L y K=1.000*2L.

Los resultados obtenidos despus de realizar las pruebas propuestas, despus de


180 das de ejecucin, arrojaron los siguientes resultados:

Ms del 87,5% de las medidas obtenidas presentan una desviacin igual o


inferior al 0,5% sobre el valor esperado y existen nicamente 5 cuyo valor supera
al 1%. Esto demuestra que las secuencias obtenidas con NMC Stream tienen
una apariencia prcticamente aleatoria.

CONCLUSIONES
De los resultados obtenidos podemos concluir que resultara extremadamente
difcil cuando no imposible predecir el siguiente bit de la secuencia generada por
la funcin h, a partir de una porcin arbitrariamente grande de esta, cuando se
desconoce el valor de la semilla (k) que la genera.

Al cumplir las condiciones generales del criptosistema seguro segn el criterio de


Shannon, podemos afirmar que resultara computacionalmente inviable el
descifrado de un texto cifrado con el algoritmo NMC Stream, cuando se
desconoce la semilla que acta como clave de cifrado en el algoritmo descrito.

Quito, 4 de febrero de 2.004.

NOTAS Y BIBLIOGRAFA
En este apartado, explicaremos de mejor manera algunos conceptos usados en
esta definicin del Algoritmo de Cifrado de Flujo Simtrico NMCStream.

- 589 -
Tras los pasos de un... Hacker

[1] Algoritmo de Mauborgne y Vernam.- Criptosistema que consista en


emplear como clave de codificacin una secuencia de letras tan larga como el
mensaje original y usar cada carcter de la clave para cifrar exactamente una
letra del mensaje, haciendo la suma mdulo 26. Este sistema dio lugar a las
secuencias de un solo uso. (One-time pads: cadenas de longitud arbitraria que se
combinan byte a byte con el mensaje original mediante la operacin or-exclusivo
u otra similar para obtener el criptograma)
Tomado del Libro Criptografa y Seguridad en Computadores, Jos Manuel
Lucena Lpez, Tercera Edicin, Mayo de 2003, Pg. 45.
[2] Criterio seguro de Shannon.- Diremos que un criptosistema es seguro si la
cantidad de informacin que nos aporta el echo de conocer el mensaje cifrado C
sobre la entropa del texto claro Mvale cero. Es decir:

I(C,M)=0

(a)
Esto significa sencillamente que la distribucin de probabilidad que nos inducen
todos los posibles mensajes en claro el conjunto M no cambia si conocemos
el mensaje cifrado.

Para entenderlo mejor, supongamos que si se modifica dicha distribucin: El


hecho de conocer un mensaje cifrado, al variar la distribucin de probabilidad
sobre M hara unos mensajes ms probables que otros y por consiguiente unas
claves de cifrado ms probables que otras.

Repitiendo esta operacin muchas veces con mensajes diferentes, cifrados con la
misma clave, podramos ir modificando la distribucin de probabilidad sobre la
clave empleada hasta obtener un valor de clave mucho ms probable que todos
los dems, permitindonos romper el criptosistema.

Si por el contrario el sistema cumpliera la condicin (a), jams podramos


romperlo, ni siquiera empleando una mquina con capacidad de proceso infinita.
Por ello los criptosistemas que cumplen la condicin de Shannon (Criterio
Seguro de Shannon) se denominan tambin criptosistemas ideales.

Tomado del Libro Criptografa y Seguridad en Computadores, Jos Manuel


Lucena Lpez, Tercera Edicin, Mayo de 2003, Pg. 44.

- 590 -
NMC Stream... Anexo I.

[3] Generador pseudoaleatorio.- Algoritmo de uso en criptografa que


alimentado por una semilla aleatoria, produce una secuencia de bytes
criptogrficamente aleatoria. Ejemplo de estos algoritmos son el Generador
X9.17 o el Generador Blum Blum Shub.
[4] Mquina de estado finito.- Algoritmo planteado por el matemtico Allan
Touring, al investigar el proceso de cifrado de la Mquina Enigma y los mtodos
aplicados para descifrar los criptogramas producidos por esta mquina en la
Segunda Guerra Mundial.
[5] Funcin resumen.- Algoritmo que dada una informacin de entrada de
longitud arbitraria, arroja como resultado informacin de longitud fija, teniendo
como condicin que este resultado haga imposible realizar el proceso de
obtencin de la informacin original a partir del mismo.

[6] Computacionalmente intratable.- Se dice que un procedimiento es


computacionalmente intratable cuando el nmero de operaciones a realizar para
obtener un resultado excede con mucho el poder computacional existente o
potencialmente existente.
[7] Fuerza bruta.- Procedimiento para obtener la semilla o la clave de un
algoritmo de cifrado con el fin de obtener el texto claro a partir de un
criptograma, consiste en probar todas la posibles claves que se puede alimentar
al mencionado algoritmo, todos los algoritmos de cifrado son vulnerables a este
tipo de ataques, se consideran algoritmos de cifrado libres de este tipo de ataques
cuando es computacionalmente intratable llevar a cabo este tipo de ataques.

[8]Algoritmo de cifrado de flujo simtrico.- Algoritmo que alimentado de una


clave o semilla, produce una secuencia de longitud arbitraria de uso en
criptografa, estas secuencias pueden ser usadas como generadores de nmeros
pseudoaleatorios, o en el proceso de cifrado byte a byte o bit a bit, de uso
frecuente en telecomunicaciones, ejemplos de este tipo de algoritmos estn el
RC4, NMC Stream, el algoritmo de Vernam.

Fuentes de consulta:

- Libro Criptografa y Seguridad en Computadores, Jos Manuel Lucena Lpez,


Tercera Edicin, Mayo de 2003.

- 591 -
Tras los pasos de un... Hacker

- Aplicaciones utilizadas para el ejercicio de potestades CRITERIOS DE


SEGURIDAD, Ministerio de Administraciones Pblicas, Madrid, Febrero de 2003.

- Libro Anlisis de seguridad de la familia de protocolo TCP/IP y sus servicios


asociados, Ral Siles Pelez, Primera Edicin, Junio 2002.

- Temas y reportajes publicados en la Internet, de la revista especializada en


temas de seguridad informtica y criptografa, se puede consultar esta fuente en
la siguiente direccin http://www.kriptopolis.org.

- 592 -
NMC Stream... Anexo I.

LA IMPLEMENTACIN

Definido nuestro algoritmo en una forma ms acadmica, voy a presentarles dos


versiones de la implementacin de la funcin h (realmente lo que nos interesa de
la definicin para hacer estudios), una para que puedan, con el lenguaje de
programacin enseado en este texto analizar cada paso que se ha definido.

Otra para que la usen en algn proyecto particular (implementacin en C++).

Recuerden que pueden usarlo libremente siempre y cuando citen a los autores y
empresa propietaria del derecho de propiedad intelectual.
En True BASIC la implementacin es esta:

! Tras los pasos de un Hacker.


! Copyright (c) 1.992 - 2.010, NMC Research Ca. Ltda.
! Todos los derechos reservados.
!
! Implementacin del algoritmo de NMC Stream(c).
Copyright (c) 2003 - 2004, NMC Research Ca. Ltda.

! Autor: Nstor Marroqun.


!
DECLARE FUNCTION CLAVE$, T_DATA$
CLEAR
LET N = 60

! Carga una clave de 60 bytes como semilla para el


! ALGORITMO NMC STREAM.
! LET K$ = CLAVE$
LET K$ = REPEAT$("A", N)
LET PASO = N/3

! Crea un archivo donde guardar el flujo generado.


OPEN #1: NAME "FLUJO.NMC", CREATE NEWOLD, ORG BYTE
ERASE #1
CLOSE #1

LET BUFFER$ = ""


LET D$ = T_DATA$

! Genera 1000 secuencias del flujo.


FOR I=1 TO 1000
SET CURSOR 1,1
PRINT I
CALL NMC_STREAM(K$, FLUJO$, D$)
CALL GREG("FLUJO.NMC", (I-1)*PASO+1, PASO, FLUJO$, ERR$)
NEXT I

END

- 593 -
Tras los pasos de un... Hacker

! Implementacin de la subrutina (funcin) NMC Stream


SUB NMC Stream (K$, STREAM$, DT$ )
DECLARE FUNCTION XOR, AND, ROTAR DERECHA$, ROTAR IZQUIERDA
LET A1 = 0
FOR I = 1 TO LEN (K$ )
LET A1 = MOD (A1 +ORD (K$ [ I: I ] ) , 512 )
NEXT T
FOR T = 1 TO 3
FOR J = 1 TO LEN (K$ )
LET K$ [ J : J ] CHR (XOR (MOD (ORD (K$ I J : J ] ) +A1, 256 ) ,
ORD (DT$ [A1+1 : A1 + 1 ] ) ) )
LET A1 = MOD (A1 + (J-1) + ( I1 ) * LEN (K$ ) , 512 )
NEXT J

LET AUX = ORD (DT$ [A1 + 1 : A1 + 1 ] )


IF AND (AUX, 128 ) = 128 THEN
LET K$ = ROTAR DERECHA$ (K$)
ELSE

LET K$ = ROTAR IZQUIERDA (K$)


END IF
NEXT T

FOR I=1 TO LEN (K$ ) / 30


LET IZQUIERDA$ = IZQUIERDA & K$ [ (I1 ) * 30+1 : ( I1 ) * 30+10]
LET CENTRO$ = CENTRO & K$ [ (I1 ) * 30+11 : ( I1 ) * 3O+ 2O]
LET DERECHA$ = DERECHA & K$ [ (I1 ) * 30+21 : ( I1 ) * 30+30]
NEXT T

LET A2 = ORD (IZQUIERDA [ 1 : 1 ] ) + ORD (IZQUIERDA [ 2 : 2 ] )


LET A3 = ORD ( CENTRO$ [ 1 : 1 ] ) + ORD ( CENTRO$ [ 2 : 2 ] )
LET A4 = ORD (DERECHA$ [ 1 : 1 ] ) + ORD (DERECHA$ [ 2 : 2 ] )
CALL RANDOMSTREAM (IZQUIERDA, DTS, A1, A2, A3, A4 )
CALL RANDOMSTREAM ( CENTRO , DTS, A1, A2, A3, A4 )
CALL RANDOMSTREAM (DERECHA$, DT $, A1, A2, A3, A4 )
LET A1 = MOD (A1, 256)
LET A2 = MOD (A2, 256 )
LET A3 = MOD (A3, 256 )
LET A4 = MOD (A4 , 256 )
LET STREAM$ = REPEAT (CHR ( O ) , LEN (K$ ) / 3 )
FOR I=1 TO LEN (K$ ) / 3
LET IZ = ORD (IZQUIERDA [ I: I ] )
LET CE = ORD ( CENTRO$ [ I: I ] )
LET DE = ORD (DERECHA$
( [ I: I ] )
LET R1 = XOR (MOD ( IZ+CE, 256 ) , A1 )
LET R2 = XOR (MOD (DE+IZ, 256 ) , CE )
LET R3 = AND (MOD (DE+A4, 256 ) , IZ )
LET R4 = XOR (AND (DE, IZ ) , CE )
LET R5 = MOD (A1+CE+DE+A2, 256 )
LET R6 = XOR (MOD ( IZ+A2, 256 ) , DE )
LET R7 = XOR (MOD (DE+A3, 256 ) , CE )
LET R8 = AND (MOD ((IZ+A4, 256 ) , A1 )
LET R9 = XOR ( AND ( CE , A4 ) , IZ )
LET R1 O = MOD ( IZ+CE+DE+A4, 256 )
LET AUXI$ = CHR (XOR (XOR (XOR (XOR (R1, R3 ) , R5 ) , R7 ) , R 9 ) )
LET AUXD$ = CHR (XOR (XOR (XOR (XOR (R2, R4 ) , R6 ) , R8 ) , R1O) )
LET STREAM$ [ I: I ] = CHR (XOR (ORD (AUXI ) , ORD (AUXD$ ) ) )
NEXT T

FOR T=1 TO 2

- 594 -
NMC StreamC). Anexo I.

FOR J=1. TO LEN(KS)


ILET KS J: J| CHRS (XOR (MOD (ORD (KS [J: J] )+A1,
256) , ORD (DTS [A1+1: A1+1} ) ) )
ILET A1 = MOD (A1+ (J1)+(I1) * LEN(KS) , 512)
NEXT J

LET AUX = ORD (DTS [A1+1: A1+11 )


IF AND (AUX, 128) 123 THEN
LET KS = ROTAR DERECHAS (KS)
ELSE

LET KS = ROTAR IZQUIERDAS (KS)


END IE"
NEXT T
END SUE

SUB RANDOMSTREAM (AUX$, DTS, A1, A2, A3, A4 )


DECLARE FUNCTIoN XOR, ROTAR IZQUIERDAS, ROTAR DERECHAs
FOR I=1. TO LEN(AUXS)
IE" A1 => (O AND A1 <= 127 THEN
LET AUX3 = ROTAR IZQUIERDAS (AUX3)
ELSE IE" A1 => 128 AND A1 <= 255 THEN
FOR J=1. TO LEN(AUXS)
LET AUXS J: U| = CHRS (XOR (ORD (AUXS J: J] ) , ORD (DTS [A2+1: A2+1}] ) ) )
NEXT J
ELSE IE" A1 => 256 AND A1 <= 383 THEN
FOR J=1. TO LEN(AUXS)
LET AUXS J: U| = CHRS (XOR (ORD (AUXS J: J] ) , ORD (DTS [A3+1: A3+1 | ) ) )
NEXT J
ELSE IE" A1 => 384 AND A1 <= 511. THEN
LET AUX3 = ROTAR DERECHAS (AUX3)
END IE"

LET A1 = MOD (A1+ORD (AUXS II: I ) , 512


LET A2 = MOD (A2+ORD (AUXS II: I )+A1, 512)
LET A3 = MOD (A3+ORD (AUXS II: I )+A2, 512)
LET A4 = MOD (A4+ORD (AUXS II: I )+A3, 512)
NEXT T
END SUE

! E'unciones auxiliares .

! Rota un bit a la derecha en un string.


FUNCTIon ROTAR DERECHAS (DERECHAS)
DECILARE. E'UNCTION AND)
ILET" LONGI LEN(DERECHAS)
ILET ACA AND (ORD (DERECHAS LONGI: LONGI ) , 1 ) 123
FOR T=1 TO LONGI
ILET NUEVO ACA AND(ORD (DERECHAS [I: I | ) , 1 ) 123
ILET AUX UNPACKB (DERECHAS II: Il , 1, )
ILET DERECHAS [I: I CHRS (AUX + ACA)
ILET ACA NUEVO ACA
NEXT T

LET ROTAR DERECHAs DERECHAS


END FUNCTION

! Rota un bit a la izquierda en un string.


FUNCTIon ROTAR IZQUIERDAS (IZQUIERDAS)

- 595 -
Tras los pasos de un.. Hacker

DECILARE. E'UNCTION AND)

LET LONGI = LEN(IZQUIERDAS)


LET ACA = AND (ORD (IZQUIERDAS (1:1) ) , 128) / 128
FOR I = LONGI TO 1 STEP 1
LET NUEVO ACA = AND (ORD (IZQUIERDAs II: II ), 128) / 128
CALL PACKB (SS, 1, 7, UNPACKB (IZQUIERDAS II: I , 2, 7) )
LET AUX = ORD (SS)
LET IZQUIERDAS (I: I| = CHRS (AUX+ACA)
LET ACA = NUEVO ACA
NEXT T

LET ROTAR IZQUIERDAS = IZQUIERDAS


END FUNCTION

! Genera una clave aleatoria para alimentar a la funcin NMC Stream


FUNCTION CLAVES
LET CIS = ""
EOR. T = 1. TO (6(O
LET CLS = CLS CHIRS (INT (RND 256) )
NEXT T
LET. CLAVES = CLS
END DEE"

! Definicin de las funciones lgicas

! Funcin lgica Y.
FUNCTION AND (A, B)
LET. M. = 1
LET E = INT (E)
DO

CALL DIVIDE (A, 2, A, AA)


CALL DIVIDE (B, 2, B, BB)
LET R = R_+ M*AA EB
LET M = 2 M
IE" B = 1 THEN
LET R = R_+ M A
EXIT DO
END IE"
LOOP WHILE B <> (O
ILET AND) = R
END FUNCTION

! Funcin lgica O.
FUNCTION OR (A, B)
DECILARE. E'UNCTION AND)

LET OR = A + B AND (A, B)


END FUNCTION

! Euncin lgica O exclusivo .


FUNCTION XOR(A, B)
DECILARE. E'UNCTION AND)

LET XOR = A + B 2 AND (A, B)


END FUNCTION

! Tabla de valores constantes calculados para el NMC Stream (C) .


FUNCTIon T DATAs
LET AUXS = REPEATS (CHRS (O) , 512)

- 596 -
NMC StreamC). Anexo I.

ILET [ = CHRS (21


( O)
ILET [ = CHRS (220
( )
ILET [ CHRS (204)
ILET [ CHRS (231)
ILET [ = CHRS (124 )
ILET [ = CHRS (165
( )
ILET [ CHRS (254 )
ILET [ CHRS (7)
(
ILET [ CHRS (9)
ILET [ = CHRS (21:8)
ILET [ CHRS (19)
ILET [ CHRS (.89)
(
ILET [ CHRS (85)
(
ILET AUXS [ CHRS (16)
(
ILET AUXS [ CHRS (43)
(
ILET AUXS [ CHRS (191)
(
ILET AUXS [ CHRS (33)
(
ILET AUXS [ CHRS (22:8)
(
ILET AUXS [ CHRS (62)
(
ILET AUXS [ CHRS (48)
(
ILET AUXS [ CHRS (36)
(
ILET AUXS [ CHRS (146)
(
ILET AUXS [ CHRS (148)
(
ILET AUXS [ CHRS ( 97)
ILET AUXS [ CHRS (213)
(
ILET AUXS [ CHRS (17)
(
ILET [ CHRS (1.09)
(
ILET [ CHRS (188)
(
ILET [ CHRS (18)
(
ILET [ CHRS (202)
(
ILET AUXS [ CHRS (24
( O)
ILET AUXS [ CHRS (O)
(
ILET AUXS [ CHRS (208
ILET AUXS [ CHRS (213
ILET AUXS [ CHRS (180
ILET AUXS [ CHRS (1.08
ILET AUXS [ CHRS (163
ILET AUXS [ CHRS (61)
ILET [ CHRS (225
ILET [ CHRS (178
ILET [ CHRS (1.31
ILET [ CHRS (114
ILET AUXS [ CHRS (76)
ILET AUXS [ CHRS (18O)
ILET AUXS [ CHRS (238)
ILET AUXS [ CHRS (63)
ILET AUXS [ CHRS (11)
ILET AUXS [ CHRS (122)
ILET AUXS [ CHRS (181)
ILET AUXS [ CHRS (50)
ILET AUXS [ CHRS (119.)
ILET AUXS [ CHRS (189)
ILET AUXS [ CHRS (16O)
ILET AUXS [ CHRS (26)
ILET AUXS [ CHRS (39)
ILET AUXS CHRS (78)

- 597 -
Tras los pasos de un.. Hacker

LET AUXS 57:57 | = CHRS (60)


LET AUXS 58: 58 | = CHRS (159)
LET AUXS 59:59 | = CHRS (1.69)
LET AUXS 60: 60| = CHRS (22)
LET AUXS 61: 61 | = CHRS (224)
LET AUXS 62: 62 | = CHRS (177)
LET AUXS 63: 63 | = CHRS (132)
LET AUXS 64 : 64 | = CHRS (1.41)
LET AUXS 65: 65 | = CHRS (210)
LET AUXS 66: 66 | = CHRS (93)
LET AUXS 67: 67 | = CHRS (253)
LET AUXS 68: 68 | = CHRS (185)
LET AUXS 69: 69|| = CHRS (189)
LET AUXS 70: 701 = CHRS (70)
LET AUXS 71:71 | = CHRS (149)
LET AUXS [72: 72 | = CHRS (50)
LET AUXS [73: 73 | = CHRS (41)
LET AUXS [74 :TV4 | = CHRS (67)
LET AUXS [75 : TV5 | = CHRS (1.04)
LET AUXS [76:76 | = CHRS (94 )
LET AUXS 77: 77 | = CHRS (195)
LET AUXS [78:TV 8 | = CHRS (69)
LET AUXS [79: TV 9 | = CHRS (229)
LET AUXS 80: 8O = CHRS (176)
LET AUXS [81: 81 | = CHRS (254 )
LET AUXS [82: 82|| = CHRS (3)
LET AUXS [83: 83 | = CHRS (194)
LET AUXS [84 : 84 | = CHRS (84)
LET AUXS 85:85 | = CHRS (171)
LET AUXS [86: 86 | = CHRS (177)
LET AUXS 87: 87 | = CHRS (230)
LET AUXS [88: 88 | = CHRS (46)
LET AUXS [89: 89 | = CHRS (200)
LET AUXS 90: 9 O| = CHRS (17O)
LET AUXS [91: 91 | = CHRS (10)
LET AUXS 92: 92 | = CHRS (1.55)
LET AUXS 93: 93 | = CHRS (93)
LET AUXS 94 : 94 | = CHRS (247)
LET AUXS 95: 95 | = CHRS (2O3)
LET AUXS 96: 96 | = CHRS (128)
LET AUXS 97: 97 | = CHRS (192)
LET AUXS [98: 98 | = CHRS (14 O)
LET AUXS [99: 99 | = CHRS (59)
LET AUXS [1OO: 1 00 = CHRS (25)
LET AUXS [1 01: 101 | = CHRS (183)
LET AUXS [102: 102 | = CHRS (87)
LET AUXS [1 03:103 | = CHRS (103)
LET AUXS [104 : 104 | = CHRS (201)
LET AUXS [105: 105 | = CHRS (137)
LET AUXS [106:106| = CHRS (90)
LET AUXS [1 07:107 | = CHRS (239)
LET AUXS [1 08:108 | = CHRS (172)
LET AUXS [109: 109 | = CHRS (6)
LET AUXS [11 O: 110|| = CHRS (79)
LET AUXS [111: 111 | = CHRS (53)
LET AUXS [112: 112 | = CHRS (8O)

- 598
NMC StreamC). Anexo I.

LET AUXS [113: 113 | = CHRS (24.3)


LET AUXS [114 : 114 | = CHRS (15)
LET AUXS [115:115| = CHRS (22:5)
LET AUX$ 116:116 | = CHRS (21.9)
LET AUXS [117: 117 | = CHRS (8O)
LET AUXS [118: 1181 = CHRS (163)
LET AUXS [119:119| = CHRS (18)
LET AUXS [12O: 120 | = CHRS (183)
LET AUXS [121:121 | = CHRS (152)
LET AUXS [122: 122 | = CHRS (162)
LET AUXS [123:123| = CHRS (23)
LET AUXS 124 : 124 | = CHRS (168)
LET AUXS [125: 125 | = CHRS (244)
LET AUXS [126:126| = CHRS (8)
LET AUXS 127:127 | = CHRS (187)
LET AUXS [128:128| = CHRS (24 O)
LET AUXS 129:129 | = CHRS (186)
LET AUXS [13O: 1301 = CHRS (1.18)
LET AUXS [131: 131|| = CHRS (84)
LET AUXS [132: 132 | = CHRS (74)
LET AUXS [133:133| = CHRS (5)
LET AUXS [134 : 134 | = CHRS (64)
LET AUXS (1.35 : 135 | = CHRS (121)
LET AUXS [136: 136 | = CHRS (90)
LET AUXS [137: 137 | = CHRS (1.54)
LET AUXS [138: 1381 = CHRS (199)
LET AUXS [139: 139 | = CHRS (22O)
LET AUXS [14 O: 14 O| = CHRS (149)
LET AUXS [141:14.1 | = CHRS (77)
LET AUXS [142: 142 | = CHRS (14)
LET AUXS [143: 143 | = CHRS (246)
LET AUXS [144 : 144 | = CHRS (1.39)
LET AUX$ 145 : 145 | = CHRS (99)
LET AUXS [146:146| = CHRS (1.4.2)
LET AUXS [147:147 | = CHRS (1.93)
LET AUXS [148: 1481 = CHRS (216)
LET AUXS [149:149|| = CHRS (1.35)
LET AUXS [150: 1501 = CHRS (1)
LET AUXS [151:151 | = CHRS (11)
LET AUXS [152: 1521 = CHRS (251)
LET AUXS [153: 1531 = CHRS (1.43)
LET AUXS [154 : 154 | = CHRS (96)
LET AUXS [155:155| = CHRS (221)
LET AUXS [156:156|| = CHRS (217)
LET AUXS [157: 157 | = CHRS (48)
LET AUXS 158: 1581 = CHRS (15)
LET AUXS [159:1591 = CHRS (185)
LET AUXS [16O: 1601 = CHRS (212)
LET AUXS [161: 161 | = CHRS (58)
LET AUXS [162:162 | = CHRS (58)
LET AUXS [163:1631 = CHRS (30)
LET AUXS [164 : 164 | = CHRS (123)
LET AUXS [165:165| = CHRS (59)
LET AUXS [166:166| = CHRS (250)
LET AUXS [167: 167 | = CHRS (112)
LET AUXS [168: 168 | = CHRS (35)

- 599 -
Tras los pasos de un.. Hacker

LET AUXS [169: 169|| = CHRS (1.69)


LET AUXS [17 O: 1701 = CHRS (36)
LET AUXS [171: 171 | = CHRS (7)
LET AUXS [172: 1721 = CHRS (1.67)
LET AUXS [173: 1731 = CHRS (1.93)
LET AUXS [174 : 174 | = CHRS (147)
LET AUXS [175: 175|| = CHRS (2O)
LET AUXS [176: 1761 = CHRS (200)
LET AUXS [177: 177 | = CHRS (63)
LET AUXS [178: 178|| = CHRS (208)
LET AUXS 179: 179|| = CHRS (111)
LET AUXS [180: 18O = CHRS (227)
LET AUXS [181: 1811 = CHRS (76)
LET AUXS [182: 182|| = CHRS (72)
LET AUXS [183: 1831 = CHRS (91)
LET AUXS [184 : 184 | = CHRS (184 )
LET AUXS [185: 1851 = CHRS (56)
LET AUXS [186: 1861 = CHRS (215)
LET AUXS [187: 1871 = CHRS (106)
LET AUXS [188: 1881 = CHRS (83)
LET AUXS [189:1891 = CHRS (159)
LET AUXS [190: 1901 = CHRS (22:8)
LET AUXS [191: 1911 = CHRS (1.56)
LET AUXS [192: 1921 = CHRS (49)
LET AUXS [193: 1931 = CHRS (42)
LET AUXS [194 : 1.94 | = CHRS (65)
LET AUXS [195: 1951 = CHRS (91)
LET AUXS [196: 1961 = CHRS (71)
LET AUXS [197: 1971 = CHRS (222)
LET AUXS [198: 1981 = CHRS (178)
LET AUXS [199: 1991 = CHRS (199)
LET AUXS [200: 2001 = CHRS (17O)
LET AUXS 201:2011 = CHRS (30)
LET AUXS [2O2:2O2 | = CHRS (.89)
LET AUXS [2O3:2O3| = CHRS (98)
LET AUXS 204 : 204 | = CHRS (138)
LET AUXS [2O5: 205 | = CHRS (34)
LET AUXS [2O6:2O6| = CHRS (130)
LET AUXS [2O7:2O7 | = CHRS (1.07)
LET AUXS [208:2O8| = CHRS (161)
LET AUXS [209: 209 | = CHRS (209)
LET AUXS 21 O: 210 | = CHRS (17)
LET AUXS 211:211 | = CHRS (134)
LET AUXS 212: 212 | = CHRS (4)
LET AUXS 213:213 | = CHRS (1.51)
LET AUXS 214 : 214 | = CHRS (236)
LET AUXS 215:215 | = CHRS (1.17)
LET AUXS 216:216 | = CHRS (96)
LET AUXS 217: 217 | = CHRS (92)
LET AUXS 218:218 | = CHRS (27)
LET AUXS 21 9: 219 | = CHRS (1OO)
LET AUXS [22O: 220 | = CHRS (32)
LET AUXS [221:221 | = CHRS (37)
LET AUXS ( 222:222 | = CHRS (152)
LET AUXS [223:223| = CHRS (2O6)
LET AUXS 224 : 224 | = CHRS (146)

- 600 -
NMC StreamC). Anexo I.

LET AUXS [225: 225 | = CHRS (248)


LET AUXS [226:226| = CHRS (173)
LET AUXS [227:227 | = CHRS (38)
LET AUXS [228: 228 | = CHRS (28)
LET AUXS [229:229| = CHRS (250)
LET AUXS [230:2301 = CHRS (246)
LET AUXS [231: 231 | = CHRS (28)
LET AUXS [232:232 | = CHRS (198)
LET AUXS [233:233| = CHRS (1.01)
LET AUXS [234 : 234 | = CHRS (147)
LET AUXS [235: 235 = CHRS (1.74)
LET AUXS [236: 236 | = CHRS (179)
LET AUXS [237: 237 | = CHRS (2O7)
LET AUXS [238:238| = CHRS (1OO)
LET AUXS [239: 239 | = CHRS (190)
LET AUXS (24 O: 2401 = CHRS (66)
LET AUXS [241:241 | = CHRS (127)
LET AUXS (242:242 | = CHRS (1.57)
LET AUXS [243:243| = CHRS (168)
LET AUXS (24 4 : 244 | = CHRS (19)
LET AUXS (245: 245 | = CHRS (79)
LET AUXS (246: 24 6 | = CHRS (2O5)
LET AUXS (247:247 | = CHRS (21)
LET AUXS (24 8: 248 | = CHRS (16)
LET AUXS (24 9:249|| = CHRS (2O3)
LET AUXS 25 O: 2501 = CHRS (198)
LET AUXS (251:251 | = CHRS (123)
LET AUXS [252: 252 | = CHRS (1.74)
LET AUXS (253:253 | = CHRS (72)
LET AUXS (254 : 254 | = CHRS (132)
LET AUXS [255:255| = CHRS (126)
LET AUXS (256: 256|| = CHRS (221)
LET AUXS [257:257 | = CHRS (253)
LET AUXS [258:2581 = CHRS (2)
LET AUXS [259:259| = CHRS (223)
LET AUXS [260:2601 = CHRS (188)
LET AUXS [261:261 | = CHRS (57)
LET AUXS 26.2:262 | = CHRS (82)
LET AUXS [263:263| = CHRS (41)
LET AUXS 264 : 264 | = CHRS (242)
LET AUXS | 265:265 | = CHRS (13)
LET AUXS [266:266| = CHRS (217)
LET AUXS [267:267 | = CHRS (24)
LET AUXS 26.8:268 | = CHRS (22)
LET AUXS |269:269|| = CHRS (224)
LET AUXS [27 O: 2701 = CHRS (237)
LET AUXS [271: 271 | = CHRS (44)
LET AUXS [272: 272 | = CHRS (166)
LET AUXS [273: 273 | = CHRS (47)
LET AUXS [274 : 274 | = CHRS (51)
LET AUXS [275: 275 | = CHRS (179)
LET AUXS 276 : 276 | = CHRS (2O)
LET AUXS [277: 277 | = CHRS (31)
LET AUXS [278:278|| = CHRS (9)
LET AUXS [279: 279 | = CHRS (65)
LET AUXS 28 O: 280 | = CHRS (248)

- 601 -
Tras los pasos de un... Hacker

LET AUX$[281:281] = CHR$(176)


LET AUX$[284:284]
AUX$[282:282] = CHR$(196)
AUX$[283:283] CHR$(118)
CHR$(143)

LET AUX$[302:302]
AUX$[285:285] = CHR$(153)
AUX$[286:286]
AUX$[287:287]
AUX$[288:288]
AUX$[289:289]
AUX$[290:290]
AUX$[291:291]
AUX$[292:292]
AUX$[293:293]
AUX$[294:294]
AUX$[295:295]
AUX$[296:296]
AUX$[297:297]
AUX$[298:298]
AUX$[299:299]
AUX$[300:300]
AUX$[301:301] CHR$(144)
CHR$(247)
CHR$(44)
CHR$(97)
CHR$(81)
CHR$(45)
CHR$(64)
CHR$(171)
CHR$(40)
CHR$(86)
CHR$(10)
CHR$(88)
CHR$(135)
CHR$(112)
CHR$(128)
CHR$(129)
CHR$(212)

LET AUX$[312:312]
AUX$[303:303] = CHR$(150)
AUX$[304:304]
AUX$[305:305]
AUX$[306:306]
AUX$[307:307]
AUX$[308:308]
AUX$[309:309]
AUX$[310:310]
AUX$[311:311] CHR$(164)
CHR$(3)
CHR$(116)
CHR$(55)
CHR$(68)
CHR$(117)
CHR$(136)
CHR$(54)
CHR$(75)

LET AUX$[318:318]
AUX$[313:313] = CHR$(150)
AUX$[314:314]
AUX$[315:315]
AUX$[316:316]
AUX$[317:317] CHR$(211)
CHR$(109)
CHR$(214)
CHR$(252)
CHR$(131)

LET AUX$[324:324]
AUX$[319:319] = CHR$(153)
AUX$[320:320]
AUX$[321:321]
AUX$[322:322]
AUX$[323:323] CHR$(29)
CHR$(251)
CHR$(111)
CHR$(121)
CHR$(252)

LET AUX$[336:336]
AUX$[325:325] = CHR$(138)
AUX$[326:326]
AUX$[327:327]
AUX$[328:328]
AUX$[329:329]
AUX$[330:330]
AUX$[331:331]
AUX$[332:332]
AUX$[333:333]
AUX$[334:334]
AUX$[335:335] CHR$(243)
CHR$(249)
CHR$(29)
CHR$(74)
CHR$(207)
CHR$(73)
CHR$(187)
CHR$(137)
CHR$(77)
CHR$(54)
CHR$(120)

- 602 -
NMC StreamC). Anexo I.

ILET AUXS [ 337 : CHRS (227)


ILET AUXS [ 333 : CHRS (82)
ILET AUXS [ 33C) : CHRS (43)
ILET AUXS [ 34 (O) : CHRS (175)
ILET AUXS [ 341 : CHRS (85)
ILET AUXS [ 342 : CHRS (133)
ILET AUXS [ 343 : CHRS (231)
ILET AUXS [ 344 : CHRS (27)
ILET AUXS [ 34.5 : CHRS (173)
ILET AUXS [ 34 (6 : CHRS (94 )
ILET AUXS [ 347 : CHRS (67)
ILET AUXS [ 348 : CHRS (144)
ILET AUXS [ 34, C) : CHRS (102)
ILET AUXS [ 35 (O) : CHRS (1.04)
ILET AUXS [ 351 : CHRS (66)
ILET AUXS [ 352 : CHRS (233)
ILET AUXS [ 353 : CHRS (110)
ILET AUXS [ 354 : CHRS (95)
ILET AUXS [ 355 : CHRS (157)
ILET AUXS [ 356 : CHRS (241)
ILET AUXS [ 3 E7 : CHRS (186)
ILET AUXS [ 353 : CHRS (75)
ILET AUXS [ 35C) : CHRS (235)
ILET AUXS [ 36 (O) : CHRS (202)
ILET AUXS [ 361 : CHRS (105)
ILET AUXS [ 362 : CHRS (103)
ILET AUXS [ 363 : CHRS (235)
ILET AUXS [ 364 : CHRS (1.08)
ILET AUXS [ 365 : CHRS (6)
ILET AUXS [ 366 : CHRS (245)
ILET AUXS [ 367 : CHRS (49)
ILET AUXS [ 363 : CHRS (209)
ILET AUXS [ 36C) : CHRS (1.95)
ILET AUXS [ 37 (O). CHRS (158)
ILET AUXS [ 371 : CHRS (14 O)
ILET AUXS [ 372 : CHRS (116)
ILET AUXS [ 373 : CHRS (162)
ILET AUXS [ 374 : CHRS (2O6)
ILET AUXS [ 37 E, : CHRS (115)
ILET AUXS [ 376 : CHRS (12O)
ILET AUXS [ 377 : CHRS (158)
ILET AUXS [ 373 : CHRS (5)
ILET AUXS [ 37 C) : CHRS (249
ILET AUXS [ 38() : CHRS (1.24
ILET AUXS [ 381 : CHRS (24.1
ILET AUXS [ 332 : CHRS (230
ILET AUXS [ 383 : CHRS (1)
ILET AUXS [ 384 : CHRS (78)
ILET AUXS [ 335 : CHRS (92)
ILET AUXS [ 336 : CHRS (255)
ILET AUXS [ 337 : CHRS (51)
ILET AUXS [ 383 : CHRS (201)
ILET AUXS [ 33C) : CHRS (1.2)
ILET AUXS [ 3C) () : CHRS (215)
ILET AUXS [ 391 : CHRS (106)
ILET AUXS 392 : CHRS (182)

- 603 -
Tras los pasos de un.. Hacker

LET AUXS 393 : 393 | = CHRS (69)


LET AUXS 394 : 394 | = CHRS (223)
LET AUXS 395:395 | = CHRS (148)
LET AUXS 396: 396 | = CHRS (192)
LET AUXS 397 : 397 | = CHRS (214)
LET AUXS 398 : 398 | = CHRS (35)
LET AUXS 399: 399 | = CHRS (34)
LET AUXS 4 00:4 00 = CHRS (O)
LET AUXS 401: 401 | = CHRS (134)
LET AUXS 4 O2:4O2 | = CHRS (2)
LET AUXS 4 03:403 | = CHRS (73)
LET AUXS 404 : 404 | = CHRS (1.14)
LET AUXS 4 05:405 | = CHRS (31)
LET AUXS 406:406 | = CHRS (21)
LET AUXS 4 07: 407 | = CHRS (181)
LET AUXS 4 08: 408 | = CHRS (236)
LET AUXS 4 O9:409 | = CHRS (37)
LET AUXS 41 O: 41 O| = CHRS (1.2)
LET AUXS 411: 411 | = CHRS (1.55)
LET AUXS 412: 412 | = CHRS (62)
LET AUXS 413:413 | = CHRS (234 )
LET AUX$ 414 : 414 | = CHRS (130)
LET AUXS 415:415 | = CHRS (232)
LET AUXS 416: 416 | = CHRS (40)
LET AUXS 417: 417|| = CHRS (126)
LET AUXS 418: 418 | = CHRS (23)
LET AUXS 41 9: 419 | = CHRS (102)
LET AUXS 42O: 420 | = CHRS (245)
LET AUXS 421: 421 | = CHRS (61)
LET AUXS 422: 422 | = CHRS (32)
LET AUXS 423:423 | = CHRS (161)
LET AUXS 424 : 424 | = CHRS (233)
LET AUXS 4.25: 425 | = CHRS (113)
LET AUXS 426: 426 | = CHRS (1.51)
LET AUXS 427: 427 | = CHRS (55)
LET AUXS 428: 428 | = CHRS (184 )
LET AUXS 429: 429 | = CHRS (239)
LET AUXS 43O: 4 301 = CHRS (122)
LET AUXS 431: 431 | = CHRS (1.67)
LET AUXS 432: 432 | = CHRS (56)
LET AUXS 433: 433 | = CHRS (70)
LET AUXS 4.34 : 4 34 | = CHRS (172)
LET AUXS 4.35: 435 | = CHRS (52)
LET AUXS 436: 436 | = CHRS (4)
LET AUXS 437: 437 | = CHRS (24)
LET AUXS 4 38: 438 | = CHRS (39)
LET AUXS 439: 439 | = CHRS (81)
LET AUXS 44 O: 44 O| = CHRS (175)
LET AUXS 441: 441 | = CHRS (68)
LET AUXS 44.2: 442 | = CHRS (98)
LET AUXS 443:4431 = CHRS (216)
LET AUXS 444 : 444 | = CHRS (1.4.2)
LET AUXS 445: 445 | = CHRS (26)
LET AUXS 446: 446 | = CHRS (119.)
LET AUXS 447: 447 | = CHRS (232)
LET AUXS 448: 448 | = CHRS (164)

- 604 -
NMC StreamC). Anexo I.

LET AUXS 44 9:449|| = CHRS (13)


LET AUXS 45 O: 450 | = CHRS (194)
LET AUXS 451: 451 | = CHRS (83)
LET AUXS 452 : 452 | = CHRS (110)
LET AUXS 453:453 | = CHRS (71)
LET AUXS 454 : 454 | = CHRS (191)
LET AUXS 455: 455 | = CHRS (1.41)
LET AUXS 45 6:456|| = CHRS (.88)
LET AUXS 457: 457 | = CHRS (1.45)
LET AUXS 458:458 | = CHRS (99)
LET AUXS 459:459 | = CHRS (21.9)
LET AUXS 4 60: 4 60| = CHRS (125)
LET AUXS 4 61: 461 | = CHRS (22.6)
LET AUXS 462: 462 | = CHRS (255)
LET AUXS 463 : 4631 = CHRS (127)
LET AUXS 464 : 464 | = CHRS (87)
LET AUXS 465: 4 65 | = CHRS (105)
LET AUXS 466: 466 | = CHRS (165)
LET AUXS 467: 467 | = CHRS (190)
LET AUXS 468: 468 | = CHRS (60)
LET AUXS 469:469 | = CHRS (129)
LET AUXS 47 O: 4.701 = CHRS (1.07)
LET AUXS 471: 471 | = CHRS (237)
LET AUXS 472: 472 | = CHRS (25)
LET AUXS 473 : 473 | = CHRS (1.45)
LET AUXS 474 : 474 | = CHRS (53)
LET AUXS 475 : 475 | = CHRS (1.39)
LET AUXS 476: 476 | = CHRS (95)
LET AUXS 477: 477 | = CHRS (166)
LET AUXS 478: 478|| = CHRS (222)
LET AUXS 479: 479 | = CHRS (14)
LET AUXS 48 O: 480| = CHRS (1.54)
LET AUXS 481: 481 | = CHRS (197)
LET AUXS 482: 482 | = CHRS (22.6)
LET AUXS 483:483 | = CHRS (1.96)
LET AUXS 484 : 484 | = CHRS (46)
LET AUXS 485: 485 | = CHRS (38)
LET AUXS 486: 486 | = CHRS (211)
LET AUXS 487: 487 | = CHRS (1.56)
LET AUXS 488: 488 | = CHRS (115)
LET AUXS 489:489 | = CHRS (33)
LET AUX$ 490: 490 = CHRS (238)
LET AUXS 491: 491 | = CHRS (21:8)
LET AUXS 4 92: 4 92 | = CHRS (182)
LET AUXS 493 : 493 | = CHRS (113)
LET AUXS 494 : 494 | = CHRS (86)
LET AUXS 495:495 | = CHRS (8)
LET AUXS 49 6: 496 | = CHRS (16O)
LET AUXS 4 97: 497 | = CHRS (136)
LET AUXS 498: 498 | = CHRS (242)
LET AUXS 499: 499 | = CHRS (45)
LET AUXS 500:5001 = CHRS (244)
LET AUXS [501: 501 | = CHRS (133)
LET AUXS 502:502 | = CHRS (57)
LET AUXS 5 03:503 | = CHRS (1.01)
LET AUXS 504 : 504 | = CHRS (42)

- 605 -
Tras los pasos de un.. Hacker

LET AUXS [505:505| = CHRS (197)


LET AUXS 506:506 | = CHRS (125)
LET AUXS 507:507 | = CHRS (234 )
LET AUXS [508: 508 | = CHRS (47)
LET AUXS 509:509 | = CHRS (229)
LET AUXS 51 O:51.01 = CHRS (52)
LET AUXS 511:511 | = CHRS (2O5)
LET AUXS 512: 512 | = CHRS (204)
LET T DATAS=AUX3
END FUNCTION

! Lee un string de n bytes en una posicin de un archivo.


SUB LREG (NARS, POS, NBL, RETS, ERRORBS)
LET ERRORES="FALSE"
WHEN ERROR IN

OPEN #1: NAME NARS, ACCESS INPUT, ORGANIZATION BYTE, CREATE OLD
ASK # 1 : FILESIZE TF
IE" POS X. TF OR NBL = 0) OR. POS <= 0 THEN
LET RETS = ""
EXIT SUE
END IE"
SET #1 : RECORD POS
READ #1, BYTES NBL: RETS
CLOSE f1
LET ERRORES = "TRUE"
USE
END WHEN
END SUE

! Graba un string en una posicin determinada de un archivo .


SUB GREG (NARS, POS, NBL, RETS, ERRORBS)
LET ERRORES = "FALSE"
WHEN ERROR IN

OPEN #1: NAME NARS, ACCESS OUTPUT, ORGANIZATION BYTE, CREATE OLD
ASK # 1 : FILESIZE TF
IE" POS1 > TF OR NBL <= (O OR. EOS <= (O). THEN
LET RETS = ""
EXIT SUE
END IE"
IE" DOS TF THEN
SET # 1 : POINTER END
ELSE
SET #1 : RECORD POS
END IE"
IF NBL < LEN(RETS) THEN LET RETS = RETS [1: NBL1
WRITE # 1 : RETS
CLOSE f1
LET ERRORES = "TRUE"
USE
END WHEN
END SUE

- 606 -
NMC Stream... Anexo I.

En C++, el NMCStream est implementado como un objeto, por ser un objeto


est definido en 2 archivos (por regla general segn las guas de programacin
estndares), los mismos que contienen: un archivo con la definicin del objeto
(NMCStream.h); y, un archivo con la implementacin del objeto
(NMCStream.cpp).

Algunas de las funciones no tienen las verificaciones de los parmetros como


deberan, les explico, la funcin que crea el flujo simtrico para el cifrado, debera
verificar si el valor de entrada (semilla o clave k) que define el tamao del flujo a
crear es mltiplo de 240 bits. No est implementado porque el programa que a
su vez invoca a este objeto ya lo hace.

Obsrvese que tanto la definicin del objeto como la implementacin del mismo,
utiliza la llamada notacin o nomenclatura hngara; segn esta, se define el
objeto CNMC como Class_NMC. En este caso el objeto NMCStream est definido
como una clase, la cual provee los atributos o la posible implementacin de los
mismos, en un lenguaje orientado a objetos, que son necesarios para su
utilizacin.

Qu es la nomenclatura hngara?

En programacin de computadoras, la notacin o nomenclatura hngara es un


sistema usado normalmente para crear los nombres de las variables.

Tambin se utiliza para nombrar las instancias de los objetos en los lenguajes de
programacin orientados a objetos, como por ejemplo C++. El nombre de la
notacin proviene del hecho de que su inventor, Charles Simonyi que naci en
Hungra.
Esta convencin 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.

- 607 -
Tras los pasos de un... Hacker

Ejemplos:
Prefijo Significado

b Booleano (int)
by BYTE o UCHAR(unsigned char)

c Carcter (un byte)

dw Entero largo de 32 bits sin signo (double word)

f Flags empaquetados en un entero de 16 bits

h Manipulador de 16 bits (handle)

l Entero largo de 32 bits

lbl Objeto Label


lp Puntero a entero largo de 32 bits
lpfn Puntero largo a una funcin que devuelve un entero
lpsz Puntero largo a una cadena terminada con cero

n Entero de 16 bits

p Puntero a entero de 16 bits

e Enumeracin
pt Coordenadas (x, y) empaquetadas en un entero de 32 bits
rgb Valor de color RGB empaquetado en un entero de 32 bits

sz Cadena terminada en cero

txt Cajas de texto

w Entero corto de 16 bits sin signo (word)

- 608 -
NMC Stream... Anexo I.

Bueno aqu estn las definiciones del archivo NMCStream.h:


/////////////////////////////////////////////////////////////////////////////////////////
// Algorithm NMC Stream.
//
// NMC Research Cia. Ltda.
// Copyright (C) 2003-2010
//
// Authors:
// Nestor Marroquin C. and Galo Vinueza S.
//
// The software is provided "as is", without any express or implied warranties
// or conditions or guarantees, including but not limited to the warranties of
// merchantability, fitness for a particular purpose and noninfringement.
// in no event shall the authors or copyright holders be liable for any claim,
// damages or other liability, whether in an action of contract, tort or otherwise,
// arising from, out of or in connection with the software or the use or other
// dealings in the software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
//
// Nestor Marroquin C., e-mail: nmarroquin@nmcresearch.com
// Galo Vinueza S., e-mail: gvinuezas@nmcresearch.com
/////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////
// Algoritmo NMC Stream.
//
// NMC Research Cia. Ltda.
// Copyright (C) 2003-2010
//
// Autores:
// Nstor Marroqun C. y Galo Vinueza S.
//
// El programa es entregado como tal, sin ninguna garanta expresa
// o implcita sobre su funcionamiento, incluyendo pero no limitndose
// a las garantas de mercantibilidad, para cualquier propsito
// sin responsabilidad, en ningn evento los autores o los propietarios
// del copyright sern responsables por su mal uso, funcin
// o implementacin indebida o ilegal, o de los productos derivados
// del uso de este software.
//
// Usted est autorizado de cualquier forma a usar este programa
// de computadora para cualquier propsito, incluyendo aplicaciones
// comerciales, usted puede modificar y redistribuir este cdigo
// libremente, sujeto a las siguientes restricciones:
//
// 1. La autora de esta implementacin debe ser respetada;
// usted no puede decir que escribi este programa de
// computadora o que es su creacin original.
// Si usted usa este programa en algn producto, una nota
// aclaratoria en la documentacin del producto debera

- 609 -
Tras los pasos de un... Hacker

// ser introducida, pero esto no es obligatorio.


// 2. Las versiones modificadas del cdigo fuente de esta
// implementacin original deben ser etiquetadas como
// tales, y no deben ser confundidas con el programa original.
// 3. Esta nota aclaratoria no puede ser eliminada o alterada
// en ninguna distribucin del cdigo fuente.
//
// Informacin y contactos:
//
// Nstor Marroqun C., correo-e: nmarroquin@nmcresearch.com
// Galo Vinueza S., correo-e: gvinuezas@nmcresearch.com
/////////////////////////////////////////////////////////////////////////////////////////

#pragma once

#define ERR_SUCCESS 0
#define ERR_CANNOT_ALLOCATE_DATA_BUFFER 1
#define ERR_NO_MEMORY_ALLOCATED_FOR_STREAM 2
#define ERR_INVALID_BUFFER 3
#define ERR_INVALID_SEED_SIZE 4
#define ERR_INVALID_KEY_SIZE ERR_INVALID_SEED_SIZE

#define __RETURNOK \
{ SetLastError(ERR_SUCCESS);\
return TRUE;}

#define __SET_NO_ERROR \
SetLastError(ERR_SUCCESS);
#define __RETURNERROR(error) \
{ SetLastError(error); \
return FALSE; }

BOOL __IsValidAddress( const void* lp, UINT nBytes, BOOL bReadWrite = TRUE );

class CNMCStream
{
public:
virtual ~CNMCStream();
CNMCStream();

BOOL InitializeStream2(DWORD dwSeedSize);


void UninitializeStream2();
LPBYTE GenerateStream2(LPBYTE ucKey, DWORD dwKeySize, DWORD dwStreamSize);
BOOL GenerateStream2(LPBYTE ucKey, DWORD dwKeySize, LPBYTE lpStreamBuffer, DWORD
dwStreamBufferSize);

//errors
virtual UINT GetLastError();
void SetLastError(UINT nError);

protected:
BOOL
void Stream2(LPBYTE szSeed, DWORD dwSeedSize, LPBYTE szStream, LPBYTE ptData);
FillDataTable2();

void RandomStream(LPBYTE AUX, DWORD dwSize, LPBYTE ptData, SHORT &A1, SHORT &A2, SHORT
void
&A3, SHORT ShiftLeft(LPBYTE
ShiftRight(LPBYTEblk,
&A4); blk, INT
INT longi);
longi);

LPBYTE m_lpbSeed;
protected:

LPBYTE m_pIzquierda;
LPBYTE m_pCentro;

- 610
NMC Stream... Anexo I.

LPBYTE m_ptData2;
m_pDerecha;

LPBYTEm_dwStreamOutSize;
DWORD m_lpStreamOutBuffer;

BOOL m_bStreamInitialized;

UINT m_nLastError;
};

Ahora las definiciones del archivo NMCStream.cpp:


/////////////////////////////////////////////////////////////////////////////////////////
// Algorithm NMC Stream.
//
// NMC Research Cia. Ltda.
// Copyright (C) 2003-2010
//
// Nestor Marroquin C. and Galo Vinueza S.
Authors:
//
//
// The software is provided "as is", without any express or implied warranties
// or conditions or guarantees, including but not limited to the warranties of
// merchantability, fitness for a particular purpose and noninfringement.
// in no event shall the authors or copyright holders be liable for any claim,
// damages or other liability, whether in an action of contract, tort or otherwise,
// arising from, out of or in connection with the software or the use or other
// dealings in the software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.
//
// Nestor
Galo Vinueza
Marroquin
S., e-mail:
C., e-mail: nmarroquin@nmcresearch.com
gvinuezas@nmcresearch.com
//
/////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////
// Algoritmo NMC Stream.
//
// NMC Research Cia. Ltda.
// Copyright (C) 2003-2010
//
// Nstor Marroqun C. y Galo Vinueza S.
Autores:
//
//
// El programa es entregado como tal, sin ninguna garanta expresa
// o implcita sobre su funcionamiento, incluyendo pero no limitndose
// a las garantas de mercantibilidad, para cualquier propsito
// sin responsabilidad, en ningn evento los autores o los propietarios
// del copyright sern responsables por su mal uso, funcin
// o implementacin indebida o ilegal, o de los productos derivados
// del uso de este software.

- 611 -
Tras los pasos de un... Hacker

//
// Usted est autorizado de cualquier forma a usar este programa
// de computadora para cualquier propsito, incluyendo aplicaciones
// comerciales, usted puede modificar y redistribuir este cdigo
// libremente, sujeto a las siguientes restricciones:
//
// 1. La autora de esta implementacin debe ser respetada;
// usted no puede decir que escribi este programa de
// computadora o que es su creacin original.
// Si usted usa este programa en algn producto, una nota
// aclaratoria en la documentacin del producto debera
// ser introducida, pero esto no es obligatorio.
// 2. Las versiones modificadas del cdigo fuente de esta
// implementacin original deben ser etiquetadas como
// tales, y no deben ser confundidas con el programa original.
// 3. Esta nota aclaratoria no puede ser eliminada o alterada
// en ninguna distribucin del cdigo fuente.
//
// Informacin y contactos:
//
// Nstor Marroqun C., correo-e: nmarroquin@nmcresearch.com
// Galo Vinueza S., correo-e: gvinuezas@nmcresearch.com
/////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
// NOTE:
// Using this code against MFC libraries do the following:
// Add stdafx.h instead of windows.h or
// select "Not Using Precompiled Headers" on C++ properties for this file
//////////////////////////////////////////////////////////////////////////////

#include "NMCStream.h"
"Windows.h"

BOOL __IsValidAddress( const void* lp, UINT nBytes, BOOL bReadWrite /*= TRUE */ )
{
// simple version using Win-32 APIs for pointer validation.
} return (lp
(!bReadWrite
!= NULL && ||
!IsBadReadPtr(lp, nBytes) && nBytes)));
!IsBadWritePtr((LPVOID)lp,

// CNMCStream

//////////////////////////////////////////////////////////////////////////
// CNMCStream construction/destruction

CNMCStream::CNMCStream()
{
m_lpbSeed = NULL;
m_bStreamInitialized = FALSE;
m_pIzquierda = NULL;
m_pCentro = NULL;
m_pDerecha = NULL;
m_ptData2 = NULL;
m_lpStreamOutBuffer = NULL;
m_dwStreamOutSize = 0;

m_nLastError = ERR_SUCCESS;
}

CNMCStream::~CNMCStream()
{

- 612
NMC StreamC). Anexo I.

if (m lpbSeed = NULL)
: : Virtual Free (m lpbSeed, 0, MEM RELEASE) ;

Un initia lize Stream 2 () ;


}

//////////////////////////////////////////////////////////////////////////
// CNMCStream member functions

void CNMCStream: : Shift Right (LPBYTE blk, INT longi)

INT i, nuevo a ca, aca;

aca = (blk [ longi1 || & 1) * 128;


for ( i= 0; i < longi; i ++)

nuevo aca = (blki & 1) * 128;


blk [i | = (blk [i | >> 1) + a ca;
aca = nuevo aca;

void CNMCStream: : Shift Left (LPBYTE blk, INT longi)

INT i, nuevo a ca, aca;

aca = (blk [0] & 128) / 128;


for (i=longi1 ; i >= 0; i)

nuevo aca = (blki & 128) / 128;


blk [i | = (blk [i | << 1) + a ca;
aca = nuevo aca;

BOOL CNMCStream: : Initia lize Stream2 (DWORD dvSeedSi Ze)

if ( (dwSeedSi Ze % 3) 1 = 0)
RETURNERROR (ERR INVALID SEED SIZE) ;

m pIzquierda = (LPBYTE) : : Virtual Alloc (0, ( divSeedsize / 3 ), MEM COMMIT,


PAGE READIRITE) ;
if (m pIzquierda == NULL)
RETURNERROR (ERR CANNOT ALLOCATE DATA BUFFER) ;

m pCentro = (LPBYTE) : : Virtual Alloc (0, ( dwSeedSize / 3 ) , MEM COMMIT, PAGE READIRITE) ;
if (m pCentro == NULL)
RETURNERROR (ERR CANNOT ALLOCATE DATA BUFFER) ;

m pDerecha = (LPBYTE) : : VirtualAlloc (0, ( dwSeed Size / 3 ) , MEM COMMIT, PAGE READIRITE) ;
if (m pDerecha == NULL)
RETURNERROR (ERR CANNOT ALLOCATE DATA BUFFER) ;

m pt Data2 = (LPBYTE) : : Virtual Alloc (0, 512, MEM COMMIT, PAGE READIRITE) ;
if (m pt Data 2 == NULL)
RETURNERROR (ERR CANNOT ALLOCATE DATA BUFFER) ;

Fill Data Table 2 () ;

m dwStreamCutSize = dwSeed Size / 3;

m lpStreamCut Buffer = (LPBYTE) : : Virtual Alloc (0, m dvStreamCut Size, MEM COMMIT,
PAGE READIRITE) ;

- 613 -
Tras los pasos de un.. Hacker

jf (m lpStreamCut Buffer NULL)


RETURNERROR (ERR CANNOT ALLOCATE DATA BUFFER) ;

m bStreamInitialized = TRUE";

RETURNOK;
}

Void CNMCStream: : Un initia lize Stream 2 ()

jf (m pIzquierda)
: : Virtual Free (m pIzquierda, 0, MEM RELEASE) ;

jf (m pCentro)
: : Virtual Free (m pCentro, 0, MEM RELEASE) ;
jf (m pDerecha)
: : Virtual Free (m pDerecha, 0, MEM RELEASE) ;
jf (m ptData2)
: : Virtual Free (m pt Data2, 0, MEM RELEASE) ;
jf (m lpStreamCut Buffer)
: : Virtual Free (m lp StreamCut Buffer, 0, MEM RELEASE) ;

m pIzquierda = NULL;
m pCentro = NULL;
m pDerecha = NULL;
m pt Data 2 = NULL;
m bStreamInitialized FAL SE ;
m lp StreamCut Buffer NULL;
m dwStreamCutSize = 0 ;
}

BOOL CNMCStream: : Stream2 (LPBYTE sZSeed, DWORD dvSeedSi Ze, LPBYTE sZStream, LPBYTE ptData)

SHORT A1 = 0;
SHORT A2 = 0;
SHORT A3 = 0;
SHORT A4 = 0;
DWORD n I iter = 0;
DWORD nJiter = 0;
EYTE. Al 13;

for (n. Iiter = 0; n I iter < dvSeed Si Ze; n I iter++)


A1 = (A1 + * (SZSeed + n Iiter) ) % 512;

for (n. Iiter = 0; n I iter < 3; n Liter++)


{
for (n. Jiter = 0; nJiter < dvSeed Si Ze; nJiter++)
{
* (SZSeed + n Jiter) = ( (* (SZSeed + n Jiter) + A1) % 256) * (pt Data
+ A1) ;
A1 = (SHORT) ( ( A1 + n Jiter + (n. Liter dvi Seed Si Ze) ) % 512) ;
}
Aux = * (pt Data + A1) ;
if ( (Aux & 128) == 128)
Shift Right (s zSeed, dvSeed Size) ;
else
Shift Left (s zSeed, dvSeedSize) ;
}

for (n I iter = 0; n I iter < (dwSeedSize / 30) ; n I iter++)

- 614 -
NMC StreamC). Anexo I.

CopyMemory(m pIzquierda + (nI iter * 10) , szSeed + (n I iter * 30) , 10 ) ;


CopyMemory (m pCentro + (n I iter 10), szSeed + (n I iter * 30) + 10, 10 ) ;
CopyMemory(m pDerecha + (n I iter * 10) , szSeed + (n Iiter * 30) + 20, 10 ) ;
}

A2 * (m pIzquierda) + * (m pIzquierda + 1) ;
A3 = * (m pCentro) + * (m pCentro + 1) ;
e
A4 = * (m pDerecha) + * (m pDerecha + 1) ;

Random Stream (m pIzquierda, m dvStreamCut Size, pt Data, A1, A2, A3, A4) ;
Random Stream (m pCentro, m dwStreamCut Size, pt Data, A1, A2, A3, A4) ;
Random Stream (m pDerecha, m dvStreamCut Size, ptData, A1, A2, A3, A4) ;

A1 A1 256;
A2 = A2 256;
A3 = A3 256;
A4 A4 256;

ZeroMemory (s zStream, m dvStreamCut Size ) ;

for (nI iter = 0; n I iter < m dwStreamCutSize; n Iiter++)


{
BYTE Iz = * (m pIzquierda + n I iter) ;
BYTE Ce = * (m pCentro + n I iter) ;
BYTE De = * (m pDerecha + n I iter) ;
BYTE P1 =
( (Iz + Ce) % 256 ) A1 ;
BYTE P2 =
( (De + Iz) % 256 ) Ce;
BYTE P3 =
( (De + A4) % 256 ) Iz;
BYTE P4 =
(De & IZ) Ce;
BYTE P5 =
(A1 + Ce + De + A2) % 256 ;
BYTE P6 =
( (Iz + A2) % 256 ) De;
EYTE PT ( (De + A3) % 256 ) Ce;
BYTE P8 = ( (Iz + A4) % 256 ) A1;
BYTE P 9 = (Ce A4) Iz;
BYTE P1O = (Iz + Ce + De + A4 ) % 256 ;
(s zStream + n I iter) = P 1 P2 P3 P4 P 5 P6 ^ P7 P8 ^ P 9 P1O;
}

for (n. Iiter = 0; n I iter < 2; n Liter++)


{
for (n. Jiter = 0; nJiter < dvSeed Si Ze; nJiter++)
{
* (s zSeed + n Jiter) = ( (* (s zSeed + n Jiter) + A1) % 256) * (pt Data
+ A1) ;
A1 = (SHORT) ( ( A1 + n Jiter + (n. Liter dvi Seed Si Ze) ) % 512) ;
}
Aux = * (pt Data + A1) ;
if ( (Aux & 128) == 128)
Shift Right (s zSeed, dvSeed Size) ;
else
Shift Left (s zSeed, dvSeedSize) ;
}

RETURNOK;
}

void CNMCStream: : RandomStream (LPBYTE AUX, DWORD dwSize, LPBYTE pt Data, SHORT & A1, SHORT & A2,
SHORT & A3, SHORT & A4)

DWORD n I iter = 0;
DWORD nJiter = 0 r

for (n Iiter = 0; n Liter < dvSi Ze; n Iiter++)

if (A1 >= 0 & & A1 = 127.)

- 615 -
Tras los pasos de un.. Hacker

Shift Left (AUX, dvSize) ;

el se if (A1 >= 128 & & A1 = 255)

for (nJiter = 0; nJiter < dvSi Ze; nJiter++)


* (AUX + n Jiter) = * (AUX + n Jiter) * (pt Data + A2) ;

el se if (A1 >= 256 & & A1 = 383)

for (nJiter = 0; nJiter < dvSi Ze; nJiter++)


(AUX + n Jiter) = * (AUX + n Jiter) (ptData + A3) ;

el se if (A1 >= 384 & & A1 = 511)

Shift Right (AUX, dvSize) ;

A1 = (A1 + 1 (AUX + n I iter) ) % 512;


A2 (A2 + 1 (AUX + n I iter) + A1) % 512 ;
A3 (A3 + (AUX + n I iter) + A2) % 512 ;
A4 = (A4 + 1 (AUX + n I iter) + A3) % 512 ;
}
}
Void CNMCStream: : Fill Data Table 2 ()

if (m pt Data 2 == NULL)
return ;

m pt Data2 L0]=210; m ptData2 L1)=220; m ptData2 L2)=204;


m pt Data2 L3]=231 ;
m pt Data2 L4 ]=124; m pt Data2 L5]=165; m ptData2 L6)=254;
m pt Data2 L'7]=7;
m pt Data2 L8)=9; m pt Data2 L9)=218; m ptData2 (10)=19;
m pt Data2 L11 ]=89;
m pt Data2 L12 = 85; m pt Data2 (13)=16; m ptData2 (14 ]=43;
m pt Data2 L15]=191;
m pt Data2 L16)=33; m pt Data2 (17]=228; m ptData2 (13)=62;
m pt Data2 L19]=48;
m pt Data2 L20)=36; m pt Data2 L21)=146; m ptData2 L22)=148;
m pt Data2 L23]=97;
m pt Data2 L24 ]=213; m pt Data2 L25]=17; m ptData2 (26)=109;
m pt Data2 L27]=188;
m pt Data2 L28)=13; m pt Data2 L29)=202; m ptData2 L30)=240;
m pt Data2 L31 = 0;
m pt Data2 L32)=208; m pt Data2 L 33]=213; m ptData2 L34 ]=180;
m pt Data2 L35]=108;
m pt Data2 L36)=163; m pt Data2 L37]=61; m ptData2 L38)=225;
m pt Data2 L39)=178;
m pt Data2 L40]=131; m pt Data2 L41)=114; m ptData2 L42)=76;
m pt Data2 L43)=180;
m pt Data2 L44 ]=238; m pt Data2 L45]=63; m ptData2 L46)=11;
m pt Data2 L47]=122;
m pt Data2 L48)=181; m pt Data2 L49)=50; m ptData2 L50]=119;
m pt Data2 L51)=189;
m pt Data2 L52)=160; m pt Data2 L53]=26; m ptData2 L54 ]=39;
m pt Data2 L'55]=78;
m pt Data2 L56=60; m ptData2 (57]=159; m ptData2 L58)=169;
m pt Data2 L'59)=22;
m pt Data2 L60)=224; m pt Data2 L61 =177; m ptData2 L62)=132;
m pt Data2 L63)=141;
m pt Data2 L64 ]=210; m pt Data2 L 65]=93; m ptData2 L66)=253;
m pt Data2 L67]=185;

- 616 -
NMC StreamC). Anexo I.

m pt Data2 L68 ]=189; m pt Data2 L69)=70; m pt Data2 (70)=149;


m [
pt Data2 L71)=50;
m [
pt Data2 L72)=41; m pt Data2 (73]=67; m pt Data2 (74 ]=104;
m [
pt Data2 (75)=94;
m [
pt Data 276)=195; m ptData2 (77]=69; m pt Data2 (78)=229;
m pt Data2 [(791 =176;
m [
pt Data2 L80)=254; m pt Data2 L81)=3; m pt Data2 L82)=194;
m [
pt Data2 L83)=84;
m [
pt Data2 L84 ]=171; m ptData2 (85]=177; m pt Data2 L86)=230;
m [
pt Data2 L87]=46;
m [
pt Data2 L88)=200; m ptData2 (89)=170; m pt Data2 L 90]=10;
m [
pt Data2 L'91)=155;
m [
pt Data2 L92)=93; m pt Data2 L93]=247; m pt Data2 L94 ]=203;
m [
pt Data2 L95]=128;
m [
pt Data2 L'96)=192; m pt Data2 L97]=140; m ptData2 (98)=59;
m [
pt Data2 L'99)=25;
m [
pt Data2 L100]=183; m pt Data2 (101 =87; m pt Data2 (102)=103;
m [
pt Data2 L103]=201;
m| [
pt Data2 L104 ]=137; m pt Data2 (105]=90; m pt Data2 (106)=239;
m [
pt Data2 L107]=172;
m [
pt Data2 L108)=6; m ptData2 (109)=79; m pt Data2 (110)=53;
m [
pt Data2 L111)=80;
m [
pt Data2 L112)=243; m pt Data2 (113)=15; m pt Data2 (114 ]=225;
m [
pt Data2 L115]=219;
m [
pt Data2 L116=80 m pt Data2 (117]=163; m pt Data2 (113)=18;
m [
pt Data2 L1191 =183;
m [
pt Data2 L120]=152; m pt Data2 (121)=162; m ptData2 (122)=23;
m [
pt Data2 L123]=168;
m [
pt Data2 L124 ]=244; m pt Data2 (125]=8; m ptData2 (126)=187;
m [
pt Data2 L127]=240;
m| pt Data2 L128 =186; m pt Data2 (129)=118; m ptData2 (130)=84;
m [
pt Data2 L131)=74;
m [
pt Data2 L1.32)=5; m pt Data2 (133)=64; m ptData2 (134 ]=121;
m [
pt Data2 L135]=90;
m [
pt Data2 L136)=154; m ptData2 (137]=199; m ptData2 (138)=220;
m [
pt Data2 L139)=149;
m [
pt Data2 L140]=77; m pt Data2 (141)=14; m ptData2 (142)=24 6;
m [
pt Data2 L143]=139;
m [
pt Data2 L144 ]=99; m pt Data2 (145)=142; m ptData2 (146)=193;
l ptData2 L[ 147]=216;
m [
pt Data2 L1481 =135; m pt Data2 (149)=1; m ptData2 (150)=11 ;
m [
pt Data2 L1.51)=251 ;
m [
pt Data2 L152)=143; m pt Data2 (153]=96; m ptData2 (154 ]=221;
m [
pt Data2 L155]=217;
m [
pt Data2 L1.56)=48; m pt Data2 (157]=15; m ptData2 (158)=185;
m [
pt Data2 L1.59)=212;
m [
pt Data2 L160]=58; m pt Data2 (161)=58; m ptData2 (162)=30;
m [
pt Data2 L163)=123;
m [
pt Data2 L164 ]=59 m pt Data2 (165]=250; m ptData2 (166)=112;
m [
pt Data2 L167]=35
m [
pt Data2 L168)=169; m pt Data2 (169)=36; m ptData2 (170]=7;
m [
pt Data2 L171)=167;
m [
pt Data2 L172]=193; m pt Data2 (173)=147; m ptData2 (174 ]=20;
m [
pt Data2 L175]=200;
m [
pt Data2 L176=6 3; m pt Data2 (177]=208; m ptData2 (178)=111;
m [
pt Data2 L179 =227;
m [
pt Data2 L180]=7 6 m pt Data2 (131)=72; m ptData2 (182)=91;
m [
pt Data2 L183]=184;
m [
pt Data2 L184 ]=5 6 m pt Data2 (185]=215; m ptData2 (1861=106;
m [
pt Data2 L187]=83; 3
l [
pt Data2 (138)=159; m pt Data2 (1891=228; m ptData2 (190)=156;
m [
pt Data2 L191]=49;
m [
pt Data2 L192]=42; m pt Data2 (193]=65; m pt Data2 (194 ]=91;
m [
pt Data2 L195]=71;

- 617 -
Tras los pasos de un.. Hacker

m| [
pt Data2 L196]=222; m ptData2 (197]=178; m ptData2 (1981=199;
m pt Data2 (1991 =170;
m pt Data2 L200]=30; m pt Data2 (2011 =89; m pt Data2 (202)=98;
m pt Data2 L203]=138;
m pt Data2 L204 ]=34; m pt Data2 (205]=130; m pt Data2 (206)=107;
m pt Data2 L207]=161;
m pt Data2 L208)=209; m pt Data2 (209 =17; m pt Data2 (210)=134;
m pt Data2 L211)=4;
m pt Data2 L212)=151 ; m pt Data2 L213]=236; m pt Data2 L214 ]=117;
m pt Data2 L215]=96
m pt Data2 L216)=92; m pt Data2 L217]=27; m ptData2 L213)=100;
m pt Data2 L219 =32;
m pt Data2 L220]=37; m pt Data2 L221)=152; m ptData2 L222)=206;
m pt Data2 L223)=146;
m pt Data2 L224 ]=248; m pt Data2 L225]=173; m ptData2 L226)=38;
m pt Data2 L227]=28;
m pt Data2 L228=250; m pt Data2 L229)=24 6; m ptData2 L230]=28;
m pt Data2 L231)=198;
m pt Data2 L232=101 ; m pt Data2 L233)=147; m ptData2 (234 ]=174;
m pt Data 2235]=179;
m pt Data2 L236)=207; m pt Data2 L237]=100; m ptData2 L238)=190;
m pt Data2 L239)=66;
m pt Data2 L240]=127; m pt Data2 L241)=157; m ptData2 L242)=168;
m pt Data2 L243]=19
m pt Data2 L244 ]=79; m pt Data2 L245)=205; m ptData2 L246)=21 ;
m pt Data2 L247]=16;
m pt Data2 L248)=203; m pt Data2 L249)=198; m ptData2 (250)=123;
m pt Data2 L251 =174;
m pt Data2 L252)=72; m pt Data2 L253)=132; m ptData2 L254 ]=126;
m pt Data2 L255]=221 ;
m pt Data2 L256)=253; m pt Data2 L257]=2; m ptData2 L258)=223;
m pt Data2 (259)=188;
m pt Data2 L260]=57; m pt Data2 (261 =82; m ptData2 (262)=41 ;
m pt Data2 L263]=242;
m pt Data2 L264 ]=13 m pt Data2 (265 |=217; m pt Data2 (266)=24 ;
m pt Data2 L267]=22;
m pt Data2 L268)=224; m pt Data2 (269)=237; m pt Data2 L270]=44;
m pt Data2 L271)=166;
m pt Data2 L272]=47 m pt Data2 L273]=51 ; m pt Data2 L274 ]=179;
m pt Data2 L275]=20
m pt Data2 L276)=31; m pt Data2 L277]=9; m pt Data2 L278)=65;
m pt Data2 L279)=248;
m pt Data2 L280]=176; m pt Data2 L281)=118; m pt Data2 L282)=143;
m pt Data2 L283)=196;
m pt Data2 L284 ]=144; m pt Data2 L285)=247; m pt Data2 L286)=44;
m pt Data 2287]=97
m pt Data2 L288)=81; m pt Data2 L289)=45; m pt Data2 (290)=64;
m pt Data2 L291 =171;
m pt Data2 L292)=40 m pt Data2 L293]=86; m pt Data2 L294 ]=10;
m pt Data2.295]=38
m [
pt Data2 L296)=135; m pt Data2 L297]=112; m pt Data2 L298)=128;
m [
pt Data 2299)=129;
m| [
pt Data2 L300]=212; m pt Data2 (301)=153; m pt Data2 L302)=164;
m [
pt Data2 L303]=3;
m [
pt Data2 L304 ]=116; m pt Data2 (305]=55; m pt Data2 L306)=68;
m [
pt Data2 L307]=117;
m [
pt Data2 L308)=136; m pt Data2 L309)=54; m pt Data2 L310)=75;
m [
pt Data2 L311)=150;
m [
pt Data2 L312)=211 ; m pt Data2 L313]=109; m pt Data2 L314 ]=214;
m [
pt Data2 L315]=252;
m [
pt Data2 L316)=131 ; m pt Data2 L317]=150; m pt Data2 L318 =29;
m [
pt Data2 L319)=251 ;
m [
pt Data2 L320]=111 ; m pt Data2 L 321)=121; m pt Data2 L322)=252;
m [
pt Data2 L323)=153;

- 618 -
NMC StreamC). Anexo I.

m| [
pt Data2 L324 ]=243; m pt Data2 (325)=249; m pt Data2 (326)=29;
m [
pt Data2 L327]=74
m [
pt Data2 L328=207; m pt Data2 (329. =73; m pt Data2 L 330}=187;
m [
pt Data2 L331)=137;
m [
pt Data2 L332)=77; m pt Data2 L 333]=54; m pt Data2 L 334 ]=120;
m [
pt Data2 L335]=138;
m [
pt Data2 L336)=227; m pt Data2 L 337]=82; m pt Data2 (338)=43;
m pt Data2 L[ 339)=175;
m [
pt Data2 L340]=85; m pt Data2 L341)=133; m pt Data2 L342)=231;
m [
pt Data2 L343]=27
m| [
pt Data2 L344 ]=173; m pt Data2 L345)=94; m pt Data2 (346)=67;
m [
pt Data2 L347]=144;
m [
pt Data2 L348)=102; m pt Data2 L349)=104; m pt Data2 L350]=66;
m [
pt Data2 L351)=233;
m [
pt Data2 L352)=110; m ptData2 (353]=95; m pt Data2 (354)=157;
m [
pt Data2 L355)=241;
m [
pt Data2 L356)=186; m ptData2 (357]=75; m pt Data2 L358 =235;
m [
pt Data2 L359)=202;
m [
pt Data2 L360]=105; m pt Data2 L361)=103; m pt Data2 L362)=235;
m [
pt Data2 L363]=108;
m [
pt Data2 L364 ]=6; m pt Data2 L365)=245; m pt Data2 L366)=49;
m pt Data2 [(367]=209;
m [
pt Data2.368)=195; m ptData2 (369)=158; m pt Data2 L370)=140;
m [
pt Data2 L371)=116;
m [
pt Data2 L372)=162; m pt Data2 L373]=206; m pt Data2 L 374 ]=115;
m [
pt Data2 L375]=120;
m [
pt Data2 (376)=158; m pt Data2 L377]=5; m pt Data2 L378)=249;
m [
pt Data2 L379)=124;
m [
pt Data2 L380)=241; m pt Data2 L381)=230; m pt Data2 L382)=1;
m [
pt Data2 L383)=78;
m [
pt Data2 L384 ]=92; m ptData2 (385]=255; m pt Data2 L386)=51 ;
m [
pt Data2 L387]=201;
m| pt Data2 L388)= 12; m pt Data2 L 339)=215; m pt Data2 L390)=106;
m [
pt Data2 L391)=182;
m [
pt Data2 L392)=69; m pt Data2 L393]=223; m pt Data2 L394 ]=148;
m [
pt Data2 (395]=192;
m [
pt Data2 L396)=214; m ptData2 397]=35; m ptData2 L398)=34 ;
m [
pt Data2 L399 = 0;
m| [
pt Data2 L400]=134; m pt Data2 L401)=2; m pt Data2 L402)=73;
m [
pt Data2 L403)=114;
m [
pt Data2 L404 ]=31; m pt Data2 L405]=21 ; m pt Data2 L406)=181;
m [
pt Data2 L407]=236;
m [
pt Data2 L408 )=37; m pt Data2 L409)=12; m pt Data2 L410)=155;
m [
pt Data2 L411)=62;
m [
pt Data2 L412)=234; m pt Data2 L413)=130; m pt Data2 L4 14 ]=232;
m [
pt Data2 L415]=40;
m [
pt Data2 L416)=126; m pt Data2 L417]=23; m ptData2 L4181 =102;
m [
pt Data2 L419)=245;
m [
pt Data2 L420]=61; m pt Data2 L421)=32; m ptData2 L422)=161;
m [
pt Data2 L423]=233;
m [
pt Data2 L424 ]=113; m pt Data2 L425)=151; m ptData2 L426)=55;
m [
pt Data2 L427]=184;
m [
pt Data2 L428=239; m pt Data2 L429)=122; m ptData2 L430)=167;
m [
pt Data2 L431)=56;
m [
pt Data2 L432)=70; m pt Data2 L433)=172; m ptData2 L4 34 ]=52;
m [
pt Data2 L435]=4;
m [
pt Data2 L436)=24; m pt Data2 L437)=39; m ptData2 L438)=81 ;
m pt Data2 [(4391 =175;
m [
pt Data2 L440]=68; m pt Data2 L441)=98; m ptData2 L442)=216;
m [
pt Data2 L443)=142;
m [
pt Data2 L444 ]=26; m pt Data2 L445)=119; m ptData2 L446)=232;
m [
pt Data2 L447]=164;
m [
pt Data2 L448)=13 m pt Data2 L449)=194; m pt Data2 L450)=83;
m [
pt Data2 L451)=110;

- 619 -
Tras los pasos de un.. Hacker

m pt Data2 L452)=71 m pt Data2 L453)=191; m pt Data2 L454 ]=141;


m pt Data2 L455)=88;
m pt Data2 L456)=145; m ptData2 (4.57]=99; m ptData2 L458)=219;
m pt Data2 L459)=125;
m pt Data2 L460)=226; m pt Data2 L4 61)=255; m pt Data2 L462)=127;
m pt Data2 L463]=87;
m pt Data2 L464 ]=105; m pt Data2 L465)=165; m ptData2 L466)=190;
m pt Data2 L467]=60;
m pt Data2 L468)=129; m pt Data2 L469)=107; m pt Data2 L470)=237;
m pt Data2 L471)=25;
m pt Data2 L472)=145; m pt Data2 L473]=53; m pt Data2 L474 ]=139;
m pt Data 2475]=95;
m pt Data2 L476)=166; m pt Data2 L477]=222; m pt Data2 L478)=14;
m pt Data2 L479)=154;
m pt Data2 (4.80)=197; m pt Data2 L481)=226; m pt Data2 L482)=196;
m pt Data2 L483]=46
m pt Data2 L484 ]=38; m pt Data2 L485)=211; m ptData2 L486)=156;
m pt Data2 L487]=115;
m pt Data2 L488)=33; m pt Data2 L489)=238; m pt Data2 L490)=218;
m pt Data2 L491)=182;
m pt Data2 L492)=113; m pt Data2 L493]=86; m pt Data2 L494 ]=8;
m pt Data2 L495]=160;
m pt Data2 L496)=136; m pt Data2 L497]=242; m pt Data2 L498)=45;
m pt Data2 L499)=244;
m pt Data2 L'500]=133; m pt Data2 L501)=57; m pt Data2 L502)=101;
m pt Data2 L'503]=42;
m pt Data 2504]=197; m pt Data2 L505]=125; m pt Data2 L506)=234;
m pt Data2 L'507]=47;
m pt Data2 L'508)=229; m pt Data2 L509)=52; m pt Data2 L510]=205;
m [
pt Data2 L511)=204;

LPBYTE CNMCStream: : Generate Stream 2 (LPBYTE, ucKey, DWORD dv KeySize, DWORD dwStreamSize)
{
if ( 1 m bStreamInitialized)

SetILast Error (ERR NO MEMORY ALLOCATED FOR STREAM) ; //no memory allocated for
Stream
return NULL;
}

if ( (dw Key Size % 3) = 0)

SetILast Error (ERR INVALID KEY SIZE) ;


return NULL;
}

LPBYTE pData = (LPBYTE) : : Virtual Alloc (0, divStreamsize, MEM COMMIT, PAGE READWRITE) ;
if (p Data == NULL)

SetILast Error (ERR CANNOT ALLOCATE DATA BUFFER) ;


return NULL;
}

LPBYTE pPartial = (LPBYTE) : : Virtual Alloc (0, m dvStreamCut Size, MEM COMMIT,
PAGE READIRITE) ;
if (pPartial == NULL)

: : Virtual Free (pData, 0, MEM RELEASE) ;


SetILast Error (ERR CANNOT ALLOCATE DATA BUFFER) ;
return NULL;

- 620 -
NMC StreamC). Anexo I.

DWORD dv Parts = divStreamsize / m dvStreamCut Size;


DWORD dod = divStreamsize 3 m dvStreamCut Size;

for (DWORD i = 0; i dw Parts; i ++)


{
Stream2 (ucKey, dvKey Size, pPartial, m ptData2 ) ;
CopyMemory(p Data + (i * m dwStreamCut Size) , pPartial, m dwStreamCut Size) ;

if (dwMod = 0)

Stream2 (ucKey, dvKey Size, pPartial, m ptData2 ) ;


CopyMemory(p Data + (dw Parts m dwStreamCutSize) , pPartial, dwMod) ;
}

: : Virtual Free (pPartial, 0, MEM RELEASE) ;


SetILast Error (ERR SUCCESS) ;

return p Data;
}

BOOL CNMCStream: : Generate Stream2 ( LPBYTE, ucKey, DWORD dv Key Size, LPBYTE lpStream Buffer, DWORD
dwStream Buffer Size )

if ( Is ValidAddress(lp Stream Buffer, dwStream Buffer Size))


RETURNERROR (ERR INVALID EUFFER) ;

if ( 1 m bStreamInitialized)
RETURNERROR (ERR NO MEMORY ALLOCATED FOR STREAM) ; //no memory allocated for
Stream

if ( (dw Key Size % 3) = 0)


RETURNERROR (ERR INVALID KEY SIZE) ;

DWORD dv Parts = divStream Buffer Size / m dvStreamCut Size;


DWORD dod = divStreamBuffer Size 3 m dvStreamCut Size;

ZeroMemory (m lpStreamCutBuffer, m dwStreamCut Size) ;

for (DWORD i = 0; i dw Parts; i ++)


{
Stream2 (ucKey, dvKey Size, m lp StreamCutBuffer, m pt Data2 ) ;
CopyMemory(lpStream Buffer + (i * m dvStreamCut Size), m lpStreamCutBuffer,
m dvStreamCut Size) ;
}

if (dwMod = 0)

Stream2 (ucKey, dvKey Size, m lp StreamCutBuffer, m pt Data2 ) ;


CopyMemory(lpStream Buffer + (dwParts * m dvStreamCut Size) ,
m lpStreamCutBuffer, dwMod) ;
}

RETURNOK;

UINT CNMCStream: : Get Last Error ()


{
return m nLast Error;
}

Void CNMCStream: : SetLastError ( UINT n Error )

- 621 -
Tras los pasos de un... Hacker

{
m_nLastError = nError;
}

Recuerden que las otras funciones que estn definidas en la implementacin son
estndares en el C++ para Windows. Ustedes ya saben cmo invocarlas y
usarlas.

- 622 -
ANEXO II. CDIGO ASCII

Los caracteres de control ASCII.


El cdigo ASCII reserva los primeros 32 cdigos (numerados del 0 al 31 en
decimal) para caracteres de control que son cdigos no pensados originalmente
para representar informacin imprimible, sino para controlar dispositivos (como
impresoras) que usan ASCII. Por ejemplo, el carcter 10 representa la funcin
"nueva lnea" (line feed), que hace que una impresora avance el papel, y el
carcter 27 representa la tecla "escape" que a menudo se encuentra en la esquina
superior izquierda de los teclados comunes.

El cdigo 127 (los siete bits a uno), otro carcter especial, equivale a "suprimir"
("delete"). Aunque esta funcin se asemeja a otros caracteres de control, los
diseadores de ASCII idearon este cdigo para poder "borrar" una seccin de
papel perforado (un medio de almacenamiento popular hasta la dcada de 1.980)
mediante la perforacin de todos los agujeros posibles de una posicin de
carcter concreta, reemplazando cualquier informacin previa. Dado que el
cdigo 0 era ignorado, fue posible dejar huecos (regiones de agujeros) y ms
tarde hacer correcciones.

Muchos de los caracteres de control ASCII servan para marcar paquetes de


datos, o para controlar protocolos de transmisin de datos (por ejemplo ENQuiry,
con el significado: hay alguna estacin por ah?, ACKnowledge: recibido o "acuse
de recibo", Negative AcKnowledge: No recibido, Start Of Header: inicio de
cabecera, Start of TeXt: inicio de texto, End ofTeXt: final de texto, etc.). ESCape y
SUBstitute permitan a un protocolo de comunicaciones, por ejemplo, marcar
datos binarios para que contuviesen cdigos con el mismo cdigo que el carcter
de protocolo, y que el receptor pudiese interpretarlos como datos en lugar de
como caracteres propios del protocolo.

Los diseadores del cdigo ASCII idearon los caracteres de separacin para su
uso en sistemas de cintas magnticas.

Dos de los caracteres de control de dispositivos, comnmente llamados XON y


XOFF generalmente ejercan funciones de caracteres de control de flujo para

- 623 -
Tras los pasos de un... Hacker

controlar el flujo hacia un dispositivo lento (como una impresora) desde un


dispositivo rpido (como una computadora), de forma que los datos no saturasen
la capacidad de recepcin del dispositivo lento y se perdiesen.

Los primeros usuarios de ASCII adoptaron algunos de los cdigos de control para
representar "metainformacin" como final-de-lnea, principio/final de un
elemento de datos, etc. Estas asignaciones a menudo entraban en conflicto, as
que parte del esfuerzo de convertir datos de un formato a otro, implica hacer las
conversiones correctas de la metainformacin. Por ejemplo, el carcter que
representa el final-de-lnea en archivos de texto vara con el sistema operativo.

Cuando se copian archivos de un sistema a otro, el sistema de conversin debe


reconocer estos caracteres como marcas de final-de-lnea y actuar en
consecuencia.

Binario Decimal Hex Abreviatura Rep. AT Nombre/Significado

0000 0000 0 00 NUL ^@ Carcter Nulo

0000 0001 1 01 SOH ^A Inicio de Encabezado

0000 0010 2 02 STX ^B Inicio de Texto

0000 0011 3 03 ETX ^C Fin de Texto

0000 0100 4 04 EOT ^D Fin de Transmisin

0000 0101 5 05 ENQ ^E Enquiry

0000 0110 6 06 ACK ^F Acknowledgement

0000 0111 7 07 BEL ^G Timbre

0000 1000 8 08 BS ^H Retroceso

0000 1001 9 09 HT ^I Tabulacin horizontal

0000 1010 10 0A LF ^J Line feed

0000 1011 11 0B VT ^K Tabulacin Vertical

0000 1100 12 0C FF ^L Form feed

- 624 -
Cdigo ASCII. Anexo II.

0000) 11.01 13 0D CR CR AM Carriage return

0000) 1.110 14 0E SO 50 AN Shift Out

0000) 1.111 15 0F SI SI AO Shift In

(0001 0000 16 10 DLE DLE ap Data LinkEscape

(0001 0001 17 11 DC1 DC1 Q Device Control 1 oft,XON

(0001 0010 18 12 DC2 DC2 AR Device Control 2

(0001 0011 19 13 DC3 DC3 AS Device Control3 oft,XOFF

(0001 0100 20 14 DC4 DC4 AT Device Control4

(0001 0101 21 15 NAK NAK AU Negative Acknowledgement

(0001 0110 22 16 SYN SYN AV Synchronous Idle

(0001 0.111 23 17 ETB ETB AW End of Trans, Block

(0001 1000 24 18 CAN CAN AX Cancel

(0001 1001 25 19 EM EM Ay End ofMedium

(0001 1010 26 1A SUB SUB A7 Substitute

(0001 1011 27 1B ESC ESC A o ESC Escape

(0001 1100 28 1C FS FS A\ FileSeparator

(0001 1101 29 1D GS GS A Group Separator

(0001 1110 30 1.E RS RS AA Record Separator

(0001 1111 31 1F US US A UnitSeparator

0.111 1111 127 7F DEL DEL Delete

Actualmente los usuarios de ASCII usan menos los caracteres de control, (con
algunas excepciones como "retorno de carro" o "nueva lnea"). Los lenguajes
modernos de etiquetas, los protocolos modernos de comunicacin, el paso de

- 625 -
Tras los pasos de un... Hacker

dispositivos basados en texto a basados en grficos, el declive de las


teleimpresoras, las tarjetas perforadas y los papeles continuos han dejado
obsoleta la mayora de caracteres de control.

Caracteres imprimibles ASCII.


El cdigo del carcter espacio, designa al espacio entre palabras, y se produce
normalmente por la barra espaciadora de un teclado. Los cdigos del 33 al 126
se conocen como caracteres imprimibles y representan letras, dgitos, signos de
puntuacin y varios smbolos.

0010 1111
0000
0001
Binario 47
32
33
Dec 2F
20
21
Hex tacin ()
/!espacio
Represen 0000
0001
0011
0101
0111
1000
1010
1100
1110
Binario
0100 1111
0010
0100
0110
1001
1011
1101 64
65
67
69
71
72
74
76
78
66
68
70
73
75
77
79
Dec 40
41
43
45
47
48
4A
4C
4E
42
44
46
49
4B
4D
4F
Hex @
A
B
C
D
E
F
G
JIH
K
L
M
N
O
tacin
Represen Binario Dec Hex Represen
tacin

0110 0000 96 60 `

0110 0001 97 61 a

0010 0010 34 22 " 0110 0010 98 62 b

0010 0111
0011
0101
0100
0110 35
37
39
36
38 23
25
27
24
26 #
$
%
'& 0110 0011 99 63 c

0110 0100 100 64 d

0110 0101 101 65 e

0110 0110 102 66 f

0110 0111 103 67 g

0110 1000 104 68 h

01101001 105 69 i

00101100
0010 1000
1010
00101001
1011 40
42
44
41
43 28
2A
2C
29
2B *)(
,+ 0110 1010 106 6A j

01101011 107 6B k

0110 1100 108 6C l

00101101 45 2D - 0110 1101 109 6D m

0010 1110 46 2E . 0110 1110 110 6E n

0110 1111 111 6F o

- 626 -
Cdigo ASCII... Anexo II.

0011 1111
1101
1100
1110 61
63
60
62 3D
3F
3C
3E <
=
?> 0101 1111
0001
0010
0100
0110
1000
1001
1011
1101
0000
0011
0101
0111
1010
1100
1110 81
82
84
86
88
89
91
93
95
80
83
85
87
90
92
94 51
52
54
56
58
59
5B
5D
5F
50
53
55
57
5A
5C
5E P
Q
SR
T
U
V
W
X
Y
]\[Z
_^ 0111 0000 112 70 p

0111 0001 113 71 q

0111 0010 114 72 r

0111 0011 115 73 s

0111 0100 116 74 t

0111 0101 117 75 u

0111 0110 118 76 v

0111 0111 119 77 w

0111 1000 120 78 x

0111 1001 121 79 y

0001
0010
0100
0110
1000
1001
0011 1010
0000
0011
0101
0111 49
50
52
54
56
57
48
51
53
55
58 31
32
34
36
38
39
30
33
35
37
3A 0
1
2
3
4
5
6
7
8
:9 0111 1010 122 7A z

0011 1011 59 3B ; 0111 1011 123 7B {

0111 1100 124 7C |

0111 1101 125 7D }

0111 1110 126 7E ~

0111 1111 127 7F DEL

El ASCII de siete bits proporciona siete caracteres "nacionales" y, si la


combinacin concreta de hardware y software lo permite, puede utilizar
combinaciones de teclas para simular otros caracteres internacionales: en estos
casos un backspace puede preceder a un acento abierto o grave (en los
estndares britnico y americano, pero slo en estos estndares, se llama
tambin "opening single quotation mark"), una tilde o una "marca de respiracin".

- 627 -
Tras los pasos de un... Hacker

- 628 -
ANEXO III. INSTRUCCIONES EN TRUE BASIC

Este anexo hace una lista de todas las instrucciones en True BASIC y luego da uno
o dos ejemplos del uso de estas instrucciones.

ESTRUCTURAS E INSTRUCCIONES ORDINARIAS


Estas instrucciones son fundamentales para casi todos los programas:

PROGRAM
END FOR EXIT
(Estructura
FOR del bucle)

NEXT

LET

DO (Estructura del bucle) SELECT CASE (Estructura de seleccin)


EXIT DO CASE
LOOP CASE ELSE
END SELECT
IF (Estructura de decision)
ELSEIF
END IF
ELSE

Estas instrucciones son de varios tipos, algunas se trataron en este libro:

ASK FREE MEMORY RANDOMIZE


DIM REM
PAUSE STOP

Estas instrucciones se ocupan de los programas con nmeros de lnea, no se usan


actualmente pero se conservan por efectos de historia:

GOSUB ON GOTO
GOTO RETURN
ON GOSUB
Estas instrucciones permiten varias opciones de configuracin:

- 629 -
Tras los pasos de un... Hacker

OPTION ANGLE OPTION NOLET


OPTION ARITHMETIC OPTION TYPO
OPTION BASE OPTION USING
OPTION COLLATE

INSTRUCCIONES DE ENTRADA Y SALIDA


Estas son las principales instrucciones que se ocupan de las operaciones de
entrada y salida que son tratadas en este libro:

DATA MAT PRINT


INPUT MAT READ
LINE INPUT PRINT
MAT INPUT READ
MAT LINE INPUT RESTORE

Estas instrucciones de entrada-salida no se incluyen en este libro:

ASK MARGIN SET MARGIN


ASK ZONEWIDTH SET ZONEWIDTH

INSTRUCCIONES PARA EL MANEJO DE ARCHIVOS

True BASIC tiene las siguientes instrucciones para el manejo de archivos:

CLOSE #n OPEN #n:


ERASE #n RESET #n:
INPUT #n: PRINT #n:
LINE INPUT #n:

ASK #n: ACCESS MAT INPUT #n:


ASK #n: DATUM MAT LINE INPUT #n:
ASK #n: ERASABLE MAT PRINT #n:
ASK #n: FILESIZE
ASK #n: FILETYPE READ #n:
ASK #n: MARGIN RESET #n:
ASK #n: NAME
ASK #n: ORGANIZATION SET #n: MARGIN
ASK #n: POINTER SET #n: POINTER
ASK #n: RECORD SET #n: RECORD
ASK #n: RECSIZE SET #n: RECSIZE

- 630 -
Instrucciones en True BASIC... Anexo III.

ASK #n: RECTYPE SET #n: ZONEWIDTH


ASK #n: SETTER UNSAVE
ASK #n: ZONEWIDTH WRITE#n:

FUNCIONES Y SUBRUTINAS
Estas instrucciones son el corazn y el alma en la organizacin de programas
avanzados:

CALL EXTERNAL
DECLARE DEF (FUNCIN) LIBRARY
DEF LOCAL
DEF (Estructura de funcin) SUB (Estructura de subrutina)
EXIT DEF EXIT SUB
END DEF END SUB

FUNCTION DECLARE NUMERIC


FUNCTION (Estructura de funcin) DECLARE STRING
EXIT FUNCTION DECLARE SUB
END FUNCTION CHAIN

INSTRUCCIONES DE GRFICAS Y SONIDO


Estas instrucciones de grficas y sonido estn implementadas en True BASIC:

BOX AREA PICTURE (Estructura grfica)


BOX CIRCLE EXIT PICTURE
BOX CLEAR END PICTURE
BOX DISK PLAY
BOX ELLIPSE PLOT
BOX KEEP PLOT AREA
BOX LINES PLOT LINES
BOX SHOW PLOT POINTS
CLEAR PLOT TEXT
DRAW SOUND
FLOOD SET WINDOW
SET TEXT JUSTIFY

ASK BACK GET POINT


ASK COLOR MAT PLOT
ASK COLOR MIX MAT PLOT AREA
ASK CURSOR MAT PLOT LINES
ASK DIRECTORY
ASK MAX COLOR MAT PLOT POINTS
ASK MAX CURSOR OPEN SCREEN
ASK MODE SET BACK

- 631 -
Tras los pasos de un... Hacker

ASK NAME
ASK PIXELS SET COLOR
ASK SCREEN SET COLOR MIX
ASK TEXT JUSTIFY SET CURSOR
SET DIRECTORY
ASK WINDOW SET MODE
BOX DISK SET NAME
GET KEY WINDOW
GET MOUSE

INSTRUCCIONES MAT
Varias de estas instrucciones MAT se incluyen en este libro:

DIM MAT PRINT


MAT (Asignacin de matriz)
MAT INPUT MAT READ
MAT LINE INPUT
MAT REDIM MAT PLOT AREA
MAT WRITE MAT PLOT LINES
MAT PLOT POINTS

ESTRUCTURAS DE MDULO
Estas instrucciones, las cuales se ocupan de los mdulos, no se discuten en este
libro:
MODULE (Estructura)
PRIVATE DECLARE PUBLIC
PUBLIC SHARE
END MODULE

- 632 -
Instrucciones en True BASIC... Anexo III.

MANEJO DE EXCEPCIONES

El manejo de excepciones no se discute en este libro:

CAUSE ERROR o CAUSE EXCEPTION


CONTINUE

HANDLER
EXIT HANDLER
END HANDLER

RETRY

WHEN (Estructura de control de errores y excepciones)


USE
END WHEN

SUBRUTINAS INTERNAS

Aunque estrictamente hablando de las instrucciones, True BASIC incluye varias


subrutinas internas que funcionan como tales:
Clipboard
ComLib
ComOpen
Divide
Object
Packb
Read_Image
System
Sys_Event
TBD
Unpackb (una funcin, no una subrutina)
Write_Image

- 633 -
Tras los pasos de un... Hacker

- 634 -
Instrucciones en True BASIC... Anexo III.

LISTADO ALFABTICO DE LAS INSTRUCCIONES EN TRUEBASIC

Esta seccin da ejemplos y descripciones breves de las instrucciones y


estructuras discutidas en este libro. Puede encontrar abundante informacin
adicional acerca de las instrucciones de True BASIC en:

http://www.truebasic.com/ref/statements

INSTRUCCINBOXAREA
BOX AREA izquierda, derecha, inferior, superior

Dibuja el rectngulo especificado en las coordenadas izquierda, derecha, inferior,


superior y lo llena con el color definido para primer plano.

INSTRUCCINBOXCIRCLE
BOX CIRCLE izquierda, derecha, inferior, superior

Dibuja una elipse (o crculo) inscrito en el rectngulo especificado en las


coordenadas izquierda, derecha, inferior y superior con el color actual del primer
plano.

INSTRUCCINBOXCLEAR
BOX CLEAR izquierda, derecha, inferior, superior

Borra o limpia la regin rectangular de la pantalla especificada en las


coordenadas izquierda, derecha, inferior y superior; quiere decir que llena esa
regin con el color actual del primer plano.

- 635 -
Tras los pasos de un... Hacker

INSTRUCCINBOXELLIPSE
BOX ELLIPSE izquierda, derecha, inferior, superior

BOX ELLIPSE es lo mismo que BOX CIRCLE.

INSTRUCCINBOX KEEP
BOX KEEP izquierda, derecha, inferior, superior IN stringvar$

Copia el grfico que est en la regin rectangular de la pantalla especificada en


las coordenadas izquierda, derecha, inferior, superior y lo almacena en stringvar$.

INSTRUCCINBOXLINES
BOX LINES izquierda, derecha, inferior, superior

Dibuja los lados de un rectngulo con el color actual para el primer plano.

INSTRUCCINBOXSHOW
BOX SHOW stringvar$ AT izquierda, inferior

BOX SHOWpresenta la imagen previamente almacenada en stringvar$ en la posicin


rectangular cuya esquina inferior izquierda est especificada en la seccin AT.

INSTRUCCIN CALL
CALL nombre_de_subrutina (arg1, arg2, ..., argn)

La instruccin CALL invoca una subrutina definida por una instruccin SUB con el
mismo nombre (nombre_de_subrutina). Los argumentos de la subrutina invocada

- 636 -
Instrucciones en True BASIC... Anexo III.

por la instruccin CALL deben coincidir con los parmetros definidos en la


instruccin SUB respectiva en nmero, posicin, tipo y nmero de dimensiones.
El paso de parmetros se realiza por referencia; quiere decir que los cambios
hechos en los mismos por la subrutina causarn cambios simultneos a los
argumentos pasados en la instruccin CALL.

INSTRUCCIN CLEAR
CLEAR

Limpia o borra la pantalla o Ventana de Salida y posiciona al cursor de texto en


la fila 1, columna 1.

INSTRUCCIN DATA
DATA elemento,..., elemento

Los elementos que conforma una lista DATA pueden ser cadenas de caracteres
encerradas entre comillas o no, as como constantes numricas.
Para iniciar la ejecucin de un programa, todos los datos definidos en las listas de
instrucciones DATA estarn en una misma unidad de programa y se agruparn
dentro de la zona para guardar estos datos, en el orden en el cual se encuentran.

(Ver tambin READ y RESTORE).

INSTRUCCIN DECLARE DEF


DECLARE DEF nombre_de_funcin,...., nombre_de_funcin

Las instrucciones DECLARE DEF declaran todas las funciones externas que se usarn
en la unidad del programa dado, antes de su primer uso. Las instrucciones
DECLARE DEF deben declarar todas las funciones internas a ser usadas en la unidad

- 637 -
Tras los pasos de un... Hacker

del programa, cuyas definiciones posteriores en la unidad del programa las


habilitan para su primer uso.

INSTRUCCIN DEF
DEF identificador
identificador$(parm_1,
==expresin_numrica
expresin_de_cadena
..., parm_n)de
= caracteres
expresin_numrica

DEF identificador$ (parm_1, ..., parm_n) = expresin_de_cadena_de_caracteres

La instruccin DEF permite al programador definir funciones en una lnea.

La funcin es invocada, incluyendo su nombre con los argumentos respectivos en


una expresin. Los argumentos deben coincidir con los parmetros definidos en
la instruccin DEF en nmero, posicin, tipo y nmero de dimensiones.

ESTRUCTURA DEF
DEF...
identificador (parm_1, ..., parm_n)

EXIT DEF (opcional)


...
END DEF

La estructura DEF permite al programador definir nuevas funciones de varias


lneas de cdigo. La estructura DEF puede contener una o ms instrucciones EXIT
DEF.

Se invoca esta funcin incluyendo su nombre en una expresin con los


argumentos definidos convenientemente. Los argumentos deben coincidir con
los parmetros definidos en la estructura DEF en posicin, tipo y nmero de
dimensiones. El paso de los parmetros es por valor; esto quiere decir que
cualquier cambio a los parmetros no causar cambios a los correspondientes
argumentos.

- 638 -
Instrucciones en True BASIC... Anexo III.

La funcin definida puede contener tambin instrucciones DECLARE DEF y LOCAL.

INSTRUCCIN DIM
DIM arreglo (lmites), ..., arreglo (lmites)

Excepto por la funcin o parmetros de subrutina, cada arreglo en una unidad de programa
debe ser dimensionado en una instruccin DIM o LOCAL que ocurre lexicalmente antes de la
primera referencia a ese arreglo.

ITERACIN DO
DO { | WHILE condicin | UNTIL condicin | }
...
EXIT DO [opcional]
LOOP { WHILE condicin | UNTIL condicin | }

La instruccin DO puede contener una parte WHILE o una UNTIL, o nada, lo mismo
para la instruccin LOOP. Pueden existir cualquier nmero de instrucciones EXIT
DO.

INSTRUCCIN DRAW
DRAW nombre_dibujo (arg 1, ..., arg n)

DRAW nombre_dibujo (arg 1, ..., arg n) WITH trans *... * trans

trans: SCALE (tamao


(tamao)x, tamao y)

ROTATE (ngulo)

SHIFT (transformacin x, transformacin y)

SHEAR (ngulo)

- 639 -
Tras los pasos de un... Hacker

La (lista de argumentos) es opcional. La instruccin DRAW crea un cuadro


nombrado para que sea dibujado en la pantalla, justo como si la instruccin DRAW
fuera reemplazada por el cdigo de la definicin del cuadro. Los ngulos en
ROTATE y SHEAR son medidos en radianes a menos que est vigente la instruccin
OPTION ANGLE DEGREES.

Si la clusula WITH est presente, entonces una transformacin se aplicar


tambin a las instrucciones PLOT, FLOOD y MAT PLOT (pero no instrucciones BOX) en el
cuadro antes de dibujarlo. Si un cuadro contiene tambin instrucciones DRAW con
clusulas WITH, entonces la transformacin final es el producto de las
transformaciones a lo largo del camino. La transformacin consiste en
desplazamientos, rotaciones, inclinaciones, o cambios de escala o cualquier
secuencia de estas.
SCALEcon un argumento equivale a definir SCALE con dos argumentos con el
mismo factor de escala aplicado a ambos ejes x e y. Esto es, SCALE(a) = SCALE(a,a).
ROTATE crea un cuadro que ser girado en el sentido contrario de las agujas del
reloj a travs de un determinado ngulo.

SHIFT crear un cuadro que ser desplazado en la direccin x por una cantidad
definida en el primer argumento y en la direccin y por la cantidad definida en el
segundo argumento.
SHEAR crear un cuadro que ser inclinado en el sentido de las agujas del reloj a
travs de un ngulo especificado. Quiere decir que deja las lneas horizontales tal
cual pero inclina las lneas verticales a travs del ngulo dado.

INSTRUCCIN END

La instruccin END debe ser la ltima instruccin de un programa y es obligatoria.


Solamente se permite una instruccin END. El archivo que contiene el programa
tambin puede contener procedimientos externos y mdulos seguidos de la
instruccin END. Al ejecutar la instruccin END se termina la ejecucin del
programa.

- 640 -
Instrucciones en True BASIC... Anexo III.

INSTRUCCIN END DEF

La instruccin END DEF debe aparecer como la ltima instruccin de una estructura
DEF.

INSTRUCCIN END IF

La instruccin END IF debe aparecer como la ltima instruccin de una estructura


IF.

INSTRUCCIN END PICTURE

La instruccin END PICTURE debe aparecer como la ltima instruccin de una


estructura PICTURE.

INSTRUCCIN END SELECT

La instruccin END SELECT debe aparecer como la ltima instruccin de una


estructura SELECT.

INSTRUCCIN END SUB

La instruccin END SUB debe aparecer como la ltima instruccin de una estructura
SUB.

INSTRUCCIN EXIT DEF


EXIT DEF

- 641 -
Tras los pasos de un... Hacker

La instruccin EXIT DEF hace que el control del programa pase a la siguiente
instruccin de la instruccin END DEF de la funcin ms interna que la contiene. Es
opcional.

INSTRUCCIN EXIT DO
EXIT DO

La instruccin EXIT DO hace que el control del programa pase justo a la siguiente
instruccin de la instruccin LOOP de la iteracin DO ms interna que contiene EXIT
DO. Es opcional.

INSTRUCCIN EXITFOR
EXIT FOR

La instruccin EXIT FOR hace que el control del programa pase a la instruccin
posterior a la instruccin NEXT de la iteracin FOR ms interna que contiene EXIT
FOR. Es opcional.

INSTRUCCIN EXIT PICTURE


EXIT PICTURE

La instruccin EXIT PICTURE hace que el control del programa pase a la instruccin
posterior a la instruccin END PICTURE de la imagen ms interna que la contiene. Es
opcional.

INSTRUCCIN EXITSUB
EXIT SUB

- 642 -
Instrucciones en True BASIC... Anexo III.

La instruccin EXIT SUB hace que el control del programa pase a la instruccin
posterior a la instruccin END SUB de la subrutina ms interna que la contiene. Es
opcional.

INSTRUCCIN EXTERNAL
EXTERNAL

La instruccin EXTERNAL debe aparecer al comienzo de un archivo LIBRARY de


procedimientos externos.

INSTRUCCIN FLOOD
FLOOD coord_x, coord_y

FLOOD pintar, con el color actual del primer plano, la regin de la grfica
encerrada que contiene el punto cuya coordenada x es coord_x y cuya coordenada
y es coord_y.

ITERACIN FOR
FOR = exp_numrica_inicio TO
var_for exp_numrica_fin STEP valor_incremento
...
EXIT FOR [opcional]
...
NEXT var_for

Esta estructura define un lazo o bucle determinado que ejecutar las


instrucciones contenidas entre las instrucciones FOR y NEXT tantas veces como se
se puedeenopcionalmente
definan establecer
la exp_numrica_inicio un valor
hasta el lmite definido porpara
de incremento el contador del
la exp_numrica_fin,

bucle definido por el valor_incremento.

- 643 -
Tras los pasos de un... Hacker

La variable numrica var_for (no un elemento de un arreglo numrico) en la


instruccin NEXT debe ser la misma que la variable numrica que aparece en la
instruccin FOR. La parte STEP es opcional. Si no se define, el incremento ser 1.

INSTRUCCIN IF
IF condicin THEN instruccin simple ELSE instruccin simple

Si la condicin es verdadera, entonces la instruccin simple siguiente a la


palabra clave THEN se ejecutar y el control pasar a la prxima lnea.
Si la condicin es falsa y la clusula ELSE est presente, su instruccin simple se
ejecutar y el control pasar a la siguiente lnea. Si la clusula ELSE no est
presente, entonces el control pasar directamente a la siguiente lnea.

ESTRUCTURA IF
IF condicin 1 THEN
...
ELSE IF condicin 2 THEN
...
ELSE IF condicin 3 THEN
...
ELSE
...
END IF

La estructura IF puede tener 0 o ms partes ELSE IF y 0 o 1 ELSE. Si ELSE est


presente, debe seguir cualquier parte ELSE IF. La palabra clave ELSE IF puede ser
deletreada ELSEIF.
Si la condicin 1 es verdadera, las instrucciones que le siguen inmediatamente
se ejecutan, hasta el primer ELSE IF, ELSE o END IF, pasando el control del programa
a la instruccin siguiente a END IF.
Si la condicin 1 es falsa, el control del programa pasa a la primera parte ELSE IF
siguiendo a la lnea IF. Si la condicin 2 es verdadera, las instrucciones
siguientes a ella se ejecutan inmediatamente hasta la prxima ELSE IF, ELSE o END

- 644 -
Instrucciones en True BASIC... Anexo III.

IF, el control del programa entonces pasar a la siguiente instruccin de la lnea


END IF. Si la condicin 2 es falsa este proceso se repite.

Si no hay ms partes ELSE IF, entonces el control se pasa a la parte ELSE, y las
instrucciones siguientes a la lnea ELSE se ejecutan, hasta la lnea END IF. Si no hay
parte ELSE, el control es pasado a la instruccin siguiente a la lnea END IF.

INSTRUCCIN INPUT
INPUT variable,..., variable

INPUT PROMPT mensaje: variable,..., variable

Cuando se ejecuta una instruccin INPUT, el programa espera que el usuario


ingrese un dato. El ingreso de datos puede constar de cadenas de caracteres y
cadenas de caracteres nulas, separadas por comas.

Los tems en el ingreso de datos se asignan a las variables de la instruccin INPUT.


Las variables de cadena de caracteres pueden recibir cualquier tem de entrada
pero las variables numricas pueden recibir solamente tems de entrada cuyos
caracteres formen una constante numrica.

Las reglas son similares a aquellas para las instrucciones READ y DATA.

INSTRUCCIN LET
LET variable = frmula

La instruccin LET calcula la frmula a la derecha del signo igual y luego asigna el
valor a la variable a la izquierda del signo igual.

INSTRUCCIN LIBRARY
LIBRARY nombre_arch_lib,..., nombre_arch_lib

- 645 -
Tras los pasos de un... Hacker

La instruccin LIBRARY refiere al archivo o archivos que contienen definidas


rutinas externas requeridas para la correcta ejecucin del programa actual.

INSTRUCCIN LINE INPUT


LINE INPUT var_cadena_de_caracteres$, ..., var_cadena_de_caracteres$

LINE INPUT PROMPT mensaje: var_cadena_de_caracteres$, ..., var_cadena_de_


caracteres$

Una instruccin LINE INPUT requiere una o ms lneas de entrada por parte del
usuario. La primera lnea es suministrada a la primera
la la
var_cadena_de_caracteres$, segunda a segunda y as sucesivamente. Todos
los caracteres en la lnea de respuesta sern ingresados, incluyendo espacios al
comienzo o al final, comas incorporadas y comillas.

INSTRUCCIN LOCAL
LOCAL variable, ..., variable

Una instruccin LOCAL especifica que las variables nombradas en ellas son locales
para la rutina que contiene la instruccin. Si se llama un arreglo dentro de una
instruccin LOCAL, debe incluir tambin los lmites de los subndices. La
instruccin LOCAL normalmente es irrelevante en procedimientos externos,
porque todas las variables excepto los parmetros son automticamente
definidos como locales, pero esta definicin puede ser importante en
procedimientos internos. Una instruccin LOCAL puede ser usada junto con la
instruccin OPTION TYPO para evitar errores de digitacin en los nombres de las
variables.

INSTRUCCIN LOOP

La instruccin LOOP puede escribirse nicamente como la ltima instruccin de


una estructura iterativa DO y es necesaria. (Ver la iteracin DO).

- 646 -
Instrucciones en True BASIC... Anexo III.

INSTRUCCIN MAT INPUT


MAT INPUT arreglo,..., arreglo

MAT INPUT asigna valores a los arreglos especificados conforme el usuario los va
digitando ordenadamente. Deben ingresarse los valores por separado para cada
arreglo nombrado. Para cada arreglo, a los elementos se les asignar valores en
un orden cuenta revoluciones. (Quiere decir, que si el arreglo A est definido
de 2 por 2, el orden cuenta revoluciones es A(1,1), A(1,2), A(2,1), A(2,2).

Los datos a ingresar deben contener un nmero suficiente de valores en el tipo


de dato apropiado (numrico o de cadena de caracteres), separado por comas
para ingresarlos en una sola vez o en un grupo de datos de entrada pero el final
debe ir con una coma. (Ver la instruccin INPUT para ms detalles o respuestas de
entrada).

INSTRUCCIN MAT LINE INPUT


MAT LINE INPUT arreglo_cadena_de_caracteres$,..., arreglo_cadena_de_
caracteres$

La instruccin MAT LINE INPUT asigna lneas de respuesta a los elementos de los
arreglos nombrados, en orden de izquierda a derecha y dentro de cada arreglo en
orden cuenta revoluciones. La lnea entera de entrada es asignada a un
elemento de arreglo, incluyendo espacios anteriores y posteriores, y comas
incorporadas.

INSTRUCCIN MAT PRINT


MAT PRINT arreglo, ..., arreglo

La instruccin MAT PRINT presenta los elementos de cada arreglo nombrado en la


pantalla. Los valores de cada arreglo se presentan por separado, con una lnea en
blanco para seguir con los valores a presentar por cada arreglo. Para arreglos
bidimensionales, los valores para cada fila empiezan en una lnea nueva. Esta
regla tambin se aplica a los arreglos de tres o ms dimensiones.

- 647 -
Tras los pasos de un... Hacker

Cualquier comando puede ser reemplazado por un punto y coma, en este caso los
elementos de ese arreglo se imprimen lado por lado.

INSTRUCCIN MATREAD
MAT READ arreglo, ..., arreglo

La instruccin MAT READ asigna valores definidos en una lista DATA hacia los
elementos de cada uno de los arreglos, en orden. Para cada arreglo nombrado,
los valores se asignan en orden cuenta revoluciones - esto es, los ltimos
subndices se llenarn ms rpido, luego el siguiente al ltimo y as
sucesivamente.

Una variable de cadena de caracteres puede recibir cualquier dato vlido. Una
variable numrica puede recibir slo un dato que puede ser una cadena de
caracteres nula y una constante numrica vlida.

INSTRUCCIN NEXT

La instruccin NEXT puede usarse solamente como parte de una estructura


iterativa FOR y es necesaria.

INSTRUCCINOPTIONANGLE
OPTION ANGLE DEGREES

OPTION ANGLE RADIANS

La instruccin OPTION ANGLE le permite a usted especificar la unidad de medida


para los ngulos a ser usados con las funciones trigonomtricas y
transformaciones grficas. En ausencia de una instruccin OPTION ANGLE, la medida
del ngulo por defecto est dada en RADIANES.

- 648 -
Instrucciones en True BASIC... Anexo III.

INSTRUCCIN OPTIONTYPO
OPTION TYPO

La instruccin OPTION TYPO requiere que todas las variables que no sean
declaradas como arreglos que aparecen lexicalmente despus, sean declaradas
explcitamente. Estas deben ser declaradas con una instruccin LOCAL, o aparecer
como parmetros de una instruccin SUB, DEF o PICTURE. Una instruccin OPTION
TYPO se aplica al resto del procedimiento que la contiene y a todos los

procedimientos subsecuentes en el programa o archivo de biblioteca.

INSTRUCCIN PAUSE
PAUSE segundos

La instruccin PAUSE suspende la ejecucin del programa por un momento (en


segundos) y luego contina.

ESTRUCTURA PICTURE
PICTURE nombre_del_cuadro (lista de parmetros)
...
EXIT PICTURE [opcional]
...
END PICTURE

Una instruccin PICTURE puede contener una o ms instrucciones EXIT PICTURE.

Un PICTURE es dibujado con una instruccin DRAW. Aparte de esto un PICTURE acta
exactamente como una subrutina. El mecanismo de paso de los parmetros es el
mismo que en las subrutinas.
Si el PICTURE contiene instrucciones PLOT (PLOT, MAT PLOT o FLOOD) o contiene
instrucciones CALL o DRAW de otros cuadros o subrutinas, entonces el cuadro final
reflejar todas las transformaciones aplicadas a travs de todas las instrucciones
DRAW.

- 649 -
Tras los pasos de un... Hacker

INSTRUCCIN PLAY
PLAY expresin_de_cadena_de_caracteres

Interpreta las notas definidas en la cadena de caracteres. (Ver la gua de usuario


del True BASIC para ms detalles).

INSTRUCCIONES PLOT
Por conveniencia, el trmino punto significa dos coordenadas (x e y) separados
por una coma, como en coord_x, coord_y.

Todas las instrucciones PLOT en los cuadros ests sometidas a los efectos de la
transformacin actual.
Todas las instrucciones PLOT, excepto para PLOT TEXT, estn sujetas a los lmites de
la ventana que se est utilizando. Esto quiere decir que la porcin del dibujo que
est dentro de la ventana ser presentado, mientras la porcin de fuera de la
ventana no.

INSTRUCCIN PLOT POINTS


PLOT POINTS: punto; ...; punto

PLOT punto

La instruccin PLOT POINTS traza los puntos como puntos. PLOT x,y es una
abreviatura de PLOT POINTS: x,y.

INSTRUCCIN PLOT LINES


PLOT LINES: punto; ...; punto
PLOT punto; ...; punto
PLOT LINES: punto; ...; punto;
PLOT punto; ...; punto;

- 650 -
Instrucciones en True BASIC... Anexo III.

La instruccin PLOT LINES traza los segmentos de lnea que conectan los puntos.
Una lnea se dibuja desde el punto anterior hasta el primer punto si y slo si el
pincel trazador estuviera activado.

Las siguientes dos instrucciones son equivalentes:


PLOT x1, y1; x2, y2; x3, y3

PLOT LINES x1, y1; x2, y2; x3, y3

Si las instrucciones PLOT LINES y PLOT finalizan con un punto y coma, el pincel
permanece activado para que las subsecuentes instrucciones PLOT LINES o PLOT
continen trazando la lnea sin interrupcin; de otro modo, el pincel trazador se
levanta.

INSTRUCCIN PLOTAREA
PLOT AREA: punto; ...; punto

La instruccin PLOT AREA traza el polgono definido, conectando los puntos y lo


pinta con el color actual del primer plano. El ltimo punto no necesita repetir el
primer punto, ya que el segmento de lnea requerido para cerrar el polgono es
suministrado automticamente.

INSTRUCCIN PLOTTEXT
PLOT TEXT, AT punto: cadena de caracteres_de_texto$

La instruccin PLOT TEXT dibuja los caracteres especificados en la cadena de


caracteres de texto con el color actual en el punto especificado en la clusula AT.

INSTRUCCIN PLOT SIN PARMETROS


PLOT
PLOT LINES

- 651 -
Tras los pasos de un... Hacker

PLOT LINES

Estas instrucciones levantan el pincel de dibujo en caso de que una instruccin


previa PLOT o PLOT LINES finalice con un punto y coma. Ellas no tienen efecto si el
pincel an est levantado.

INSTRUCCIN PRINT
PRINT
PRINT lista-de-impresin
PRINT USING formato: lista-de-formato

lista-de-impresin: elemento_a_imprimir separador elemento_a_imprimir


elemento_a_imprimir separador elemento_a_imprimir;
separador:
lista-de-formato: elemento_formato
elemento_formato
, o ,
, elemento_formato;
elemento_formato

Los tems en una lista impresa pueden estar separados por comas o puntos y
comas y estar seguidos por una coma o un punto y coma final. Los tems en una
lista de formato pueden estar separados solamente por comas y ser seguidos slo
por un punto y coma.

Los elementos_a_imprimir se imprimen en la pantalla. Los valores numricos se


imprimen con un espacio previo para nmeros positivos. Los valores de cadena
de caracteres se imprimen tal cual, sin espacios adicionales adelante ni detrs. Si
el separador entre dos tems es un punto y coma, entonces los tems se imprimen
yuxtapuestos. Si el separador es una coma, entonces el prximo tem se imprime
en la siguiente zona de impresin.

Si una clusula USING est presente, los valores son impresos de acuerdo con el
formato especificado, sin considerar las zonas de impresin. La cadena de
caracteres siguiente a la palabra USING determina el formato.

Si la instruccin PRINT termina con un punto y coma, la impresin subsecuente


ocurrir inmediatamente siguiendo la misma lnea. Si la instruccin PRINT
termina con una coma, entonces la impresin subsecuente ocurrir en la misma
lnea pero en la prxima zona de impresin. De otro modo, la impresin
subsiguiente comenzar en la prxima lnea.

- 652 -
Instrucciones en True BASIC... Anexo III.

INSTRUCCIN PROGRAM
PROGRAM nombre-de-programa

La instruccin PROGRAM, si se us, debe ser el primer elemento del programa


principal, aparte de las lneas de comentarios. Para programas normales esto no
tiene otro propsito que proveer un lugar para el nombre del programa y recibir
parmetros desde una lnea de comandos si es del caso.

INSTRUCCIN RANDOMIZE
RANDOMIZE

La instruccin RANDOMIZE produce una nueva semilla para el generador de


nmeros pseudoaleatorios. No debera usarse ms de una vez en la ejecucin de
un programa.

INSTRUCCIN READ
READ variable,..., variable

La instruccin READ asigna a sus variables el siguiente dato de una lista DATA. Una
variable de cadena de caracteres puede recibir cualquier dato vlido. Una
variable numrica puede recibir slo un que es una constante numrica vlida.

INSTRUCCIN REM
REM carcter... carcter

La instruccin REM le permite agregar comentarios a su programa. Puede usar


cualquier carcter que quiera en la instruccin REM. Las instrucciones REM se
ignoran.

- 653 -
Tras los pasos de un... Hacker

Una instruccin REM es equivalente a una lnea de comentario que empieza con un
signo de exclamacin (!). Adicionalmente, un (!) puede usarse para colocar
comentarios en las mismas lneas con otras instrucciones de True BASIC.

INSTRUCCIN RESTORE
RESTORE

La instruccin RESTORE reinicializar el apuntador de datos al comienzo de la lista


de datos y de este modo le permite a usted reusar la lista de datos.

ESTRUCTURA SELECT CASE


SELECT CASE expresin-select

CASE especificador-de-caso-1
...

CASE especificador-de-caso-2
...

CASE ELSE
...

END SELECT

La estructura SELECT CASE puede tener cero o ms instrucciones CASE, y cero o una
instruccin CASE ELSE pero debe tener al menos una o ambas partes CASE o CASE
ELSE. Las constantes en un especificador-de-caso deben ser del mismo tipo

(numrico o de cadena de caracteres) como en expresin-select en la instruccin


SELECT CASE.

La expresin-select en la instruccin SELECT CASE se evala primero. El


especificador-de-caso en la primera parte CASE es examinada despus. Si esto
satisface alguna de las estructuras CASE, entonces las instrucciones siguientes a la
instruccin CASE se ejecutan y el control pasa a la primera instruccin posterior a
END SELECT.

- 654 -
Instrucciones en True BASIC... Anexo III.

Si no se satisface la primera instruccin CASE, entonces la segunda instruccin


CASE ser examinada de forma similar y as sucesivamente.

Si ninguna instruccin CASE se satisface, entonces las instrucciones siguientes a la


instruccin CASE ELSE se ejecutan. Si ninguna instruccin CASE es satisfecha y no
est definida una parte CASE ELSE, entonces ocurrir una excepcin.

INSTRUCCINSETBACK
SET BACK nmero_color

SET BACK nombre_color$

SET BACK es una abreviacin de la instruccin SET BACKGROUND COLOR. SET BACK
utilizada con nmero_color establece el fondo de pantalla con el color que tiene
ese nmero. SET BACK utilizada con nombre_color$ establece el fondo de la
pantalla con el color nombrado; vea la instruccin SET COLOR para tener una lista
de nombres de los colores permitidos.

INSTRUCCINSET COLOR
SET COLOR nmero_color

SET COLOR nombre_color$

SET COLOR con nmero_color establece el color del pincel para el primer plano con
el color definido para ese nmero. Los nmeros fuera de este rango tendrn
efectos que dependern de una mquina en particular. Si su computadora no
tiene un monitor a color, True BASIC presentar un diseo conveniente para esa
pantalla.
SET COLOR con nombre_color$ establece el color del pincel para el primer plano con
el color nombrado, el cual debe ser uno de los siguientes:
MAGENTA (MORADO) CYAN (AZUL VERDOSO) WHITE (BLANCO)
RED (ROJO) BLUE (AZUL) GREEN (VERDE)
YELOW (AMARILLO) BROWN (CAF) BLACK (NEGRO)
BACKGROUND (FONDO)

- 655 -
Tras los pasos de un... Hacker

INSTRUCCINSET MODE
SET MODE modo$

Cambia el modo de pantalla actual al especificado. Si es un modo permitido pero


no disponible, True BASIC establecer el modo disponible ms apropiado. Si no
es un modo permitido, esto quiere decir que el nombre ingresado no corresponde
a ningn modo vlido, True BASIC utilizar el modo por defecto para cada
mquina.

INSTRUCCINSETWINDOW
SET WINDOW izquierda, derecha, inferior, superior

Establece las coordenadas de una ventana para grficas en la ventana que se est
usando.

INSTRUCCINSOUND
SOUND frecuencia, segundos

La instruccin SOUND hace que la computadora emita un sonido con la frecuencia y


duracin especificadas.

INSTRUCCIN STOP
STOP

Detiene la ejecucin del programa.

- 656 -
Instrucciones en True BASIC... Anexo III.

ESTRUCTURA SUB
SUB identificador (parm 1, ..., parm n)
...
EXIT SUB [opcional]
...
END SUB

Una subrutina puede contener una o ms instrucciones EXIT SUB. Una instruccin
CALL invoca a una subrutina; quiere decir que la empezar a ejecutar. Los
argumentos en la instruccin CALL deben coincidir con los definidos como
parmetros en la instruccin en nmero, posicin, tipo y nmero de dimensiones.
El paso de parmetros es por referencia, esto quiere decir que los cambios al
parmetro dentro de la subrutina causarn simultneos cambios a los
argumentos de la instruccin CALL.

ESTRUCTURA WHEN
WHEN EXCEPTION IN
... !Parte protegida
USE
... !Ejecutar si una excepcin est en una parte protegida
END WHEN

Esta subrutina puede ser usada para atrapar errores de ejecucin llamados
excepciones. Los ejemplos pueden ser una divisin para 0 o intentar abrir un
archivo que no existe. Si una excepcin de cualquier tipo ocurre en la porcin
protegida, las instrucciones de recuperacin entre la instruccin USE y la
instruccin END WHEN se ejecutan. Si no ocurre ninguna excepcin en la parte
protegida, las instrucciones de recuperacin se ignoran.

Las funciones EXLINE, EXLINE$, EXTEXT$ y EXTYPE pueden ser usadas para determinar
la naturaleza exacta de una excepcin.

- 657 -
Tras los pasos de un... Hacker

- 658 -
ANEXO IV. FUNCIONES INTERNAS EN TRUE BASIC

Este anexo describe una lista de la mayora de las funciones de True BASIC. Las
funciones estn agrupadas primero por tipo y luego listadas alfabticamente con
una breve explicacin. True BASIC tambin ofrece informacin adicional acerca
de las funciones internas en su seccin de referencia en su Web Site que se
encuentra en:

http://www.truebasic.com/ref

FUNCIONES MATEMTICAS

Funcin Resultado

ABS(x) Valor absoluto de x.


ACOS(x) Arcocoseno de x.
ANGLE(x,y) ngulo entre el eje xy (x,y).
ASIN(x) Arcoseno de x.
ATN(x) Arcotangente de x.
CEIL(x) Calcula (-INT(-x)).
COS(x) Coseno de x.
COSH(x) Coseno hiperblico de x.
COT(x) Cotangente de x.
CSC(x) Cosecante de x.
DEG(x) Traduce x radianes a grados.
EPS El nmero positivo ms pequeo que no sea cero.
EXP(x) Funcin exponencial de x.
FP(x) Parte fraccionaria de x.
INT(x) Parte entera de x.
IP(x) El entero ms grande <=x.
LOG(x) Logaritmo natural de x.
LOG10(x) Logaritmo comn (base 10) de x.
LOG2(x) Logaritmo a la base 2 de x.
MAX(x,y) El mayor de dos nmeros x e y.
MAXNUM El nmero positivo ms grande.

- 659 -
Tras los pasos de un... Hacker

MIN(x,y) El menor de dos nmeros x e y.


MOD(x,y) Calcula la funcin mdulo entre x e y.
PI Valor del nmero Pi.
REMAINDER(x,y)
RAD(x)
RND Traduce x grados a radianes.
Calcula el resto de dividir x pory.
Escoger al azar un nmero entre 0 y <1.
ROUND(x,n)
SEC(x) Redondear x a n dgitos decimales.
Secante de x.
SGN(x) Signo de x.
SINH(x)
SIN(x) Seno de x.
Seno hiperblico de x.
TAN(x)
SQR(x) Raz cuadrada de x.
Tangente de x.
TANH(x) Tangente hiperblica de x.
TRUNCATE(x,n) Trunca x a n valores decimales n.

FUNCIONES DE FECHA Y HORA

Funcin Resultado

DATE Ao y da del ao como un nmero.


DATE$ Ao, mes y da del mes como una cadena de caracteres.
TIME Segundos transcurridos desde la medianoche.
TIME$ La hora de las 24 horas como una cadena de caracteres.

FUNCIONES STRING A NMEROS

Funcin Resultado

ORD(x$)
CHR$(x) Carcter representado por x nmeros ASCII.
Posicin normal de x$ en el grupo de caracteres ASCII.
NUM(x$) Valor numrico en IEEE en la cadena de caracteres x$ de 8
bytes.
STR$(x)
NUM$(x) IEEE de 8 bytes equivalente del valor numrico x.
Cambia un nmero x a una cadena de caracteres.

- 660 -
Funciones Internas en True BASIC... Anexo IV.

VAL(x$) Cambia una cadena de caracteres x$ que contiene dgitos a


un valor numrico.

FUNCIONES DETRANSFORMACIN DE STRINGS

Funcin Resultado

TRIM$(x$)
RTRIM$(x$)
LTRIM$(x$)
UCASE$(x$)
LCASE$(x$) Cambiar letras a minsculas.
Cambiar letras a maysculas.
Remover espacios anteriores.
Remover espacios posteriores.
Remover espacios anteriores & posteriores.
REPEAT$(x$,n) x$ repetido n veces.

FUNCIONES DE BSQUEDA EN STRINGS

Funcin Resultado

LEN(x$) Nmero de caracteres en x$.


POS(x$,y$,n) Primera aparicin de y$ en x$ despus del carcter n.
POSR(x$,y$) dem POS pero empezando por el final.
CPOS(x$,y$) Primera aparicin en x$ de cualquier carcter en y$.
NCPOSR(x$,y$)
NCPOS(x$,y$)
CPOSR(x$,y$) dem CPOS pero empezando por el final.
Primera aparicin en x$ de cualquier carcter no en y$.
dem NCPOS pero empezando por el final.

FUNCIONES EN ARREGLOS

Funcin Resultado

UBOUND(A,n)
LBOUND(A,n)
DOT(A,B)
DET(A) Determinante de la matriz cuadrada A.
Producto de punto de vectores A y B.
Margen inferior de dimensin n para arreglo A.
Margen superior de dimensin n para arreglo A.

- 661 -
Tras los pasos de un... Hacker

SIZE(A,n) Nmero de elementos en dimensin n de arreglo A.

FUNCIONES MAT (MATRICES)

Funcin Resultado

CON Arreglo de unos.


IDN Matriz identidad.
NUL$
INV(A) Inverso de matriz A.
Arreglo de cadenas de caracteres vacas.
TRN(A)
ZER Transponer arreglo A.
Arreglo de ceros.

- 662 -
Funciones Internas en True BASIC... Anexo IV.

LISTADO ALFABTICO DE LAS FUNCIONES EN TRUEBASIC

FUNCINABS
ABS(expresin_numrica)

Retorna el valor absoluto del argumento.

FUNCINACOS
ACOS(expresin_numrica)

Retorna el valor de la funcin Arcocoseno de x. El resultado es dado en radianes


o grados dependiendo de si la instruccin OPTION ANGLE est en RADIANES (por
defecto) o GRADOS.

FUNCINANGLE
ANGLE(expresin_numrica, expresin_numrica)

ANGLE(x,y) retorna el ngulo en el sentido contrario de las agujas del reloj entre el
eje X y el punto (x,y). Ntese que x e y no pueden ser ambos cero. El ngulo ser
dado en radianes o grados dependiendo de si la instruccin OPTION ANGLE est en
RADIANES (por defecto) o GRADOS. El ngulo siempre estar en el rango -180 <
ANGLE(x,y) <= 180 (asumiendo que la instruccin normal OPTION ANGLE est en

GRADOS).

FUNCINASIN
ASIN(x)

- 663 -
Tras los pasos de un... Hacker

Retorna el valor de la funcin Arcoseno de x. El resultado es dado en radianes o


grados dependiendo de si la instruccin OPTION ANGLE est en RADIANES (por
defecto) o en GRADOS.

FUNCIN ATN
ATN(expresin_numrica)

ATN(x) regresa el arco tangente de x, el cual es el ngulo cuya tangente es x. El


ngulo ser dado en radianes o grados teniendo en cuenta si la instruccin OPTION
ANGLE est en RADIANES (por defecto) o GRADOS. El ngulo estar siempre en el
rango -90 < ATN(x) < 90 (asumiendo que la instruccin OPTION ANGLE est en
GRADOS).

FUNCIN CEIL
CEIL(expresin_numrica)

Retorna el nmero entero que es mayor o igual al ingresado como argumento en


la expresin_numrica. Por ejemplo: CEIL(1.9) = 2, CEIL(13) = 13 y CEIL(-2.1) = 2.

FUNCIN CHR$
CHR$(expresin_numrica)

Retorna el carcter cuyo nmero decimal ASCII es ingresado como argumento


con una expresin numrica (ver Anexo II). Si la expresin numrica no est en
el rango de 0 a 255, inclusive, el error de excepcin 4002 ser producido.

- 664 -
Funciones Internas en True BASIC... Anexo IV.

FUNCIN DE ARREGLO CON


CON arreglo_redimensionado

CON es unafuncin de arreglo que produce un arreglo numrico que constan todos
sus elementos igualados a uno. CON utiliza con una instruccin de asignacin MAT.

FUNCIN COS
COS(x)

Retorna el valor de la funcin coseno de x. Se toma el argumento en radianes o


grados dependiendo de si la instruccin OPTION ANGLE est en RADIANES (por
defecto) o GRADOS.

FUNCIN COSH
COSH(x)

Retorna el valor de la funcin coseno hiperblico de x.

FUNCIN COT
COT(x)

Retorna el valor de la funcin cotangente de x. El argumento se toma para


radianes o grados dependiendo de si la instruccin OPTION ANGLE est en
RADIANES o GRADOS.

FUNCIN CPOS
CPOS(expresin_string_1,expresin_string_2)

- 665 -
Tras los pasos de un... Hacker

CPOS(expresin_string_1, expresin_string_2, expresin_numrica_redondeada)

Retorna la posicin de la primera coincidencia en el primer argumento de


cualquier carcter del segundo argumento. Si ningn carcter del segundo
argumento aparece en el primero, o si la cadena de caracteres est vaca,
entonces CPOS retornar 0.
Si un tercer argumento est presente, este tiene que ser numrico; entonces la
bsqueda de la primera coincidencia comienza en la posicin del carcter de la
primera cadena de caracteres dada por ese nmero y contina a la derecha. La
primera forma de CPOS es equivalente a la segunda forma con el tercer argumento
igual a uno.

FUNCIN CPOSR
CPOSR(expresin_string_1, expresin_string_2)

CPOSR(expresin_string_1, expresin_string_2, expresin_numrica_redondeada)

Retorna la posicin de la ltima coincidencia en el primer argumento de


cualquier carcter del segundo argumento. Si ningn carcter en el segundo
argumento aparece en el primero, o si la cadena de caracteres est vaca,
entonces CPOSR retorna a 0.
Si un tercer argumento est presente, este tiene que ser numrico; entonces la
bsqueda de la ltima coincidencia comienza en la posicin del carcter en la
primera cadena de caracteres dada por ese nmero y contina a la izquierda
(esto es, hacia atrs). La primera forma de CPOSR es equivalente a la segunda
forma con el tercer argumento igual a la longitud de caracteres del primer
argumento.

FUNCIN CSC
CSC(x)

- 666 -
Funciones Internas en True BASIC... Anexo IV.

Retorna el valor de la funcin cosecante de x. Se toma el argumento en radianes o


grados dependiendo de si la instruccin OPTION ANGLE est en RADIANES (por
defecto) o en GRADOS.

FUNCIN DATE
DATE

DATE es una funcin sin argumento, retorna la fecha actual en formato numrico
decimal YYDDD, donde YY son los dos ltimos dgitos del ao y DDD es el nmero
del da en el ao. Si su computadora no puede indicar la fecha, DATE devuelve -1.

FUNCIN DATE$
DATE$

DATE$ es una funcin de cadena de caracteres valorada sin argumento, retorna la


fecha actual en formato string YYYYMMDD. Donde YYYY es el ao, MM es el
nmero del mes y DD es el nmero del da. Si su computadora no puede indicar
la fecha, entonces DATE$ retornar 00000000.

FUNCIN DEG
DEG(x)

Transforma los radianes expresados en x a grados. Esta funcin no se afecta por


la instruccin OPTION ANGLE activa.

FUNCIN DET
DET(matriz)

- 667 -
Tras los pasos de un... Hacker

Retorna el valor de la determinante de la matriz numrica cuadrada ingresada


como argumento.

FUNCIN DOT
DOT(vector_1, vector_2)

DOTcalcula y retorna el producto punto de dos vectores, los cuales deben ser
numricos y tener el mismo nmero de elementos. (Los subndices no
necesariamente tienen que ser los mismos). Si los dos arreglos no tienen
elementos, entonces DOT retorna 0.

FUNCIN EPS
EPS(expresin_numrica)

EPS(x) devuelve el valor del nmero positivo ms pequeo que puede marcar la
diferencia cuando se suma o resta de x.

FUNCIN EXLINE
EXLINE

EXLINE captura el nmero de la lnea de su programa donde ocurri el ltimo


error. Si su programa no tiene nmeros de lnea, EXLINE retorna el nmero
ordinal de la lnea donde ocurri el error en el archivo de cdigo fuente.

FUNCIN EXLINE$
EXLINE$

- 668 -
Funciones Internas en True BASIC... Anexo IV.

EXLINE$ captura la ubicacin del error recientemente ocurrido como una cadena
de caracteres. Informa el nmero de la lnea y la rutina en la cual el error ocurri.
Si el error ocurri en el interior de alguna subrutina anidada, EXLINE$ retorna la
genealoga del error, es decir, incluye los nombres de las subrutinas intermedias
y los nmeros de lnea de las instrucciones CALL correspondientes.

FUNCIN EXP
EXP(x)

Retorna el exponencial natural del argumento. Esto es, EXP(x) calcula e^x, donde
e=2,718281828..., la base de los logaritmos naturales.

FUNCIN EXTEXT$
EXTEXT$

EXTEXT$ captura el mensaje de error asociado con el error ms reciente, si hay


alguno, siempre y cuando el error fuera atrapado por una estructura para el
manejo de errores. Si un error no es controlado, True BASIC alerta al usuario con
el mensaje de error y detiene el programa.

FUNCIN EXTYPE
EXTYPE

EXTYPE retorna el cdigo de error ms reciente, siempre que el error fuera


atrapado por una estructura para el manejo de errores. Algunos de los nmeros
de error se encuentran en el Anexo V, junto con los mensajes de error asociados.

- 669 -
Tras los pasos de un... Hacker

FUNCIN FP
FP(expresin_numrica)

Retorna la parte fraccionaria de un nmero ingresado como argumento.

FUNCIN DE ARREGLO IDN


IDN arreglo_redimensionado

IDN

IDN esuna funcin de arreglo que produce la matriz de identidad, la cual es una
matriz numrica cuadrada que consta de unos en su diagonal principal y ceros en
todas las otras posiciones. IDN se usa con una instruccin de asignacin MAT.

FUNCIN INT
INT(expresin_numrica)

Retorna la parte entera del argumento numrico ingresado.

FUNCIN DE ARREGLO INV


INV(nombre_arreglo)

Retorna la matriz inversa de su argumento, el cual debe ser una matriz numrica
cuadrada. INV debe ser usado con una instruccin de asignacin MAT.

FUNCIN IP
IP(expresin_numrica)

- 670 -
Funciones Internas en True BASIC... Anexo IV.

Retorna el valor entero de una expresin numrica sin considerar el signo.

FUNCIN LBOUND
LBOUND(nombre_de_arreglo, dimensin_arreglo)

LBOUND(nombre_de_arreglo)

En esta funcin si existen dos argumentos, LBOUND retorna el valor ms bajo (el
lmite ms bajo) permitido como subndice en el arreglo en la dimensin
especificada por dimensin_arreglo. Si no hay un segundo argumento,
nombre_de_arreglo debe ser un vector, LBOUND retornar el valor ms bajo (lmite
ms bajo) para su subndice.

FUNCIN LCASE$
LCASE$(expresin_string)

Retorna el contenido de las letras de una expresin de cadena de caracteres ASCII


convertidas a minsculas. Los caracteres de fuera del grupo de letras maysculas
ASCII no son convertidos.

FUNCIN LEN
LEN(expresin_string)

Retorna el valor de la longitud (que es el nmero de caracteres) del argumento


ingresado en la expresin de cadena de caracteres. Todos los caracteres cuentan,
incluyendo los caracteres de control y otros caracteres no imprimibles.

- 671 -
Tras los pasos de un... Hacker

FUNCIN LOG
LOG(x)

Retorna el logaritmo natural de x, el cual debe ser mayor que 0. El logaritmo


natural de x puede ser definido como el valor v tal que e^v=x, donde e =
2,718281828...

FUNCIN LOG10
LOG10(x)

Retorna el logaritmo comn de x, el cual debe ser mayor que 0. El logaritmo


comn de x es definido como el valor v tal que 10^v=x.

FUNCIN LOG2
LOG2(x)

Retorna el logaritmo en base 2 de x, el cual debe ser mayor que 0. El logaritmo en


base 2 de x es definido como el valor v tal que 2^v=x.

FUNCIN LTRIM$
LTRIM$(expresin_string)

Retorna el valor de la expresin de cadena de caracteres pero sin los espacios


blancos previos que contenga el string. Los espacios blancos que estuvieran
posteriores al string, si los hay, se conservan.

- 672 -
Funciones Internas en True BASIC... Anexo IV.

FUNCIN MAX
MAX (expresin_numrica_1, expresin_numrica_2)

Retorna el mayor de los valores de los dos argumentos.

FUNCIN MAXLEN
MAXLEN (strvar)

Retorna la mxima longitud (mximo nmero de caracteres) que puede


almacenar la variable de cadena de caracteres o, si strvar se refiere a un arreglo,
la longitud mxima que se puede almacenar para cada cadena de caracteres en el
arreglo. Si no hay longitud mxima determinada, MAXLEN retorna MAXNUM.

FUNCIN MAXNUM
MAXNUM

Es una funcin sin argumento, MAXNUM retorna el nmero mayor que se puede
representar en su computadora.

FUNCIN MAXSIZE
MAXSIZE (nombre_de_arreglo)

MAXSIZE siempre retorna 2^31.

FUNCIN MIN
MIN (expresin_numrica_1, expresin_numrica_2)

- 673 -
Tras los pasos de un... Hacker

Retorna el menor de los valores de los dos argumentos. (Nota: -2 es menor que
-1).

FUNCIN MOD
MOD(expresin_numrica_1, expresin_numrica_2)

Retornax mdulo y, siempre que y no sea igual a cero.

FUNCIN NCPOS
NCPOS(expresin_string_1, expresin_string_2)

NCPOS(expresin_string_1, expresin_string_2, expresin_numrica_redondeada)

Retorna la posicin de la primera coincidencia en el primer argumento de


cualquier carcter que no est en el segundo argumento. Si todos los caracteres
del primer argumento aparecen en el segundo, o el primer argumento est vaco,
entonces NCPOS retorna 0. Si el segundo argumento est vaco pero no el primero,
entonces NCPOS retorna 1.
Si un tercer argumento se presenta, este tiene que ser numrico; entonces la
bsqueda para la primera no aparicin comienza en la posicin fijada del
carcter de la primera cadena de caracteres por el nmero dado y contina a la
derecha. Si el segundo argumento est vaco pero no el primero, entonces NCPOS
retorna el valor de la posicin inicial.

La primera forma de NCPOS es equivalente a la segunda forma con el tercer


argumento igual a uno.

FUNCIN NCPOSR
NCPOSR(expresin_string_1,expresin_string_2)

NCPOSR(expresin_string_1,expresin_string_2,expresin_numrica_redondeada)

- 674
Funciones Internas en True BASIC... Anexo IV.

Retorna la posicin de la primera coincidencia en el primer argumento de


cualquier carcter que no est en el segundo argumento. Si todos los caracteres
en el primer argumento aparecen en el segundo argumento, o si el primer
argumento est vaco, entonces NCPOSR retorna a 0. Si el segundo argumento est
vaco pero no el primero, entonces NCPOSR retorna la longitud de la primera
cadena de caracteres.
Si se presenta un tercer argumento, este tiene que ser numrico; entonces la
bsqueda para la ltima no aparicin comienza en la posicin del carcter fijado
en la primera cadena de caracteres dada por ese nmero y contina hacia la
izquierda (esto es, hacia atrs). Si el segundo argumento est vaco pero no el
primero, entonces NCPOSR retorna el valor inicial.

La primera forma de NCPOSR es equivalente a la segunda forma con el tercer


argumento igual a la longitud del primero.

FUNCIN DE ARREGLONUL$
NUL$ arreglo_redimensionado

NUL$

NUL$es una funcin de arreglo que produce un arreglo de cadena de caracteres


que es llenado completamente de cadenas de caracteres vacas. NUL$ puede
usarse slo con una instruccin de asignacin MAT.

FUNCIN NUM
NUM (expresin_string)

NUM retorna el valor numrico que est almacenado como una cadena de
caracteres, la cual debe contener exactamente ocho caracteres, usando el formato
IEEE de ocho bytes. Previamente, la cadena de caracteres debera construirse
con la funcin NUM$.

- 675 -
Tras los pasos de un... Hacker

FUNCIN NUM$
NUM$(x)

NUM$retorna una cadena de caracteres con ocho caracteres que contiene el valor
numrico correspondiente a x expresado en el formato IEEE de ocho bytes.

Normalmente, la funcin NUM debe usarse para convertir la cadena de caracteres


nuevamente como nmero.

FUNCINORD
ORD(expresin_string)

Retorna el valor del cdigo correspondiente en el grupo de caracteres ASCII del


carcter definido en expresin_string, la cual debe ser un carcter simple, dos
lcitos o el nemotcnico de los caracteres de control definidos en los primeros 32
cdigos ASCII como se describe en el Anexo II, excepto que ORD()= -1 (
significa que la cadena de caracteres es nula), ORD es la funcin inversa de la
funcin CHR$. Se cumple que ORD(CHR$(n))=n para todo n en el rango de 0 a 255.

Sin embargo, se cumplir que CHR$(ORD(a$))=a$ slo si el valor de a$ es un carcter


ASCII sencillo.

FUNCIN PI
PI

Es una funcin sin argumento, PI retorna el valor del nmero pi, que es el valor
de la relacin matemtica del radio de una circunferencia a su dimetro
(aproximadamente igual a 3,14159265).

- 676 -
Funciones Internas en True BASIC... Anexo IV.

FUNCIN POS
POS(expresin_string_1, expresin_string_2)

POS(expresin_string_1, expresin_string_2, expresin_numrica_redondeada)

Retorna la posicin del primer carcter que corresponde en la primera expresin


string con los caracteres de la segunda expresin string, comenzando desde el
principio de la primera cadena. Si la segunda cadena de caracteres no aparece en
la primera cadena de caracteres, o si la primera cadena de caracteres est vaca y
la segunda no, POS retorna 0. Si la segunda cadena de caracteres est vaca,
entonces POS retorna 1.
Si se fija un tercer argumento, este tiene que ser numrico; entonces la bsqueda
de la segunda cadena de caracteres en la primera, comienza en esa posicin dada
por ese nmero y contina hacia la derecha. Si la segunda cadena de caracteres
est vaca, retorna la posicin inicial. La primera forma de POSes equivalente a la
segunda forma con el tercer argumento igual a uno.

FUNCIN POSR
POSR(expresin_string_1, expresin_string_2)

POSR(expresin_string_1, expresin_string_2, expresin_numrica_redondeada)

Retorna la posicin del primer carcter que corresponde en la primera expresin


string con los caracteres de la segunda expresin string, comenzando desde el
final de la primera cadena. Si la segunda cadena de caracteres no aparece en la
primera cadena de caracteres, o si la primera cadena de caracteres est vaca y la
segunda no, POSR retorna 0. Si la segunda cadena de caracteres est vaca,
entonces POSRretorna la longitud de la primera cadena de caracteres ms uno.
Si se coloca un tercer argumento, este tiene que se numrico; entonces la
bsqueda de la ltima aparicin empieza en la posicin del carcter de la primera
cadena de caracteres fijada por ese argumento y contina hacia la izquierda (esto
es hacia atrs). Si la segunda cadena de caracteres est vaca, POSR retorna la
posicin inicial como respuesta.

- 677 -
Tras los pasos de un... Hacker

La primera forma de POSR ser equivalente a la segunda forma, si fijamos el tercer


argumento con un valor igual a la longitud de caracteres de la primera cadena
string ms uno.

FUNCIN RAD
RAD(x)

La funcin RAD(x) convierte a radianes el ngulo expresado en grados de x. Esta


funcin no se afecta por la instruccin OPTION ANGLE.

FUNCIN REMAINDER
REMAINDER(expresin_numrica, expresin_numrica)

REMAINDER(x,y) retorna el resto obtenido de dividir x pory, y no debe ser igual a 0.

FUNCIN REPEAT$
REPEAT$(expresin_string, expresin_numrica_redondeada)

Retorna una cadena de caracteres que repite la expresin_string tantas veces


como consta en la expresin_numrica_redondeada.

FUNCIN RND
RND

Es una funcin sin argumento, RND retorna el prximo nmero pseudoaleatorio


de la secuencia generada. Estos nmeros, que obviamente no tienen patrn en la
serie 0 < = RND < 1. Si el programa que contiene la funcin RND es ejecutado de
nuevo, True BASIC produce la misma secuencia de valores RND. Si usted quiere

- 678 -
Funciones Internas en True BASIC... Anexo IV.

que su programa produzca resultados impredecibles, incluya una instruccin


RANDOMIZE al comienzo de su programa.

FUNCIN ROUND
ROUND(expresin_numrica, expresin_numrica_redondeada)

ROUND(expresin_numrica)

ROUND(x,n) retorna el valor de x redondeado a n dgitos decimales. Los valores


positivos de n redondean a la derecha del punto decimal, los valores negativos
redondean a la izquierda. ROUND(x) es lo mismo que ROUND(x,0).

FUNCIN RTRIM$
RTRIM$(expresin_string)

Retorna el valor de la expresin de cadena de caracteres sin los espacios blancos


despus del string. Los espacios anteriores, si los hay, se conservan.

FUNCIN RUNTIME
RUNTIME

Es una funcin sin argumento, RUNTIME retorna el nmero de segundos utilizados


por el procesador desde que comenz la ejecucin de un programa. Puede que
no retorne un valor significativo en algunas computadoras.

FUNCINSEC
SEC(x)

- 679 -
Tras los pasos de un... Hacker

Retorna el valor de la funcin secante de x. Se asume que el ngulo x est medido


radianes o grados dependiendo si la instruccin OPTION ANGLES est en RADIANES
(por defecto) o en GRADOS.

FUNCINSGN
SGN(x)

SGN(x) retorna el signo de x, el cual ser-1, 0, o +1.

FUNCINSIN
SIN(x)

Retorna el valor de la funcin seno de x. El ngulo est medido en radianes a


menos que OPTION ANGLE DEGREES est vigente, en cuyo caso el ngulo ser medido
en grados.

FUNCINSINH
SINH(x)

Retorna el valor de la funcin seno hiperblico de x.

FUNCINSIZE
SIZE(nombre_arreglo, dimensin_arreglo)

SIZE(nombre_arreglo)

Si existen dos argumentos, SIZE retorna el nmero de elementos que existen en el


arreglo nombrado en el primer argumento, correspondientes a la dimensin

- 680 -
Funciones Internas en True BASIC... Anexo IV.

especificada por dimensin_arreglo. Si no hay un segundo argumento, entonces


SIZE retorna el nmero total de elementos contenidos en el arreglo.

FUNCINSQR
SQR(x)

SQR(x) retorna la raz cuadrada positiva de x, donde x debe ser mayor que o igual
que cero.

FUNCINSTR$
STR$(x)

Retorna el valor del nmero x convertido en una cadena de caracteres. Tambin


puede ser usada con la instruccin PRINT.

FUNCINSTRWIDTH
STRWIDTH$(nmero_de_ventana, expresin_string)

Retorna la longitud de la cadena de caracteres, en pixeles, en referencia de la


fuente actual, estilo de fuente y tamao de fuente en la ventana fsica actual. Si el
valor del primer argumento no es el nmero ID de una ventana fsica, ocurrir un
error.

FUNCINTAB
TAB(expresin_numrica_redondeada)

TAB(expresin_numrica_redondeada, expresin_numrica_redondeada)

- 681 -
Tras los pasos de un... Hacker

La funcin TAB puede aparecer solamente con las instrucciones PRINT.

Estrictamente hablando, TAB no es una funcin, ya que no retorna un valor.


TAB(c) mueve el cursor impresor al tab sobre el comienzo de la posicin de la
impresin (columna) c. TAB(f,c) mueve el cursor impresor a ser posicionado en
la pantalla en la filaf y la columna c de la ventana activa.

FUNCINTAN
TAN(x)

TAN(x)retorna el valor de la funcin tangente de x. Aqu, se asume que x est en


grados si OPTION ANGLE DEGREES est vigente, sino se tomarn como un ngulo
expresado en radianes.

FUNCINTANH
TANH(x)

Retorna el valor de la funcin tangente hiperblica de x.

FUNCINTIME
TIME

Es una funcin sin argumento, TIME retorna la cantidad de segundos


transcurridos desde la medianoche de ese da. A la medianoche, TIME retorna 0.
Si su computadora no tiene reloj o este no funciona, entonces TIME retornar -1.

- 682 -
Funciones Internas en True BASIC... Anexo IV.

FUNCINTIME$
TIME$

Es una funcin sin argumento, TIME$ retorna una cadena de caracteres que
contiene el tiempo medido en el formato de 24 horas de reloj, y es visualizado en
la forma HH:MM:SS.

FUNCINTRIM$
TRIM$(expresin_string)

El valor ingresado como argumento se devuelve sin espacios delante y despus


de la cadena de caracteres.

FUNCIN DE ARREGLO TRN


TRN(nombre_arreglo)

Retorna la matriz transpuesta de su argumento, la cual debe ser un arreglo


numrico bidimensional (matriz).
TRN se usa con una instruccin de asignacin MAT.

FUNCINTRUNCATE
TRUNCATE(expresin_numrica, expresin_numrica_redondeada)

TRUNCATE(x,n) retorna el valor numrico de x truncado a n dgitos decimales. Los


valores positivos de n truncan a la derecha del punto decimal; los valores
negativos truncan a la izquierda.

TRUNCATE(x,0) es lo mismo que IP(x).

- 683 -
Tras los pasos de un... Hacker

FUNCINUBOUND
UBOUND(nombre_arreglo, dimensin_arreglo)
UBOUND(nombre_arreglo)

Los dos argumentos retornan el valor mayor (lmite superior) permitido para el
subndice en la dimensin especificada por dimensin_arreglo en el arreglo
nombrado.

Cuando solo se ingresa un argumento la funcin retorna al valor mayor (lmite


superior) para el subndice en un vector.

FUNCINUCASE$
UCASE$(expresin_string)

Retorna el valor de la expresin de cadena de caracteres de todas las letras


ingresadas en minsculas en el cdigo ASCII (ver Anexo II) convertido a sus
equivalentes en maysculas.

Los caracteres de fuera de la serie de letras minsculas ASCII no se cambian.

FUNCINUSING$
USING$(expresin_string, expr ..., expr)

Expr: expresin numrica


expresin de cadena de caracteres

USING$ retorna la cadena de caracteres que sera producida por una instruccin
PRINT USING. Necesita una expresin string como el formato para la de cadena de
caracteres y con expr como expresiones numricas o de cadenas de caracteres a
ser impresas.

- 684 -
Funciones Internas en True BASIC... Anexo IV.

FUNCINVAL
VAL(expresin_string)

Retorna el valor numrico dado por una expresin de cadena de caracteres,


siempre que represente una constante numrica de forma conveniente para
usarse con la instruccin INPUT o READ. La cadena de caracteres puede contener
espacios delante o al final, pero no internos.

FUNCIN DE ARREGLOZER
Zer nombre_arreglo
ZER

ZER es una funcin de arreglo que produce un arreglo numrico que es llenado
enteramente de ceros. ZER puede utilizarse slo con una instruccin de
asignacin MAT.

- 685 -
Tras los pasos de un... Hacker

- 686 -
ANEXO V. EXPLICACIN DE LOS MENSAJES DE ERROR

Este anexo contiene una lista parcial de los mensajes de error en True BASIC, en
orden alfabtico. Los mensajes de error referentes a instrucciones o funciones
especiales no presentadas en este libro se omiten.

El nmero que le sigue a algunos mensajes de error es el cdigo de error o


errores (excepciones) que ocurren cuando un programa se ejecuta. Estos
nmeros pueden capturarse con la estructura WHEN y la funcin EXTYPE.

Argumentfor SIN, COS or TAN too large. (-3050)


Argumento para la funcin SIN, COS o TAN demasiado grande. (-3050)

El argumento para la funcin seno, coseno o tangente es tan grande que los
resultados de la reduccin de la serie pierden completamente la precisin del
ngulo.

Argumenttypes dont match. (-582)


Los tipos de argumentos no coinciden. (-582)

Usted est invocando una rutina con algunos argumentos, pero antes en su
programa usted defini o invoc la misma rutina con diferentes argumentos. O
est ingresando un nmero diferente de argumentos en las invocaciones o sus
tipos son diferentes - quiere decir que usted est pasando cadenas de caracteres
en vez de nmeros o viceversa. Revise esta invocacin contra las invocaciones
precedentes y contra la definicin de rutina o funcin.

Array too large. (5001)


Arreglo demasiado grande. (5001)

- 687 -
Tras los pasos de un... Hacker

Usted ha intentado redimensionar un arreglo a un tamao mayor que el definido


en la instruccin DIM original. Cambie la definicin en la instruccin DIM o use MAT
REDIM.

ASIN or ACOS argument must be between 1 and -1.(3007)


El argumento de la funcin ASIN o ACOS debe ser entre 1 y -1.(3007)

Las funciones Arcoseno y Arcocoseno no se definen con argumentos mayores que


uno en valor absoluto.

Bad FIND item;try using quotes.


tem incorrecto para ENCONTRAR (FIND); intente usando comillas.

Cuando est intentando encontrar una cadena de caracteres que contiene una
coma o comillas, usted debe encerrar la cadena de caracteres entera entre
comillas. (Estas reglas son las mismas que para las cadenas de caracteres en las
respuestas INPUT o instrucciones DATA).

Badly formed USINGstring. (8201)


Formato incorrecto para USING. (8201)

La cadena de caracteres para formato en la instruccin PRINT USING est definida


incorrectamente.

Badly formed input line (nonfatal).(8102)


Incorrecto el formato para el ingreso de una lnea (no fatal). (8102)

La respuesta desde un archivo hacia una instruccin INPUT est mal definida.

Probablemente usted no apertur y cerr apropiadamente las comillas. Se le


solicitar que reingrese por completo la lnea a ingresar.

- 688 -
Explicacin de los Mensajes de Error... Anexo V.

Badly formed input line from file. (8105)


Incorrecto el formato para el ingreso de una lnea desde un archivo. (8105)

La respuesta a una instruccin INPUT desde un archivo est mal definida.

Probablemente usted no apertur y cerr apropiadamente las comillas.

Cant continue.
No se puede continuar.

Usted ha digitado un comando CONTINUE (CONTINUAR) para reanudar la ejecucin de


un programa despus de un punto de ruptura. Sin embargo, True BASIC no
puede continuar ejecutando el programa. Hay muchas razones posibles. Usted
no puede continuar la ejecucin de un programa que todava no haya empezado a
ejecutar o que haya modificado su cdigo. No puede continuar la ejecucin de un
programa que se detuvo porque ocurri un error. Y no puede continuar la
ejecucin de un programa suspendido despus de usar un comando DO. Si usted
est depurando un programa que se ha detenido por causa de un error, intente
usar el comando BREAKpara insertar puntos de ruptura antes de la lnea que causa
el error y luego ejecute el programa nuevamente.

Cant invert singular matrix. (3009)


No puede invertir una matriz singular. (3009)

Usted est usando la funcin matricial INV, pero la matriz que usted quiere
invertir es singular.

Las matrices singulares simplemente no tienen inversas.

Cant open PRINTER. (9101)


No puede comunicar con la IMPRESORA (PRINTER). (9101)

- 689 -
Tras los pasos de un... Hacker

Ha intentado enviar datos a la impresora pero True BASIC ha sido informado de


que el intento ha fallado porque la impresora no est conectada o no est
encendida.

(Esta condicin no puede ser detectada en todas las mquinas).

Cant outputto INPUT file. (7302)


No puede escribir a un archivo definido como solo de entrada (INPUT).
(7302)

Usted no puede escribir datos hacia un archivo que fue abierto con ACCESS INPUT.

Si usted debe enviar datos hacia este archivo, cambie en la instruccin OPEN por

ACCESS OUTIN.

Cant SETWINDOWin picture. (11004)


No puede usar SETWINDOW en un cuadro. (11004)

Los cuadros no pueden reinicializar coordenadas en la ventana o pantalla.

Mueva la instruccin OPEN SCREEN o SET WINDOW hacia fuera del cdigo que define el
cuadro.

Cantuse ANGLE(0,0). (3008)


No puede usar ANGLE(0,0).(3008)

ANGLE(0,0) no est definido. Asegrese de que al menos uno de sus argumentos


no sea cero.

Cantuse #0 here. (nonfatal) (7002)


No puede usar #0 aqu. (no fatal) (7002)

- 690 -
Explicacin de los Mensajes de Error... Anexo V.

Ha intentado usar #0 como nmero de canal para un archivo o ventana aparte de


la Ventana de Salida por defecto.

Cantuse READ or WRITE for TEXT file. (-8503)


No puede usar READ o WRITE en un archivo tipo TEXTO. (-8503)

El archivo es un archivo de texto, los comandos permitidos son PRINT, INPUT y LINE
INPUT.

Cant use this statement here.


No puede usar esta instruccin aqu.

Usted ha usado parte de una estructura de True BASIC pero en un lugar


equivocado. Por ejemplo, puede haber colocado una parte de la estructura CASE
fuera de alguna instruccin SELECT CASE, o ELSE IF fuera de alguna estructura IF
THEN.

True BASIC tambin imprime este mensaje si usted agrega una instruccin
externa entre la lnea de SELECT CASE y su primera parte CASE. Remtase a los
captulos apropiados de este libro para ver cmo se forman las estructuras de
control en True BASIC.

Channel is already open. (7003)


El canal an est abierto. (7003)

Usted ha tratado de abrir un archivo o ventana usando un nmero de canal que


ya est en uso.

Channel isnta window. (-11005)


El canal no es una ventana. (-11005)

- 691 -
Tras los pasos de un... Hacker

Ha usado una instruccin de ventana con un nmero de canal que tiene que ver
con un archivo.

Channel isnt open. (7004)


El canal no est abierto. (7004)
Usted ha intentado usar un nmero de canal (para un archivo o ventana) sin
haberlo abierto para su uso con una instruccin OPEN.

Channel number must be 1to 1000. (7001)


El nmero de canal debe ser entre 1 y 1000. (7001)

Todos los nmeros de canales deben estar en el rango del 1 al 1000, excepto el
#0 que est relacionado con la Ventana de Salida por defecto de True BASIC.

Constanttoo large: constantin routine.


Constante demasiado grande: constante en la rutina.

La constante numrica visualizada es demasiado grande para que su


computadora la maneje. Escriba PRINT MAXNUM para ver el posible nmero ms
grande en su computadora y luego cambie su programa para usar un nmero
menor.

Data itemisnt a number. (8101)


El tem en DATA no es un nmero. (8101)

Usted ha usado una variable numrica en una instruccin READ pero el tem
correspondiente DATA no es un nmero.

DET needs a square matrix. (6002)


DET necesita una matriz cuadrada. (6002)

- 692 -
Explicacin de los Mensajes de Error... Anexo V.

La funcin DET slo puede ser usada con una matriz cuadrada, ya que el
determinante est matemticamente definido slo por dichas matrices.

Diskfull. (9006)
Disco lleno. (9006)

Usted est escribiendo datos hacia un archivo y ya no existe espacio disponible


en el disco.

Diskette removed, or wrong diskette. (9005)


Disquete removido o disquete defectuoso. (9005)

Usted ha abierto un archivo, pero mientras True BASIC lo estaba usando, usted
quit el disquete e insert otro.

No cambie los disquetes mientras estn en uso!

Division by zero. (3001)


Divisin para cero.(3001)

Una de sus expresiones numricas trat de dividir alguna cantidad para cero. Si
quiere sustituir el mayor nmero posible y continuar (sin un error), controle la
expresin en una estructura WHEN.

WHEN ERROR IN
USE LET x = (1+2+3)/0

LET x = Maxnum
END WHEN

MAXNUM es una funcin de True BASIC que retorna el nmero positivo ms grande
que se puede definir en su computadora.

- 693 -
Tras los pasos de un... Hacker

Do you want to save this file?


Desea guardar este archivo?

True BASIC le proporciona este recordatorio cuando usted trata de cerrar una
Ventana de Edicin o Salir de su sesin de True BASIC sin haber grabado su
cdigo fuente actual. Conteste Guardar (Save) si quiere guardar el archivo
(reemplazado la copia guardada), Descartar (Discard) si quiere descartar sus
cambios o Cancelar (Cancel) si quiere hacer algo ms (por ejemplo, guardar el
archivo con un nombre diferente). Si est escribiendo la respuesta, usted puede
abreviar cualquiera de estas contestaciones a una letra.

Doesnt belong here.


No pertenece aqu.

El cursor seala alguna palabra que no tiene sentido en su programa. Compruebe


la clase de instruccin que est utilizando y luego busque la utilizacin apropiada
de esa instruccin en este libro. Despus corrija su programa y contine.

Ending doesnt match beginning.


El final no coincide con el comienzo.

Esta usando una estructurada de control, como FOR NEXT o IF-THEN-ELSE y la


instruccin de cierre no coincide apropiadamente con el principio de la
estructura. Probablemente usted ha olvidado la instruccin final por alguna
estructura dentro de sta. O puede haber empezado una iteracin FOR usando una
variable de ndice pero us otra variable en la instruccin NEXT.

Lea cuidadosamente las instrucciones dentro de la estructura para ver que le


falt.

Error in PLAYstring. (-4501)


Error en la cadena de caracteres PLAY. (-4501)
La cadena de caracteres dada en su instruccin PLAY no sigue las reglas de True
BASIC.

- 694 -
Explicacin de los Mensajes de Error... Anexo V.

Expected thing.
Se espera algo.

El cursor seala un lugar donde True BASIC esperaba alguna palabra o


puntuacin, pero encontr algo ms. Este mensaje le puede dar un empujoncito a
su memoria de modo que usted pueda corregir la lnea de instruccin. Si no,
busque la instruccin en este manual y luego corrija su programa.

Expected relational operator.


Se espera un operador relacional.

El cursor seala un lugar en el programa donde usted debe colocar un operador


relacional, tal como = o <. Escriba correctamente la comparacin que debe estar
ah. (Note que True BASIC no admite instrucciones de prueba como IF A THEN...,
como algunas otras versiones de BASIC s lo hacen. Cambie dichas lneas de
instruccin por IF A <> 0 THEN...).

IDN must make a square matrix. (6004)


IDN debe hacer una matriz cuadrada. (6004)

Las matrices identidad son cuadradas. Por lo tanto, cuando usted use la funcin
IDN(x,y) debe asegurarse que se cumpla x=y.

Illegal array bounds. (6005)


Lmites del arreglo ilegales. (6005)

Usted ha redimensionado un arreglo en una instruccin MAT REDIM o con una


expresin REDIM en una instruccin MAT donde el lmite superior es menor que el
lmite inferior menos uno (MAT A = Zer(-5) o MAT REDIM X(10 to 5).

Illegal data.
Dato ilegal.

- 695 -
Tras los pasos de un... Hacker

La lnea de instruccin DATA no est escrita apropiadamente. Coloque comas entre


los datos, pero no coloque una coma al final de la lista de tems. Asegrese de que
todos los tems citados estn entre comillas: tems como abc def no estn
permitidos.

Illegal expression.
Expresin ilegal.

El cursor seala algo en una expresin que no sigue las reglas de True BASIC.

Chequee para asegurarse que no ha digitado dos operadores en una misma


expresin (como 1++2), que no ha escrito un nmero inapropiadamente (como
1,000) y que todos los nombres de variables siguen las reglas de True BASIC.

Illegal keyword.
Palabra clave ilegal.

El cursor seala una palabra que no tiene sentido en ese lugar. Por ejemplo,
usted ha olvidado agregar LINES, AREA o CLEAR en una instruccin BOX. Busque la
instruccin en la gua de usuario y corrija su programa.

Illegal line number.


Nmero de lnea ilegal.

Usted puede tener una lnea no numerada en un programa que usa lneas
numeradas o viceversa o GOTOo GOSUB para un nmero de lnea que no existe o uno
en una estructura de control.

Puede ser que haya definido un nmero de lnea incorrecto (ms de 6 dgitos). O
una lnea con un nmero menor que o igual a la lnea anterior.

- 696 -
Explicacin de los Mensajes de Error... Anexo V.

Illegal number.
Nmero ilegal.

El cursor seala algn lugar donde se requiere un nmero pero usted ha digitado
algo ms. Si ha escrito un nmero ah, asegrese que ha seguido las reglas de
True BASIC en cuanto a constantes numricas.

Algunas veces True BASIC es muy estricto en relacin de lo que aceptar como
nmero: por ejemplo, slo constantes enteras se permiten como lmites de
arreglo en instrucciones DIM o como nmeros de lnea.

Illegal option.
Opcin ilegal.

Las nicas opciones apoyadas en True BASIC son OPTION ANGLE, OPTION BASE, OPTION
NOLET y OPTION TYPO. Asegrese de que ha deletreado apropiadamente ANGLE, BASE,
DEGREES, RADIANS, NOLET o TYPO. (True BASIC tambin soporta OPTION ARITHMETIC,
OPTION COLLATE y OPTION USING, las dos primeras se ignoran).

Illegal parameter.
Parmetro ilegal.

Usted ha escrito una lnea SUB, DEF o PICTURE para definir una rutina. Hay algn
problema con uno de los parmetros de la lista de parmetros. Usted puede
haber listado un parmetro dos veces, o usado algo ms complicado que un
simple nombre de variable.

Illegal statement.
Instruccin ilegal.

Cada instruccin debe empezar con alguna palabra clave de True BASIC, como
LET o SELECT. Chequee para asegurarse que ha deletreado la palabra clave
correctamente.

- 697 -
Tras los pasos de un... Hacker

Illegal statement: need LET for assignment, or try the NOLET command.
Instruccin ilegal: necesita LET para asignacin, o intente con el comando
NOLET.

Esta es una versin ms detallada que el mensaje de error Instruccin ilegal si


se relaciona con una asignacin. A menos que usted use OPTION NOLET.

True BASIC requiere que usted use la palabra LET cuando defina o asigne una
variable.

Improper NUMstring. (-4020)


Cadena de caracteres de NUM incorrecta. (-4020)

La cadena de caracteres que usted ha dado a la funcin NUM no representa un


nmero en formato IEEE de 64 bits para nmeros de punto flotante. Chequee
para asegurarse que ha creado o ledo correctamente esta cadena de caracteres.

Improper ORD string. (4003)


Cadena de caracteres de ORD incorrecta. (4003)

La funcin ORD requiere un carcter de cadena de caracteres o una cadena de


caracteres que tenga un cdigo permitido de un carcter ASCII. No se permiten
espacios delante ni detrs. Ver el Anexo II para una lista de todos los nombres
aceptados para los caracteres ASCII.

INV needs a square matrix. (6003)


INV necesita una matriz cuadrada. (6003)

La funcin inversa de una matriz est definida slo para matrices cuadradas.
Usted est tratando de usar la funcin INV en una matriz no cuadrada. Asegrese
de que su arreglo es bidimensional, con el mismo tamao en cada dimensin.

- 698 -
Explicacin de los Mensajes de Error... Anexo V.

LBOUND index out ofrange. (4008)


ndice de LBOUND fuera de rango. (4008)

Usted est utilizando un llamado LBOUND(A,3) y el arreglo A no tiene tres


dimensiones. Chequee y asegrese de que la dimensin dada est entre 1 y el
nmero de dimensiones definidas para el arreglo.

LOG ofnumber <= 0.(3004)


Nmero de LOG<= 0. (3004)

Los logaritmos son definidos nicamente para nmeros positivos.

Mismatched array sizes. (6001)


Tamao de arreglos desiguales. (6001)

Usted est usando una instruccin MAT que requiere arreglos del mismo tamao,
pero los arreglos son de diferentes tamaos. Por ejemplo, la adicin de matrices
requiere que los dos arreglos agregados juntos tengan los mismos tamaos. La
multiplicacin de matrices requiere que la segunda dimensin de la primera
matriz debe ser igual a la primera dimensin de la segunda matriz.

Mismatched string array sizes. (6101)


Tamao de arreglos de cadenas de caracteres desiguales. (6101)

Usted est usando una instruccin MAT con arreglos de cadena de caracteres, y los
arreglos no son del mismo tamao.

Missing END statement.


Falta instruccin END.

- 699 -
Tras los pasos de un... Hacker

Su programa no finaliza con una instruccin END. Todos los programas en True
BASIC deben terminar con una instruccin END. Agregue una instruccin END y
pruebe de nuevo.

MOD and REMAINDER cant have 0 as 2nd argument. (3006)


MOD y REMAINDER no pueden tener 0 como 2do argumento. (3006)

Las funciones MOD y REMAINDER no permiten un cero como segundo argumento, ya


que esto es equivalente a dividir para cero. Chequee y asegrese de que est
dando los argumentos en el orden apropiado.

Must be a function name.


Debe ser un nombre de funcin.

Usted ha escrito una lnea DEF o FUNCTION, pero ningn nombre de funcin vlido
utiliza DEF o FUNCTION.

Must be a number.
Debe ser un nmero.

True BASIC permite expresiones numricas casi en todas partes en que los
nmeros simples se admiten, pero hay algunas excepciones. Por ejemplo, las
evaluaciones en la estructura CASE pueden no usar expresiones numricas. Slo
las constantes numricas son permitidas. Si usted debe usar una expresin,
reescriba la estructura SELECT CASE como una estructura IF-THEN-ELSE.

Must be a picture name.


Debe ser un nombre de cuadro.

La instruccin DRAW usada, nombra algo diferente a un cuadro. Cambie la


instruccin DRAW de modo que se refiera a un cuadro y pruebe de nuevo.

- 700 -
Explicacin de los Mensajes de Error... Anexo V.

Must be a string constant.


Debe ser una constante de cadena de caracteres.

True BASIC permite expresiones de cadena de caracteres casi en todas partes en


donde las constantes de cadena de caracteres son legales, pero hay algunas
excepciones. Por ejemplo, las evaluaciones en una estructura CASE pueden no
usar expresiones de cadena de caracteres. Si usted debe usar una expresin de
cadena de caracteres, reescriba la estructura SELECT CASE como una estructura
IF-THEN-ELSE.

Must be a subroutine name.


Debe ser un nombre de subrutina.

La instruccin CALL solamente puede usarse para invocar subrutinas. Cambie la


instruccin de modo que use un nombre de subrutina.

Must be a variable.
Debe ser una variable.

Usted ha usado una expresin, o un nombre de rutina, donde slo debe existir
una variable. Por ejemplo, usted debera usar variables en instrucciones LET e
INPUT. Busque la instruccin en este libro para asegurarse que la est usando
correctamente. Tambin asegrese de que la variable que est usando no ha sido
definida como subrutina, cuadro, funcin o arreglo.

Must be an array.
Debe ser un arreglo.

Hay muchos sitios en un programa en True BASIC donde usted debe usar un
nombre de arreglo, en vez de una variable ordinaria. Por ejemplo, las
instrucciones MAT trabajan solamente con arreglos. Varias funciones, tales como
LBOUND y SIZE, tambin trabajan slo con arreglos. Asegrese de que ha deletreado
los nombres de los arreglos correctamente y que ha definido el arreglo con una
instruccin DIM.

- 701 -
Tras los pasos de un... Hacker

Name cant be redefined.


El nombre no puede ser redefinido.

Usted no puede usar el mismo nombre para dos cosas diferentes. De este modo,
si usted tiene una variable llamada X, usted no puede tener una subrutina o
arreglo llamado igualmente X. Renombre una de las definiciones, de modo que
todo tenga su propio y nico nombre.

True BASIC tambin alerta con este mensaje cuando usted trata de usar una
palabra clave como una variable. (True BASIC reserva muy pocos nombres.
Adems de los nombres de las funciones sin argumento, True BASIC reserva
solamente ELSE, NOT, PRINT y REM).

Negative numberto non-integral power. (3002)


Nmero negativo elevado a potencia no entera. (3002)

Usted est intentando calcular n^x, pero n es negativo y x no es un entero. Los


resultados no tienen sentido matemticamente hablando.

No CASE selected, butno CASE ELSE. (10004)


No se seleccion CASE; pero no existe CASE ELSE (10004)

Usted ha ejecutado una instruccin SELECT CASE, pero ninguna evaluacin en la


estructura CASE ha salido bien. Ya que usted no tuvo la precaucin de definir una
parte CASE ELSE para solucionar este problema, True BASIC alerta con este
mensaje de error. Chequee y asegrese de que la expresin que ha seleccionado
es razonable. Agregue una parte CASE ELSE para manejar todos los otros casos
diferentes a los que resuelven las evaluaciones definidas. Si quiere ignorar todo
adems de esas cosas probadas, agregue una parte CASE ELSE sin instrucciones
dentro de ella.

No help directory.
No existe directorio de ayuda.

- 702 -
Explicacin de los Mensajes de Error... Anexo V.

El directorio (carpeta) TBHELP no est localizado donde se supone debera estar


(en el mismo directorio que la aplicacin del Lenguaje de Programacin) y True
BASIC no puede ubicarlo.

No main program.
No existe programa principal.

Su cdigo fuente actual contiene funciones, cuadros y/o subrutinas, pero no


contiene un programa principal. Regrese y escriba un programa principal!

No such color. (-11008)


No existe tal color. (-11008)

Usted est usando la instruccin SET COLOR con algn nombre de color que True
BASIC no reconoce. Puede dar nombres de color en maysculas o minsculas,
pero no use espacios adicionales entre los nombres.

No such file. (9003)


No existe tal archivo. (9003)

Usted est intentando usar un archivo que no existe. Puede ser alertado con este
mensaje de error cuando usa varios comandos (tales como OLD), o desde un
programa. Chequee y asegrese que deletre el nombre del archivo
correctamente y asegrese tambin de haber insertado el disco adecuado en su
computadora. Use el comando FILES para ver si ese archivo existe en un disco.

No such file. Do you want to create it?


No existe dicho archivo. Quiere crearlo?

Usted ha intentado REEMPLAZAR (REPLACE) un archivo que an no existe. Esto le da


la oportunidad de crear un archivo con el nombre que usted especific.
Responda s (yes) para crear el archivo, o no (no) o cancelar (cancel)

- 703 -
Tras los pasos de un... Hacker

para cancelar este comando. Si usted est escribiendo la respuesta, puede


abreviarla a una letra.

No such function or subroutine.


No existe tal funcin o subrutina.

Usted ha nombrado una funcin, subprograma o cuadro en algn comando, pero


esta rutina no existe. Chequee y asegrese de que ha deletreado el nombre
correctamente.

No such line numbers.


No existen dichos nmeros de lnea.

Usted ha ingresado un nmero de lnea en un comando, pero no hay lneas que


tengan esos nmeros.

Not FOUND.
No se encontr.

Usted ha usado el men FIND para buscar alguna palabra o frase, pero no fue
encontrada. Consulte la gua de usuario destinada a la seccin FIND para
asegurarse de haber ingresado una bsqueda de la frase correctamente. Le ha
solicitado buscar la palabra completa? Es este un caso en que las letras deben
coincidir?

Recuerde que True BASIC busca desde donde usted est en el programa hasta el
final y luego se detiene.

Out of memory. (5000)


Falta memoria.(5000)

- 704 -
Explicacin de los Mensajes de Error... Anexo V.

Su problema requiere que se ample la memoria de su computadora. En algunas


plataformas, usted podr incrementar la memoria asignada a True BASIC o
puede definir ms memoria virtual.
Si estas medidas simples fallan, necesitar comprar memoria adicional (RAM).

Si est no es una opcin, aqu hay algunas sugerencias para la conservacin de la


memoria.
Use arreglos pequeos. Los arreglos pueden tomar una cantidad sorprendente
de espacio, especialmente si hay ms de una dimensin. Si tiene arreglos
grandes, mire si puede resolver su problema usando arreglos ms pequeos.

Compile su programa y use la versin compilada.

Revise las invocaciones recursivas. Puede que accidentalmente haya escrito un


procedimiento que se llama por s solo y no tenga una condicin de finalizacin.
Esto es perfectamente legal y frecuentemente til. Pero cada invocacin requiere
alguna cantidad de espacio y dicho evento puede causar este error.

Overflow. (1002)
Desbordamiento. (1002)

Usted ha calculado un nmero ms grande de lo que su computadora puede


manejar. Utilice PRINT MAXNUM para ver el nmero ms grande que su computadora
puede usar.
Si desea controlar este tipo de error entre el nmero ms grande posible,
encierre su clculo en una estructura WHEN.
WHEN ERROR IN
LET x = 10^(10^10)
USE
LET x = Maxnum
END WHEN

Overflow in DET or DOT. (1009)


Desbordamiento en DET o DOT. (1009)

- 705 -
Tras los pasos de un... Hacker

Usted ha provocado un error de desbordamiento durante la evaluacin de una


funcin DET o DOT.

Overflow in INPUT (nonfatal). (1007)


Desbordamiento en INPUT (no fatal). (1007)

Usted ha ingresado un nmero que es demasiado grande. Se le requerir


reingresar la lnea entera.

Overflow in MAT operation. (1005)


Desbordamiento en la operacin MAT. (1005)

Usted ha provocado un error de desbordamiento al evaluar una operacin MAT.

Overflow in numeric constant. (1001)


Desbordamiento en una constante numrica. (1001)

Usted ha usado una constante numrica que define un nmero muy grande, como
en LET x = lE1000.

Overflow in numeric function. (1003)


Desbordamiento en una funcin numrica. (1003)

Usted ha provocado un error de desbordamiento durante la evaluacin de una


funcin, tal como EXP o TAN.

Overflow in READ. (1006)


Desbordamiento en READ. (1006)

Un error de desbordamiento se gener durante la lectura de un nmero definida


en una instruccin DATA.

- 706 -
Explicacin de los Mensajes de Error... Anexo V.

Overflow in VAL. (1004)


Desbordamiento en VAL. (1004)

Usted ha provocado un error de desbordamiento durante la evaluacin de la


funcin VAL.

Please try CHANGE old, new


Por favor intente CHANGE anterior, nuevo.

Cuando cambie una frase en la Ventana de Comando, usted debe ingresar la frase
anterior y su reemplazo. Si la frase contiene una coma o comillas, encierre la
frase completa entre comillas.

Please try DOfilename.


Porfavor intente DO nombrearchivo.

Usted debe ingresar un nombre de archivo vlido cuando use el comando DO en la


Ventana de Comando. Ingrese nuevamente el comando especificando y el
nombre el archivo a ejecutar.

Please try ECHO o ECHOTOfilename orECHO OFF.


Porfavor intente ECHO o ECHOTO nombrearchivo o ECHO OFF.

Usted probablemente intent ejecutar el comando ECHO sin la palabra clave TO.

Please try INCLUDE filename.


Porfavor intente INCLUDE nombrearchivo.

Usted debe ingresar un nombre de archivo vlido cuando use el comando INCLUDE.
Reescriba el comando, utilizando el nombre del archivo a incluir.

- 707 -
Tras los pasos de un... Hacker

Please try OLDfilename.


Porfavor intente OLD nombrearchivo.

Usted debe ingresar un nombre de archivo vlido cuando use el comando OLD en
la Ventana de Comando. Reescriba el comando, utilizando el nombre del archivo
a ser ledo.

Please try RENAMEnew orRENAME old, new.


Por favor intente RENAME nuevo o RENAME anterior, nuevo.

Usted ingres el comando RENAME en la Ventana de Comando sin especificar un


nombre de archivo vlido. Ingrese un nombre diferente para cambiar el nombre
del programa actual. O ingrese dos nombres (antiguo y nuevo) para cambiar el
nombre de un archivo grabado.

Please try SAVE filename orREPLACEfilename.


Porfavor intente SAVE nombrearchivo o REPLACE nombrearchivo.

Usted debe ingresar un nombre de archivo vlido cuando ordene grabar un


archivo desde la Ventana de Comando. Reescriba el comando ingresando un
nombre de archivo vlido.

Please try UNSAVEfilename.


Porfavor intente UNSAVE nombrearchivo.

Usted debe ingresar un nombre de archivo vlido cuando trate de eliminar un


archivo desde la Ventana de Comando. Reescriba el comando utilizando un
nombre de archivo que se encuentre grabado para que sea eliminado.

Please type line numbers as 100 or 100-150.


Por favor digite los nmeros de lnea como 100 o 100-150.

- 708 -
Explicacin de los Mensajes de Error... Anexo V.

Usted ha ingresado un comando DELETE, con un nmero de lnea o bloque de


nmeros de lnea, pero True BASIC no los puede ubicar. Teclee un comando
parecido a DELETE 100 para borrar 100 lneas, o DELETE 100-120 para borrar desde la
lnea 100 hasta la 120.

Program stopped.
Programa detenido.

Usted ha seleccionado Detener (Stop) de uno de los mens. El programa se ha


detenido.

Reading past end of data. (8001)


Lectura posterior al final de los datos. (8001)

Usted ha ejecutado una instruccin READ pero no tiene datos que leer. Record
utilizar una instruccin DATA? Revise y asegrese que ha definido tantos datos
como espera utilizar. Puede encontrar de uso prctico la evaluacin de la
instruccin MORE DATA para resolver el problema de leer cantidades variables de
datos.

REPEAT$ count< 0.(4010)


Contador REPEAT$< 0.(4010)

Usted est usando la funcin REPEAT$(s$,n) pero n es menor que cero. Revise y
asegrese de que ha escrito el nombre de variable correcto.

Screen bounds must be 0 to 1. (11003)


Los lmites de la pantalla deben estar entre 0 y 1. (11003)

Los lmites definidos en una instruccin OPEN SCREEN deben permanecer dentro del
rango de 0 a 1 (inclusive). No importa cun grande sea su pantalla, los bordes

- 709 -
Tras los pasos de un... Hacker

izquierdos e inferiores estn definidos como 0 de la misma forma los bordes


derechos y superiores estn definidos como 1.

SIZEindex out ofrange. (4004)


ndice de SIZE fuera de rango. (4004)

Usted est intentando utilizar SIZE(A,3) por ejemplo, cuando el arreglo A tiene
menos de tres dimensiones. Revise la instruccin DIM correspondiente para ver
cuntas dimensiones tiene el arreglo. El segundo argumento debe estar entre 1 y
este nmero.

Sorry, cant find HELP files.


Lo siento, no se pueden encontrar los archivos de AYUDA (HELP).

Los archivos de ayuda no estn donde True BASIC espera encontrarlos. O estn
borrados o estn en otro directorio.

SQR ofnegative number. (3005)


SQR de un nmero negativo.(3005)

Usted est tratando de calcular la raz cuadrada de un nmero negativo. Esto es


imposible.

Statement outside of program.


Instruccin fuera del programa.

El cursor seala una instruccin fuera de su programa principal y que no se ha


incluido dentro de ninguna rutina externa. Revise para asegurarse de que no ha
movido accidentalmente la instruccin END de modo que no est ms all del final
de su programa.

- 710 -
Explicacin de los Mensajes de Error... Anexo V.

Stringgiven instead a number (nonfatal). (8103)


Cadena de caracteres dada en vez de un nmero (no fatal).(8103)

Se ha ejecutado una instruccin INPUT en la cual est tratando de ingresar un


nmero. Sin embargo, si la respuesta dada no es un nmero esta circunstancia
slo tiene sentido como cadena de caracteres. Si est ingresando datos desde el
teclado y quiere evitar este mensaje, usted debe convertir su instruccin de
ingreso de manera que acepte una cadena de caracteres y luego usar la funcin
VAL para convertir el resultado en un nmero. (Usted puede controlar el
resultado de VAL con el uso de una estructura para el manejo de errores para
evitar este mensaje de error). Si esta excepcin ocurre, se le requerir reingresar
la lnea completa.

Subscript out of bounds. (2001)


Subndice fuera de los lmites. (2001)

Usted ha ingresado un subndice de arreglo que supera los lmites definidos para
el arreglo. Intente presentar el subndice y luego use LBOUND y UBOUND para
verificar los lmites del arreglo.

System error.
Error del sistema.

Un error ha ocurrido en el lenguaje True BASIC. Registre el error del lenguaje y


contacte por fax el Servicio al Cliente o enve un e-mail. Gracias.

The BYE command is just BYE.


El comando BYE es slo BYE.

Cuando quiera salir del entorno de True BASIC en la Ventana de Comando,


solamente digite BYE. No agregue nada ms.

- 711 -
Tras los pasos de un... Hacker

The CONTINUE command is just CONTINUE.


El comando CONTINUE es slo CONTINUE.

Cuando desee continuar con la ejecucin de un programa que ha sido detenido,


solo digite CONTINUE. No agregue nada ms.

The FORGET command is just FORGET.


El comando FORGET es slo FORGET.

Utilice el comando FORGET, cuando desee liberar (olvidar) memoria ocupada por
comandos recientes o por las rutinas cargadas y recupere tanta memoria como
pueda. Slo digite FORGET. No agregue nada ms.

The NOLET command is just NOLET.


El comando NOLET es slo NOLET.

Cuando no quiera utilizar la palabra clave LET en las instrucciones LET, slo teclee
No agregue nada ms.
NOLET.

The RUN command is just RUN.


El comando RUN es slo RUN.

Cuando usted quiera ejecutar un programa desde la Ventana de Comando, slo


digite RUN. No agregue nada ms.

This mustfirst appear in a DIM or DECLARE DEF.


Esto debe aparecer primero en una DIM o DECLARE DEF.

El cursor seala algo que es evidentemente un arreglo o una funcin. Pero True
BASIC no puede diferenciar cul es? Asegrese de agregar una lnea DIM o
DECLARE DEF antes de esta lnea, de modo que True BASIC sepaqu es?

- 712 -
Explicacin de los Mensajes de Error... Anexo V.

Too few inputitems (nonfatal). (8002)


Muy pocos tems de ingreso (no fatal). (8002)

Se ha ejecutado una instruccin INPUT y los tems de ingreso no contienen tantos


parmetros como se ha definido en la instruccin INPUT. Le ser requerido
reingresar la lnea de entrada completa. Si quiere extender los parmetros de
entrada sobre varias lneas, asegrese de finalizar todas las lneas pero la ltima
con una coma.

Too many inputitems (nonfatal). (8003)


Demasiados tems de ingreso (no fatal). (8003)

Se ha ejecutado una instruccin INPUT y los valores ingresados contienen ms


parmetros de los que se han definido en la instruccin INPUT. Se le requerir
reingresar la lnea completa de datos.

Trouble using disk or printer. (9002)


No se puede usar la unidad de disco o impresora.(9002)

True BASIC tiene problemas al usar uno de sus discos o su impresora. Este
mensaje se presenta por varias razones en diferentes computadoras. Revise para
asegurarse que el botn encendido se ha presionado en la impresora, que hay un
disquete en su unidad de disquete, que su impresora tiene suficiente papel y que
no est atascado, que los cables estn bien conectados o cosas como esas.

Try LOAD lib, lib,.


Intente LOAD lib, lib,....

Usted probablemente ha usado la puntuacin incorrectamente en un comando


LOAD.

- 713 -
Tras los pasos de un... Hacker

Type is wrongforname in routine.


Tipo de dato no es vlido para name en routine.

Usted ha intentado invocar una rutina llamada name dentro de una rutina. Sin
embargo, usted configur equivocadamente los argumentos para esta invocacin.
Estos no coinciden con la lista de parmetros definida. Debe ingresar el mismo
nmero de argumentos como el tipo de parmetros y estos deben ser escritos en
el mismo orden. Revise convirtiendo los nmeros a cadenas de caracteres o
viceversa. Asegrese tambin de que no est tratando de usar una funcin como
una subrutina o viceversa.

UBOOUND index out ofrange. (4009)


ndice de UBOUND fuera de rango. (4009)

Usted ha intentado invocar algo parecido a UBOUND(A,3) donde A es un arreglo con


menos de 3 dimensiones. Compruebe que la instruccin DIM define
correctamente las dimensiones para el arreglo A a fin de ver cuntas dimensiones
tiene o si usted de pronto ha usado una funcin UBOUND sin especificar
anteriormente una instruccin DIM.

Undefined routine name in routine.


Rutina no definida name en routine.

La rutina definida por name ha tratado de usar una funcin, subprograma o


cuadro llamado name. Desafortunadamente, esta funcin, subprograma o cuadro
no est definida en ninguna parte.

Revise para ver que haya deletreado el nombre correctamente y que incluy una
instruccin LIBRARY para cargar el archivo que contiene esta rutina. True BASIC
alerta en el programa PRINCIPAL si este error ocurri en su programa
principal.

Unknown variable.
Variable desconocida.

- 714 -
Explicacin de los Mensajes de Error... Anexo V.

Usted est usando OPTION TYPO para revisar errores de deletreo y ha encontrado
un nombre de variable que no se ha declarado en ninguna parte.

Si True BASIC ha encontrado un error de digitacin, slo corrija la ortografa.

De otra manera, agregue una instruccin LOCAL que liste esta variable o incluya la
variable de manera correcta en una instruccin DECLARE PUBLIC o SHARE.

VAL stringisnt a proper number. (4001)


Cadena de caracteres para VAL no est en un formato numrico propio.
(4001)

Usted ha utilizado la funcin VAL pero la cadena de caracteres que usted ingres
no representa propiamente un nmero.

What? (Please type HELP.)


Qu? (Por favor digite HELP.)

Usted ha digitado un comando que True BASIC no tiene definido. Si quiere ayuda
adicional en su computadora, slo teclee HELP en la Ventana de Comando o use el
men Ayuda (Help) para obtener ms instrucciones.

Usted puede abreviar los comandos a tres letras pero no menos de tres.

Window minimum = maximum. (-11001)


Ventana mnima = mxima. (-11001)

Se ha ejecutado una instruccin SET WINDOW que establece en una ventana un


parmetro mximo vertical u horizontal igual al mnimo. True BASIC no admite
esto, as como no vera nada en esa ventana. Recuerde que el orden de
parametrizacin para los bordes en el comando SET WINDOW son: izquierda,
derecha, inferior, superior.

- 715 -
Tras los pasos de un... Hacker

Wrong number of arguments.


Nmero equivocado de argumentos.

Una funcin, subrutina o cuadro fue invocado con un nmero equivocado de


argumentos.

Wrong number of dimensions.


Nmero equivocado de dimensiones.

Usted est tratando de utilizar un arreglo, pero ha ingresado un nmero


equivocado de dimensiones. Compare este uso definido en la instruccin de
arreglo DIM y asegrese de que ambos tienen el mismo nmero de dimensiones.
Si usted est pasando un arreglo a una subrutina, revise los parmetros definidos
en la subrutina. Recuerde que un arreglo bidimensional debe indicarse como A(,)
en la lista de parmetros, un arreglo tridimensional como A(,,) y as
sucesivamente.

Wrong type.
Tipo de dato equivocado.

Usted est intentando usar una cadena de caracteres donde se necesita un


nmero o un nmero donde se requiere una cadena de caracteres. Revise el tipo
de variable definida para asegurarse de que no est tratando de asignar un
nmero a una variable de cadena de caracteres o viceversa. Recuerde tambin
que una concatenacin de cadena de caracteres se define usando un signo (&) en
True BASIC y no un signo ms (+).

You have two routines called name in routine.


Usted tiene dos rutinas llamadas name en routine.

En la rutina routine, usted ha definido dos rutinas diferentes con el mismo


nombre name. Debido a que son dos cosas diferentes, deben tener nombres
diferentes, usted debe cambiar el nombre de una de ellas. Asegrese de revisar

- 716 -
Explicacin de los Mensajes de Error... Anexo V.

todas las invocaciones a esa rutina y cambie esos nombres tambin. True BASIC
de alertar en el programa PRINCIPAL si el error ocurri en su programa
principal (antes de la instruccin END).

Zero to negative power. (3003)


Cero elevado a una potencia negativa. (3003)

Usted est tratando de calcular 0^n, donde n<0. Esto es matemticamente


indefinido y True BASIC le alerta de este error.

- 717 -
Tras los pasos de un... Hacker

- 718 -
NDICEALFABTICO

ADA, -54-, - 62 -, -523 -


! Address. Vase Direccin
!. Vase REM Administracin Nacional de Aeronutica y del
Espacio. Vase NASA
ADN, -451 -, -523 -
Advanced Encryption Standard. Vase AES
Cmo funciona un virus informtico?, -472 - Advanced Micro Devices. Vase AMD
Cmo reaccionar ante una infeccin?, -484 - Advanced Networks and Services. Vase
Qu debemos buscar en un antivirus?, -483 - ANSNET
Qu es un antivirus?, -482 - Advanced Research Projects Agency Network.
Qu es un virus informtico?, -472 - Vase ARPANET, Vase ARPANET
AES, -524 -
Aficin. Vase Hobby
1 Agamenn, -30
1er. Teorema de absorcin, - 171 - Agencia Central de Inteligencia. Vase CIA
1er. Teorema de identidad, - 171 - Aids Information Disquette, -461
1er. Teorema inverso, - 171 - Alan Solomon, -460
ALCATEL, -508
Aldus Corporation, -456 -
2 ALEAT, -191 -
2do. Teorema de identidad, - 171 - aleatoria, - 220
2ro. Teorema de absorcin, - 171 - alfanumrica, - 238 -
2ro. Teorema inverso, - 171 - lgebra de Baldor, -145
lgebra de Boole, -146-, -147-, -151-, -153
-, -524
3 ALGOL, -54 -, -56-, -57-, -59-, - 61 -, - 234 -,
3er. Teorema de absorcin, - 171 - - 524 -
ALGOL 68, - 61 -, - 62 -
ALGOL W, -61
A ALGORISMO, -231
baco, -36-,-523 ALGOrithmic Language, -56
ABC,-40-,-523 - ALGORITHMUS,-231
ABS, -191 -, - 659-,-663 - algoritmo, -228-, -231-, -237-,-259-, -263
Abu Jafar ibn Ms al-Khowrizm, -231 -, - 264-, -524 -
acceso no autorizado, - 347 algoritmo para determinar el
Accin de Gracias, -494 - nmero mayor de tres
cido Desoxirribonucleico. Vase ADN, Vase ingresados, - 277
ADN
ACOS, -659-,-663 -

- 719 -
Tras los pasos de un... Hacker

algoritmo para hallar el mayor AMD, - 48-, -525


de n nmeros ingresados,-308-, American National Standards Institute. Vase
- 311 - ANSI
algoritmo para resolver una American Standard Code for Information
ecuacin de hasta segundo Interchange. Vase ASCII
grado, - 285 - American Standards Association, -56 -
algoritmo que calcula el AMI BIOS,-259 -
promedio de 3 notas de 10 Amjad, -457
alumnos, - 358 - anlisis, - 262 -
algoritmo que calcula la funcin Anarkick Systems, -468
factorial de un nmero, - 325 - AND, - 155-, -246
algoritmo que calcula la ANGLE, - 659-, - 663 -
posicin X e Y de la
Anonymous FTP. Vase FTP Annimo
trayectoria de un proyectil, -
ANSI, -56-, - 64-,-236-,-525 -
333 -
ANSNET,-491 -, -525 -
algoritmo que calcula la raz
anti todo, -493 -
cuadrada de un nmero, - 320-
anti-hackers, - 32 -
algoritmo que calcula la
superficie y el volumen de una antivirus, - 451 -, -458 -, -487-, -525 -
programa antivirus, -459 -
esfera, - 272-, -316
Turbo Antivirus, -447-, -463 -
algoritmo que intercambia el
valor de dos variables, - 339 Apache, -525 -
algoritmo que presenta la hora Aplicacin. Vase Aplicativo
aplicaciones Java, -65
por 10 segundos, - 330
algoritmo que presenta los 10 Aplicativo, -223-, -526 -
primeros nmeros,-303 Aplicativos en chip. Vase FIRMWARE
algoritmo que presenta un Apodo. Vase Nickname
mensaje en la pantalla, -264 append file, -457
algoritmo que resuelve el Applet, -526 -
problema de los cuadrados Application. Vase Aplicativo
mgicos,-366 Appz, -526 -
algoritmo que suma dos nmeros, Apuntador. Vase Puntero
- 268 - Aquiles, -30
Algoritmo de cifrado de flujo simtrico, -587 Archivo, - 182 -, - 186-, -526 -
-,-591 - ARCTAN, -191 -
ALGORITMO DEEUCLIDES, -231 ARCV,-467
Algoritmo de Mauborgne y Vernam, -520-, Argonauta, -30
590 - Arithmetic Logic Unit. Vase ALU
Alias. Vase Nickname Armadura, -526 -
al-Khowrizm, - 231 - Armoring. Vase Armadura
Allan Touring,-591 - ARPANET, -32-,-490-,-492-,-526 -
almacenamiento temporal, -218 Arquitectura de una Computadora, -103-, -
alto nivel, -53 - 105 -, - 112 -, - 209 -, - 211 -
ALU, - 112 -, - 213 -, -525 - arreglo de datos, - 351 -
ambigedad, -232 Arte de Programar Computadoras, -209

- 720 -
ndice Alfabtico...

artculo
artes -185-,-526
Artificial
ASK
ASCII, deldeHacker,-488-
ASIN,-659-,-663
Artificial
CURSOR, muerte,
- 631
DIRECTORY,
#n:
COLOR,
COLOR
BACK, 631
- 631
- --30-
intelligence. -- -631
ACCESS,-630-
DATUM,-630-
ERASABLE,
FILESIZE,-630-
FILETYPE,
MARGIN,
POINTER,
RECORD,
RECSIZE,-630-
RECTYPE,
SETTER,-631
ZONEWIDTH,
-MIX, 630
630-
- 631
630-
-630-
- -630
-Vase - -631-
Inteligencia
-- ataque por la fuerza bruta, -516 -
Atlas Software B.V., -499
ATN,- 191 -, -659-,-664
Autentificacin. Vase Autenticacin
Authentication. Vase Autenticacin
autodidacta, - 227
AUTOEXEC.BAT,-462 -
automvil, - 221 -
aventuras informticas, -29
AVR,-527
AY-3-8910, -206

ASK #n: NAME, -630-


ORGANIZATION, -630 B
B, - 64
backbone, -527
backDoor, -527
BACKGROUND, -655
Back-Up,-348-, -463
bajar. Vase Download
bajo nivel, -222
banner, -527
base 16, - 77
base 2, - 77
base 8, - 77
Base de datos, - 182 -, - 186-, - 223 -
ASK FREE MEMORY,-629 -
BASIC, -54 -, -59-, - 60-, - 61 -, - 145 -, -207-,
ASK MARGIN, - 630 -
- 208-, - 227-, - 234 -, - 236-, - 237-, - 238
ASK MAX COLOR, - 631 - -, -239 -, - 241 -, -247-, - 248 -, -264-, -
Bell
MAX
NAME, of-JUSTIFY,
Atanasoff-Berry
ataque
AT&T
Association
ASK
Assembler.
Assembly
PIXELS, Real
delanguage.
diccionario,
Laboratories,
631
632
SCREEN,-632
TEXT
WINDOW,
MODE, Vase 632
ABCZONEWIDTH,-630-
CURSOR,-631 - -516
-Computer.
Lenguaje
- Cruel
Vase -Vase
64-,
632
-Virus.
Lenguaje
Mquina
- --527-
Vase
ABC,
Mquina
ARCV
Vase 295 -, -296-, -527

BASICA, -59-,-208-,-528
GW-BASIC, -59-,-208
MSX BASIC, -207-,-208-,-255
Power BASIC, -237
Quick BASIC, -208-, -567
True BASIC, - 61 -, - 145 -, -208-, - 228 -, -
236-, - 238 -, -240-, -265 -, - 266-, -
282 -, - 295 -, - 296-, - 314 -, -315-, -
324-, -329-,-337-, -356-,-362-, -
430-,-444 -,-447-, -572-,-593 -, -
629 -, - 630 -, - 631 -, - 633 -, - 635 -, -
650 -, - 654 -, - 655 -, - 656 -, - 659 -, -
669-, - 678 -, - 687-, - 689-,-690-, -
691 -, - 693-, - 694 -

- 721 -
Tras los pasos de un... Hacker

Brian
Bhm
bombardeo
Bell
Bit
BCPL,
Basit, Kernigham,
BROWN,-655-
BOX
boot
bounce.
bitio.
BLACK,
BLUE,
booleano,
BASIC
Basic
binary
bit,
Beginners
baud.
baudio,
Benjamn Jacopini,-234
--528
Berkeley,-57-
binario,
Turbo
-Telephone postal.
BBS,-347-,-463-,-528
Bernt
Bill526-,
Code,
Cracker,
Gates,
70-,
sector,
-Fix,
-457-
-655-
64- -59-,
Input/Output
FORTRAN,-56-
Vase
SHOW,
AREA,
CIRCLE,
CLEAR,
DISK,
ELLIPSE,
KEEP,
LINES,
Vase -71-,
BIOS,-54-,-219-,-528-
-528-,
73
655
--457-
--59-
71
189-,
-490-,-492-,
-,
-457-,
yestructurado,
digit,
-Vase --631-,-636
631-,-632
631
--,
-77-,
BASIC,-208-,
Franklin,
All-purpose
bit
-baudioVase
631
Rebote -182-
64-
-5-
---529-,-583-
631
-182
--,
631
215
-,-476-,
--105
Laboratories-,635
235
System.
Vase -,Symbolic
-,-636
635
-BASIC--,--573-
635-
-184-,
--636
351Inc,-63-,
BIOS--528-
-502-,-529-
529-
-Mail
-Vase217-,
--Bombing 218 -, -
Instruction BSA, -529
Bubble Sort, -391 -
Bucanero, - 529
bucle, -247-, -299
Bucles anidados, - 300
bucles determinados, - 299 -
Bucles determinados e indeterminados, - 299 -
bucles indeterminados, - 299 -
bug, -475-, Vase Error
bulbos, -43 -
Bulletin Board Systems. Vase BBS, Vase BBS
BUNCH,-46
Burroughs, -46-, -529
BUS DE DATOS, -212-, -213-, -215-,-217-, -
530 -
MICROCANAL, -217
PCI,-217
USB, -217
Business Software Alliance. Vase BSA
bsqueda binaria, -434-, -435-, -436-, -437
-, -438 -, - 440-, -441 -
bsqueda secuencial, - 429
Byte, -70-, -182-, -183-, -184-, -185-, -429
-, -458 -, -468-, -476-, -530-, -541 -, -
581 -, -584-, -587-, -588-,-590-,-591-,
- 608 -
bytecode,-65-,-530

boom,
boot disk,
-448-
- 348 C
C, -54 -, - 63 -, - 64-, - 236-, - 237-, -530
C. A. R. Hoare, -394 -
C++, - 64-,-593 -,- 607
C3I2,-492-,-494-,-530
CABALLEROS DEL SILENCIO, -3-,-494 -
Caballo de Troya, -473-, -474
cacera de brujas,-32
CAD, -53-,-530
cadena, - 238 -
cadete, - 257
clculo del MCD, -228
clculos matriciales,-356
browser, - 529 CALL, - 631 -, - 636 -
Bruce Sterling, -349- CallBack, -493

- 722 -
ndice Alfabtico...

CAM, -53-, -530 chipset. Vase Conjunto de instrucciones


cmara fotogrfica digital, -221 CHR$,-660-,-664
camino de datos, - 215 -, - 217 Christopher Pile, -469-, -537
Campo, -182-, -185 -
campo de batalla, -492
C
capa bsica de instrucciones, - 224 -
Carcter, -182 - CI, -531
caracteres de control ASCII, - 623 - CIA, -32 -, -494 -, -531 -
Caracteres imprimibles ASCII, -626 ciber, -532 -
Carlos Bonaparte, -31 - ciberbasura, - 532 -
CARMEL Software Engineering Ltd, -447 cibercultura, -532 -
CASE, -209-,-530-,-629 - ciberespacio, -206-, -347-, -532
CASE ELSE, - 629 - cibernauta, -532 -
CAUSE ERROR,-324-,- 633 ciberpolica, -532
CAUSE EXCEPTION, - 633 ciberzapeo,-532
CD, - 221 - Ciencias de la Computacin, -29-, -205-,
CDC,-46-, -531 207 -
CD-ROM, -220-,-531 cifrado, - 532 -
CD-RW, -221-,-531 cifrador de flujo, -519
CEIL, - 659-, - 664 - CII-Honeywell-Bull, - 62
cellular phone. Vase Telfono Celular CINT, - 191 -
celular. Vase Telfono Celular cintas electromagnticas, -221
CENT, - 191 - circuito integrado, -46-, -532
Central Intelligence Agency. Vase CIA CISC, -214 -, - 224 -, -532 -
Central Point Software, -463-, -469 Ciudad de San Antonio, -492 -
Central Processing Unit. Vase CPU Clasificacin de los virus informticos, -473 -
Csar, -347-,-490-,-502-,-531 Clasificacin por insercin, -374
CGA,-259 - Clasificacin por intercambio, -374
Clasificacin por seleccin, -374
Claude Shannon, - 147-, - 181 -, - 520
Ch clave. Vase Key
CHAIN, - 631 - clave de bsqueda. Vase Keyword
Chaos Computer Conference, -457 CLEAR, -362 -, - 631 -, -637
charla. Vase chat clic, - 532 -
Charles Babbage, -37-, -38 click. Vase Clic
Charles Moore, -58 client. Vase Cliente
chat,-537 cliente, -532 -
chateo. Vase Chat cliente de correo electrnico, - 347
Check Program, -448-, -449-,-450-, -487-, Clifford Edward Berry,-40
-488-, -496-, -508-, -519-,-537 Clipboard, - 633
checksum, -448-, - 463 -, -487-, -537 clipper chip, -533
chip, -218-, -220-, -221 -, -223-, -537 clon,-258-, -491 -, -492-,-533
chip de vdeo, -255 CLOSE #n,-630
chips de silicio, -47 COBOL, -45-,-54-,-55-, -533

- 723 -
Tras los pasos de un... Hacker

cctel, - 398 CON, -662-, - 665


codificacin de algoritmos,-232 Concepto de nmero, -73
Cdigo ASCII, - 623 condicin, - 234 -
cdigo binario. Vase Bytecode cndor, - 350-, -490-, -493 -, -502-, Vase
cdigo fuente, -53-,-238 Kevin Mitnick
cdigo mquina, - 65-, Vase Lenguaje conexin remota, -490 -
Mquina conjunto de instrucciones, -214-, -215-, -223
Cdigo Penal,-452 -, -356-, -534 -
Colegio, -205 - constante, - 238 -
Colegio Tcnico Nacional Gran Colombia, - contador, - 239
448 - CONTINUE, - 633
columna, -355 - contrasea. Vase Password
Comando de Control y Comunicaciones, Control Data Corporation. Vase CDC
Inteligencia e Informtica, -492-, Vase control de procesos,-58
C3I2 Control Program/Monitor. Vase CP/M
comercio electrnico global, -347 Control Unit. Vase CU
ComLib, - 633 - controlador, -491 -, -534 -
COMMAND.COM, -458 conversacin. Vase Chat
Commander Bomber, -466 - cookie, -534 -
COmmon Business - Oriented Language, -55-, copyhacker, -534
VaseCOBOL Core War, -454-,-534 -
ComOpen, - 633 Corrado Bhm,-233
Compact Disc-Read / Write. Vase CD-RW correo electrnico, - 347-, - 349 -, -468-, -534
Compact Disc-Read Only Memory. Vase -
CD-ROM, Vase CD-ROM correo-e. Vase Correo electrnico
compilado, - 65- cortafuegos. Vase Firewall
compilador, -53-, -55-, -64-, -65-, -223-, corutina, - 228 -
533 - COS, -191 -, -659-,-665
compiler. Vase Compilador COSH, -659-,-665
Complex Instruction Set Computer. Vase CISC COT, - 659-,-665
computacionalmente intratable,-521-, -587 CP/M, -206-, -535
-,-591 - V2.2, -206
computadora, -48-, -53-, -211-, -533 CPAV,-463-, - 469
computadora personal,-47-, -51-, Vase PC CPOS, - 661-,-665
Computer. Vase Computadora CPOSR, - 661-, - 666
Computer Aided Design. Vase CAD CPU,-52-, -213-, -535
Computer Aided Manufacturing. Vase CAM crack, -535 -
Computer Aided Software Engineering. Vase cracker, -535 -
CASE Creacin del antivirus, -472 -
computer program. Vase Programa de criptoanlisis, - 181-,-448-,-517-,-536 -
computadora criptoanalistas, -517
Computing Tabulating Recording Company, - criptografa, -181-,-349-,-350-,-536 -
39 - criptologa, - 181-, -448-, -507-,-519-,-536
comunidad Hacker, - 350- -

- 724 -
ndice Alfabtico...

Criptosistema Invulnerable, -519 dato numrico entero, - 188 -


criterio seguro de Shannon, - 520-, -581 -, - dato numricos real, -188 -
590 - datos no numrico tipo lgico,-189
CRT,-259 - De un sistema en base b a un sistema en base
cryptoanalysis. Vase Criptoanlisis c, -95
cryptography. Vase Criptografa De un sistema en base b al sistema decimal, -
cryptology. Vase Criptologa 77 -
CSC, - 659-, - 666 DEA,-501 -, -538
CU,-213-, -536 - debug, -234
cuadrado mgico, -362 - DEC,-47-,-538
cuarta dimensin, - 353 - decimal, -105 -
Cuarta generacin,-47 decisin, - 215 -
cuenta de correo electrnico, - 516 - declaracin de las variables, - 145 -
cuqui. Vase Cookie DECLARE DEF, - 631 -, - 637
CYAN, -655 DECLARE NUMERIC, - 631 -
cyber. Vase Ciber DECLARE PUBLIC, - 632 -
cybercop. Vase Ciberpolica DECLARE STRING,-631 -
cyberculture. Vase Cibercultura DECLARE SUB, - 631 -
cybernaut. Vase Cibernauta de-encryption. Vase Descifrado
cyberspace. Vase Ciberespacio DEF, - 631 -
cybertrash. Vase ciberbasura DEF (Estructura de funcin), - 631 -
cyberzapping. Vase ciberzapeo Defense Advanced Research Projects Agency.
Vase DARPA
D Definibilidad, -232
Definicin algortmica de NMCStream, -583
daemon. Vase Demonio DEG, - 659-, - 667
DAME,-468 Del sistema decimal a un sistema en base b, -
Danilo, -501 - 85 -
Dark Angel, -467-, -537 delay, -491-, -538
Dark Angel's Multiple Encryptor device. Vase delincuente, -32 -, - 350-, -517 -
DAME delincuentes informticos,-453
Dark Avenger, -463-, -537 delito, - 452 -
Dark Ray, -468-, -537 demonio, -538 -
DARPA, -537 Dennis Ritchie, - 63-, - 64
Dartmouth College, -59-,-208 DeoxyribonucleicAcid. Vase ADN, Vase ADN
DATA, - 241 -, - 243 -, - 630-, - 637 Departamento de Defensa. Vase DoD
data bus. Vase Bus de datos Departamento de Defensa de los Estados
Data Encryption Standard. Vase DES Unidos, - 62 -
DATE, - 660-,-667 Departamento de Defensa de los Estados
DATE$, - 660-, - 667 Unidos de Norte Amrica, -32-,-55-, -490
dato, - 187 -, -538 -, Vase DoD
dato no numrico, - 188 - Department of Defense. Vase DoD
dato no numrico tipo hilera, -189 DES, -539
dato numrico, - 187 Desafo a la Mente, - 63 -

- 725 -
Tras los pasos de un... Hacker

desbordamiento. Vase Overflow Divide, - 633 -


descargar. Vase Download divisin, -76-, -129-, -192-, -244 -
descifrado, -539 DNA. Vase ADN, Vase ADN
Descripcin y Formalizacin del NMC Stream, - DO, - 248 -, - 249 -, - 250-, -251 -, - 629 -
581 - DO FORMAT, -304-, -309 -
desencriptacin. Vase Descifrado DoD,-494 -, -540
DET, - 661-, - 667 Red de Comunicaciones, - 493 -
diagrama de flujo, -237-, -239-,-243-, -244 Donald E. Knuth, -227
-, - 246-, - 263 - Donald L. Shell, -384 -
dial-up, -492-,-539 Doren Rosenthal, -505 -
Digital Equipment Corporation. Vase DEC DOS,-259-,-296-, -348-, -456-,-464-, -
Digital Research, -539 492-, -540
digital signature. Vase Firma digital MS-DOS 7.0, -481
Digital Versatile Disk. Vase DVD MSX-DOS, -206-, -561 -
dgito binario, - 71-,-182 DOT, - 661-, - 668
DIM,-629-, - 632-, - 639 download, -540
dimensin, - 351 - Dr. Solomons Antivirus Toolkit,-460-,-496 -
direccin, -540 DRAM, -259 -
direccin IP, -540 DRAW, -631 -, - 639
directorio raz, - 348 - driver, -490-, Vase Controlador
Disco Compacto - Lectura / Escritura. Vase dropper, -541 -
CD-RW Drug Enforcement Administration. Vase DEA,
Disco Compacto - Memoria de Slo Lectura. Vase DEA
Vase CD-ROM Dsseldorf, -501 -
disco duro, - 348-, - 349 -, -540 DVD, -221 -, -541 -
disco flexible, -540
disco recuperado,-349
discos, - 220
E
discos compactos, -221 EBCDIC, - 185-, -541 -
discos de metal, -220 echelon, - 541 -
discos duros, - 221 - ecuacin de segundo grado,-239-, -246
discos pticos,-221 Edgar Lazcano,-448
Diseo Asistido por Computadora. Vase CAD EDVAC, - 42 -, -541 -
Disk Operating System. Vase DOS EEPROM, -219 -,-542
diskette. Vase Disquete Efectividad,-233
dispositivo de control y proceso, -212-, -213 Efectos destructivos de los virus, -478 -
-, - 214 -, - 218 -, - 223 - ejecutable, -53
dispositivo de entrada y salida, -216 Ejercicios propuestos, -83-, -93-, -101 -,
dispositivo de lectura y escritura, -220 109 -, -117-, -127-, - 141 -, - 151 -, - 165 -,
dispositivo de memoria, -211 -, -214 -, -216-, - 175-, -199-,-291 -, -343-,-427
- 218 - Ejercicios resueltos,-79-, -87-, -97-, -107-,
dispositivo y unidad de entrada, -212-, -221 - 114 -, -122 -, - 134 -, - 148-, - 159-, - 172
dispositivo y unidad de salida, -212-, -222 -, - 193 -, - 263 -, -301 -, -315 -, -356-, -
disquete, -220-, -221 -, -540 430-,-436 -

- 726 -
ndice Alfabtico...

El arte de la guerra, -452 Erasable Programmable Read Only Memory.


el arte de programar computadoras, -227 Vase EPROM
El camino de datos, - 212 - ERASE #n,-630
El Comercio, - 449-,-542 error, -53 -, - 191 -, -543 -
El Universo, - 518 -, -542 - error de desbordamiento, - 215 -
Elaboracin de algoritmos, - 261 errores de lgica, -192
Electrically Erasable Programmable Read Only errores de sintaxis, - 192 -
Memory. Vase EEPROM errores de uso, - 192 -
Electronic Discrete Variable Automatic escner, - 221 -
Computer. Vase EDVAC Escuela, - 205 -
electronic mail. Vase Correo electrnico Escuela Fiscal Luciano Andrade Marn, -33
Electronic Numerical Integrator And Computer. Escuela Particular Paulo Sexto, -33
Vase ENIAC Escuela Politcnica de Zrich, - 61 -
Elementos de Euclides, - 231 - Escuela Politcnica Nacional del Ecuador.
ELSE, - 245 -, - 246-, - 629 - Vase EPN, Vase EPN
ELSE IF, -246 Escuela Superior Militar Eloy Alfaro. Vase
ELSEIF,-629 - ESMIL, Vase ESMIL
e-mail. Vase Correo electrnico Escuela Superior Politcnica del Ejrcito. Vase
encriptacin. Vase Cifrado ESPE, Vase ESPE
encryption, -542 ESMIL, -543 -
END, - 145 -, - 243 -, - 247-, - 629-, - 640 esotrico, - 349 -
END DEF, - 631 -, - 641 - ESPE,-256-, -295-, -543 -
END FUNCTION, - 631 - estacin de trabajo,-50-, -52-,-53
END HANDLER, - 633 estndares de la industria, -224 -
END IF, -244 -, - 245 -, - 246-, - 629 -, - 641 - estructura de control condicional, - 244 -, - 245
END MODULE, - 632 - -, -246 -
END PICTURE, - 631 -, - 641 - estructura de control iterativo, - 248 -
END SELECT, -629-,-641 - Estructura DEF,-638
END SUB, - 631 -, - 641 - estructura del programa, -53
END WHEN, - 633 Estructura IF, - 644 -
enfermedad, -451 - Estructura PICTURE, - 649 -
engendros informticos. Vase Virus Estructura SELECT CASE, - 654 -
informtico Estructura SUB, - 657
ENIAC, -41 -, -42 -, -542 - Estructura WHEN, - 657
enlazador, -53 - estructuras bsicas de control, - 233 -, - 238 -
ensamblador, -54- estructuras de control, - 237
ENT, - 191 - Estructuras de control condicional, - 243 -
Entrada, - 232 - Estructuras de control iterativo, - 247
EPN,-449-,-543 - Estructuras de control secuencial, - 238 -
EPROM,-219-, -223-, -543 - Estructuras de decisin, - 234 -
EPS, - 659-, - 668 estructuras de programacin, -228
Estructuras iterativas, - 234 -
equipo Alfa, -490
EQV,- 158 Estructuras secuenciales, - 233 -
Euclides, - 35 -

- 727 -
Tras los pasos de un... Hacker

Federal
Fifth
firma
fig Code.
file.
EXP,
EXLINE,de
Generation,
EXLINE$,
Extendedcaracterstica,
EXTEXT$,-
EXTYPE,
FBI,
Exponente,Bureau
-32-,
-191
Expresiones
EXIT
Exabyte,
expresiones
EXTERNAL,
Fabricacin
fichero.
Fidel
Fase
FAT,
File
FindVirus,
finger,
Finitud,
firewall,
Fallo
fila,-355-
CAM -184-,
-544
-348-,
-232-
--544
-668-
669-
FORTH,-59-
Transfer
Allocation
Vase --192-
Asistida
Valencia,-487-
PICTURE,
SUB,
DEF,-631-,-641
DO,
FOR,
FUNCTION,
HANDLER, ofCoded
-,-350-,-494
668-
-469-
669-
-456-, -543
-463-
629-,-642-
-629-,-642-
659-,
631-,-642-
631 -472
-incubacin/propagacin,
destruccin,
creacin,
Vase
seguridad,
Vase
Binary
Archivo
informticas,
-lgicas,
-Protocol.
-Table.
Archivo
EBCDIC -FDecimal
-,--473-,
--215
por
448-
Vase
631
643 --192-
--475
FTP- Interchange
--460-,-480-,-543-
633-
631
--472
669-
--,-,Computadora.
Investigations.
Vase -544
-642-
FAT, Vase
-472-
-Vase FBI
FAT
Vase firma del programa instalado, -487
firma digital, -545
firmas de los programas instalados,-487
firmas de virus, -479-,-487
firmas de virus conocidos,-487
FIRMWARE, -223-,-545 -
fisgonear, -491 -
FLOOD, - 631 -, - 643 -
floppy disk. Vase Disquete
Flujo Simtrico, - 520
FOR, -247-, - 629
Formas de infeccin, -476 -
Formas de ocultamiento, -478 -
FORMAT, -348
formatear, -348-,-349
formateo accidental, -349
FORmula TRANslation, -55-, Vase FORTRAN
FORTH, -54-, -58-, -59-, -545
FORTH Interest Group, -59
FORTH-79, - 59 -
FORTH-83, -59
FORTRAN, -54-, -55-, -56-, -59-,-234-, -
545 -
FORTRAN I,-55
FORTRAN II, -56
FORTRAN III, -56
FORTRAN IV, -56
fotografa perforada, -39
FOuRTH -generation language, -58
FOuRTH-generation language. Vase FORTH
FP, -659-,-670
F-prot, -496
Frankfurt, -501 -
Franz Swoboda, -457
FranzLisp, -57
frecuencia, - 216-
Fred Cohen, - 455 -,-545
Fred Vogel, -460
Frederick B. Cohen, - 455 -
Free Software, -545
freeware, -545 -
FTP, -494 -,-546 -
FTP annimo, -546
fuerza bruta,-516-, -521 -,-587-, -591 -

- 728 -
ndice Alfabtico...

Fuerzas Armadas, - 256-, -503 - gran red, -347


funcard, -546 - GREEN,-655
funcin, - 192-, - 228 -, - 234 -, -240-, - 263 -, - GSM,-547
299 - Guerra Fra, - 451 -, -547
funcin h, -593 - Guillermo Garca, - 449 -
funcin resumen, -587-, -591 - gur, -295-,-547
Funciones, - 314 - gusano,-454 -
Funciones Internas, - 659 - GW-BASIC, -547
Funciones Matemticas, - 659 -
Funciones normalizadas en informtica, - 190- H
funciones trigonomtricas, -228
FUNCTION, - 631 - hack, -514 -
FUNCTION (Estructura de funcin), Hacker, - 29 -, -32 -, -48-, - 145-, -230-, - 296
- 631 - -,-297-,-348-,-349-,-350-,-447-, -
Fundamentos de la programacin, -231 448-, -452-, -453-, -489-,-490-,-494 -,
-501 -, -502-, -522 -, -547
G Hackers Croatas, - 490
hacking, -3-, -501 -, -502-, -516 -
gateway, - 546 - HANDLER, - 633
Generaciones de las Computadoras,-43 Hard disk. Vase Disco duro
generador pseudoaleatorio, -581 -, -591 Harderwijk, -499
George Boole, -147 hardware, -45 -, -48 -, -55-, - 59-, - 64 -, - 65
germen,-451-, -584 -, -211 -, -212 -, - 295 -, - 373 -, -505 -, -
gestores documentales, -223 548 -
GETKEY,-337-, - 632 Harvard Mark I. Vase Mark I
GET MOUSE, - 632 Heap Sort, -405 -
GET POINT, - 631 - Helena, - 30
Gigabyte,-70-,-184-, -546 Hrcules, - 30-, - 259 -
GIRAFE, -467 Herman Hollerith,-38
Giuseppe Jacopini,-233 hroe, -517
Global System for Mobile communication. herramienta antivirus, -460-, -462 -
Vase GSM Hertzio, -216-, -548
glut, -463 Heurstica, -548 -
GNU, -546 hexadecimal, - 73 -, -77-, - 105 -, - 182 -
GNU General Public License. Vase GNU GPL HF, -489-,-548 -
GNU GPL, - 65-,-546 High Integrity Laboratory, - 459 -
GNU/Linux. Vase Linux hilera, - 238 -
Good Times, -481 - Historia de la Computacin, -33-, -35-, -48
Gopher,-547 Historia del Conflicto Armado, -495
GOSUB,-629 - Historia Ficticia, -501 -, -512-, Vase HF,
GOTO, -234-,-629 - Vase HF
Gottfried Wilhelm Leibnitz, -231 Hoax, -548 -
GPS, -223 hobby, -255-, -447-, -548
Grace Murria Hopper, -55 hojas de clculo, -223

- 729 -
Tras los pasos de un... Hacker

Honeywell, -46-, -549 instrucciones, - 223 -


Hospital BACA ORTIZ, -32 instrucciones del programa,-214 -
host,-458-,-549 Instrucciones en True BASIC, - 629 -
Hotel Baars,-499 Instruction Set. Vase Conjunto de
HTML, - 185-,-549 instrucciones
HTTP, -549 - INT, -191 -,-659-,-670
husped, -458-, -476 INT10h,-296 -
HyperText Markup Language. Vase HTML Integrated Circuit. Vase Circuito Integrado
HyperText Transfer Protocol. Vase HTTP Integrated Electronics Corporation. Vase Intel
Hz. Vase Hertzio Corporation
Intel, - 48-, -216-, -259 -
80286, -259 -
I 80287, -259 -
IA. Vase Inteligencia Artificial Pentium IV,-216 -
IBM,-39-,-44-,-46-,-47-, -51-,-59-, - x86, -447
458-, -461 -, -550 Intel Corporation,-550
IBM 360, -46 Inteligencia
IBM 704,-56-, -57 Servicio de Inteligencia, -488
IBM 7090, -56 Inteligencia Artificial, -57-, -58-, -63-, -551
IBM PC, -52-,-550 -
IC. Vase Circuito Integrado inteligente,-33
IDN,-662-, - 670 Interfaz de conexin, - 215 -
IF, - 243 -, -244 -, - 245 -, - 246-, - 629-, - 644 Interfaz de conexin con el camino de datos, -
- 213 -
Ilada, - 30 Interfaz de conexin con los dispositivos de
impresora, -222 entrada y salida, -213
informacin borrada, - 349 - Interfaz de conexin con los dispositivos de
infraccin informtica, -452 memoria, - 213 -
Ingeniera de Software, -209 interfaz de interconexin, - 218 -
Ingeniera de Software Asistida por INTERLISP,-57
Computadora. Vase CASE International Business Machines, - 39
Ingeniera Electrnica, -256 International Business Machines Co. Vase IBM
Ingeniera en Sistemas, -295 - International Organization for Standardization.
ingeniera reversa, -54- Vase ISO
Ingeniera Social, -489-,-495-, -503-,-516 - Internet, -32 -, -207-, - 347-, -349-, -514 -, -
ingreso de datos,-145 551 -
inicializar, - 348 Internet Service Provider. Vase ISP, Vase ISP
Initial Program Loader. Vase IPL interpretado, - 65
innovacin, - 487 - intrprete, -53-, -57-,-64-, -552
INPUT, - 145-,-239-,-270-,-630-,-645 Interpreter. Vase Intrprete
INPUT #n:,-630 INV,-662-, - 670
Insercin Directa, - 380 Inverso Multiplicativo, -120
instruccin, -53 -, - 233 -, - 234 -, - 237 inyeccin a tinta, -222
Instruccin DEF, - 638 IP, -659-,-670

- 730 -
ndice Alfabtico...

Ken
K. E. van
ISO, C,
Kaspersky
jugo
K&R 64-
ISP,-347-,-552
iteracin,
Irdeto,
IPL,-476-
Batcher,
nocivo,
Iteracin
Iteraciones
Ivn
IPaddress.
Ironman, Wyk, -451
-185-,-552-
--552-
DO,
FOR, ---458-
-391
--239-,
62-349-639-
643-
--247-
Antivirus,-519-
Franco,yVase
bucles, K IP
- - -299-
Direccin Kevin Mitnick, -350-,-553
Key, -554 -
key logger, -514 -, -515 -
Keystroke. Vase Pulsacin
KeyGenerator, -554 -
Keyword, -554 -
Kilobyte, -70-, -184-, -554 -
Kitab al jabrwal-muqabala, -231
Know How, -494 -
Knuth, -227-, -256

L
J La funcin h, -584
Java
Jefe
John
Java,
J.M.
Jan Phillips,-516
G. Kemeny,-59-,-60-,-207-,
-,de
Vincent
J. Presper
von
- de
Backus,
64 los
468-,
- 55-57-
Eckert,
-- 65-,
62 --553-
-Process,
449-
--41
-467-- 42
-552
- Vandebult,-497-,-507-
Jerarqua
jardnde Neumann,
McCarthy,
Tardy,
Buchanan, Atanasoff,
Sistemas,
Ishbia,
Community --40-
-,--42-,
operadores,
infantes,-205 -192-
-,--65-,-552-
211
-44 -227-
-, -- 233 -, -454 La informacin, - 181 -
La voz de la capital, -513
laboratorio de informtica, - 378 -, -
413 -
lado oscuro, -453 -
Lady Ada Augusta Byron de Lovelace, -38-, -
62 -
Lamer, -554 -
LAN,-53-, -554 -
laptop, -52
Large Scale Integration. Vase LSI
lser, -222 -
lazo, - 247
LBOUND, - 661-, - 671 -
LCASE$, - 661 -, - 671 -
LCD, -52-, -70-,-555 -
Leibnitz, - 231 -
Joseph
John
Joke,
juegos
Juegos de
Marie
W.
-553
Mauchly, -41 -, -223-
computadora,
Guerra,-350 -42-, -44 -
- Jacquard,-38- LEN, - 661 -, - 671 -
lenguaje de alto nivel, -53-, -54 -
lenguaje de bajo nivel, -53-,-54
lenguaje de programacin, -53-, -227-, -232
-
lenguaje ensamblador, -223-, -447
lenguaje mquina, -53-, -54 -, -234-,-555 -
Leonardo Da Vinci, -36 -
LET, - 145-, -239-, -244 -, - 245-, -246-, -
249-,-250-,-251 -, -629-,-645
Letizia Ramolino, - 31 -
Ley Asociativa, -169
Ley Clausurativa, -169

- 731 -
Tras los pasos de un... Hacker

librera
Librera
libertad
LIBRARY, - 631
Ley Distributiva,
Leyes
Conmutativa,
delde -169-
170-
de --,mtodos
condicional,
lgebra
funciones- 645
de y350-
-Boole, de -365 -
- -169-
subrutinas, Macintosh,-52-,-456-, -557
MACLISP, -57
MacMag, -456 -
macrocomputadora, -49-,-52
MAGENTA, -655
Mail bombing, -557
Mail Server. Vase Servidor de Correo
Licencia
ordenamiento, -413
Pblica General de -GNU. Vase GNU Electrnico
mainframe, -49 -, -50-
LISt
lgica,
LOG10,
LOG2,
Local
LOG,
LINE
Linux,
Liquid
LOCAL,
GPL --147-
linker,-53-
LISP
LN,
LISP,-54-,
-191
1.5.,-57-
-191
236-,
659-,-672-
- -659-,
631
-,-57-,
Processing. -555
Processing,-57-
Area
Crystal
-INPUT
INPUT,
Network. -58-,
- Display.
Vase -Vase
LISP
-,659-,-672-
-630-,-646-
672-
646
-#n:,-630- LCD
- 63-,-556-
- Vase LAN malos fines, -453
Malware, -558 -
Manejador. Vase Controlador
Manufactura Asistida por Computadora.
Vase CAM
mquina analtica, -37-, -558
mquina de estado finito, -581 -, -591 -
mquina diferencial, -37-, -558
Mquina Enigma,-591 -
mquina polimrfica, -468
mquina virtual, - 65 -
Mark I, -558
Mark Washburn, - 462 -
MASM, -296-, -492-,-558
Masouf Khafir,-467-, -558
Massachusetts Institute of Technology, - 62-,
Vase MIT
lgica binaria, -147- Master Boot Record. Vase MBR, Vase MBR
LOGO
LOGO,
LOOP,Grfico,-
--54-,
lgica248 63--62-,
del -,algoritmo,
-58-,
- 249-, -264-
- 250-,
- 63-,-296-,
- 251 -, - 629-,
-556-- MAT, - 632
MAT INPUT, - 630-,- 632-, - 647
MAT INPUT #n:,-630
MAT LINE INPUT,-630-,-632-, - 647
Lord - -490-,-492-,-502-,-514-,
Byron,-62
lORdByte,
646 - -518 MAT LINE INPUT #n:,-630
MAT PLOT, - 631
MAT PLOT AREA, - 631 -, - 632 -
Lucifer
LSI,-,-556-
-47-,
LTRIM$, Messiah, -468- Integrado
661-,-672-
-Vase Circuito MAT PLOT LINES,-631 -, - 632
MAT PLOT POINTS, - 631 -, - 632 -
MAT PRINT,-630-,- 632-, - 647
MAT PRINT #n:,-630
M MAT READ, - 630-,-632 -, -648
MAT REDIM, - 632
MAT WRITE, - 632
Mac,-236-, S.A., -519-
-557-
M.D. Technology matemtica, - 35 -, -355 -
materia hmeda. Vase Wetware
MAC, -493-, -556

- 732 -
ndice Alfabtico...

MD
Media
MBR,
MCD,
mcm,
memoria
Memoria,
Memorias
mensaje
Mensaje
Megabyte,
Mensajes
mtodo,
MAX,
MAXLEN,
MAXNUM,
MAXSIZE,
Mauborgne
matriz,
matriz Cifrado.
de
-de
---466-,
-228-
659-,
228
-355
Technology
Lock,-508-, -70-,
cuadrada,
Access laError,
descifrado,
cifrado,
Descifrado.Vernam,
-35-,-36-,-37-,
--ROM,
RAM,
673- -181-
-310-,-659-,-673
673
213 --476-,
673-
--,S.A.,
-219-
-218-
--514-181-
-184-,
-687-
-508-,-514
362
215
- yalmacenamiento
Control. --,--519-,-581
-558-
computadora,
-Vase
Vase
Vase -559-216-
-558-
-95-,
Cifrado -,Vase
-558-
- -218-
- - -96-,
Descifrado
MAC,
temporal, -99-,
MAC mtodo de ordenamiento, - 376 -
mtodo de ordenamiento por
insercin, -438 -
mtodo de seleccin, -415 -
mtodo de seleccin directa, -403 -
mtodo de Shell, -384 -, - 385 -, -414
mtodo Heap Sort, - 407
mtodo iterativo y recursivo, -228
mtodo paralelo de Batcher, -391 -, -392-,
414 -
mtodo por insercin, -380
mtodo por intercambio,-388
mtodo por seleccin, -401 -
mtodo propio de clasificacin, -374
mtodo Quick Sort, - 394 -, - 395 -, -414 -
microcomputadora,-51-,-52-,-59 -
microcontrolador, -58-, -559 -
microprocesador, -47-, -51 -, -53-, -58-, -
146-, - 213 -, - 214 -, - 223 -, -447-, Vase
CPU
Microprocesadores Intel x86, -559 -
Microsoft
Assembly Language, -296 -
Microsoft Corporation, -59-, -296-, -349
-,-480-,-492-, -519-,-559-,-607
- 100-, - 112 -, - 114 -, -117-, - 121 -, -122 Office, -59-,-474 -
-, - 147-, -220-, - 227-, - 228-, - 231 -, - Outlook, -470 -
261 -, - 275-, -280-, - 292 -, -319 -, -324 -, Outlook Express, -475 -
-365 -, -367-, -373-, -374-,-375-, -376 Windows XP, -519
mtodo de bsqueda
-,- 380-,bsqueda en
-429-
arreglos ordenados,
-384 - combinatoria,
bsqueda, -228- - Microsoft Assembly Language. Vase MASM,
Vase MASM
Microsoft Macro Assembler. Vase MASM
Microsoft Office, -560
429 - de clasificacin
mtodo bsqueda
clculo, --409-,
232
clasificacin,
cambio, - - -429-
y--,bsqueda,
373
-559
-410-,
secuencial, -228-,-
-416- Microsoft Windows. Vase Windows, Vase
Windows
Mimetizado, -560
MIN, - 660-, - 673
minicomputadora, -50-, -52
MIT, - 62-, - 63-, -560
351 - dede
mtodo
mtodo la sacudida,
burbuja, -388-,
Heap Sort,
insercin, -416-
- -389-,
- 398-, 381
- 399 -,-414-
-, -413
-415
- - MIX,-227-, -560
MOD, - 660-, - 674
Modchip, -560
MODULE (Estructura), - 632 -
mdulo, - 263 -, -365 -

- 733 -
Tras los pasos de un... Hacker

monitor, - 222 - Newbie, -561 -


monstruo, -490-, -492 - NEXT, -247-, -629-,-648
MOSC, -560 nibble, - 184-, -562
motor de mutacin, -468 nible, -182-, -184
motor mutante, -468 nickname, -489 -, - 562 -
motor polimrfico, -467 Niklaus Wirth, -61 -, -234 -
Motorola, -560 nivel de seguridad alcanzado, -586 -
Mouse. Vase Ratn NMC Research, -297-,-347-, -488-, -504 -, -
Mvil. Vase Telfono Celular 507-,-519
Mr. Stealth,-490-, -560 NMC Research Ca. Ltda., -562 -
MSX, -560 NMCSCS, -520-,-562
MSX BASIC, -561 - NMCStream, -519-,-520-,-521 -, -562-, -
MSX-DOS, -206-, -561 - 581 -, -586-, -607
MSX BASIC,-206 - No, -153-, -192
MSX BASIC, -561 - Nokia, -48-, -562
MSX-DOS,-561 - Nombre de usuario. Vase Username
MtE,-465 - nombre de virus conocido, -448
multihard, -488 nomenclatura hngara, -607
multiplicacin, -76-, -119-, -192 Nomenklatura, -463 -
multiprocesamiento, -213 NOR, -156
mundo de los Hackers, - 489 - Norton Antivirus, - 463-, -495-,-519
NORTON COMMANDER, - 348
NOT, - 153
N
Nota del autor, -48-, -76-, -85-, -181-, -182
Nagravision, -561 - -, - 183 -, - 189-, - 212 -, - 216-, -217-, -
NAND, -156 223 -, - 282 -, -314 -, -324 -, - 325-, -334 -,
Napolen, -30 -337-, -338-, -356-, -362 -, -365 -, -373
NASA, -494 -, -561 - -, -453 -
National Aeronautics and Space notebook, -48 -, -52 -
Administration. Vase NASA Nowhere Man, -467-, -562
National Computer Security Association. Vase NSFNet,-491 -, -562
NCSA ncleos magnticos,-45-, -47
National Science Foundation's Network. Vase Nuke, -468 -
NSFNet Nuke Encryption Device. Vase NED
Navegador. Vase Browser NUL$, -662-, - 675 -
NCPOS, - 661-, - 674 NUM, - 660-, - 675
NCPOSR, - 661-,-674 - NUM$,-660-,-676
NCR,-46-, -561 - Number of the Beast, -463
NCSA, -561 - nmero, - 73 -
NED, - 468 numrico, - 238 -, - 351 -
Negacin de una negacin, -171 -
negacin de Y, -156
O
Nstor, -30
NEUROMANTE,-206-,-532 O, - 154 -, - 192 -

- 734 -
ndice Alfabtico...

O exclusivo, - 157 Palabra clave. Vase Keyword


O exclusivo negado, -158 palabra reservada, -237
O negado, -156 Pantalla de cristal lquido. Vase LCD
Object, -633 Paquete, -563
objeto, -53 Parche, - 475 -, Vase Patch
octal, - 73 -, - 77-, - 105 - Parntesis, - 192
Octeto. Vase Byte PASCAL, -36-, -54 -, - 61 -, - 62 -, - 234 -, - 236
Odisea, - 30 -,-237-,-296-,-524 -, -540-,-563
Olfateadores. Vase Sniffers Blaise Pascal, - 36-, - 61 -
ON GOSUB, - 629 PASCALINA, -36-, -563
ON GOTO,-629 - paso a paso, -459 -
OPEN #n:,-630 password, -347-, -449-,-491 -, -493-, -514
OPEN SCREEN,-631 - -, -516 -, -563 -
operaciones de inteligencia, -489-, -494 - pastillas de silicio, -46
Operaciones fundamentales en los sistemas de Patch, -563
numeracin, - 103 - Patricio Pez, -504 -
Operaciones lgicas, -153 Paul Allen, -59
Operador del sistema. Vase Sysop PAUSE, - 629-, - 649
Operadores aritmticos, - 189 Payload, -564
Operadores de relacin, -190 Payload Activation Date,-564
Operadores lgicos,-190 Pay-Per-View. Vase PPV
OPTION ANGLE, -630-,-648 PC, -51 -, -52 -, - 60-, -564 -
OPTION ARITHMETIC, - 630 - PC Business World, - 462 -
OPTION BASE,-630 PC compatible, -52
OPTION COLLATE, -630 PC-Cilin,-496 -
OPTION NOLET, -630 Personal Computer. Vase PC
OPTION TYPO, - 630-, - 649 - Petabyte, -184-, -564
OPTION USING, -630 Peter Naur, -56
or, - 154- Peter Norton, - 459-,-564
or exclusivo, -581 - PGP, -521 -, -564
ORD, - 660-, - 676 Phalcon/Skism Mass Producer Code
Generator, -467
Ordenador. Vase Computadora
ordenamiento, - 373 - Phreaker, -564
PI, -241 -, - 660-, - 676
Orlando, -490-, -492 -, -502-, -514 -, -518 -,
Piaget, - 63
- 563 -
overflow, -105-, -215-, -563 Piccard, -564
OYSTER,-496 - PICTURE (Estructura grfica), - 631
-
Pitgoras, -35
P Pixel, - 70-, -564
Packb, - 633 PKUNZIP.EXE,-468
Packet. Vase Paquete PLAY, - 631 -, - 650
Pakistani Brain, - 455 - PLOT, - 631 -, - 650-,-651 -
PLOT AREA, - 631 -, - 651 -

- 735 -
Tras los pasos de un... Hacker

pop
primer
procesador,
up,
PRINT, Good
principio
PRINT
Polica,
Polica
polgono
Pontificia -296
web,
Polimorfismo,
POP,-347-,
PPV,
247-,
-565
661-,de
-503
prepolitcnico,
Pretty
PLOT
portal
portales
POS,
POSR,
Post
potenciacin,
primera
PRIVATE,
procedimiento
Procesador,
procesador
procesadores
procesamiento,
procesar
procedimientos
48
Vase
Office
--bancario,
Nacional,
-TEXT,
POINTS,
LINES, Java,
-213-,-214
661-,-677-
mundo,-493-
USING, -de
-generacin,
dimensin,
#n:,-630- -514
informacin,
Universidad
-Protocol. -256-
-218-
-514
-249-,-250-,-251
PUCE,
145 632-
-565-
-213
-,-677--223-
-565-
-paralelos,-213-
Bernoulli,
tiro,
-Privacy. 65
--42-,
631-,-651-
--240-,
-282-
-508-
631
---,-631
recursivo,
76Vase 351
Vase
matemticos,
palabras, -207-
-220-
Vase ---325-
-,-Catlica
PUCE
-,--244--43-,
650-POP,
PGP,Vase
223-
650-
CPU -228-
Vase
-44-,
-,-,-630-,
- 245
del POP
--45-,
-, -PGP
246-,
Ecuador.652- -- PROGRAM, - 629-, - 653
programa, -41-, -42-, -43-, -45-, -46-, -50
-, -53 -, -54 -, -55-, -56-, -57-, - 145 -, -
187-, - 189-, - 190-, -191 -, -192-, -206-,
- 208-, - 209 -, - 211 -, - 214 -, - 215 -, - 230
-, -232 -, - 233 -, - 234 -, - 235 -, - 236-, -
237 -, - 238 -, - 241 -, - 243 -, -244 -, - 255 -,
-259-,-264-, -265-, -266-, -268-, -269
-, - 270-, - 272-, - 273 -, - 274 -, -277-, -
279-, -280-, -285-, -286-,-287-, -291 -,
-296-, -299-,-303-, -304-, -305-, -308
-, -310-, -311 -, -313 -, -314 -, -315-, -
316 -, -318 -, -319 -, - 320-, -321 -, -322 -,
-324 -, -325-, -327-, -328-, -329-,-330
-, - 331 -, -332 -, - 333 -, -334 -, -335-, -
336-, -337-, -338-, -339-,-340-,-341 -,
-347-, -358-, -360-,-361-,-365 -, -366
-,-369-,-373-, -374-, -375-,-378-, -
381 -, -385-, -389-,-392-,-395-, -399-,
-403 -, -406-, -410-, -418-, -427-, - 429
-, -431 -, -432 -, -433 -, -436-, - 440-, -
441 -, -442 -, -444 -, -447-, -448 -, -454 -,
-455 -, -456-, -457-, -458 -, -461 -, -462
-, -463 -, -471 -, -472-, -473 -, -474 -, -
475 -, -476-, -477-, -478-,-480-,-482-,
-483-, -484-, -487-, -488-, -491 -, -492
-, -498-, -500-, -501 -, -505 -, - 520-, -
521 -
cdigo fuente, -261-, -262
documentacin del programa, -262
estilo al programa, -304 -
modularizacin de un programa, -235
programa de chequeo, -448
programa de computadora, -53
programa ejecutable, -448
programa infectado, -448
programa de computadora, -565
Programa que ilustra el uso de los
mtodos de bsqueda, -432-,-436 -
Proceso
Community
de la Comunidad
Process Java. Vase Java Programa que ilustra el uso de los
mtodos de ordenamiento, -418
producto lgico, -155- Programacin BASIC, -145
prfugo, -350-, -511 - programacin estructurada, -234-, -235-, -
Program. Vase Programa de computadora 259 -

- 736 -
ndice Alfabtico...

Programas
Programmable
PROM,
PUCE,-295
QUICKTEL,
PROM,
- 660-,
programas
Propiedad -218-,
de
Pseudocdigo,
PUBLIC,
Puerta
Prueba
Pulsacin,
Puntero,
RAD,
programacin
PROTECTOR
protocolo,
proverbio
Proveedor
-Grabador
129
487 65
programacin
ISP
protocolo
129 -trasera.
monobit,224-
Maurer,
--259
632
566
2bits,-588-
-- -chino,
Vase
series,por
orientada
-,-566-
-de
-,-566-
678-
-566-
PROMS,
Asociativa,PROM
-588-
Clausurativa,
Conmutativa, 588
autocorrelacin,
poker,
Modulativa,
-de
del
CONTRA
control
aplicacin,
Servicios
sistema,
Read
-Vase Q
-237-,-566-
-588R--104-,
-comunicacin,
-228-
BASIC,
--588-
capas,
-104-,
Only
de -211-,
Back-104-,
-228-
-104-,
VIRUS
de -211-,
a-235-
-492- -111
-112-,
-223-
588-111
-119-
-223-
- -,Vase
-222-
-120-
-,-120-,
dispositivos,-211
-dispositivo,
Memory.
la
objetos,-235-
Door -119-,
- INFORMTICOS,
Internet.
-349- Vase- - RadioShack Corporation,-567
raz cuadrada, - 228-, -232 -
Ralf Burger, -457
RAM, - 69-,-70-,-218-,-219-, -220-, -227
-, -239 -, -255 -, - 351 -, -456-, -464-, -
567 -
Randolph US Air Force, -491
Random Access Memory. Vase RAM
RANDOMIZE,-629-,- 653
randomstream, -587
Ratn, - 221 -, -567
rayo lser, -207
RCUAD, - 191 -
READ, - 242 -, - 630-, - 653 -
READ #n:,-630
Read Only Memory. Vase ROM
Read_Image, - 633
Rebote, - 568 -
Recursin, - 325 -
RED, - 655
red de rea local, -53 -
red de computadora, -349
Red del Departamento de Defensa, -502
Red del Departamento de Defensa de los
Estados Unidos de Norte Amrica, -492 -
Red Global Mundial. Vase www
REDONDEA, - 191 -
Reduced Instruction Set Computer. Vase RISC
Registro, -182-,-186
Registro de la Propiedad, -449
Relacional, - 192 -
Reloj,-213-, -216 -
REM, - 145-,-238-,-629-,-653
!,-238
,-238
REMAINDER, - 660-,- 678 -
REPEAT$, - 661-, - 678 -
representacin binaria,-182
Representacin de los nmeros, -73
Repblica del Per, - 489
RESET #n:,-630
respaldo,-221
resta, - 76-, -111 -, - 192 -
RESTORE, -242-, - 630-, - 654 -

- 737
Tras los pasos de un... Hacker

Retraso.Ortega,
Retrovirus,
Ricardo
Revolucin
resultados
RETRY,- 633-
RETURN,-629
Reventando
reventar del
Vase568
claves, - -145-,
Francesa,
- claves,517
-516
laboratorio,
-Delay -295-,
-- 30-- - 422-448-,
- -498-, - segunda dimensin, -352
Segunda Generacin, -44 -
Segunda Guerra Mundial, -591
seguro, -449
SELECT CASE,-629 -
self encryption, -479
Self Mutating Engine. Vase MtE
semilla, - 584 -
SEN, -191 -
Robert
Router.
romper,-448-,
ROM,
ROUND,
RUNTIME,
RISC,
RND,
ROM
Richard
rutinas
robtica,
RSA,
RTRIM$,
rutina,
Rijndael.
Rivest,
Rosenthal
509 W.
-568-
--214
BIOS,
-207-,
191 --191
58
-Shamir,
bsicas
Vase
Brandow,-456
228
-Vase
Engineering,
-Floyd, AES
-449-
-,661-,-679-
-223
679
---224-, -405-
--218-,
660-,
-,de
- -,-296
660-,
Gateway -505
--568-
Adleman,-219-,-223-,
678
---679-
control, -568-
-- 224
- - -568- sentencia, - 237
separadores de resultado, -241 -
Serialz, -569
servidor, - 347
Servidor de Correo Electrnico, -569
SET #n: MARGIN,-630
SET #n: POINTER, - 630
SET #n: RECORD, - 630
SET #n: RECSIZE,-630
SET #n: ZONEWIDTH, - 631 -
SET BACK, - 631 -, -655
SET COLOR, - 632-,-655
SET COLOR MIX, - 632
SET CURSOR,-329-,- 632
SET DIRECTORY,- 632
SET MARGIN,-630
SET MODE, - 632 -, - 656
SET NAME, - 632 -
SET TEXT JUSTIFY,- 631 -
S SET WINDOW, - 631 -, - 656
SET ZONEWIDTH,- 630 -
Set-top box, -569
S.I.. Vase Sistema Internaciona de unidades Seymour Papert,-62-,-63
Sala
Script,
sano,de
SARC,
Salida, -568-489
--297-
Santiago,-451
233
Emergencias,-32-
-- - SGN,- 660-, - 680
SHARE, - 632 -
Shareware, -569
Sharp LH5801, - 69-, -569
SIDA, -451 -, Vase VIH
Siglo 21, -449
Scripts kiddies. Vase Skid kiddies Simple Mail Transfer Protocol. Vase SMTP,
SEC,
Seca
Sector de arranque.
- 660-,
secuencial, - 679--568-
-221
Mediaguard, Vase Bootsector Vase SMTP
simulacin, -207
SIN, -191 -,- 660-, - 680
SINH,-660-,-680
Secure Socket Layer. Vase SSL

- 738 -
ndice Alfabtico...

sintaxis, - 53 - Spam, -570


Sistema Administrador de Recursos Spectravideo, -205-,-216-, -255-,-258-, -
Comerciales, - 297 296 -
Sistema de Comunicaciones Seguro. Vase SVI-738 Xpress,-205 -
NMC SCS Spectravideo SVI-738 Xpress, -570
Sistema de Numeracin, - 73 - SQR, - 191 -, -244 -, - 245 -, -246-, - 660-, -
Sistema Internacional de Unidades, - 184-, - 681 -
569 - SSL, -514 -
sistema multiproceso, -50 status quo, -229
Sistema Operativo, -223-, -236-, -296-, - Stealth, -478-, -570
348-, -349-,-456-, - 471 -,-478-, -480-, Steelman, - 62 -
-481 -, -484-, -492 -, - 607-, - 624 - STEP, -247
sistema seguro, -517 Sterling. Vase Bruce Sterling
Sistemas de Defensa del Per, -489 - STOP, -629-, - 656
Sistemas de Numeracin, - 73 -, - 182 - STR$,-660-,-681
sistemas de tiempo real, -58 Streaming, -494 -,-570
SIZE, -662-, - 680 string, -236-, -238-, -311 -, -351
Skid Kiddies, -569 strings como nmeros, -314 -
SMTP,-347-, -569 STRWIDTH, - 681
Sniffers, -570 SUB (Estructura de subrutina), - 631
software, -53 -, -58-, - 62 -, - 64-, - 208-, - -
211 -, - 212 -, - 222 -, - 223 -, -229-, - 347-, subndices del arreglo, -355
-349-,-458-, -459-,-461-,-462 -, - 471 subrutina, - 228 -, - 234 -, - 263 -, - 299 -, -327
-,-479-,-505-, -570-, - 627 suma, - 76-, -103 -, - 192 -
software antivirus, -467 Suma lgica, -154
software libre, -65 sumador lgico, -146
Software Libre. Vase Free Software Sun, - 65-, Vase Sun Microsystems
solucin del problema, -262 Sun Microsystems, - 64-, -65-, -570
SORT Sun Tzu, -452 -
cctel, - 398 supercomputadora,-48-, -50
Heap Sort, -405 - Suplantando direcciones de correo electrnico,
Insercin Directa, - 380 - 517 -
Insercin directa con bsqueda binaria, - SVI-738Xpress,-216
440 - Symantec,-463
Mtodo de Cambio, - 409 - Sys_Event, -633
Mtodo de Clasificacin por Disminucin de Sysop, -570
Incrementos, - 384 System, - 633
Mtodo de la burbuja, -388
Mtodo de la sacudida, - 398 -
Mtodo de Shell, -384 -
T
Mtodo paralelo de Batcher,-391 - TAB, -362 -, -681
Mtodo Quick Sort, -394 - Tabla de particiones, -477-, Vase MBR
Seleccin directa, -402 - Tabulating Machine Company,-39
SOUND, - 631 -, - 656 TAN, - 660-, - 682

- 739 -
Tras los pasos de un... Hacker

Tandy TI. Vase Texas Instruments


Tandy RadioShack TRS-80 Pocket TIME, -329-, - 660-, - 682
Computer II, -33-,-69-,-216-, -571 - TIME$, -329-,- 660-, - 683
TANH,-660-,-682 Tinman, - 62 -
tarjeta digitalizadora, -221 tiro parablico,-207
tarjeta especial, -223 trayectoria del proyectil, -334
tarjetas perforadas,-43 TO, -247
tarjetas SD, -221 Toshiba
TBD, - 633 Toshiba Corporation, -572
TCP/IP,-347-,-491 -, -571 - Toshiba Satellite 2400 CDS, - 69-,-70-, -
teclado, - 221 - 216-, -572
tcnicas de programacin, -350 Toshiba Corporation. Vase Toshiba
tcnicos especialistas,-489 - TPE, -467-,-468
Telfono celular, -48-, -571 - trace, - 234 -
Telfono mvil. Vase Telfono Celular Transfer Control Protocol/Internet Protocol.
Telmaco, - 30 - Vase TCP/IP, Vase TCP/IP
Tempest, -571 - Transformacin de nmeros entre sistemas de
Teorema de Bhm Jacopini, -233 numeracin, - 77
Teorema de la forma normal, -233 transistor, - 44 -, -572 -
Teorema de Morgan,-171 - Transmisin en flujo. Vase Streaming
Teorema del programa estructurado, -233-, - Trident, -467
259 - Trident Polymorfic Engine,-467
Teorema reduccin a 0, - 171 - Trigger, -468-, -572
Teorema reduccin a 1, - 171 - TRIM$, - 661-, - 683 -
Teoremas del lgebra de Boole, -171 Triple DES, -572
Teora de Algoritmos, -227-,-229 TRN,-662-, - 683
Teora de la Informacin, -147-,-181-, -572 Troya,-30
- troyano, -473
Terabyte, -184-, -572 TRS-80, - 145 -
tercer mundo, -500- True BASIC Inc,-61-,-259-, -572
tercera dimensin, - 353 - TRUNCATE, - 660-,-683 -
Tercera Generacin, -46 - TSR,-457-,-573 -
Terminate and Stay Resident. Vase TSR,Vase Tsutomu Shimomura, - 350-, -573 -
TSR Tunneling, -573
ternario, -105 -
Texas, -492 -
U
Texas Instruments, - 48-, -572 -
The Art of Computer Programming, -227 UAL. Vase ALU
The Hackers Crackdown,-349 UBOUND, - 661-,-684
THEN, - 243 -, -244 -, - 245 -, - 246 - UC. Vase CU
Theory and organization of complicated UCASE$, - 661 -, - 684 -
automata, -454 - UCP. Vase CPU
Thomas E. Kurtz, -59-, - 60-,-207-, -208-, - underground, -350-,-447-, -490-,-573
227 - UNICODE, - 185-, -573

- 740 -
ndice Alfabtico...

Unidad Aritmtico Lgica, -146-,-213-, -215 valor del nmero pi, -228
-, Vase ALU variable, - 238 -
Unidad Central de Proceso, -213-, Vase CPU variable bandera, - 311 -
Unidad Clnica de Virus, - 467 V-Card, -514 -, -515 -
unidad de almacenamiento masivo, -220 VCL,-467
unidad de cinta, - 221 - vector, -355 -
Unidad de Control, - 213 -, - 214 -, Vase CU veneno, -451 -
unidad de memoria, - 221 - Very Large Scale Integration. Vase VLSI
unidades de disco, -220 Videocrypt,-575
unidades de disco duro, -220 Videoguard, -575
unidades de discos compactos, -220 VIH, -451 -,-575
unidades de disquete,-220 VIRTRAN, -469
Univac,-46-, -574 - virtualizacin de memoria, -220
UNIVACI,-44-, -574 Virus, -451 -, Vase Virus informtico
UNIVersal Automatic Computer I. Vase Virus Creation Laboratory. Vase VCL
UNIVAC I Virus de computadora. Vase Virus
Universidad, - 205 - informtico
Universidad Central del Ecuador, - 33 -, - Virus de Inmunodeficiencia Humana. Vase
145 - VIH
Universidad de Delaware, -452 -, -457 virus informtico, - 350-, -448 -, -450-, -451
Universidad de Lahore, - 455 - -,-459-,-472-, -575
Universidad de Pennsylvania, -42 Bomba lgica, -473
Universidad de Stanford, - 227 Cascade, -459 -
Universidad del Sur de California, - 455 - El virus del descubrimiento, -461 -
Universidad Estatal de Iowa, -40 gusano del rbol de Navidad, -459 -
Universidad Lehigh, -458 Gusano o worm, -473 -, -474 -
UNIX, -574 - Jaime, -449 -
Unpackb (una funcin, no una Pichincha, - 449
subrutina), - 633 - Three Tunes, - 449
UNSAVE, - 631 - troyano, -462 -
UNTIL,-249-,-250-,-251 - Virdem, -457
US Patent Office,-497 Virus Pers, -473
USE, - 633 Virus 1784,-449
Usenet, -458 -, -574 - Virus 405, -460
User. Vase Username Virus anti checksum, -466 -
username, - 347 -, -491 -, -493 -, -514 -, -574 Virus anti debug, -466
- Virus B, - 459 -
Users Network. Vase Usenet Virus Bosnia, -468
USING$,-684 Virus Brain,-459 -
Virus Cascade, -459-, -461 -
Virus Charlie, -457
V
Virus CIH,-460
VACUNA INFORMTICA,-487 Virus Cruncher, -467 -
VAL, - 661 -, - 685 - Virus Datacrime, -460-, -461 -

- 741 -
Tras los pasos de un... Hacker

Whirlwind
War
Wetware,
virus
Virus
WHILE,
Warez,
WHEN 475de
-Semaj,
Dead
de
248la
polimorfo,y-464
-,on
--576-
I,-46-,
polimrfico,
erroresLehigh,
Maltese -458-
POETCODE,-468-
en
Fu
Game,-350-
-576- --459--448-,
-468--448-,-462-,
-473
-459-,
-465
249-,464-
-460-
-576-
Michelangelo,-466-
Gonorrea,
Hellpit,-464-
Italian,
Itshard,
Jerusalem,
Dedicated,
Demoralized
sector
computadora,
Manch,
macro,
Internet,
(Estructura Amoeba, -481
Arrival,
de --349-,
-, -449-
-464-
-465
-474
-460-,
- 250-,
de
arranque,
-Youth,
excepciones), -457-,-459
- -447-
-464-
-251 -464-
- 633-
-461
-control -,de
- - WHITE,-655
Wildlist, -576
William Gibson, -206-, -532
WINDOW, - 632 -
Windows, - 236-,-348-, -576
Windows 2000, - 481 -
Windows 3.1, -481 -, -492 -
Windows 7,-481
Windows 95, -480-,-481
Windows 98,-481
Windows Me, -481 -
Windows Vista, -481 -
Windows XP, -481 -, -519
Woodenman, - 62 -
workstation, -52 -
Workstation, -53
World Wide Web. Vase www
WRITE#n:, -631
Write_Image, -633
www, -576 -

Virus Starship,
SMEG,-469--466
X
Stoned,- 458
Virus Viena, -459-,
Tequila,-464-
Tremor,-468- -, -462
-461- - X3J11, -64
XOR, - 157
XTree, -463-, -467

virus reales,
Virus -44713, -475 -
Viernes
Y
VLSI,-47-,-48-,
Virus Scan,
-451-496
VirusGuard,
virus-i, -469- W
- - -575- Y, -155-, -192
Y negada, -156
Yamaha V9938,-206
YELOW,-655
Yottabyte, - 184-, - 520-,-577

WarCard, -576
Z
Z80, -206-, -216-,-255-,-535-,-539-, -
570-, -577
ZER,-662-, - 685 -
Zettabyte, - 184-, -577
Zilog Inc,-206-, -216-, -255-,-535-, -539-,
-570-, -577
Zombi, -491 -, -578

- 742 -

También podría gustarte