Está en la página 1de 142

Computación I Ing.

Queca

INTRODUCCIÓN

A LA

COMPUTACIÓN

1
Computación I Ing. Queca

LA COMPUTADORA

Introducción
Las computadoras se encuentran por donde quiera que usted mire y hasta en lugares que no
pueden verse. Las computadoras facturan sus alimentos, despachan su combustible, le entregan
dinero en el cajero automático, encienden y apagan la calefacción, controlan como andan sus
automóviles.

Hay diferentes clases de computadoras para diferentes propósitos. Ellas son tan variadas en
su tamaño, costo y habilidad.

Algunos Términos Para Comenzar,

Hardware Componentes físicos de la computadora.


Software Programa (instrucciones) que le dicen que hacer a la computadora

Concepto
Una computadora es un dispositivo electrónico que ejecuta las instrucciones en un programa.

Una computadora tiene cuatro funciones:

a. Acepta información Entrada = Input


b. Procesa datos Procesamiento = Processing
c. Produce una salida Salida = Output
d. Almacena resultados Almacenamiento = Storage

Entrada
Todo lo que le decimos a la computadora, es una Entrada o Input.

Tipos de Inputs:

Datos Todo lo ingresado a la computadora, los hechos.


Programas Juego de instrucciones que dirigen a la misma.
Comandos Códigos especiales o teclas clave que el usuario ingresa para
desarrollar una tarea, como : EJECUTE CUENTAS . Estos códigos
pueden ser seleccionados desde un menú de comandos como
Abrir en el menú de Archivos. También pueden ser elegidos
activando con el mouse sobre el botón comando.
La respuesta La que éste formula, contestando a la pregunta que le hace la
del usuario computadora, como por ejemplo eligiendo, Aceptar (OK) con la
tecla ENTER, SI o NO, o tipeando texto, por ejemplo, con el
nombre de un archivo

A continuación observaremos un conjunto de dispositivos para entrada o input,


comenzando por el Teclado. Las imágenes que se utilizan en las páginas siguientes
para ilustrar a las distintas teclas, pueden no parecerse al teclado que usted se
encuentre utilizando. Están muy difundidas diferentes versiones y algunas compañías
usan diseños especiales.

Teclados y Punteros
Teclado El dispositivo para Input más utilizado es el teclado (inglés
keyboard).

La posición de las teclas fue tomada de las máquinas de


escribir con el agregado de una cantidad mayor para atender
2
Computación I Ing. Queca

las necesidades de la computadora


Punteros

Una variedad de dispositivos punteros se usan para mover el cursor en la


pantalla y así acceder a las distintas opciones de una aplicación.

Se trata de dispositivos que complementan al teclado con el fin de hacer más


cómoda y versátil a su PC
Mouse Ratón Una esfera debajo de su carcasa gira en la medida en que el
ratón se desplaza sobre la mesa. El cursor que se ve en la
pantalla, sigue el movimiento del ratón o mouse. En el ratón
pueden apretarse los botones una o dos veces consecutivas para
ejecutar tareas, como seleccionar un símbolo o icono en la
pantalla o para abrir un documento que sea elegido.
Hay nuevos ratones que no tienen esfera. En cambio, utilizan
un láser para registrar el movimiento del ratón.
Trackball En lugar de mover todo el ratón, el usuario hace girar una
esfera embutida que se encuentra arriba o a un costado
Glidepad Usa un dispositivo sensible para controlar al cursor. El
usuario desliza sus dedos sobre él y el cursor sigue los
movimientos de los mismos. Para ejecutar acciones hay botones,
o también se puede golpear la superficie sensible del
dispositivo con un dedo. Este glidepad está una alternativa
popular como dispositivo puntero para laptop
Entrada con Especialmente utilizada como Asistentes Digitales Personales.
bolígrafo Las entradas con bolígrafo o Pen input, se usan para: Ingreso
(Pen Input de Datos (Escribiendo en ella la PDA reconoce la escritura
manual), Dispositivo Puntero (Funciones como las de un ratón
moviendo el cursor por la pantalla y ejecutando acciones
mediante pequeños golpes sobre el mismo.), Gestor de comando
(Se pueden ejecutar comandos moviendo el bolígrafo de una
manera determinada. Es así que una cierta inclinación puede
significar que guarde un archivo y otro tipo de inclinación
podría ordenar que lo abra.).
Pantalla
Sensible Selecciona algo con sólo tocar la pantalla.
(Touchscreen)

Tabletas Convertidoras de dibujos, fotografías, etc. a señales


Digitalizadores digitales. Las tabletas tienen comandos especiales.
y dispositivos
Gráficos

Procesamiento
Procesar datos es el equivalente de pensar para la computadora - calculando,
comparando y tomando decisiones. La gente también procesa información. Lo que usted
ve, oye, toca y siente es "input" o entrada.

Las máquinas tienen que pensar de la manera más difícil. Pueden hacer solamente una
cosa por vez, un paso a paso continuo. Los procedimientos complejos deben ser
desmenuzados en pasos MUY simples. Después éstos pasos pueden ser repetidos miles de
millones de veces. Pueden probarse toda clase de opciones y guardar una lista con lo
que funcionó y con lo que no.

Podemos afirmar entonces, que las computadoras no pueden pensar en la misma forma
que lo hace la gente. Pero lo que hacen lo hacen de manera excelente y muy, muy
rápido.

Unidad del Sistema

3
Computación I Ing. Queca

La Unidad de Sistema tiene varias partes y es donde se realiza el trabajo

Unidad de Esta es la parte de la computadora que controla al Ciclo de


Control Máquina. Insume numerosos ciclos hacer una pequeña suma de dos
números.
ALU Significa Unidad de Lógica y Cálculo Aritmético
(Arithmetic/Logic Unit).
Esta es la parte que ejecuta los comandos de la computadora.
Un Comando puede ser una operación aritmética básica, como:
+ - * /
o bien operaciones de comparación como:
> < = no =.
Todo lo demás tiene que ser convertido a éstas pocas
operaciones. En cada Ciclo de Máquina se ejecuta una sola
operación.
La ALU puede hacer solamente una cosa a la vez, pero puede
trabajar muy rápido.
Sistema Son instrucciones que utiliza la computadora para decirse a sí
Operativo misma cómo operar . Es la contestación a Quién soy y qué
puedo hacer yo?

Algunos sistemas operativos comunes son : DOS, las varias


versiones de Windows, OS/2, UNIX, LINUX, System 7. Todos éstos
se comportan de diferentes maneras y necesitan distintos
equipos. De manera que no todos ellos correrán en todas las
computadoras.
Sólo las partes del sistema operativo que se usan actualmente
se cargarán en la Memoria Principal.
Aplicaciones Hemos dicho anteriormente que se denominan Aplicaciones los
variados programas que habitualmente corren en la computadora.

Manteniendo un turno por medio del Ciclo de Máquina, las


computadoras modernas pueden hacer correr varios programas de
modo simultáneo. Esto se llama Multitareas.

Cada aplicación que se abre, deberá tener acceso a la memoria


principal para almacenar los datos que necesite. Para que los
datos de distintas aplicaciones no se superponga es necesario
que el sistema operativo defina que porción de la memoria
principal usará cada una de ellas.
Almacenamiento Cuando usted ingresa nuevos datos, las teclas que haya pulsado
Input/Output deben quedar almacenadas hasta que la computadora necesite
hacer algo con los nuevos datos.

Cuando usted desea datos impresos o para ser visto en pantalla


deben ser almacenados previamente en algún lugar accesible.
Almacenamiento Los números y caracteres que son el resultado inmediato de las
de Trabajo operaciones de la computadora, deben ser almacenados hasta que
los valores finales sean calculados. Estos valores en
progreso son guardados en locaciones temporales.

Por ejemplo: si la computadora está sumando los números 3,5 y


6, primero sumará 3 a 5 que dá un resultado de 8. El 8 será
guardado en memoria de trabajo. Luego el 8 y el 6 son sumados
y es almacenado el nuevo valor 14. Este valor 14 está listo
para ser mostrado en la pantalla, ser impreso, o utilizado
para otro cálculo.

4
Computación I Ing. Queca

Almacenamiento Uno espera que siempre haya espacio de almacenamiento sin


sin usar usar.
Si se agota el espacio disponible en la Memoria Principal , la
computadora se detendrá (crash).
Hay programas que detectan cuándo el espacio disponible se
reduce y advierten al usuario.
Este permite cerrar algunas aplicaciones abiertas, para
liberar espacio en la Memoria Principal. En algunas ocasiones,
el aviso llega demasiado tarde para prevenir el crash que
detiene la computadora. Recuerde que todos los datos
contenidos en la Memoria Principal se pierden cuando se
interrumpe la alimentación eléctrica. Por lo tanto un crash
puede significar la pérdida de mucho trabajo.

Ciclo de Máquina

Busca Trae una instrucción desde la Memoria Principal


Decodifica Traduce como comando de la computadora.
Ejecuta Procesa el comando.
Almacena- Guarda el resultado en la Memoria Principal.

Dispositivos

Hay varios componentes físicos de una computadora directamente involucrados en su


procesamiento. El mismo chip procesador, los dispositivos de memoria y la plaqueta
principal son los más importantes.

Microprocesador Es un chip de silicio, conteniendo la CPU, ALU y alguna


memoria.
La ROM (Read Only Memory) contiene las mínimas instrucciones
que necesita la computadora para poder ejecutar el arranque,
llamado booting. Qué un usuario hace en la computadora no
puede cambiar lo que se almacena en el ROM.
Hay muchos otros chips dedicados a calcular.
El chip microprocesador está ubicado en la plaqueta
principal (la plaqueta con el circuito más importante de la
computadora).

Dispositivos de Circuito integrado en un chip. Esto es lo que las modernas


Memoria computadoras usan para memoria

Salida Output

Salida o Output son datos que ya han sido procesados y convertidos en una forma útil que
ahora se llama Información.

Tipos de Salida o Output

Copia impresa sobre papel u otro medio permanente.


Copia en imagen de pantalla o representada por otro medio no
permanente.

Impresoras El medio más usado de Salida o Output es la impresora y la


pantalla o monitor de la computadora. Veamos las
características de cada uno.
El trabajo de una impresora es de colocar sobre el papel lo
que usted ve en el monitor. Lo fácil que esto le resulte y el
éxito con que lo logre, determinará si ha acertado con la
elección de su impresora.
Monitores El dispositivo que muestra el output (en la pantalla) de la
computadora tiene varios nombres, Entre los tipos de pantalla
existen: Monocromaticos, a Color, Liquid Cristal Display
(LCD), y de Plasma.

5
Computación I Ing. Queca

Los monitores de computadoras y las impresoras no siguen las mismas reglas para dar
formatos. En los viejos tiempos, lo que aparecía en la pantalla podía ser MUY
diferente de como va a quedar una vez impreso.

Dispositivos Especiales

Tareas especiales requieren equipos especiales. Hay una cantidad de dispositivos de


salida especiales. Se anuncian más todos los días. Desde detectores de temblores a
despliegue de exploradores CAT (Rayos X especiales) a los analizadores de registros
en un estudio de sonido o detectores de fatiga en el metal de las estructuras en las
aeronaves, tenemos más y más tareas especiales que usan las computadoras y por lo
tanto, requieren una salida impresa o por pantalla.

Proyectores de Proyección de información de la computadora sobre una


Datos pantalla o en la pared.
Microfilm (COM Computer Output Microfilm
) La computadora directamente genera las imágenes del
microfilm.
Impresoras de Especialmente usadas para planos de edificios y dibujos de
formato grande ingeniería y dibujos realmente grandes.
Sonido Las computadoras pueden dar como salida mensajes en alta voz
, música, datos como sonido. Naturalmente usted deberá tener
altoparlantes y una plaqueta de sonido.

Almacenamiento
El Almacenamiento se refiere a los medios y los métodos usados para guardar y mantener la
información disponible para usarla más adelante. Algunas serán necesarias de inmediato,
mientras que otras no serán requeridas durante largo tiempo.

Por lo tanto para diferentes usos son apropiados diferentes métodos.

Memoria Principal

Recuerde los diferentes datos e informaciones que se almacenan en la Memoria


Principal.
Memoria Principal = Almacenamiento Primario
Esto mantiene el seguimiento de lo que se está procesando.
Es volátil. (si se apaga la computadora, se borran todos los datos)
Como Memoria Principal, las computadoras usan la RAM, o Random Access Memory
(Memoria de Acceso al Azar)

Almacenamiento Auxiliar

Almacenaje Auxiliar = Almacenaje Secundario.

Esto es lo que por el momento no está siendo procesado. Es el material en archivo


listo para tomarlo de allí cuando se necesite.

No es volátil (cuando se apaga la PC no se borra).


El Almacenamiento Auxiliar se usa para:

Input- datos & programas


Output- guardar los resultados del proceso

El Almacenaje Auxiliar es donde usted guarda las informaciones sobre los impuestos
del año pasado, direcciones de antiguos clientes, programas que usted usará alguna
vez, datos que usted ingresó ayer y todo lo que no es utilizado de inmediato.

Discos Magnéticos

De los varios tipos de Almacenaje Auxiliar, los más utilizados involucran con
frecuencia algún tipo de disco magnético. Estos vienen en varios tamaños y
materiales, como veremos enseguida.

6
Computación I Ing. Queca
Este método usa el magnetismo para guardar los datos sobre una superficie magnética.

Un dispositivo hace girar al disco muy rápidamente debajo de una cabeza para
leer/escribir, que hace lo que indica su nombre. Lee y escribe los datos desde y
sobre el disco. (Un nombre que realmente tiene sentido!)

Tipos de Discos Magnéticos


Discos Estos consisten en conjuntos de 1 a 4 platos metálicos sellados
Rígidos dentro de una caja. El metal de los discos es de tipo magnético. El
disco rígido se instala generalmente dentro del gabinete de la
computadora pero no obstante eso, también hay tipos removibles y con
cartuchos.

Técnicamente el controlador es el que maneja al mecanismo que dirige


al disco rígido que contiene los datos. Pero la mayoría usa las
palabras "controlador" (hard drive ) y "disco rígido" (hard disk) de
manera intercambiable. No cometen el mismo error con los floppy
disks (disquetes) y floppy drives (disqueteras). Resulta más claro
entender que los disquetes y las disqueteras son elementos
separados.
Disquete / Ambos están fabricados de Mylar revestido con un óxido metálico Este
Floppy Disk último provee la calidad magnética para el disco
La parte "blanda" (floppy) es lo que se encuentra debajo de la
cobertura del disquete - una pieza de plástico muy blanda. Tamanos:
5¼" y 3½"

Otras clases de medios removibles

Se hallan en uso varias otras clases de medios magnéticos, como el popular disco
Zip. Todos ellos tienen una capacidad mucho mayor que los disquetes. Algunos tipos
de nuevas computadoras carecen del todo de un dispositivo de disquetes.

Cada clase de medio requiere de su propio dispositivo. Algunos dispositivos y


discos son mucho más costosos que los disquetes y otros discos, pero con ellos se
obtienen capacidades mucho más grandes.

Hay otras clases de artefactos de almacenamiento que no son magnético, tal como
flash drives, ni no son discos, como cinta magnética. Estos se discutirán luego

Cinta La cinta magnética usa un método similar al de la cinta de video para


Magnetica almacenar datos en una video cámara (VCR)

No obstante esto, la velocidad de acceso puede ser bastante lenta


cuando la cinta es larga y lo que usted quiere ubicar no está cerca
del principio. Por eso este método se usa en primer lugar para backups
(resguardos) importantes de grandes cantidades de información.

Especialmente las empresas, les conviene hacer un backup de


operaciones de venta, diariamente y un backup de todo su sistema
contable. aproximadamente una vez por semana. Guardar conjuntos de
backups como éstos, minimiza la cantidad de datos perdidos cuando el
sistema falla.
Discos Un método de grabación de datos totalmente diferente, es el utilizado
Ópticos para los discos ópticos. Estos incluyen a varios tipos de discos CD y
DVD.
Usted puede suponer a partir de la palabra "óptico" de que tiene algo
que ver con la luz. Estará bien en lo cierto! De hecho se trata de Luz
de Laser.
Los discos opticos se obtienen en variedades que para diferentes
propósitos, son fabricados de manera algo distinta

Otros Dispositivos

Las invenciones surgen eternamente en las computadoras. Así es que más dispositivos
diferentes aparecen todo el tiempo, especialmente para usos especiales.
Uno de los dispositivos bajo desarrollo, utiliza bloques de plástico transparente
para almacenar datos, usando una técnica láser. Cuándo dos rayos láser se encuentran
en el bloque , el color se vuelve azul. Si se considera el azul como un uno y el
transparente como un cero, se ha configurado así un dispositivo de memoria digital!
La densidad posible parece ser mucho más alta que utilizando una técnica magnética,
pero quedan aún muchas dificultades que solucionar. El equipo para escribir/leer los

7
Computación I Ing. Queca
bloques, todavía es muy voluminoso para poder competir con las presentes
tecnologías. Los bloques que son usados actualmente requieren encontrarse
superenfriados, o perderían sus datos en unas pocas horas.
La historia de la computación sugiere que alguna nueva tecnología ocupará el mercado
en el futuro próximo. Adivinar quién ganará ésta carrera es lo que hace surgir
fortunas en el mercado accionario de Wall Street!

Memoria Flash Algunas tarjetas removibles para almacenamiento, de distintas


marcas, también llamadas tarjetas de memoria, ahora se hallan
disponibles. Son dispositivos de estado sólido (sin partes
móviles) que leen y escriben datos eléctricamente, en lugar de
hacerlo magnéticamente.
Aparatos como las cámaras digitales o de video y los teléfonos
celulares pueden utilizar las CompactFlash, SmartMedia, u otra
memoria flash de tipo tarjeta.
Las computadoras Laptop usan tarjetas PCMCIA, otro tipo de
memoria flash, semejante a la de los discos rígidos de estado
sólido.

Dispositivo Este nuevo tipo de almacenamiento en memoria flash, aún no tiene


USB un nombre generalmente aceptado. Cada fabricante le dá un nombre
diferente, incluso dispositivo flash, lapicera flash, dispositivo
miniatura, dispositivo llave o mini dispositivo USB.
Todos son pequeños, de un tamaño aproximado al de su dedo pulgar
o de una llave grande de automóvil y se enchufan en la conexión
de acceso a la computadora. No se requieren programas especiales
para Windows XP, 2000, o Me. Enchúfelos y la computadora
detectará que posee un nuevo dispositivo de almacenamiento!
Pequeños dispositivos flash semejantes, pueden tener capacidades
de almacenar, desde 8 MB hasta 1 GB o más! Mucho mejor que los
disquetes!
Algunos dispositivos flash incluyen protección mediante una
contraseña y la capacidad de ejecutar programas inmediatamente
conectados a una interfase USB. Esto resulta tan atractivo!

Discos rígidos Se dispone de varios tipos de drives especiales que comprimen los
removibles datos. Un disco rígido externo normal también puede ser utilizado
para el backup.
La imagen a la derecha es la de un dispositivo de almacenaje Zip
externo, con un disco parcialmente insertado.
Almacenaje masivo Las actividades son grandes cantidades de información que
necesitan un acceso fácil, usan juegos de cartuchos y brazos
robotizados para ponerlos y sacarlos automáticamente de su lugar.
Tarjetas Un chip integrado dentro de la misma tarjeta rastrea los cambios,
inteligentes como la deducción de sus compras de la suma cargada originalmente
sobre ella.
Se espera que las tarjetas inteligentes sean populares en lugar
de usar un puñado de monedas en las máquinas expendedoras
automáticas y semejantes.
Otro tipo de tarjeta, tiene una nueva tecnología con un sensor
que permite que la tarjeta inteligente contenga sus datos
dactilares.
Los datos digitalizados de su dedo, son transmitidos a una base
de datos, donde se los compara con los que contiene en su
archivo, y puede así probar que es realmente usted!

Tarjetas ópticas Un chip en la tarjeta guarda información de su historia clínica o


reparaciones hechas a su coche.
Estas pueden guardar más cantidad e informaciones que las
tarjetas inteligentes, porque no necesitan hacer ningún tipo de
procesamiento

8
Computación I Ing. Queca

FUNDAMENTOS DE PROGRAMACIÓN

Programa de computadora
Para decirlo simplemente, un programa es un conjunto de instrucciones detalladas que le
dirán a la computadora que hacer exactamente, paso a paso.

Un programa puede ser tan corto como de una sola línea de código, o tan largo como de varios
millones de líneas de código (esperemos que los más extensos realicen una cantidad de cosas
complejas y diferentes!).

Lenguajes
Lenguajes de Programación
Lenguaje de programación, es cualquier lenguaje artificial que puede utilizarse para definir
una secuencia de instrucciones para su procesamiento por una computadora.

Es así, que ahora veremos en determinados lenguajes de programación como ser: Turbo C,
Visual Basic.NET, C#.NET, J#.NET de visual Studio 2005.

La programación ha cambiado mucho desde que se crearon las primeras computadoras. Los
primeros programas eran muy simples y directos comparados con las elaboradas bases de datos
actuales, procesadores de texto, agendas y juegos de acción.

Diferentes lenguajes de computación han sido escritos, para a su vez escribir con ellos los
cada vez más complejos programas de computación. Estos pueden clasificarse en base a cuan
cerca del lenguaje hablado se encuentran y, por consiguiente, cuan lejos de los infernales
lenguajes de computadoras.

Lenguaje Es el lenguaje de la CPU. El lenguaje de más bajo nivel. Compuesto de 0 y 1.


de
Máquina

Lenguajes Son abreviaturas para el lenguaje de máquina


Asembler

Lenguajes Utilizan declaraciones en los programas, expresiones como palabras y


de expresiones algebraicas. Fueron desarrollados en las décadas del 50 y 60.
Alto Nivel
Después de que se escribe un programa con uno de los lenguajes de alto
nivel, debe ser compilado o interpretado.
Otro programa compilador vuelve a escribir el programa inicial en lenguaje
de máquina para que la CPU pueda entenderlo. Esto se hace de inmediato y el
programa final se guarda en esta nueva forma. Un programa compilado se
estima que será considerablemente más largo que el original.

Un programa Intérprete traduce las declaraciones del programa original a


lenguaje de máquina, línea por línea, a medida que va corriendo dicho
programa original. Un programa interpretado será más pequeño que uno
compilado pero insumirá más tiempo para ser ejecutado.

Lenguajes de Se denominan 4GL o Very high-level Languages. Están orientado a resultados e


Cuarta incluyen lenguajes de interrogatorio o "query", con bases de datos. Aquí
Generación existen escasas opciones para los programadores, pero los programas son
mucho más fáciles de escribir que en los lenguajes de nivel más bajo. Estos
también requieren ser interpretados o compilados.

Lenguajes Son lenguajes de quinta generación. No tenemos realmente ningún programa de


Naturales ésta generación que utilice un lenguaje natural. En un lenguaje así, usted
escribiría sus declaraciones en lenguaje corriente como frases normales. Por
ejemplo usted escribiría: ¿Quienes son los vendedores con ventas que
superen los $20.000 durante el mes pasado?

9
Computación I Ing. Queca
Muchos lenguajes de computación están disponibles para escribir programas de computadoras.
Cada uno de ellos tienen ventajas para ciertas clases de tareas.

Veamos algunos ejemplos de los varios tipos de lenguajes:

Lenguaje de Es la lengua nativa de la CPU.


Máquina Cada diseño de CPU tiene su propio lenguaje de máquina. Este es el juego de
instrucciones que usa el chip para sí mismo. Está hecho de ceros y unos
(números binarios) y resulta muy difícil para el trabajo de la gente.

10 23 El lenguaje de máquina parece compuesto de números solamente.


11 FF En el segmento de un programa que vemos a la izquierda, la
12 12 primer columna le dice a la computadora dónde llenar su
13 10 memoria y en la segunda columna sobre una base hexadecimal
14 50 (base 16) figuran los valores que debe poner en dichas
15 23 locaciones de las memorias.
16 30 .
17 40
18 C0
19 00

Otro ejemplo de lenguaje de máquina es el siguiente:


El segmento de código en lenguaje Java es:
int counter = 0;
counter = counter + 1;
podría ser trasladado en lenguaje de máquina como

000101000100010001000100001000101010111110
000001110101000111110000100010000010101010

Lenguaje Son códigos o abreviaturas para las instrucciones del lenguaje de máquina.
Asembler En un lenguaje Asembler se le asigna un código a cada instrucción en
(Assembly) lenguaje de máquina. De esta manera, en lugar de tener que recordar una
cadena de ceros y unos, el programador sólo tendrá que recordar códigos
cortos como: ADD, MOV, o JLE.
Ciertamente esto es una mejora comparado con recordar
000101000100010001000100001000101010111110!! pero tampoco resulta muy
sencillo.
El programa en Asembler a continuación sirve para leer dos caracteres y
mostrarlos sobre la pantalla que se indica. Note que el texto que figura a
la derecha de los punto y comas, ( ; ) es ignorado por la computadora.
Figura esto para explicar el programa a cualquiera que mire el código. Note
que cada pequeño paso debe ser codificado y que todo esto solo sirve para
mostrar dos caracteres!

;name of the program:one.asm


;
.model small
.stack
.code
mov AH,1h ;Selects the 1 D.O.S. function
Int 21h ;reads character and return ASCII
; code to register AL
mov DL,AL ;moves the ASCII code to register DL
sub DL,30h ;makes the operation minus 30h to
; convert 0-9 digit number
cmp DL,9h ;compares if digit number it was
; between 0-9
jle digit1 ;If it true gets the first number
; digit (4 bits long)
sub DL,7h ;If it false, makes operation minus
; 7h to convert letter A-F digit1:
mov CL,4h ;prepares to multiply by 16
shl DL,CL ;multiply to convert into four bits upper
int 21h ;gets the next character

10
Computación I Ing. Queca

sub AL,30h ;repeats the conversion operation


cmp AL,9h ;compares the value 9h with the content
; of register AL
jle digit2 ;If true, gets the second digit number
sub AL,7h ;If no, makes the minus operation 7h
; digit2:
add DL,AL ;adds the second number digit
mov AH,4CH
Int 21h ;21h interruption
End ;finish the program code

FORTRAN = Formula Translation


El lenguaje FORTRAN fué creado cerca de 1957 para ayudar a los científicos,
ingenieros y matemáticos a escribir sus programas y resolver con ellos las
ecuaciones matemáticas. Todavía es un lenguaje vastamente utilizado para ese
tipo de programas. Fue el primer lenguaje exitoso de alto nivel. Han
aparecido nuevas versiones y el standard actual es el Fortran 90.
A continuación veremos un programa de ejemplo en el que se acepta el bus o
línea de transmisión de datos, número 99 y muestra en pantalla el comando
TAKE BUS 99 (tome la Línea 99)

PROGRAM IDEXMP
INTEGER BUS_NUM
BUS_NUM = 99
WRITE(*,*) ' TAKE BUS ', BUS_NUM
END

COBOL = Common Business Oriented Language


El COBOL fue escrito alrededor de 1960, teniendo presente las aplicaciones
comerciales. Tiene una estructura muy inglesa, usando sentencias y párrafos,
a pesar que aquí son muy diferentes de los utilizados para una novela. Esto
ayuda a los hombres de negocios, que no son muy hábiles como programadores
para que puedan escribir o editar un programa. Pero tiene la desventaja de
su tendencia hacia programas muy largos y con muchas palabras. Es un buen
lenguaje para programas simples y directos.
COBOL fue usado para crear muchos programas para las computadoras de gran
porte de importantes empresas. Estos programas fueron actualizados durante
las medidas llamadas Y2K, que se tomaron al llegar el año 2000. De manera
que parece muy probable que todavía habrá programas en COBOL

El ejemplo que sigue acepta dos números a los que multiplica y los muestra
junto con el resultado de la operación. Vea el punto de PROCEDURE DIVISION
para notar donde se hizo el cálculo.

$ SET SOURCEFORMAT"FREE"
IDENTIFICATION DIVISION.
PROGRAM-ID. FragmentA.
AUTHOR. Michael Coughlan.

DATA DIVISION.

WORKING-STORAGE SECTION.
01 Num1 PIC 9 VALUE ZEROS.
01 Num2 PIC 9 VALUE ZEROS.
01 Result PIC 99 VALUE ZEROS.

PROCEDURE DIVISION.
Calc-Result.
ACCEPT Num1.
MULTIPLY Num1 BY Num2 GIVING Result.
ACCEPT Num2.
DISPLAY "Result is = ", Result.
STOP RUN.

BASIC = Beginner's All Symbolic Instruction Code


Este lenguaje fue escrito en 1964,. Originalmente el BASIC era para ser
usado solamente en las clases.

11
Computación I Ing. Queca

Una gran variedad de "dialectos" del BASIC fueron desarrollándose a través


de los años. Ahora es muy popular el Visual Basic para programar
aplicaciones bajo Windows. Microsoft Visual Basic for Applications es
ejemplo de un desprendimiento del BASIC modificado para ayudar a los
usuarios a escribir pequeños subprogramas llamados "scripts " (libretos) o
"macros " para ser usados con los aplicaciones. Otras aplicaciones pueden
también tener sus propias variaciones sobre el BASIC, por ejemplo Word Basic
y Excel Basic.

El programa ejemplo escrito abajo, acepta las medidas de distancia en


millas, yardas, pies y pulgadas y las convierte en kilómetros metros y
centímetros. Note como el programador puede escribir ecuaciones para hacer
los cálculos.

' English to Metric Conversion


' J. S. Quasney
' ****************************
PRINT : PRINT "English to Metric Conversion"
PRINT
INPUT "Miles: ", Miles
INPUT "Yards: ", Yards
INPUT "Feet: ", Feet
INPUT "Inches: ", Inches
Inches = 63360 * Miles + 36 * Yards + 12 * Feet + Inches
Meters# = Inches / 39.37#
Kilometers = INT(Meters# / 1000)
Meters# = Meters# - 1000 * Kilometers
Final.Meters = INT(Meters#)
Centimeters = Meters# - Final.Meters
Centimeters = 100 * Centimeters
Centimeters = INT((Centimeters + .005) * 100) / 100
PRINT
PRINT "Kilometers:"; Kilometers
PRINT "Meters:"; Final.Meters
PRINT "Centimeters:"; Centimeters
END

C Originalmente creado para escribir software para sistemas, el lenguaje C ha


evolucionado al C++. Los dos son ampliamente utilizados por programadores
profesionales para toda clase programas.

El programa siguiente está escrito en C++, acepta tres números y verifica si


el tercero es igual a la diferencia entre los dos primeros

#include <iostream.h>
void main()
{
int a, b, c;
cout << "Please enter three numbers\n";
cout << "a: ";
cin >> a;
cout << "\nb: ";
cin >> b;
cout "\nc: ";
cin >> c;

if (c=(a-b))
{
cout << "a: ";
cout << a;
cout << " minus b: ";
cout << b;
cout << " equals c: ";
cout << c << endl;
}
else
cout << "a-b does not equal c:" << endl;
}

12
Computación I Ing. Queca

Java Java es un nuevo lenguaje popular, utilizado para escribir tanto


aplicaciones completas como pequeños applets para las páginas de Internet
(web). Su objetivo es el de crear aplicaciones que corran en cualquier
computadora a diferencia de otros lenguajes que no son compatibles con todas
las plataformas.
Por ejemplo, MS Word para Windows no funcionará en una Apple Macintosh o una
computadora UNIX. Sus sistemas operativos no son compatibles con el
programa. Usted tendrá que obtener la versión de MS Word escrita para su
sistema operativo particular.

Aclaración: no confunda Java con JavaScript que es un lenguaje para


scripts (libretos) - comúnmente usado en las páginas web.

El siguiente ejemplo dibuja un cuadrado en una página HTML (Hyper Text


Markup Language) y cuenta el número de veces que usted ha clickeado en el
box.

import java.applet.*;
import java.awt.*;
public class exfour extends Applet
{
int i;
public void init()
{
resize(300,300);
}
public void paint(Graphics g)
{
g.drawString("You clicked the mouse "+i+" Times",50,50);
}
public boolean mouseUp(Event e, int x, int y)
{
i++;
repaint();
return true;
}
}

13
Computación I Ing. Queca

INTRODUCCIÓN

A LOS

ALGORITMOS

14
Computación I Ing. Queca

Los Algoritmos
Los Algoritmos nos permiten desarrollar o diseñar la solución de un problema informático, y
se la puede definir de la siguiente manera:

Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y


formulados con base en un conjunto finito de reglas no ambiguas, que proveen un
procedimiento para dar la solución o indicar la falta de ésta a un problema en un tiempo
determinado.

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural,
pseudocódigo, diagramas de flujo y lenguajes de programación entre otros.

Pseudocodigo

Es la descripción de un algoritmo que asemeja a un lenguaje de programación pero


con algunas convenciones del lenguaje natural. Tiene varias ventajas con respecto a
los diagramas de flujo, entre las que se destaca el poco espacio que se requiere
para representar instrucciones complejas. El pseudocódigo no está regido por ningún
estándar.

Diagramas de Flujo.

INICIO

a , b, c

p = ( a + b + c) / 2

FIN

Diagrama de flujo que expresa un algoritmo para calcular el á rea de un rectá ngulo con datos base y altura ingresados por
teclado.

Los diagramas de flujo son descripciones grá ficas de algoritmos; usan símbolos
conectados con flechas para indicar la secuencia de instrucciones ISO(Organización

15
Computación I Ing. Queca

Internacional para la estandarización).

Algoritmos y su Historia
Los algoritmos es la base de todo proceso metódico, formal o informal, y los encontramos por
todas partes con múltiples nombres: receta, proceso, método, técnica, procedimiento,
fórmula, rutina, conjuro. Un diccionario común describirá como algoritmo al conjunto de
símbolos y procedimientos usados en la realización de un cálculo.

Descripciones similares se encuentran incluso en los diccionarios especializados. El


desarrollo de la informática y computación han hecho que el término adquiera
cierto nivel de cotidianidad, sin que eso implique la pérdida de la rigurosidad requerida
para dar a una serie de pasos el apelativo de algoritmo. Para muchos será una palabra más,
producto de nuestra era tecnológica, pero su origen se remonta muy atrás en el tiempo.

Uno de los más grandes matemáticos árabes del siglo IX de nuestra era, Abu
Abd Allah Muhhamad ibn Musa al-Khwarizmi (literalmente: Padre de Abdullah,
Mohamed, hijo de Moisés nativo de Khwarizm ,hoy Khiwa) con su obra Kitab al-jabr wa l-
muqabala (Reglas de Ecuaciones y Restauración), ayudó a difundir las matemáticas árabes por
el mundo occidental a tal grado que del título de su obra se ha desprendido el término
álgebra (al-jabr). Con el paso del tiempo y por defectos de pronunciación, su nombre se
difundió simplemente como Al-Juarismi y de éste los términos guarismo y algorismo
(usados para referirse a cualquier método de cómputo usando la notación arábiga de
numeración). El término algorismo también fue corrompido en su pronunciación hasta derivar
uno más difundido en latín como algoritmus, empleado desde el siglo XVII por los
matemáticos para referirse a procedimientos de cálculo. Finalmente, la palabra que
conocemos no apareció en un diccionario sino hasta la edición de 1957 del Webster´s New
World Dictionary .

Las matemáticas son, en cierto sentido, una colección de algoritmos. La aparición


de las computadoras, propiciada por la necesidad y propósito de realizar cálculos y
conteos, obligó a mucha gente a hablar de métodos y procedimientos para describir los
programas que para ellas se elaboraban; programas que eran en sí la representación de
un procedimiento matemático, de un algoritmo. La escritura de programas es entonces la
elaboración o implementación de algoritmos, aunque claro no podemos afirmar que hacer
matemáticas sea sólo hacer programas. Al final, programar bien es hacer matemáticas y, como
todo buen matemático, todo buen programador debe contar con un buen método (formal o
intuitivo) que le permita asegurarse de que sus programas son correctos. Aquí es
donde empieza a verse la importancia de la definición y concepción del término algoritmo.

Podemos ver que tanto las matemáticas como la computación se originan del acto de contar.
Sin embargo, las primeras se encargan de descubrir las verdades acerca de las estructuras
abstractas; la segunda, de estudiar el conjunto de acciones que obedecen a reglas formales
estructuradas en el tiempo. A este respecto los trabajos de Alan M. Turing y Emil
Post han sido decisivos y con profundas implicaciones en ambas disciplinas, mucho más
allá del propósito del presente artículo para proceder a describirlas. Deberemos
conformarnos por el momento únicamente con saber que sus modelos (la Máquina de
Turing y la Máquina de Post) son las formalizaciones aceptadas de lo que debe
considerarse como un procedimiento efectivo, el cual devuelve una respuesta o indica la
falta de ésta a un problema.

El definir a un algoritmo como una serie de pasos ordenados no nos dice más de lo que ya
hemos hablado. No nos dice si debe o no haber una respuesta como resultado de su aplicación.
No nos dice tampoco cuánto tiempo debe tomar llegar al resultado. Los modelos de Turing y
Post contemplan estas dos últimas consideraciones: la declaración de contar o no
con una respuesta y la implicación del tiempo invertido en el proceso, que es
proporcional a las operaciones (pasos) a realizar con éste.

Un último punto igual de importante es apreciar que tanto el modelo de Post como el de
Turing parten de un conjunto de reglas muy precisas del cual se construye el procedimiento a
seguir. Así, y con base en la definición de estos modelos, ofrecemos la siguiente
definición de lo que es un algoritmo:

Un algoritmo es un conjunto finito de pasos definidos, estructurados en el tiempo y


formulados con base en un conjunto finito de reglas no ambiguas, que proveen un
procedimiento para dar la solución o indicar la falta de ésta a un problema en un tiempo
determinado

El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse


con el concepto de programa. Mientras el primero es la especificación de un conjunto de

16
Computación I Ing. Queca
pasos (operaciones, instrucciones, órdenes,...) orientados a la resolución de un problema,
el segundo es ese conjunto de operaciones especificadas en un determinado lenguaje
de programación y para un computador concreto, susceptible de ser ejecutado (o compilado
o interpretado). Un algoritmo, estrictamente hablando, no puede ejecutarse hasta
que se implementa, ya sea en un lenguaje de programación

Los diagramas de flujo son usados para representar algoritmos pequeños, ya que
abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son
usados como introducción a los algoritmos, descripción de un lenguaje y
descripción de procesos a personas ajenas a la computación.

Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo

• Ocupa menos espacio en una hoja de papel


• Permite representar en forma fácil operaciones repetitivas complejas
• Es muy fácil pasar de Pseudocódigo a un programa en algún lenguaje de programación.

Si se siguen las reglas se puede observar claramente los niveles que tiene cada
operación.

Ejemplo:

Variables
Definición

Variable, Es un espacio de memoria reservado en el computador para contener valores que


pueden cambiar durante la ejecución de un programa. Los tipos determinan cómo se manipulará
la información contenida en esas variables. Además, la información en el interior de la
memoria del computador es binaria.

Estas variables, pueden ser caracteres, nombres, ó combinaciones que permiten temporalmente
guardar información para su manipulación posteriormente;

variables { a,b,c,d,..,z, a1,a2,b1,b,..,aa,ab,..,az,ba,bb,.., Jose,Giovana,.., Antonio,


Luis}

Valores Ingresados por Teclado:

El valor de 3
ingresado por teclado Los tipos de datos que pueden
a será almacenado
guardarse son:
temporalmente, el
cual representamos
a
como una caja que Enteros: -45,1,2,..,456,
tiene Nombre y un 3 Punto Flotante (Reales):
Espacio para guardar
3 -45.34,1.2,2.5,..,456.234,
3.14159..
Ca ra cteres:
3 Ingresado por teclado a, b, c, d,..,z, 3 ,..
Cadenas:
Jose , antonio , etc.

17
Computación I Ing. Queca

Valores Asignados en el programa:

El asignar un valor a una variable se podrí a decir de la siguiente forma:

o a=3, que quiere decir a guarda(toma) el valor de 3


o b=10, que quiere decir b guarda(toma) el valor de 10
o z=b, que quiere decir que z guarda(toma) el valor de b (z guarda el
valor de 10)
o s=a+b, que quiere decir s guarda(toma) el valor de 13 que es la suma
de las variables a y b (a=3 y b=10)

b s
8 3 11

a=8 b=3 S =11

SENTENCIAS DE CONTROL

ESTRUCTURAS ALGORÍTMICAS

Las estructuras de operación de programas son un grupo de formas de trabajo, que


permiten, mediante la manipulación de variables, realizar ciertos procesos
específicos que nos lleven a la solución de problemas

ESTRUCTURA SECUENCIALES

Estructura de un Algoritmo

1 à Inicio Para realizar un algoritmo es


necesario comenzar con INICIO

2 à ………………….. numero 1, luego enumerando de uno


en uno y al terminar el algoritmo

3 à ……………………… colocar FIN, el ultimo numero.

.. à …………………… Los demá s números 2,..,n-1 (penúltimo


num.), son procesos(que realizan
una tarea).

.. à ………………

n à Fin
18
Computación I Ing. Queca

Nota: Aunque no es necesario, numerar los pasos a seguir en esta estructura, lo


realizaremos con el único propósito de entender el diseño de algoritmos.

La computadora carece de razonamiento, realizara las tareas que el programador


instruye que haga, ella la hace, de acuerdo a nuestro raciocinio

Por tanto:

Pensemos que datos necesita para realizar una tarea y


donde las guardara, para que luego nos muestre el
resultado en pantalla..

PASOS PARA REALIZAR EL DISE ÑO DE ALGORITMOS.-

Dividiremos en tres pasos el diseño de algoritmos.

Para:

L ECTURA

Para que la computadora peda los datos mediante teclado:

Que la computadora me pida un valor en la variable a


Que la computadora me pida un valor en la variable b

P ROCESOS O CALCULOS

Para que la computadora realice procesos, con los datos ingresados:

Que la computadora sume s=a+b


Que la computadora reste s=a-b
Que la computadora multiplique s=a*b
Que la computadora multiplique s=a*3
Que la computadora asigne s=3
ó Que la computadora calcule s=a*b

E SCRITURA

Para que la computadora muestre los resultados obtenidos en pantalla:

Que la computadora me muestre s


Que la computadora imprima Área
Que la computadora me muestre en pantalla la variable s
19
Computación I Ing. Queca

Ejemplo 91: Algoritmo:

Realizar la suma de 2 números

Análisis:
Para sumar dos números es necesario contar con tres variables a, b, s:

• La primera variable a para guardar temporalmente el primer valor ingresado por


teclado y la variable b para guardar el segundo valor ingresado por teclado
• La variable s para guardar la suma de las dos variables que realizara la
computadora. s=a+b a=3, b=5, s=a+b ósea s=3+5 s=8

Formula: 1 à Inicio
S=a+b
2 à Que la comp. me pida el 1er valor en a
Datos Ingresados por teclado;
a, b 3 à Que la comp. me pida el 1er valor en b
Proceso a realizar:
S=a +b 4 à Que la comp. Calcule s=a+b
Variable a Imprimir:
5 à Que la comp. me muestre la var s
S
6 à Fin

Nota: Para resolver un problema computacional ó realizar un programa, necesariamente se debe


saber como resolver el problema, para poder generalizar y la computadora pueda hacer las
tareas que a nosotros nos tomara mucho tiempo resolverlos.

Ejemplo 92: Algoritmo:

Realizar un algoritmo para que encuentre el área de un cuadrado, dado el lado del cuadrado,
ingresado por teclado:

Análisis: Sabemos que un cuadrado tiene los lados iguales y que para obtener el á rea se
tiene la formula:
Area=base*altura ó A=L*L

Formula:
A = L*L 1 à Inicio

Datos Ingresados por teclado; 2 à Que la comp. me pida el lado del cuadrado L

L
Proceso a realizar: 3 à Que la comp. Calcule A=L*L

A = L*L
Variable a Imprimir: 4 à Que la comp. Me muestre(Imprima) A

A
5 à Fin

20
Computación I Ing. Queca

Ejemplo 93: Algoritmo:

Realizar un algoritmo para que encuentre el área de un circulo, dado el radio


de la circunferencia ingresado por teclado

Análisis:

Sabemos que para obtener el á rea de un circulo tenemos la formula


2
Area= * r

o también A=3.1416*r*r donde r es el radio del circulo

Formula:
A = 3.1416*r*r 1 à Inicio

Datos Ingresados por teclado; à Que la comp. pida el radio r


2
r
Proceso a realizar: à Que la comp. Calcule A=3.1416*r*r
3
A = 3.1416*r*r
Variable a Imprimir: à Que la comp. Me muestre(Imprima) A
4
A
5 à Fin

Ejemplo 94: Algoritmo:

Realizar un algoritmo para que encuentre el área de un triangulo rectángulo, dado los
lados de dicho triangulo ingresado por teclado:

Aná lisis:

Sabemos que para obtener el á rea de un triangulo rectángulo tenemos la formula

Area=

Formula:
A = (b*h)/2 1 à Inicio

Datos Ingresados por teclado; 2 à Que la comp. pida los lados a y b

b, h
Proceso a realizar: 3 à Que la comp. Calcule A=(a*b)/2

A = (b*h)/2
Variable a Imprimir: 4 à Que la comp. Me muestre(Imprima) A

A
5 à Fin

21
Computación I Ing. Queca

Ejemplo 95: Algoritmo:

Realizar un algoritmo para que convierta grados Fahrenheit a Celsius, dado los
grados
F(Fahrenheit) ingresado por teclado:

Sabemos que para convertir usamos la siguiente ecuación ó formula

Pseudocódigo:

1 à Inicio

Inicio
2 à Que la comp. pida la temperatura en Fahrenheit F
Leer F

3 à Que la comp. Calcule C=(5/9)*(F-32) C = C=(5/9)*(F-32)

4 à Que la comp. me muestre(Imprima) C Escribir C

Fin
5 à Fin

Ejemplo 96: Algoritmo:

Realizar un algoritmo para que encuentre el área de un triangulo, dado los lados
del triangulo ingresado por teclado:

Algoritmo:

Formula: 1 à Inicio

P = (a+b+c)/2 à Que la comp. me pida los lados a,b,c


2
Datos Ingresados por teclado;
a, b, c 3 à Que la comp. Calcule p=(a+b+c)/2

Proceso a realizar:
P = (a+b+c)/2 4 à Que la comp. Calcule área = sqrt (p*(p-a)*(p-b)*(p-c))

área = sqrt (p*(p-a)*(p-b)*(p-c))


Variable a Imprimir: 5 à Que la comp. me muestre(Imprima) área

P, área
6 à Fin

Pseudocódigo: sin Numeración

Inicio
Leer a , b , c

Area = sqrt(p*(p-a)*(p-b)*(p-c))

Escribir C
Fin

22
Computación I Ing. Queca

Ejemplo 97: Algoritmo:

Sabemos que para obtener las raices X, Y; por los métodos de igualación,
sustitución, eliminación determinantes, etc.,la ecuación:

aX + bY = c
dX + eY= f

Formula: 1 à Inicio

X=(c*e-b*f)/(a*e-b*d)
Y=(a*f-c*d)/(a*e-b*d)
2 à Que la comp. me pida a, b, c, d, e, f
Datos Ingresados por teclado;
a, b, c,d,e,f 3 à Que la comp. Calcule X=(c*e-b*f)/(a*e-b*d)
Proceso a realizar:
X=(c*e-b*f)/(a*e-b*d) 4 à Que la comp. Calcule Y=(a*f-c*d)/(a*e-b*d)
Y=(a*f-c*d)/(a*e-b*d)
Variable a Imprimir: 5 à Que la comp. me muestre(Imprima) X,Y

X, Y
6 à Fin

Inicio
Leer a, b, c, d, e, f

X=(c*e-b*f)/(a*e-b*d)

Y=(a*f-c*d)/(a*e-b*d)

Escribir X,Y
Fin
Ejemplo 98: Algoritmo:

Realizar un algoritmo para que convierta Horas en Segundos, dado una H(hora) ingresado
por teclado:

Análisis:
Sabemos que para convertir Horas a
Segundos, usamos el método de la regla
de tres para obtener la formula:

S=H*3600 seg

Pseudocódigo:

Inicio
Leer H

S=H*3600

Escribir S
Fin

23
Computación I Ing. Queca

Ejemplo 99: Algoritmo:

Realizar un algoritmo para que dado las Horas Minutos y segundos convierta todo
en segundos, H, M, S, ingresados por teclado:

Aná lisis:

Sabemos que para convertir Horas, Minutos


a Segundos:
Segundos=H*3600 +M*60+S

Inicio
Leer H, M, S

Segundos=H*3600 + M*60 + S

Escribir Segundos
Fin

Ejemplo 100: Algoritmo:

Realizar un algoritmo para que convierta Kilogramos a Libras, dado L(libras) ingresado por
teclado:

Análisis:
para convertir kilogramos a libras, es
P = 2.2 * K
donde P son las libras y K los kilogramos

Inicio
Leer K

L=2,2*K

Escribir L
Fin

Ejemplo 101: Algoritmo:

Determinar la hipotenusa de un triángulo rectángulo conocidas las longitudes de sus dos


catetos. Desarrolle los correspondientes algoritmos.

CatA : Cateto del triangulo


CatB : Cateto del triangulo
Hip : Hipotenusa del triangulo

Inicio
Leer CatA, CatB

Hip = CatA 2 + CatB 2

Imprime Hip
Fin

24
Computación I Ing. Queca

Ejemplo 102: Algoritmo:

Desarrolle un algoritmo que le permita determinar el área y volumen de un cilindro


cuyo radio (R) y altura (H) se leen desde teclado.

Formula para obtener el Volumen es Vol=pi*radio*radio*altura


Area=2*pi*radio*altura

Inicio
Leer R, H

VOL= 3,1416*R²H

AREA= 2*3,1416*R*H

Escribir AREA, VOL


Fin

25
Computación I Ing. Queca

Diagramas de Flujo
Los diagramas de flujo son descripciones graficas de algoritmos, los cuales iniciamos
mostrando los mas comunes:

TERMINAL INICIO / FIN INICIO / FIN

LECTURA Que la comp. pida a, b, c


a, b, c

PROCESO PROCESO Que la comp. Resuelva,


calcule

Que la comp. Imprima en


IMPRESION Pantalla

DECISION DECISION Si, Mientras , Hacer


Mientras

SUBPROGRAMA SUBPROGRAMAS --

SEGÚN SEA
DECISION MULTIPLE -----

CONECTORES ---

26
Computación I Ing. Queca

Estructuras de Secuenciales con Diagramas de Flujo


Hasta ahora solo hemos visto e iremos viendo, las estructuras secuenciales, lo que nos
proporciona diagramas lineales, es decir, comienzan por la primera instrucción y acababan
por la última, ejecutándose todas una sola vez

Ejemplo de esta estructura:

INICIO

5
C= F − 32 Ejecutándose todas una sola vez
9

FIN

Esta forma de programación sólo me permite resolver problemas sencillos.

Ejemplo 103: Algoritmo:

Realizar un algoritmo para sumar 2 números

: Diagrama de Flujo:

INICIO
1 à Inicio

2 à Que la comp. me pida el 1er valor en a


a, b
3 à Que la comp. me pida el 1er valor en b

s = a+b
4 à Que la comp. Calcule s=a+b

5 à Que la comp. me muestre la var s s

6 à Fin

FIN

27
Computación I Ing. Queca

Ejemplo 104: Algoritmo:

Realizar un algoritmo para que encuentre el área de un circulo, dado el radio


de la circunferencia ingresado por teclado

Pseudocódigo: Diagrama de Flujo:

INICIO
Inicio
Leer r

A = 3,1416 * r * r r

Escribir A
Fin
A = 3.1416 * r * r

FIN

Ejemplo 105: Algoritmo:

Realizar un algoritmo para que encuentre el área de un triangulo rectángulo, dado los
lados de dicho triangulo ingresado por teclado:

Pseudocódigo: Diagrama de Flujo:

Inicio INICIO
Leer a, b

A=(a*b)/2
a, b
Imprimir A
Fin
a *b
A=
2

FIN

28
Computación I Ing. Queca

Ejemplo 106: Algoritmo:

Realizar un algoritmo para que convierta grados Fahrenheit a Celsius, dado los
grados F(Fahrenheit) ingresado por teclado:

Pseudocódigo: Diagrama de Flujo: INICIO

Inicio
Leer F
F
C=(5/9)*(F – 32)

Imprimir C
5
Fin C= F − 32
9

FIN

Ejemplo 107: Algoritmo:

Realizar un algoritmo para que encuentre el área de un triangulo, dado los lados
del triangulo ingresado por teclado:

Pseudocódigo: Diagrama de Flujo: INICIO

Inicio
Leer a, b, c a, b, c

p = (a+b+c)/2

area = p * ( p − a )( p − b )( p − c ) p=
1
(a + b + c)
2
Imprimir área
Fin

area = p * ( p − a )( p − b)( p − c)

área

FIN

29
Computación I Ing. Queca

Ejemplo 108: Algoritmo:

Sabemos que para obtener las raíces X, Y; por los métodos de igualación,
sustitución, eliminación determinantes, etc., la ecuación:

Pseudocódigo: Diagrama de Flujo:

INICIO
aX + bY = c
dX + eY= f

Inicio a, b, c, d, e, f
Leer a, b, c, d, e, f

X = (c*e – b*f)/(a*e – b*d)


c*e −b* f
Y = (a*f – c*d)/(a*e – b*d) X =
a*e −b*d
Imprimir X, Y
Fin
a* f − c*d
Y =
a*e − b*d

X, Y

FIN

Ejemplo 109: Algoritmo:

Realizar un algoritmo para que convierta Horas en Segundos, dado una H(hora)
ingresado por teclado

Pseudocódigo: Diagrama de Flujo:

INICIO

Inicio
Leer H H
S = H*3600

Imprimir S
Fin S = H * 3600

FIN

30
Computación I Ing. Queca

Ejemplo 110: Algoritmo:

Realizar un algoritmo para que dado las Horas Minutos y segundos convierta todo
en segundos, H, M, S, ingresados por teclado:

Pseudocódigo: Diagrama de Flujo:

INICIO

Inicio
H, M, S
Leer H, M, S

Segundos = H*3600 + M*60 + S

Imprimir Segundos Segundos = H * 3600 + M * 60 + S


Fin

Segundos

FIN

Ejemplo 111: Algoritmo:

Realizar un algoritmo para que convierta Kilogramos a Libras, dado L(libras) ingresado por
teclado:

Pseudocódigo: Diagrama de Flujo:

INICIO

Inicio
Leer K K

L = 2,2*K)

Imprimir L L = 2.2 * K
Fin

FIN

31
Computación I Ing. Queca

Estructuras Condicionales.
Para resolver problemas más complejos, nos puede interesar que dependiendo de los valores de
los datos, se ejecuten unas instrucciones u otras. Las instrucciones condicionales nos van a
permitir representar éste tipo de comportamiento

Sentencia IF:

Si se cumple la condición, entonces se ejecuta la instrucción ó el bloque de


instrucciones; en caso contrario, no se ejecutan.

No cumple Si cumple
Condición

Sentencias Sentencias

Diagrama Sintáctico:

32
Computación I Ing. Queca

Ejemplo 112: Algoritmo:

Realizar un algoritmo Dado la edad de cualquier persona, imprima si es mayor de edad o no.

Inicio INICIO
Leer Edad
Si (Edad < 18) entonces
Escriba (Es Menor)
Edad
Si no
Escriba (Es Mayor)
Fin si
Fin
No Si
Edad < 18

Mayor Menor

FIN
Ejemplo 113: Algoritmo:

Realizar un algoritmo Dado la Nota de cualquier Alumno, esta imprima si Aprobó o no.

INICIO

Inicio
Leer Nota
Nota
Si (Nota < 51) entonces
Escriba (Reprobó)
Si no
Escriba (Aprobó)
Fin si No Nota < 51
Si
Fin

Aprobó Reprobó

FIN
Ejemplo 114: Algoritmo:

Desarrolle un algoritmo que le permita leer un valor cualquiera N y escribir si dicho


número es par o impar.

INICIO
Inicio
Leer N
Si (Residuo(N/2) = 0) entonces
Escriba (N es par)
Si no N
Escriba (N es impar)
Fin si
Fin
No Si
Res(N/2)=0

N, es impar N, es par

FIN

33
Computación I Ing. Queca

Ejemplo 115: Algoritmo:

Desarrolle un algoritmo que le permita leer un valor cualquiera N y escribir en la pantalla


si dicho número es Positivo o Negativo

INICIO
Inicio
Leer N
Si (N>=0) entonces
Escriba("Es positivo") N
Sino
Escriba("Es negativo")
Fin si
Fin No N >= 0
Si

N, es Positivo Negativo

Ejemplo 116: Algoritmo: FIN

Desarrolle un algoritmo que le permita leer un valor cualquiera N y escribir si dicho


número es múltiplo de Z.
INICIO

Inicio
Leer N, Z
Si (N residuo Z=0) entonces N, Z
Escriba (N es múltiplo de Z)
Sino
Escriba(N no es múltiplo de Z)
Fin si No Si
Fin Res(N/Z)=0

N Múltiplo Z no es múltiplo

Ejemplo 117: Algoritmo: FIN

Desarrolle un algoritmo que le permita leer un valor


cualquiera N y escribir si dicho número es común divisor de INICIO
otros dos valores leídos W y Z

Inicio W, Z, N
Leer W, Z, N
If (Residuo(W/N)=0 y Residuo(Z/N)=0) entonces
Escriba (N es común divisor de W y Z)
Sino
Escriba(N no es común divisor de W y Z) No Res(W/N)= 0 y Si
Fin si Res(Z/N)= 0
Fin
N no es divisor de N es divisor de W
WyZ yZ

FIN

34
Computación I Ing. Queca

Ejemplo 118: Algoritmo:

Desarrolle un algoritmo que le permita leer un valor


INICIO
cualquiera N y escribir si dicho número es común múltiplo
de M y P. M y P también se deben leer desde el teclado.

Inicio N, M, P
Leer N, M, P
Si (Residuo(N/M) = 0 y Residuo(N/P) =0) entonces
Escriba(N es común múltiplo de M y P)
Si no
Escriba(N no es común múltiplo de M y P) No Res(N/M)= 0 y Si
Fin si Res(N/P)= 0
Fin
N no es CM de M N es CM de M y P
yP

Ejemplo 119: Algoritmo: FIN

Desarrolle un algoritmo que le permita leer dos valores


(A y B) y que escriba cual de los dos valores leídos es el
mayor. INICIO

Inicio
Leer A, B A, B
Si (A>B) entonces
Escriba(A es el mayor)
Sino
Escriba(B es el mayor)
Fin Si No Si
A>B
Fin

B es mayor A es mayor

Ejemplo 120: Algoritmo:

Desarrolle un algoritmo que le permita leer tres valores y FIN


almacenarlos en las variables A, B, C respectivamente. El
algoritmo debe indicar cual es el mayor. Para este caso se
asume que los tres valores leídos por el teclado son valores
distintos/ INICIO

Inicio
Leer A, B, C A, B, C
Si A>B y A>C entonces
Escribir(A es el mayor)
Sino
Si B>A y B>C entonces
Escribir (B es el mayor) No Si
A>B y A>C
Sino
Escribir (C es el mayor)
Fin Si
Fin Si No Si A es el mayor
B>A y B>C
Fin

C, es el Mayor B, es el Mayor

FIN

35
Computación I Ing. Queca

Ejemplo 121: Algoritmo:

Desarrolle un algoritmo que le permita leer tres valores


A,B,C e indicar si uno de los tres divide a los otros dos
exactamente.
INICIO
Inicio
Leer A, B, C
Si Residuo(B/A)=0 y Residuo(C/A)=0 entonces
Escribir(A divide exactamente a B y C) A, B, C
Sino
Si A%B=0 y C%B=0 entonces
Escribir (B divide exactamente a A y C)
Sino
Si A%C=0 y B%C= 0 entonces No Res(B/A) =0 y
Si
Escribir (C divide exactamente a B y A) Res(C/A) =0
Sino
Escribir (No hay división exacta) A div a B y C
Fin Si No A%B=0 y
Si
Fin Si C%B=0
Fin Si
Fin B, div A y C
No A%C=0 y
Si
B%C=0

No hay div C, div B y A

Ejemplo 122: Algoritmo:


FIN
Realizar un algoritmo que determine el mayor de 3 números

INICIO

a, b, c

No Si
a>b
No Si No Si
b>c a>c

Mayor=b Mayor=c Mayor=a

Mayor

FIN

36
Computación I Ing. Queca

Ejemplo 123: Algoritmo:


INICIO
Realizar un algoritmo para determinar si un número
ingresado por teclado es Par o Impar.
Num
Ej: Num =10

10 2 No Si
Residuo (Num/2) = 0
0 5

Ej: Num =15 Aprobó Reprobó

15 2
1 7
FIN

Ejemplo 124: Algoritmo:


INICIO
Realizar un algoritmo que dados dos números,
muestre si uno de ellos es múltiplo del otro.
Supón que se da primero el número mayor.
Indicación: uno será múltiplo del otro si el resto
N, M
de la división de un por otro es cero

Ej: N =10 y M = 5 No Si
Residuo (N/M) = 0
10 5
0 2 No es Multipl Es Múltiplo

Ej: N =14 y M = 7

14 7
0 2 FIN

INICIO
Ejemplo 125: Algoritmo:

Realizar un algoritmo que resuelva la ecuación de


segundo grado: a, b, c

Análisis:
D = b *b 4*a*c D= discriminante
D=b*b-4*a*c
Si D < 0

La raíz seria negativa OJO no se pueden obtener raíces negativas


No Si
− b ± b 2 − 4ac D<0
x1, 2 =
2a
Separamos la formula: X1=( D=D*( 1)
b+Raiz(D))/(2*a) X= b/(2*a)
−b b − 4ac 2
I=sqrt(D)/(2*a)
x1, 2 = ±
2a 2a
X1, X2
X = b /(2*a) parte real
X, I
D = D*( 1) lo volvemos positivo
I = Raiz(D)/(2*a)

Si D >= 0 Aplicamos la formula directamente


FIN
37
Computación I Ing. Queca

Estructuras Condicionales De Decisión Múltiple


Permiten comparar una variable con distintos valores posibles, ejecutando para cada caso
una serie de instrucciones específicas.

Sentencia SEGÚN SEA la opción:

Opción

Ejemplo 126: Algoritmo:

Realizar un algoritmo que dado un número entre 1 y 7 imprime el día.

INICIO

1 = Lunes
2 = Martes
3 = Miércoles día
4 = Jueves
5 = Viernes
6 = Sábado
7 = Domingo

Según sea el
día

1 2 3 4 5 6 7

Lunes Martes Miércoles Jueves Viernes Sábado Domingo

FIN

38
Computación I Ing. Queca

Ejemplo 127: Algoritmo:

Realizar un algoritmo que dado un número entre 1 y 12 imprima a que estación del año
pertenece.

12
1 Verano INICIO
2
3
4 Otoño
5
6 Mes
7 Invierno
8
9
10 Primavera
11

Según sea el
Mes

12, 1, 2 3, 4, 5 6, 7, 8 9, 10, 11 Defecto

Verano Otoño Invierno Primavera No es Mes

FIN

39
Computación I Ing. Queca

Estructuras Cíclicas (Repetitivas).


Las instrucciones Repetitivas (iterativas) son instrucciones que permiten ejecutar repetidas
veces una instrucción o un bloque de instrucciones mientras se cumpla una condición. Es
decir, permiten definir bucles donde ciertas instrucciones se ejecuten varias veces.

Ejemplo:

Si deseáramos ingresar notas de n alumnos (n puede ser: 1, 3, 6, 20, 51, 80, 200 ósea
cualquier valor), ¿podría uno definir todas las variables para esas cantidades?. Por cierto
eso podría ser posible, pero ¿seria apropiado hacerlo?, Es por esta y varias razones que
nacieron las sentencias repetitivas.

Ahora, presentamos las más usuales en los lenguajes de programación:

Desde ó Para (FOR) Mientras (WHILE) Hacer Mientras (DO-WHILE)


Desde I=<Inicio de Bucle> Has ta <Fin de Bucle> Mientras (Condición) Hace) Hacer Mientras (Condición)

Sentencias
Sentencias
Sentencias

Sentencia Desde ó Para (FOR):

Sintaxis:
Para <variable> = <Inicio de Bucle> à <Fin de Bucle>
Sentencias

40
Computación I Ing. Queca

Ejemplo 127: Algoritmo:

Realizar un algoritmo Que use una sentencia repetitiva para imprimir números desde 1 hasta
n, n ingresado por teclado.

INICIO
1 2 3 4 5 ..
se incrementara en uno cada vez que retorne

I=1à n

I I se incrementara desde 1 hasta n


n será introducido por teclado

FIN

Ejemplo 128: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para imprimir números desde 1 hasta
n, los números pares empezando del 2, n será ingresado por teclado.

INICIO
se incrementara en uno cada vez que retorne

n
2 4 6 8 10

I=1à n

I se incrementara desde 1 hasta n


n será introducido por teclado
2*I

FIN

41
Computación I Ing. Queca

Ejemplo 129: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para imprimir números desde 1 hasta n,
los números impares empezando del 1, n será ingresado por teclado.

INICIO
se incrementara en uno cada vez que retorne

n 1 3 5 7 9

I=1à n

I se incrementara desde 1 hasta n


2*I - 1
n será introducido por teclado

FIN

Ejemplo 130: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para imprimir números desde 1 hasta n,
los números pares empezando del 2, n será ingresado por teclado.
INICIO
se incrementara en uno cada vez que retorne

2 6 10 14 18
A=2

I=1à n
I se incrementara desde 1 hasta n
n será introducido por teclado
A

A=A+4

FIN

42
Computación I Ing. Queca

Ejemplo 131: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para imprimir números desde 1 hasta n,
los números impares empezando del 1, n será ingresado por teclado.

INICIO
se incrementara en uno cada vez que retorne

n 1 3 5 7 9

I=1à n

I se incrementara desde 1 hasta n


2*I - 1
n será introducido por teclado

FIN

Sentencia Mientras:

Sentencias

Sintaxis:
Mientras <Condicion>
<Sentencias>

Fin Mientras

43
Computación I Ing. Queca

Ejemplo 132: Algoritmo:

Realizar un algoritmo Que use una sentencia repetitiva para imprimir números desde 1 hasta n,
n será ingresado por teclado.
INICIO

1 2 3 4 5 ..
n

I=0

No
I<=n

Si FIN
I=I+1

Ejemplo 133: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para imprimir números desde 1 hasta n,
los números pares empezando del 2, n será ingresado por teclado.

INICIO

n 2 4 6 8 10

I=0

No
I<=n

Si FIN
I=I+1

2*I

44
Computación I Ing. Queca

Ejemplo 134: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para imprimir números desde 1 hasta n,
los números impares empezando del 1, n será ingresado por teclado.

INICIO

n 1 3 5 7 9

I=0

No
I<=n

Si FIN
I=I+1

2*I - 1

Sentencia Hacer Mientras:

Sentencias

Sintaxis:
Hacer
<Sentencias>

Mientras <Condicion>

45
Computación I Ing. Queca

Ejemplo 135: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para imprimir números desde 1 hasta n, n
ingresada por teclado
INICIO

1 2 3 4 5 ..
n

I=0

I=I+1

Si No
I<=n

Ejemplo 136: Algoritmo: FIN

Realizar un algoritmo que use una sentencia repetitiva para imprimir números desde 1 hasta n,
los números pares empezando del 2, n será ingresada por teclado.

INICIO

n 2 4 6 8 10

I=0

I=I+1

2*I

Si No
I<=n

FIN
46
Computación I Ing. Queca

Ejemplo 137: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para imprimir números desde 1 hasta n,
los números impares empezando del 1, n será ingresada por teclado.

INICIO 1 3 5 7 9

I=0

I=I+1

2*I-1

Si No
I<=n

FIN

47
Computación I Ing. Queca

Las Sentencias Repetitivas

Ejemplo 138: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para imprimir números desde 1 hasta n,
los números impares empezando del 1, n será ingresada por teclado.

INICIO INICIO INICIO


1 3 5 7 9

n n n

I=1à n I=0 I=0

2*I - 1 No
I<=n
I=I+1
Si FIN
I
I=I+1
2*I-1

FIN
2*I - 1
Si No
I<=n

FIN

48
Computación I Ing. Queca

Ejemplos Varios
Ejemplo 139: Algoritmo:

Se quiere saber de n alumnos de un curso, cuantos aprobaron, por tanto realice un diagrama de
Flujo para que imprima en pantalla quien aprobó y quien reprobó, n será ingresada por teclado.

INICIO

Ap=0; Rep=0

I=1à n

Nota

Nota > 51

Rep=Rep + 1 Ap=Ap+1

Reprobó Aprobó

Rep, Ap

FIN

49
Computación I Ing. Queca

Ejemplo 140: Algoritmo:

Imprimir en pantalla el siguiente ejemplo, n será ingresada por teclado.

* / * / * / * /* / * /* / * /* / * /

para N términos

INICIO

I=1à N

Residuo(I/2)=1
Nota > 51
/ *

FIN

50
Computación I Ing. Queca

Ejemplo 141: Algoritmo:

Imprimir en pantalla el siguiente ejemplo, N será ingresada por teclado.

* * * * * para N = 5
* * * * *
* * * * *
* * * * *
* * * * *

INICIO

I=1à N

J=1à N

Salto d Línea

FIN

51
Computación I Ing. Queca

Ejemplo 142: Algoritmo:

Imprimir en pantalla el siguiente ejemplo, N será ingresada por teclado.

* * * * * para N = 5
* * * *
* * *
* *
*

INICIO

I=Nà 1

J=1à I

Salto d Línea

FIN

52
Computación I Ing. Queca

Ejemplo 143: Algoritmo:

Imprimir en pantalla el siguiente ejemplo, N será ingresada por teclado.

* para N = 5
* *
* * *
* * * *
* * * * *

INICIO

I = 1à N

J = 1à I

Salto d Línea

FIN

53
Computación I Ing. Queca

Ejemplo 144: Algoritmo:

Imprimir en pantalla el siguiente ejemplo, N será ingresada por teclado.

* * * * * para N = 5
* * * *
* * *
* *
*

INICIO

I=1à N

J=1à N

J>=I

Espacio *

Salto d Línea

FIN

54
Computación I Ing. Queca

Ejemplo 145: Algoritmo:

Imprimir en pantalla el siguiente ejemplo, N será ingresada por teclado.

* * * * * para N = 5
* *
* *
* *
* * * * *

INICIO

I=1à N

J=1à N

J=1 o J=N

Espacio *

Salto d Línea

FIN

55
Computación I Ing. Queca

Ejemplo 146: Algoritmo:

Realizar un Diagrama de Flujo que rote los dígitos de un número, el valor de N será ingresado
por teclado.

Ejemplo:

Dato Original Primer Giro Segundo Giro Tercer Giro


N=1234 N=4123 N=3412 N=2341

INICIO

I=Longitud(N)
Ceros=10 E(I-1)

A = Residuo(N/10)
N = N/10
N = Ceros*A + N

swC

Si No
swC=no

FIN

56
Computación I Ing. Queca

Ejemplo 147: Algoritmo:

Realizar un Diagrama de Flujo que cuente los dígitos de un numero N, el valor de N será
ingresado por teclado.

Ejemplo:

N = 456 N = 123234
3 dígitos 6 dígitos

INICIO

Cont=0

A = Residuo(N/10)
N = N/10
Cont = Cont +1

Si No
N<>0

Cont

FIN

57
Computación I Ing. Queca

INICIO

3 7 11 15
A=3

I=1à n

A=A+4

FIN

INICIO

A=1

I=1à n

A/2*A

A=A+1

FIN

58
Computación I Ing. Queca

Ejemplo 144: Algoritmo:


INICIO
Imprimir en pantalla el siguiente ejemplo, N será ingresada por teclado

A=1
B=1

I=1à n

A/2*I

C=A+B
A=B
B=C

I
Ejemplo 144: Algoritmo:
FIN
Imprimir en pantalla el siguiente ejemplo, N será ingresada por teclado.
1-1 1-1 1 N=5 INICIO
2–2 2-2
3-3 3
4-4 N
5

I=Nà1

J=1à I

J mod 2 = 0

J -J

Salto d Línea

FIN

59
Computación I Ing. Queca

Arreglos
A diferencia de las variables los arreglos tienen un nombre que manejan varias casillas, designadas
por índices(direcciones de las casillas de un arreglo), que se inician en 0 (cero), y terminan en n,
dependiendo de la cantidad de casillas que se tenga.

Existen arreglos unidimensionales, bidimensionales, tridimensionales, etc.

Arreglos Unidimensionales (de una sola dimensión)

a Para hacer uso de una de las casillas de este


Arreglo o Vector se procede de la siguiente
forma:

Capturamos un valor de a[1]


Tercera Casilla - Índice 2
Para ingresar valores a estas casillas se procede
Cuarta Casilla - Índice 3 de la siguiente forma:

Quinta Casilla - Índice 4 a[1] = 5

Sexta Casilla - Índice 5 a[2] = 3

Ingresamos valores a algunas de las casillas de este arreglo:

a[1] = 5 5
a[2] = 3 3

a[4] = 1
1

60
Computación I Ing. Queca

Arreglos Bidimensionales (de dos dimensiones)

Para hacer uso de una de las


a casillas de este Arreglo o
Matriz se procede de la
Casillas de la Fila 0 siguiente forma:

Casillas de la Fila 1
Arreglo [fila][Columna]
Casillas de la Fila 2

Casillas de la Fila 3 Capturamos un


valor de a[1][2]
Casillas de la Fila 4

Casillas de la Fila 5 Para ingresar valores a estas


casillas se procede de la
siguiente forma:

a[1][2] = 5
Columna 0

Columna 1

Columna 2

Columna 3

a[2][3] = 3

Ingresamos valores a algunas de las casillas de este arreglo:

a[1][3] = 5
5
a[2][2] = 3
3
a[3][2] = 1 1

a[5][0] = 9
9

61
Computación I Ing. Queca

Ejemplo 148: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para ingresar valores en un arreglo de n
casillas números desde 1 hasta n, n será ingresado por teclado.

1 2 3 4 5 6 . ..

a
a[0] =1 1
a[1] =2 2
a[2] =3 3
a[3] =4 4
a[4] =5 5
a[5] =6 6
Como se nota: los índices van de 0 hasta 5, los valores son desde 1 hasta 6; en este ejemplo se tiene 6 casillas por lo
que se obtendría:

INICIO

I=0 à n-1

a[ I ] = I+1

FIN

62
Computación I Ing. Queca

Ejemplo 149: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para ingresar valores en un arreglo de n
casillas de la serie, n será ingresado por teclado.
Ejemplo:
1 1 2 3 5 8 . ..

m
m[0] =1 1
m[1] =2 1
m[2] =3 2
m[3] =4 3
m[4] =5 5
m[5] =6 8
Como se nota: los índices(Direcciones) van de 0 hasta 6, los valores se insertan en cada casilla consecutivamente:

INICIO

a=1
b=1

I=0 à n-1

m[ I ] = a

c=a+b
a=b
b=c

FIN

63
Computación I Ing. Queca

Ejemplo 150: Algoritmo:

Realizar un algoritmo que use una sentencia repetitiva para ingresar Nombres en un arreglo de n
casillas, y visualizar los datos Ingresados, n será ingresado por teclado.
Ej.:
Juan Ivan Marcos Lucia Maria Leslie . ..

INICIO

I=0 à n-1

n om

a[ I ] = nom

I=0 à n-1

a[ I ]

FIN

64
Computación I Ing. Queca

Ejemplo 151: Algoritmo:

Realizar un algoritmo que use sentencias repetitivas para ingresar valores en un arreglo de 4
filas y 4 columnas.

Ejemplo:

a
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

INICIO

b=1

I=0 à 3

J=0 à 3

a[ I ] = b
b = b + 1

FIN

65
Computación I Ing. Queca

Ejemplo 152: Algoritmo:

Realizar un algoritmo que use sentencias repetitivas para ingresar valores en Dos arreglos de n
casillas, realice la suma y Visualice el resultado, n será ingresado por teclado.

1 4 2 7 5 6 6 5 6 10 8 12

3 4 5 8 7 4 2 1 10 8 7 9

5 4 2 3 7 8 9 6 12 12 11 9

5 8 9 2 4 2 6 1 9 10 15 3

INICIO

g
n
I=1 à n
I=1 àn
J=1 à n
J=1 à n
C[ i,j] = A[i,j]+B[i,j]

A[i,j]

I
I

J
J

I=1 à n
I=1 à n

J=1 à n
J=1 à n

C[i,j]
B[i,j]

I
I

J
J

FIN
g
66
Computación I Ing. Queca

Ejemplos Varios

Ejemplo 153: Algoritmo:

Realizar un algoritmo que determine si un numero es Capicúa (Número que es igual leído de
izquierda a derecha que de derecha a izquierda), n será ingresado por teclado.

INICIO

NUM=n
INVER=0

I=RESIDUO(NUM/10)
INVER=INVER *10+I
NUM=ENTERO(NUM/10)

Si No
NUM<=0
n
No Si
N=INVER

NO CAPICUA CAPICUA

FIN

67
Computación I Ing. Queca

CODIFICACIÓN

68
Computación I Ing. Queca

Codificación
Programa
Definición

Un programa es una secuencia de instrucciones que indican al hardware de un computador qué


operaciones debe realizar con los datos.

También se puede definir como un conjunto de operaciones especificadas en un determinado


lenguaje de programación y para un computador concreto, susceptible de ser ejecutado (o compilado
o interpretado).

Etapas de la Programación
Para llegar a tener una secuencia de instrucciones que den solución a un problema es necesario
ejecutar varias etapas.

Etapa de análisis: En esta etapa el programador debe entender claramente el problema.


Saber que es lo que se quiere resolver. (analizar)

Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al
problema. Estos pasos se pueden desarrollar a través de un Diagrama de flujo (Utilizando
símbolos) ó a través de un seudo lenguaje (Utilizando Lenguaje común). A lo anterior es lo
que se conoce con el nombre de Algoritmo.

Etapa de prueba: Consiste en chequear el algoritmo paso a paso para estar seguro si la solución da
solución verdaderamente el problema. (Prueba de escritorio).

Etapa de implementación específica: Consiste en traducir el algoritmo a un lenguaje de


programación. (Codificar).

Etapa de prueba: Consiste en ejecutar el programa en un computador y revisar los datos


arrojados para ver si son correctos y hacer los ajustes necesarios.
(Implementar).

Etapa de uso: Consiste en instalar el programa de manera definitiva para el uso por parte del
usuario.

Lenguajes de Programación
Lenguaje de programación, es cualquier lenguaje artificial que puede utilizarse para definir una
secuencia de instrucciones para su procesamiento por una computadora.

Es así, que ahora veremos en determinados lenguajes de programación como ser: Turbo C, Visual
Basic.NET, C#.NET, J#.NET de visual Studio 2005.

69
Computación I Ing. Queca

Lenguaje Basic Net


BASIC, en informática, acrónimo de Beginners All-purpose Symbolic Instruction Code
(Código de Instrucciones Simbólicas de Uso General para Principiantes). Se trata de un
lenguaje de programación de alto nivel desarrollado por los estadounidenses John Kemeny y
Thomas Kurtz en el Dartmouth College a mediados de la década de 1960.

Lenguaje de uso Visual Basic.Net 2005 – Aplicación de consola

Estructura del Programa


Module Module1 // Declara el nombre de un módulo e introduce la definición de las variables,
propiedades, eventos y procedimientos que incluye el módulo.

<Declaracion de procedimientos y funciones>

Sub Main()

<Declaracion de variables locales>


<Sentencias>

End Sub

End Module

70
Computación I Ing. Queca

Codificación al lenguaje Basic:

TERMINAL Sub Main()


End Sub INICIO / FIN

x = Console.ReadLine(): a = CInt(x)
a , b, c x = Console.ReadLine(): a = CInt(x) Lectura p/teclado
x = Console.ReadLine(): a = CInt(x)

D=a+b+c D=a+b+c proceso

D = a+b+c D = a+b+c
S = 4*D S= 4*D

D Console.WriteLine(D) Impresion en
Console.WriteLine( Tiene & D & Bolivianos ) Pantalla
Tiene D Bolivianos

D>0 If D > 0 then


< Sentencias >
End if
Sentencias

If (D > 0) then Si,

D>0 < Sentencias >


Else

Sentencias Sentencias < Sentencias >


End if

D>0 While (D > 0)


Mientras ,
< Sentencias >
Wend
Sentencias

do
Sentencias
< Sentencias > Hacer Mientras

D>0 Loop While (D > 0)

71
Computación I Ing. Queca

Ejemplo 162:
Realizar la codificación en Visual Basic.Net el siguiente diagrama de flujo

Module Module1

Sub Main()
INICIO Dim a, b, s As Integer
Dim x As String
x = Console.ReadLine()
a = CInt(x)
a, b x = Console.ReadLine()
b = CInt(x)

s = a+b s = a + b

s Console.WriteLine(s)

FIN End Sub

End Module

Ejemplo 163:
Realizar la codificación en Visual Basic.Net el siguiente diagrama de flujo

Module Module1

INICIO Sub Main()


Dim Nota As Integer
Dim x As String
x = Console.ReadLine()
Nota
Nota = CInt(x)

No Si
Nota < 51 If Nota < 51 Then
Console.WriteLine( Reprobado )
Else
Aprobó Reprobó
Console.WriteLine( Aprobado )
End If

FIN End Sub

End Module

72
Computación I Ing. Queca

Operadores:

Aritmeticos Logicos Relacionales


Operador Descripcion Operador Descripcion Operador Descripcion
+ Suma And And = Igual a
- Resta Or Or <> Deferente a
* Multiplicacion Not Not > Mayor a
/ Division Xor Xor < Menor a
Mod Modulo >= Mayor Igual
\ Division Entera <= Menor igual
^ Potencia

73
Computación I Ing. Queca

Lenguaje Basic 6.0


Visual Basic 6 se ha convertido en un importante entorno de desarrollo que cubre todos los
aspectos de la programación profesional, desde las aplicaciones financieras a la
construcción de componentes para Internet. Las desventaja es una versión anterior a las Net

Lenguaje de uso Visual Basic 6


En Visual Basic, se ven 5 pantallas principales :

El programa Visual Basic :

Ventana de
proyectos

Formulario

Caja de Ventana de
herramientas Propiedades

En la ventana del programa, podemos hacer todas las funciones normales que nos permite
el compilador Visual Basic.

Estructura del Programa


[Private] Sub nombre [( parámetros)]
[ sentencias]
[Exit Sub]
[ sentencias]
End Sub

74
Computación I Ing. Queca

Codificación al lenguaje Basic 6:

TERMINAL Sub Nombre_Clic


End Sub INICIO / FIN

a = Val(InputBox( Ingrese n DATOS ,4,,, ,1)


a , b, c b = Val(InputBox( Ingrese n DATOS ,4,,, ,1) Lectura p/teclado
c = Val(InputBox( Ingrese n DATOS ,4,,, ,1)

D=a+b+c D=a+b+c proceso

D = a+b+c D = a+b+c
S = 4*D S= 4*D

D Print D Impresion en
Print Tiene & D & Bolivianos Pantalla
Tiene D Bolivianos

D>0 If D > 0 then


< Sentencias >
End if
Sentencias
SENTENCIA
If (D > 0) then CONDICIONAL
Si Sino
D>0 < Sentencias >
Else

Sentencias Sentencias < Sentencias >


End if

D>0 While (D > 0)


< Sentencias > Mientras ,
Wend
Sentencias

do
Sentencias
< Sentencias >
Hacer Mientras
D>0 Loop While (D > 0)

75
Computación I Ing. Queca

Ejemplo 162:
Realizar la codificación en Visual Basic.Net el siguiente diagrama de flujo

INICIO Private Sub Command1_Click()


Dim a, b, s As Integer

a = Val(InputBox("Introduzca a:", "DATOS",2,,,"",1))


a, b b = Val(InputBox("Introduzca b:", "DATOS",2,,,"",1))

s = a+b s = a + b

s Print s

FIN End Sub

Ejemplo 163:
Realizar la codificación en Visual Basic.Net el siguiente diagrama de flujo

INICIO Private Sub Command1_Click()


Dim Nota As Integer
Dim x As String

Nota
Nota = Val(InputBox("Introduzca b:", "DATOS",2,,,"",1))

No Si
Nota < 51 If Nota < 51 Then
Print( Reprobado )
Else
Aprobó Reprobó
Print( Aprobado )
End If

FIN End Sub

76
Computación I Ing. Queca

Ejemplo 164:
Realice un programa (diagrama de flujo y su respectiva codificación en Visual Basic), que,
resuelva la ecuación de segundo grado.

Incio

a, b, c

d = b*b-4ac

d<0

d=d*(-1) x1=(-b+raiz(d)/2a
x=-b/(2a) x2=(-b+raiz(d)/2a
i=raiz(d)/2a

i, x x1, x2

Fin

Ejemplo 165:
Realice un programa (diagrama de flujo y su respectiva codificación en Visual Basic), que,
muestre el mayor de tres números.

Incio

a, b, c

a>b

b>c a>c

Mayor b Mayor c Mayor a

mayor

Fin

77
Computación I Ing. Queca

Operadores:

Aritmeticos Logicos Relacionales


Operador Descripcion Operador Descripcion Operador Descripcion
+ Suma And And = Igual a
- Resta Or Or <> Deferente a
* Multiplicacion Not Not > Mayor a
/ Division Xor Xor < Menor a
Mod Modulo >= Mayor Igual
\ Division Entera <= Menor igual
^ Potencia

Programas Varios
Ejemplo 165:
Realizar un programa en visual Basic.net para leer una Nota e imprimir Aprobado o
Reprobado dependiendo la Nota, nota minima de aprobación es 51
Module Module1
Sub Main()
Dim Nota As Integer
Dim x As String
x = Lee()
Nota = CInt(x)
If Nota < 51 Then
Imprime1()
Else
Imprime2()
End If
End Sub

Function Lee() As String


Dim num As String
num = Console.ReadLine()
Lee = num
End Function

Sub Imprime1()
Console.WriteLine("Reprobado")
End Sub

Sub Imprime2()
Console.WriteLine("Aprobado")
End Sub
End Module

78
Computación I Ing. Queca

Formularios Windows
Entorno de Desarrollo Integrado (IDE – Integrated Development Environment)

El entorno de trabajo Similar en los lenguajes Visual C# 2005, Visual Basic.Net, Visual J#,

79
Computación I Ing. Queca

Interfaces de ventana. Formularios y Controles


Es un hecho palpable el que la programación para
Internet, ha ganado en los últimos tiempos una
importante cuota de desarrollo, en decadencia de las
aplicaciones basadas en Windows. Sin embargo, todavía
existe un importante conjunto de programas que deberán
seguir funcionando en Windows y que tendrán que
migrarse a la plataforma .NET.

Controles Comunes:
Label, TextBox, CommandButton, CheckBox
En Visual Studio hay un conjunto de controles comunes
que son usados en la gran mayoría de aplicaciones. En la
siguiente tabla se muestra el uso normal de estos
controles:

Control
Label (Etiqueta)

Mostrar un texto descriptivo que el usuario no puede


modificar. El texto se especifica en la propiedad Text

Control
TextBox (Cuadro de texto)

Mostrar un texto que puede ser editado. La principal


propiedad es Text, que determina el texto que se.muestra
en dicho control.
.Text que permite capturar datos de tipo String.
.Text que permite determinará el texto a mostrar

Control
CommandButton (Botón)
Comenzar o terminar un proceso. Cuando el usuario pulsa este botón, se produce el evento Click.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


// Aquí se introduce todas las operaciones a realizar
End Sub

80
Computación I Ing. Queca

Control

CheckBox (Casilla de activación)


Seleccionar una opción (no excluyente) de entre un conjunto de opciones. Su principal propiedad es
.Checked, que indica si está seleccionada (= true) o no (= false).

Control

ListBox (Cuadro de lista)


Seleccionar un valor dentro una lista. La propiedad .SelectedIndex determina el indice
seleccionado por el usuario y SelectedItems determina el elemento seleccionado por el usuario.
.Items.Add (Objeto) permite añadir datos

CONTROLES MÁS USUALES

Botón de comando (Command Button)

La propiedades más importantes del botón de comando son su text, que es lo que aparece escrito en
él, las referentes a su posición Location(x , y) y apariencia externa Size Height, Width y tipo de
letra y la propiedad Enabled, que determina si en un momento dado puede ser pulsado o no.

No hay que confundir la propiedad text con la propiedad Name. La primera define a un texto que
aparecerá escrito en el control, mientras que la segunda define el nombre interno con el que se
puede hacer referencia al citado objeto.

Si en la propiedad text se pone el carácter (&) antes de una de sus letras, dicha letra aparece
subrayyada en el botón (como la “E” en el botón Ejecutar de la figura anexa). Esto quiere decir
que, como es habitual en Windows, dicho botón puede activarse con el teclado por medio de la
combinación Alt+letra subrayada. Esta característica es común a muchos de los controles que
tienen propiedad text.

El evento que siempre suelen tener programado los botones de comandos es el evento Click.

Ejemplo 1: Determina si se encuentra activo o no el boton.

C# Basic.net Java#
Boolean v; Dim v As Boolean boolean v;
v = button1.Enabled; v = Suma.Enabled v= button1.get_Enabled();

81
Computación I Ing. Queca

Ejemplo 2: Cambia el texto en el boton.

C# Basic.net Java#
button1.Text= "&Suma"; Suma.Text= "&Suma" button1.set_Text("&Suma");

Cambia Ejecutar a Suma

Realizamos una pequeña aclaración: get àobtiene


setàcambia o muestra

Botones de selección (Radio Button)

Los controles RadioButton de formularios Windows Forms presentan al usuario un conjunto de dos
o más opciones excluyentes entre sí. Aunque puede parecer que los botones de opción y las casillas
de verificación funcionan de forma parecida, existe una diferencia importante: cuando un usuario
selecciona un botón de opción, no puede seleccionar ninguno de los otros botones de opción del
mismo grupo sin perder la selección de este botón. En cambio, es posible activar tantas casillas de
verificación como se desee. Al definir un grupo de botones de opción, se indica al usuario que
"tiene este conjunto de opciones entre las que puede elegir una y solamente una".

Cuando se hace clic en un control RadioButton, su propiedad Checked se establece en true y se


llama al controlador de eventos Click. El evento CheckedChanged se produce cuando cambia el
valor de la propiedad Checked. Si la propiedad AutoCheck se establece en true (la opción
predeterminada), al seleccionar el botón de opción se desactivarán automáticamente los demás
botones de opción del grupo. Normalmente, esta propiedad sólo se establece en false cuando se
utiliza código de validación para comprobar que el botón de opción seleccionado corresponde a una
opción válida. El texto que se muestra dentro del control se establece con la propiedad Text, que
puede contener teclas de acceso directo. Una tecla de acceso permite al usuario "hacer clic" en el
otro control si presiona simultáneamente la tecla ALT y la tecla de acceso.

Name= radioButton1 // nombre del botón de selección

Ejemplo 1: Determina si se selecciono el botón.

C# Basic.net Java#
Boolean v; Dim v As Boolean boolean v;
v=radioButton1.Checked; v=RadioButton1.Checked v=radioButton1.get_Checked();

82
Computación I Ing. Queca

Botones de selección (CheckBox Button)

El control CheckBox de los formularios Windows Forms indica si una condición determinada está
activada o desactivada. Se utiliza habitualmente para presentar al usuario una selección de tipo
Sí/No o Verdadero/Falso. Puede utilizar grupos de casillas de verificación para mostrar múltiples
opciones entre las cuales el usuario puede elegir una o más.
El control casilla de verificación es similar al control botón de opción, puesto que los dos se utilizan
para indicar una selección realizada por el usuario. Sólo difieren en que en un grupo de botones de
opción no se puede seleccionar más de un botón de opción. Sin embargo, en un grupo de casillas de
verificación es posible seleccionar tantas casillas de verificación como se desee.
Puede conectar una casilla de verificación a elementos de una base de datos mediante enlaces
simples de datos. También puede agrupar varias casillas de verificación por medio del control
GroupBox. Esto resulta útil para mejorar la apariencia visual y para el diseño de la interfaz de
usuario, puesto que permite mover juntos los controles agrupados por el diseñador de formularios.
El control CheckBox tiene dos propiedades importantes: Checked y CheckState. La propiedad
Checked devuelve true o false. La propiedad CheckState devuelve Checked o Unchecked; o bien,
si la propiedad ThreeState se establece en true, CheckState también puede devolver Indeterminate.
En el estado indeterminado, el cuadro se muestra con un aspecto atenuado para indicar que la
opción no está disponible.

Name= checkBox1 // nombre del botón de selección

Ejemplo 1: Determina si se selecciono el boton.


boolean v=checkBox1.getChecked();

C# Basic.net Java#
Boolean v; Dim v As Boolean boolean v;
v=CheckBox1.Checked; v=CheckBox1.Checked v=CheckBox1.get_Checked();

1.1.3 Etiquetas (Labels)

83
Computación I Ing. Queca

Los controles Label de formularios Windows Forms se utilizan para mostrar texto o imágenes que
el usuario no puede editar. Se utilizan para identificar objetos en un formulario; por ejemplo, para
proporcionar una descripción de lo que hará cierto control si se hace clic en él o para mostrar
información en respuesta a un evento o proceso en tiempo de ejecución de la aplicación. Por
ejemplo, puede utilizar etiquetas para agregar títulos descriptivos a cuadros de texto, cuadros de
lista, cuadros combinados, etc. También puede escribir código que cambie el texto que muestra una
etiqueta en respuesta a eventos en tiempo de ejecución. Por ejemplo, si la aplicación tarda varios
minutos en procesar un cambio, puede mostrar en una etiqueta un mensaje que notifique el estado
de procesamiento del cambio.

Dado que el control Label no puede recibir el foco, puede utilizarse también para crear teclas de
acceso para otros controles. Una tecla de acceso permite al usuario seleccionar el otro control si
presiona simultáneamente la tecla ALT y la tecla de acceso.

1.1.4 Cajas de texto (Text Box)

Los cuadros de texto de formularios Windows Forms se utilizan para obtener entradas del usuario o
para mostrar texto. El control TextBox se utiliza generalmente para el texto que se puede editar,
aunque también puede configurarse como control de sólo lectura. Los cuadros de texto pueden
mostrar varias líneas, ajustar el texto al tamaño del control y agregar formato básico. El control
TextBox proporciona un único estilo de formato para el texto mostrado o escrito en el control. Para
mostrar varios tipos de texto con formato, se debe usar el control RichTextBox.

El texto que se muestra en el control se encuentra almacenado en la propiedad Text. De forma


predeterminada, en un cuadro de texto se puede escribir 2048 caracteres como máximo. Si establece
la propiedad Multiline en true, podrá escribir un máximo de 32 KB de texto. La propiedad Text
puede establecerse en tiempo de diseño con la ventana Propiedades, en tiempo de ejecución
mediante código o por medio de la introducción de datos por el usuario en tiempo de ejecución. El
contenido actual de un cuadro de texto puede recuperarse en tiempo de ejecución mediante la
lectura de la propiedad Text.

A continuación algunos ejemplos de uso de las propiedades de la caja de texto:

Name= TextBox1 // Nombre de la caja de texto.

Ejemplo 1: Obtiene el texto de la caja de texto.

C# Basic.net Java#

String s; Dim s As String String s;


s = textBox1.Text; s = TextBox1.Text s = textBox1.get_Text();

84
Computación I Ing. Queca

Ejemplo 2: Coloca o introduce en la caja de texto una cadena.

C# Basic.net Java#

textBox1.Text="Hola."; TextBox1.Text="Hola." textBox1.set_Text("Hola.");

1.1.5 Listas (List Box)

Un control ListBox de formularios Windows Forms muestra una lista de elementos entre los que el
usuario puede seleccionar uno o más. Si el número total de elementos supera el número que se
puede mostrar, se agrega automáticamente una barra de desplazamiento al control ListBox. Cuando
la propiedad MultiColumn se establece en true, el cuadro de lista muestra elementos en varias
columnas y aparece una barra de desplazamiento horizontal. Cuando la propiedad MultiColumn se
establece en false, el cuadro de lista muestra los elementos en una sola columna y aparece una barra
de desplazamiento vertical. Cuando ScrollAlwaysVisible se establece en true, la barra de
desplazamiento aparece, independientemente del número de elementos. La propiedad
SelectionMode determina cuántos elementos de la lista pueden seleccionarse a la vez.

La propiedad SelectedIndex devuelve un valor entero que corresponde al primer elemento


seleccionado en el cuadro de lista. Para cambiar mediante programación el elemento seleccionado,
cambie el valor de SelectedIndex en el código; el elemento correspondiente de la lista aparecerá
resaltado en el formulario Windows Forms. Si no hay ningún elemento seleccionado, el valor de
SelectedIndex es -1. Si está seleccionado el primer elemento de la lista, el valor de SelectedIndex
es 0. Cuando hay varios elementos seleccionados, el valor de SelectedIndex refleja el elemento
seleccionado que aparece en primer lugar en la lista. La propiedad SelectedItem es similar a
SelectedIndex, pero devuelve el elemento en sí, habitualmente un valor de cadena. La propiedad
Count refleja el número de elementos de la lista. El valor de la propiedad Count es siempre una
unidad más que el máximo valor posible para SelectedIndex, ya que SelectedIndex está basada en
cero.
Para agregar o eliminar los elementos en un control ListBox, utilice el método Add, Insert, Clear o
Remove. También puede agregar elementos a la lista mediante la propiedad Items en tiempo de
diseño.

85
Computación I Ing. Queca

1.1.6 Cajas combinadas (ComboBox)

El control ComboBox de los formularios Windows Forms se utiliza para mostrar datos en un cuadro
combinado desplegable. De forma predeterminada, el control ComboBox aparece en dos partes: la
parte superior es un cuadro de texto que permite al usuario escribir un elemento de la lista. La
segunda parte es un cuadro de lista que muestra una lista de elementos, de los cuales el usuario
puede seleccionar uno.
La propiedad SelectedIndex devuelve un valor entero que corresponde al elemento seleccionado en
la lista. Para cambiar mediante programación el elemento seleccionado, cambie el valor de
SelectedIndex en el código; el elemento correspondiente de la lista aparecerá en la parte de cuadro
de texto del cuadro combinado. Si no se selecciona ningún elemento, el valor de SelectedIndex es -
1. Si se selecciona el primer elemento de la lista, el valor de SelectedIndex es 0. La propiedad
SelectedItem es similar a SelectedIndex, pero devuelve el elemento en sí, normalmente un valor de
cadena. La propiedad Count refleja el número de elementos de la lista. El valor de la propiedad
Count es siempre una unidad más que el máximo valor posible para SelectedIndex, ya que
SelectedIndex está basada en cero.
Para agregar o eliminar los elementos en un control ComboBox, utilice el método Add, Insert,
Clear o Remove. También puede agregar elementos a la lista mediante la propiedad Items en el
diseñador.

Ejemplos del control ComboBox, ListBox de formularios Windows Forms

Ejemplo 1: Agregue la cadena u objeto a la lista mediante el método Add.

C# Basic.net Java#
comboBox1.Items.Add("Tokyo"); ComboBox1.Items.Add("Tokyo") comboBox1.get_Items().Add("Tokyo");

Ejemplo 2: Inserte la cadena o el objeto en el punto que desee de la lista por medio del método
Insert:.

C# checkedListBox1.Items.Insert(0, "Copenhagen");

Basic.net CheckedListBox1.Items.Insert(0, "Copenhagen")

Java# checkedListBox1.get_Items().Insert(0, "Copenhagen");

86
Computación I Ing. Queca

Ejemplo 167:
Realizar un programa para llenar un ComboBox los valores del 1 al 10, la codificación se
hará en Visual Basic.Net

ComboBox:
Name = CmboNum

Botón:
Name = btnSale
Text = &Salir

Boton:
Formulario: Name = btnEjecuta
Public Class Form1 Name = Form1 Text = &Ejecutar
Dim i As Integer Text = Obtenido
Private Sub btnEjecuta_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnEjecuta.Click
For i = 1 To 10
CmboNum.Items.Add(i.ToString())
Next
End Sub

Private Sub btnSale_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles btnSale.Click
End
End Sub
End Class

87
Computación I Ing. Queca

Ejemplo 174:
Escribir un programa que acepte número en una caja de texto e invierta el número en otra caja
de texto.

Public Class Form1

Private Sub Invierte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Invierte.Click


Dim Num, Inver, i As Long
Num = Val(txtNum.Text)
Inver = 0
Do
i = Num Mod 10
Inver = Inver * 10 + i
Num = Num \ 10
Loop Until Num <= 0
txtInv.Text = Str(Inver)
End Sub

Private Sub Sale_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Sale.Click


End
End Sub
End Class

88
Computación I Ing. Queca

Programación de Aplicaciones
Es un novedoso entorno, incluido en las últimas versiones de los programas (software), que
parece hacer furor entre los programadores últimamente. La programación en Visual BASIC
para Windows, C# y Java viene siendo, desde hace unos años, una de las herramientas más
versátiles y, a la vez, más sencillas y utilizadas en el mundo de la programación. El usuario
puede desarrollar sus programas en un compilador externo o utilizar el propio módulo como
VBA que incluye las aplicaciones: CAD(Autodesk: AutoCAD, Civil3D, Inventor,
SolidWorks, etc.), Office( Excel, Word y otros.), ArcGIS.

Este módulo contiene la sintaxis del lenguaje, un depurador y un entorno de desarrollo. Así, el
programador, puede programar rutinas VBA.

Ejemplo 175:
Usando la función del ejemplo anterior, llenar un rango de filas, empezando por la celda A1,
generando números ROMANOS correlativos (comenzando por el 1) en Visual Basic.NET.

Public Class Form1


Dim Roman, Ro ', Roma
Dim h, Gg, G, n As Integer
Dim Excel As Object ' Este es el programa Excel
Dim ExcelLibro As Object ' Es el Libro de trabajo
Dim ExcelHoja As Object ' es la Hoja de cálculo
Dim Roma() As String = {"I", "I", "V", "X", "L", "C", "D", "M"}

Private Sub Ejemplo_Click(ByVal sender As System.Object, ) Handles


Dim i As Integer
ExcelHoja.Range("A2").Activate() ' Activa la casilla A2
n = Val(InputBox("Ingrese un valor", "Entrada de Datos...", "1"))
For i = 1 To n
Ro = numero(i)
Excel.ActiveCell.Value = Ro
Excel.ActiveCell.Offset(1, 0).Activate()
Next i
End Sub

Function numero(ByVal n As Integer) As String


G = n
h = 0
Roman = ""
Do
Gg = G Mod 10
G = G \ 10
Select Case Gg
Case 1
Roman = Roma(1 + 2*h) + Roman
Case 2
Roman = Roma(1 + 2*h) + Roma(1 + 2*h) + Roman
Case 3
Roman = Roma(1 + 2*h) + Roma(1 + 2*h) + Roma(1 + 2*h) + Roman
Case 4
Roman = Roma(1 + 2*h) + Roma(2 + 2*h) + Roman
Case 5
Roman = Roma(2 + 2*h) + Roman
Case 6
Roman = Roma(2 + 2*h) + Roma(1 + 2*h) + Roman
Case 7
Roman = Roma(2 + 2*h) + Roma(1 + 2*h) + Roma(1 + 2*h) + Roman

89
Computación I Ing. Queca
Case 8
Roman = Roma(2+2*h)+Roma(1+2*h)+Roma(1+2*h)+Roma(1+2*h)+Roman
Case 9
Roman = Roma(1 + 2*h) + Roma(3 + 2*h) + Roman
End Select
h = h + 1
Loop Until G = 0
numero = Roman
End Function

Private Sub Form1_Load(ByVal sender As Object, ) Handles Me.Load


On Error GoTo Er
Excel = GetObject(, "Excel.Application") ' Abre el Objeto de Excel.
Excel.Visible = True ' Muestra Microsoft Excel
ExcelLibro = Excel.Workbooks.Add 'añade este Libro a Excel.
ExcelHoja = ExcelLibro.Worksheets(1) ' añade esta hoja al libro
Exit Sub
Er:
If Err.Number = 429 Then
Err.Clear()
Excel = CreateObject("Excel.Application") 'Crea el Objeto de Excel.
Resume Next
Else
End
End If
End Sub
Private Sub Salir_Click(ByVal sender As System.Object, ) Handles Salir.Click
End
End Sub
End Class

El ejemplo se verá de la siguiente forma:

90
Computación I Ing. Queca

Ejemplo 176:
Programar en Visual Basic.NET, ingresando las coordenadas del punto central y el Radio,
graficar un circulo en AutoCAD.

Public Class Form1


Dim AcadDoc As Object
Dim AcadModel As Object
Dim CírculoObj As Object
Dim PtoCentro(2) As Double
Dim Radio As Double

Private Sub Dibujar_Click(ByVal sender As System.Object, Dibujar.Click


AcadDoc = GetObject(, "AutoCAD.Application").ActiveDocument
AcadModel = AcadDoc.ModelSpace

PtoCentro(0) = Val(txtX.Text)
PtoCentro(1) = Val(txtY.Text)
PtoCentro(2) = Val(txtZ.Text)
Radio = Val(txtRadio.Text)
CírculoObj = AcadModel.AddCircle(PtoCentro, Radio)
AcadModel.Application.ZoomExtents()
End Sub

Private Sub Salir_Click(ByVal sender As System.Object, ) Handles Salir.Click


End
End Sub
End Class

Nota: AutoCAD deberá estar ejecutándose, caso contrario no funcionara el programa.

91
Computación I Ing. Queca

Ejemplo 177:
Programar en Visual Basic.NET, graficar un circulo u rectángulo extrudirlos, luego elija la
opción de: unirlos o intersectelos o substraerlos en AutoCAD.

Public Class Form1


Dim AcadDoc As Object
Dim AcadModel As Object
Dim boxObj As Object 'Acad3DSolid
Dim boxLength As Double, boxWidth As Double, boxHeight As Double
Dim boxCenter(2) As Double
Dim cylinderObj As Object 'Acad3DSolid
Dim cylCenter(2) As Double
Dim cylRadius As Double
Dim cylinderHeight As Double
Dim acSubtraction

Private Sub Grafica_Click(ByVal sender As System.Object, Grafica.Click


AcadDoc = GetObject(, "AutoCAD.Application").ActiveDocument
AcadModel = AcadDoc.ModelSpace

boxCenter(0) = 5.0# : boxCenter(1) = 5.0# : boxCenter(2) = 0


boxLength = 10.0# : boxWidth = 7 : boxHeight = 10.0#

boxObj = AcadModel.AddBox(boxCenter, boxLength, boxWidth, boxHeight)


boxObj.Color = 3 'acWhite

cylCenter(0)=0.0#: cylCenter(1)=0.0#: cylCenter(2) = 0.0#


cylinderRadius = 5.0#
cylinderHeight = 20.0#

cylinderObj= AcadModel.AddCylinder(cylCenter,cylRadius,cylinderHeight)
cylinderObj.Color = 3 'acWhite

AcadDoc.SendCommand("_-view" & vbCr & "_seiso" & vbCr)


AcadDoc.application.Zoomextents()

92
Computación I Ing. Queca

acSubtraction = 0 ' 2 substraccion, 0 Union, 1 Intersection

boxObj.Boolean(acSubtraction, cylinderObj)
AcadDoc.Regen(True)

AcadDoc.SendCommand("_shademode" & vbCr & "g" & vbCr)


AcadDoc.application.zoomextents()
End
End Sub
End Class

Ejemplo 178:
Ejemplo realizado en Visual Basic 6.0 que trabaja con AutoCAD, se muestra en el siguiente
grafico

Dim AcadDoc As Object


Dim AcadModel As Object

Dim curves(0 To 7) As Object

Dim centerP (0 To 2) As Double


Dim radius As Double
Dim startAngle As Double
Dim endAngle As Double

Dim centerP1(0 To 2) As Double


Dim radius1 As Double
Dim startAngle1 As Double
Dim endAngle1 As Double

Dim centerP2(0 To 2) As Double


Dim radius2 As Double
Dim startA2 As Double

93
Computación I Ing. Queca
Dim endAngle2 As Double

Dim centerP3(0 To 2) As Double


Dim radius3 As Double
Dim startA3 As Double
Dim endAngle3 As Double

Dim LineaFinal(0 To 2) As Double


Dim Linea1Final(0 To 2) As Double
Dim Linea2Final(0 To 2) As Double
Dim Linea3Final(0 To 2) As Double

Private Sub Grafica_Click()


Set AcadDoc = GetObject(, "AutoCAD.Application").ActiveDocument
Set AcadModel = AcadDoc.ModelSpace
centerP (0) = 227.378: centerP (1) = 595.8997: centerP (2) = 0#
radius = 156.412
startAngle = 271: startAngle = startAngle * 3.141592 / 180#
endAngle = 339: endAngle = endAngle * 3.141592 / 180#

centerP1(0)=218.5158: centerP1(1) = -0.751: centerP1(2) = 0#


radius1 = 193.9698
startAngle1 = 54: startAngle1 = startAngle1 * 3.141592 / 180#
endAngle1 = 87: endAngle1 = endAngle1 * 3.141592 / 180#

centerP2(0)=218.5158: centerP2(1) = -0.751: centerP2(2) = 0#


radius2 = 185.0744
startA2 = 58: startA2 = startA2 * 3.141592 / 180#
endAngle2 = 89: endAngle2 = endAngle2 * 3.141592 / 180#

centerP3(0)=227.378: centerP3(1) = 595.8997: centerP3(2) = 0#


radius3 = 147.5166
startAngle3 = 268: startAngle3 = startAngle3 * 3.141592 / 180#
endAngle3 = 337: endAngle3 = endAngle3 * 3.141592 / 180#

LineaFinal(0) = 230.1755: LineaFinal(1) = 192.868: LineaFinal(2) = 0#


Linea1Final(0) = 315.3272: Linea1Final(1) = 156.9832: Linea1Final(2) = 0#
Linea2Final(0) = 221.2801: Linea2Final(1) = 448.5091: Linea2Final(2) = 0#
Linea3Final(0) = 373.138: Linea3Final(1) = 539.1657: Linea3Final(2) = 0#

Set curves(0)=AcadModel.AddArc(centerP, radius, startAngle, endAngle)


Set curves(2)=AcadModel.AddArc(centerP1,radius1,startAngle1, endAngle1)
Set curves(4) = AcadModel.AddArc(centerP2, radius2, startA2, endAngle2)
Set curves(6) = AcadModel.AddArc(centerP3, radius3, startA3, endAngle3)

Set curves(1)=AcadModel.AddLine(curves(0).StartPoint, curves(2).EndPoint)


Set curves(3)=AcadModel.AddLine(curves(2).StartPoint, curves(4).StartPoint)
Set curves(5)=AcadModel.AddLine(curves(4).EndPoint, curves(6).StartPoint)
Set curves(7)=AcadModel.AddLine(curves(6).EndPoint, curves(0).EndPoint)

Dim regObj

regObj = AcadModel.AddRegion(curves)
regObj(0).Color = 2

' Define el eje de rotacion


Dim axisPt(0 To 2) As Double
Dim axisDir(0 To 2) As Double
Dim angle As Double
axisPt(0) = 221: axisPt(1) = 316: axisPt(2) = 0
axisDir(0) = 0: axisDir(1) = 1: axisDir(2) = 0
angle = 6.28

' Crea el solido

94
Computación I Ing. Queca
Dim solidObj As Object
Set solidObj=AcadModel.AddRevolvedSolid(regObj(0),axisPt,axisDir, angle)
solidObj.Color = 4

Dim NewDirection(0 To 2) As Double


NewDirection(0) = -1: NewDirection(1) = -1: NewDirection(2) = 1
AcadDoc.ActiveViewport.Direction = NewDirection
AcadDoc.ActiveViewport = AcadDoc.ActiveViewport
AcadDoc.Application.ZoomExtents

AcadDoc.SendCommand ("_shademode" & vbCr & "g" & vbCr)


End Sub

95
Computación I Ing. Queca

INTRODUCCIÓN

VISUAL BASIC

96
Computación I Ing. Queca

1. INTRODUCCION

Visual Basic se ha convertido en un importante entorno de desarrollo que cubre todos los
aspectos de la programación profesional, desde las aplicaciones financieras a la
construcción de componentes para Internet. En la actualidad puede considerarse como la
herramienta por excelencia para la programación en entornos Windows, gracias a su
potencia, comparable a la de lenguajes tradicionalmente considerados superiores como C o
C++, pero fundamentalmente por su sencillez y facilidad de uso.

2. ENTORNO VISUAL BASIC

En Visual Basic, se ven 5 pantallas principales :

El programa Visual Basic :

Ventana de
proyectos

Formulario

Caja de Ventana de
herramientas Propiedades

En la ventana del programa, podemos hacer todas las funciones normales que nos permite
el compilador Visual Basic.

Cierre todas las ventanas excepto el programa Visual Basic.

Pulse "Ctrl+R" (Ver -> Proyecto) y se abrirá la ventana de proyectos.

En esta ventana tenemos todos los ficheros del proyecto Visual Basic en el que vamos a
trabajar.
97
Computación I Ing. Queca

Al principio y por defecto, el programa abre un formulario con el nombre Form1 que es la
ventana Windows de nuestra aplicación.

Podemos editar, abrir y cerrar la ventana, pero todo esto lo veremos a fondo más tarde. De
momento es fundamental que se familiarice con estas ventanas que aparecen al iniciar
Visual Basic.

Pulsando la tecla "F4", aparecerá la ventana de propiedades. Esta ventana es fundamental,


ya que contiene todas las propiedades de cada objeto que insertaremos en nuestro
formulario, asi como las propiedades del formulario en sí.

Por último, la ventana caja de herramientas, no es menos importante, ya que contiene todos
los objetos que podemos incluir en nuestro formulario. Esta ventana se puede abrir en el
menú principal (Ver -> Caja de herramientas).

Esta es la visión general del compilador Visual Basic, pero hay como bien se imaginará
usted, muchas otras cuestiones que son importantes tener en cuenta.

3. LENGUAJE VISUAL BASIC

OPERADORES

Operadores Aritméticos

^ (Operador)

Se utiliza para elevar un número a la potencia del exponente.

Sintaxis

resultado = número^exponente

La sintaxis del operador ^ consta de las siguientes partes:

Parte Descripción
resultado Requerido; cualquier variable numérica.
número Requerido; cualquier expresión numérica.
exponente Requerido; cualquier expresión numérica.

98
Computación I Ing. Queca

Comentarios

Un número puede ser negativo sólo si exponente es un entero. Cuando se efectúa más de
una exponenciación en una única expresión, el operador ^ se resuelve en el orden en que
esté, de izquierda a derecha.

Generalmente, el tipo de dato del resultado es un Double o un Variant que contiene un


Double. Sin embargo, si número o exponente es una expresión Null resultado es también
Null.

Ejemplo del operador ^

En estos ejemplos se utiliza el operador ^ para elevar un número a la potencia de un


exponente.

Dim MiValor
MiValor = 2 ^ 2 ' Devuelve 4.
MiValor = 3 ^ 3 ^ 3 ' Devuelve 19683.
MiValor = (-5) ^ 3 ' Devuelve -125.

* (Operador)

Se utiliza para multiplicar dos números.

Sintaxis

resultado = número1*número2

La sintaxis del operador * consta de las siguientes partes:

Parte Descripción
resultado Requerido; cualquier variable numérica.
número1 Requerido; cualquier expresión numérica.
número2 Requerido; cualquier expresión numérica.

Comentarios

El tipo de dato del resultado es generalmente el de la expresión más exacta. El orden de


precisión, de menos exacto a más exacto, es Byte, Integer, Long, Single, Double, Currency
y Decimal. Esta regla tiene las siguientes excepciones:

Si El result
La multiplicación implica un tipo Single y se convierte a un tipo Double.
un tipo Long,

99
Computación I Ing. Queca

El tipo de dato de resultado es un tipo se convierte a un Variant que contiene un


variant Long, Single o Date que se sale del tipo Double.
intervalo válido,
El tipo de dato de resultado es un Byte tipo se convierte a un Integer tipo variant.
variant que se sale del intervalo válido,
El tipo de dato de resultado es un Integer se convierte a un Long tipo variant.
tipo variant que se sale del intervalo válido,

Si una o ambas de las expresiones son de tipo Null, el tipo de datos del resultado es Null.
Si una expresión es del tipo Empty, se considera como 0.

Nota El orden de precisión utilizado por la suma y la resta no es igual que el orden de
precisión utilizado por la multiplicación.

Ejemplo del operador *

En estos ejemplos se utiliza el operador * para multiplicar dos números.

Dim MiValor
MiValor = 2 * 2 ' Devuelve 4.
MiValor = 459.35 * 334.90 ' Devuelve 153836.315.

/ (operador)

Se utiliza para dividir dos números y obtener un resultado de signo flotante.

Sintaxis

resultado = número1/número2

La sintaxis del operador / consta de las siguientes partes:

Parte Descripción
resultado Requerido; cualquier variable numérica.
número1 Requerido; cualquier expresión numérica.
número2 Requerido; cualquier expresión numérica.

Comentarios

El tipo de dato de resultado es normalmente un Double tipo variant o un tipo Double. Esta
regla tiene las siguientes excepciones:

100
Computación I Ing. Queca

Si El resultado es
Ambas expresiones son expresiones de tipo un tipo Single a menos que salga de su
Byte, Integer o Single, intervalo válido, en cuyo caso se produce un
error.
Ambas expresiones son Byte, Integer o un tipo Single a menos que salga de su
Single tipo variant, intervalo válido; en este caso resultado es un
tipo Variant que contiene un tipo Double.
La división contiene un tipo Decimal y un tipo Decimal.
cualquier otro tipo de dato,

Si una o ambas de las expresiones son de tipo Null, el tipo de datos del resultado es Null.
Si una expresión es del tipo Empty, se considera 0

Ejemplo del operador /

En estos ejemplos se utiliza el operador / para ejecutar divisiones en coma flotante.

Dim MiValor
MiValor = 10 / 4 ' Devuelve 2.5.
MiValor = 10 / 3 ' Devuelve 3.333333.

\ (operador)

Se utiliza para dividir dos números y obtener un resultado entero.

Sintaxis

resultado = número1\número2

La sintaxis del operador \ consta de las siguientes partes:

Parte Descripción
resultado Requerido; cualquier variable numérica.
número1 Requerido; cualquier expresión numérica.
número2 Requerido; cualquier expresión numérica.

Comentarios

Antes de efectuar la división se redondean las expresiones numéricas para convertirlas en


expresiones tipo Byte, Integer o Long.

101
Computación I Ing. Queca

Normalmente, el tipo de dato del resultado es tipo Byte, Byte tipo variant, tipo Integer o
Integer tipo variant, tipo Long o Long tipo variant, independientemente de si el resultado
es un número entero o no. La parte fraccionaria se trunca. Sin embargo, si cualquiera de las
expresiones es Null, resultado es Null. Toda expresión que sea Empty se considera como 0.

Ejemplo del operador \

En estos ejemplos se utiliza el operador \ para ejecutar divisiones de enteros.

Dim MiValor
MiValor = 11 \ 4 ' Devuelve 2.
MiValor = 9 \ 3 ' Devuelve 3.
MiValor = 100 \ 3 ' Devuelve 33.

Mod (operador)

Divide dos números y devuelve sólo el resto.

Sintaxis

resultado = número1 Mod número2

La sintaxis del operador Mod consta de las siguientes partes:

Parte Descripción
resultado Requerido; cualquier variable numérica.
número1 Requerido; cualquier expresión numérica.
número2 Requerido; cualquier expresión numérica.

Comentarios

El operador de módulo, o resto, divide número1 por número2 (redondeando a enteros los
números de signo flotante) y devuelve sólo el resto como resultado. Por ejemplo, en la
siguiente expresión, A (que es el resultado) es igual a 5.

A = 19 Mod 6.7

Generalmente, el tipo de dato de resultado es tipo Byte, Byte tipo variant, tipo Integer,
Integer tipo variant, tipo Long o tipo Variant que contiene un tipo Long,
independientemente de si el resultado es un número entero o no. La parte fraccionaria se
trunca. Sin embargo, si cualquiera de las expresiones es Null, el resultado es también Null.
Toda expresión Empty se considera como 0.

102
Computación I Ing. Queca

Ejemplo del operador Mod

En estos ejemplos se utiliza el operador Mod para dividir dos números y obtener como
resultado sólo el resto de la división. Si uno de los números es de coma flotante, se
redondea primero para convertirlo en un entero.

Dim MiResultado
MiResultado = 10 Mod 5 ' Devuelve 0.
MiResultado = 10 Mod 3 ' Devuelve 1.
MiResultado = 12 Mod 4.3 ' Devuelve 0.
MiResultado = 12.6 Mod 5 ' Devuelve 3.

+ (operador)

Se utiliza para sumar dos números.

Sintaxis

resultado = expresión1+expresión2

La sintaxis del operador + consta de las siguientes partes:

Parte Descripción
resultado Requerido; cualquier variable numérica.
Expresión1 Requerido; cualquier expresión.
expresión2 Requerido; cualquier expresión.

Comentarios

Cuando utilice el operador + , quizá no pueda determinar si se va a realizar una suma o una
concatenación de cadenas. Utilice el operador & para la concatenación, de modo que se
eviten ambigüedades y se suministren programas claros y explícitos.

Si hay al menos una expresión que no sea de tipo Variant, se aplican las siguientes reglas:

Si Entonces
Ambas expresiones son tipos de datos Suma.
numéricos (Byte, Boolean, Integer,
Long, Single, Double, Date, Currency o
Decimal)
Ambas expresiones son del tipo String Concatenación.
Una expresión es de un tipo de datos Suma.

103
Computación I Ing. Queca

numérico y la otra cualquier tipo


Variant excepto Null
Una expresión es del tipo String y la Concatenación.
otra cualquier tipo Variant excepto
Null
Una expresión es del tipo Empty Devuelve sin modificaciones la
Variant expresión restante como resultado.
Una expresión es de un tipo de datos Puede ocurrir un Error de tipos.
numérico y la otra de tipo String
Cualquiera de las expresiones es Null resultado es Null.

Si ambas expresiones son del tipo Variant, se aplican las siguiente reglas:

Si Entonces
Ambas expresiones tipo Variant son Suma.
numéricas
Ambas expresiones tipo Variant son Concatenación.
cadenas de caracteres
Una expresión tipo Variant es Suma.
numérica y la otra es una cadena de
caracteres

En adiciones aritméticas simples de expresiones de tipos de datos numéricos únicamente, el


tipo de dato de resultado es habitualmente el mismo que el de la expresión con mayor
precisión. El orden de precisión, de menos exacto a más exacto, es Byte, Integer, Long,
Single, Double, Currency y Decimal. Esta regla tiene las siguientes excepciones:

Si El resultado es
Se suman un tipo Single y un tipo un tipo Double.
Long,
El tipo de dato de resultado es se convierte a un Double tipo
Long, Single o Date tipo variant variant.
que desborda su intervalo válido,
El tipo de dato de resultado es un se convierte a un Integer tipo
Byte tipo variant que se sale del variant.
intervalo válido,
El tipo de dato de resultado es un se convierte a un Long tipo variant.

104
Computación I Ing. Queca

Integer tipo variant que se sale del


intervalo válido,
Un Date se agrega a cualquier tipo un tipo Date.
de dato,

Si una de las expresiones o ambas son expresiones de tipo Null, resultado es Null. Si
ambas expresiones son Empty, el resultado es Integer. Sin embargo, sólo una de las
expresiones es Empty, se devuelve la otra sin modificaciones como resultado.

Nota El orden de precisión utilizado por la suma y la resta no es igual que el orden de
precisión utilizado por la multiplicación.

Ejemplo del operador +

En estos ejemplos se utiliza el operador + para sumar números. El operador + puede


utilizarse también para concatenar cadenas de caracteres pero, para evitar ambigüedades, es
mejor utilizar para ello el operador &. Si los componentes de una expresión creada con el
operador + incluyen tanto cadenas como elementos numéricos, se asigna el resultado
aritmético. Si los componentes son cadenas exclusivamente, se concatenan las cadenas.

Dim MiNúmero, Var1, Var2


MiNúmero = 2 + 2 ' Devuelve 4.
MiNúmero = 4257.04 + 98112 ' Devuelve 102369.04.
Var1 = "34": Var2 = 6 ' Inicializa variables mezcladas.
MiNúmero = Var1 + Var2 ' Devuelve 40.
Var1 = "34": Var2 = "6" ' Inicializa las variables con cadenas.
MiNúmero = Var1 + Var2 ' Devuelve "346" (concatenación de cadenas).

- (operador)

Se utiliza para hallar la diferencia entre dos números o para indicar el valor negativo de una
expresión numérica.

Sintaxis 1

resultado = número1-número2

Sintaxis 2

–número

La sintaxis del operador – consta de las siguientes partes:

Parte Descripción
resultado Requerido; cualquier variable numérica.

105
Computación I Ing. Queca

número Requerido; cualquier expresión numérica.


número1 Requerido; cualquier expresión numérica.
número2 Requerido; cualquier expresión numérica.

Comentarios

En la sintaxis 1, – es el operador de substracción aritmética utilizado para hallar la


diferencia entre dos números. En la sintaxis 2, – se utiliza como el operador de negación
unaria para indicar el valor negativo de una expresión.

El tipo de dato de resultado es generalmente el de la expresión más exacta. El orden de


precisión, de menos exacto a más exacto, es Byte, Integer, Long, Single, Double, Currency
y Decimal. Este orden tiene las siguientes excepciones:

Si El result
Es una substracción de un tipo Single se convierte a tipo Double.
y un tipo Long,
El tipo de dato de resultado es un tipo se convierte a un Variant que
variant Long, Single o Date que se contiene un tipo Double.
sale del intervalo válido,
El tipo de dato de resultado es un se convierte a un Integer tipo
Byte tipo variant que se sale del variant.
intervalo válido,
El tipo de dato de resultado es un se convierte a un Long tipo variant.
Integer tipo variant que se sale del
intervalo válido,
La substracción implica a un tipo es un tipo Date.
Date y cualquier otro tipo de dato,
La substracción implica dos es un tipo Double.
expresiones tipo Date,

Si una o ambas de las expresiones son de tipo Null, el tipo de datos del resultado es Null.
Si una expresión es del tipo Empty, se considera como si fuera 0.

Nota El orden de precisión utilizado por la suma y la resta no es igual que el orden de
precisión utilizado por la multiplicación.

Ejemplo del operador -

En estos ejemplos se utiliza el operador - para calcular la diferencia entre dos números.
106
Computación I Ing. Queca

Dim MiResultado
MiResultado = 4 - 2 ' Devuelve 2.
MiResultado = 459.35 - 334.90 ' Devuelve 124.45.

FUNCIONES

FUNCIONES MATEMATICAS

Abs (Función)

Devuelve un valor del mismo tipo que el que se pasó como parámetro y que especifica el
valor absoluto de un número.

Sintaxis

Abs(número)

El argumento número puede ser cualquier expresión numérica válida. Si número contiene
Null, la función devolverá Null; si es una variable no inicializada, devolverá cero.

Comentarios

El valor absoluto de un número es su magnitud sin signo. Por ejemplo, ABS(-1) y ABS(1)
devuelven 1.

Ejemplo de la función Abs

En este ejemplo se utiliza la función Abs para calcular el valor absoluto de un número.

Dim MiNúmero
MiNúmero = Abs(50.3) ' Devuelve 50.3.
MiNúmero = Abs(-50.3) ' Devuelve 50.3.

Atn (Función)

Devuelve un tipo Double que especifica el arcotangente de un número.

Sintaxis

Atn(número)

El argumento número es un tipo Double o cualquier expresión numérica válida.

Comentarios

La función Atn toma la razón de dos lados de un triángulo rectángulo (número) y devuelve
el ángulo correspondiente en radianes. La razón es la longitud del lado opuesto al ángulo
dividida por la longitud del lado adyacente al ángulo.
107
Computación I Ing. Queca

El ángulo del resultado es -pi/2 a pi/2 radianes.

Para convertir grados en radianes, multiplique los grados por PI/180. Para convertir
radianes en grados, multiplique los radianes por 180/pi.

Nota Atn es la función trigonométrica inversa de Tan, que toma un ángulo y su


argumento y devuelve la razón de dos lados de un triángulo rectángulo. No confunda con la
cotangente, que es el inverso de la tangente (1/tangente).

Ejemplo de la función Atn

En este ejemplo se utiliza la función Atn para calcular el valor de pi.

Dim pi
pi = 4 * Atn(1) ' Calcula el valor de pi.

Cos (Función)

Devuelve un tipo Double que especifica el coseno de un ángulo.

Sintaxis

Cos(número)

El argumento número es un tipo Double o cualquier expresión numérica válida que expresa
un ángulo en radianes.

Comentarios

La función Cos toma un ángulo y devuelve la razón de dos lados de un triángulo


rectángulo. La razón es la longitud del lado adyacente al ángulo dividida por la longitud de
la hipotenusa.

El resultado está dentro del intervalo -1 a 1.

Para convertir grados en radianes, multiplique los grados por pi/180. Para convertir
radianes en grados, multiplique los radianes por 180/pi.

Ejemplo de la función Cos

En este ejemplo se utiliza la función Cos para devolver el coseno de un ángulo.

Dim MiÁngulo, MiSecante


MiÁngulo = 1.3 ' Define el ángulo en radianes.
MiSecante = 1 / Cos(MiÁngulo) ' Calcula la secante.

108
Computación I Ing. Queca

Exp (Función)

Devuelve un tipo Double que especifica e (la base de los logaritmos naturales) elevado a
una potencia.

Sintaxis

Exp(número)

El argumento número es un tipo Double o cualquier expresión numérica válida

Comentarios

Si el valor de número es mayor que 709.782712893, se produce un error. El valor de la


constante e es 2.718282 aproximadamente.

Nota La función Exp complementa la acción de la función Log y a veces se llama


antilogaritmo.

Ejemplo de la función Exp

En este ejemplo se utiliza la función Exp para que devuelva e elevado a una potencia.

Dim MiÁngulo, MiSenoH


' Define el ángulo en radianes.
MiÁngulo = 1.3
' Calcula el seno hiperbólico.
MiSenoH = (Exp(MiÁngulo) - Exp(-1 * MiÁngulo)) / 2

Int / Fix (Función)

Devuelve la parte entera de un número.

Sintaxis

Int(número)

Fix(número)

El argumento número es un tipo Double o cualquier expresión numérica válida. Si número


contiene Null, la función devolverá Null.

Comentarios

Las funciones Int y Fix eliminan la fracción de un número y devuelven el valor entero
resultante.

109
Computación I Ing. Queca

La diferencia entre Int y Fix es que si el número es negativo, Int devuelve el primer entero
negativo menor o igual a número, mientras que Fix devuelve el primer entero negativo
mayor o igual a número. Por ejemplo, Int convierte -8.4 en -9 y Fix convierte -8.4 a -8.

La función Fix(número) es equivalente a:

Sgn(número) * Int(Abs(número))

Ejemplo de las funciones Int y Fix

Este ejemplo muestra cómo las funciones Int y Fix devuelven la parte entera de los
números. En el caso de que el argumento sea un número negativo, la función Int devuelve
el primer número entero negativo menor o igual que el número; la función Fix devuelve el
primer entero negativo mayor o igual que el número.

Dim MiNúmero
MiNúmero = Int(99.8) ' Devuelve 99.
MiNúmero = Fix(99.2) ' Devuelve 99.

MiNúmero = Int(-99.8) ' Devuelve -100.


MiNúmero = Fix(-99.8) ' Devuelve -99.

MiNúmero = Int(-99.2) ' Devuelve -100.


MiNúmero = Fix(-99.2) ' Devuelve -99.

Log (Función)

Devuelve un tipo Double que especifica el logaritmo natural de un número.

Sintaxis

Log(número)

El argumento número es un tipo Double o cualquier expresión numérica válida mayor que
cero.

Comentarios

El logaritmo natural es el logaritmo en base e. El valor de la constante e es 2.718282


aproximadamente.

Puede calcular logaritmos en base-n para cualquier número x dividiendo el logaritmo


natural de x por el logaritmo natural de n de la siguiente manera:

Logn(x) = Log(x) / Log(n)

El ejemplo siguiente ilustra una función personalizada (Function) que calcula logaritmos
en base 10:

110
Computación I Ing. Queca

Static Function Log10(X)


Log10 = Log(X) / Log(10#)
End Function

Ejemplo de la función Log

En este ejemplo se utiliza la función Log para que devuelve el logaritmo natural de un
número.

Dim MiÁngulo, MiLog


MiÁngulo = 1.3 ' Define el ángulo en radianes.
MiLog = Log(MiÁngulo + Raíz(MiÁngulo * MiÁngulo + 1)) ' Calcula el seno hiperbólico
inverso.

Rnd (Función)

Devuelve un tipo Single que contiene un número aleatorio.

Sintaxis

Rnd[(número)]

El argumento opcional número es un tipo Single o cualquier expresión numérica válida.

Valores devueltos

Si número es Rnd genera


Menor que cero El mismo número todas las veces, utilizando número como valor de
semilla.

Mayor que cero El siguiente número aleatorio de la secuencia.

Igual a cero El número generado más recientemente.

No se especifica El siguiente número aleatorio de la secuencia.

Comentarios

La función Rnd devuelve un valor menor que 1 pero mayor o igual que cero.

El valor de número determina cómo la función Rnd genera un número aleatorio:

Para cualquier valor de semilla inicial se genera la misma secuencia de números. Esto es
debido a que cada llamada sucesiva a la función Rnd usará el número anterior como valor
de semilla para el siguiente número de la secuencia.

Antes de llamar a la función Rnd, utilice la instrucción Randomize sin argumento para
inicializar el generador de números aleatorios con un valor de semilla basado en el reloj del
sistema.

111
Computación I Ing. Queca

Para producir enteros aleatorios en un intervalo dado, use esta fórmula:

Int((Límite_superior - límite_inferior + 1) * Rnd + límite_inferior)

Aquí, límite_superior es el número mayor del intervalo y límite_inferior es el número


menor del intervalo.

Nota Para repetir secuencias de números aleatorios, llame a la función Rnd con un
argumento negativo antes de utilizar la función Randomize con un argumento numérico.
Al utilizar la instrucción Randomize con el mismo valor de número no se repite la
secuencia anterior.

Ejemplo de la función Rnd

En este ejemplo se utiliza la función Rnd para generar un valor entero aleatorio de 1 a 6.

Dim MiValor
MiValor = Int((6 * Rnd) + 1) ' Genera un valor aleatorio entre 1 y 6.

Sgn (Función)

Devuelve un tipo Variant (Integer) que indica el signo de un número.

Sintaxis

Sgn(número)

El argumento número puede ser cualquier expresión numérica válida.

Valores devueltos

Si número es Sgn devuelve


Mayor que 1
cero
Igual a cero 0
Menor que -1
cero

Comentarios

El signo del argumento número determina el valor devuelto por la función Sgn.

Ejemplo de la función Sgn

En este ejemplo se utiliza la función Sgn para determinar el signo de un número.


112
Computación I Ing. Queca

Dim MiVar1, MiVar2, MiVar3, MiSigno


MiVar1 = 12: MiVar2 = -2.4: MiVar3 = 0
MiSigno = Sgn(MiVar1) ' Devuelve 1.
MiSigno = Sgn(MiVar2) ' Devuelve -1.
MiSigno = Sgn(MiVar3) ' Devuelve 0.

Sin (Función)

Devuelve un tipo Double que especifica el seno de un ángulo.

Sintaxis

Sin(número)

El argumento número es un tipo Double o cualquier expresión numérica válida que expresa
un ángulo en radianes.

Comentarios

La función Sin toma un ángulo y devuelve la razón de dos lados de un triángulo rectángulo.
La razón es la longitud del lado opuesto al ángulo dividido por la longitud de la hipotenusa.

El resultado entra dentro del intervalo -1 a 1.

Para convertir grados en radianes, multiplique los grados por pi/180. Para convertir
radianes en grados, multiplique los radianes por 180/pi.

Ejemplo de la función Sin

En este ejemplo se utiliza la función Sin para devolver el signo de un ángulo.

Dim MiÁngulo, MiCosecante


MiÁngulo = 1.3 ' Define el ángulo en radianes.
MiCosecante = 1 / Sin(MiÁngulo) ' Calcula la cosecante.

Sqr (Función)

Devuelve un tipo Double que especifica la raíz cuadrada de un número.

Sintaxis

Sqr(número)

El número argumento es un tipo Double o cualquier expresión numérica válida mayor o


igual a cero.

Ejemplo de la función Sqr

En este ejemplo se utiliza la función Sqr para calcular la raíz cuadrada de un número.
113
Computación I Ing. Queca

Dim MiRaíz
MiRaíz = Sqr(4) ' Devuelve 2.
MiRaíz = Sqr(23) ' Devuelve 4.79583152331272.
MiRaíz = Sqr(0) ' Devuelve 0.
MiRaíz = Sqr(-4) ' Genera un error en tiempo de ejecución.

Tan (Función)

Devuelve un tipo Double que especifica la tangente de un ángulo.

Sintaxis

Tan(número)

El argumento número es un tipo Double o cualquier expresión numérica válida que expresa
un ángulo en radianes.

Comentarios

La función Tan toma un ángulo y devuelve la razón de dos lados de un triángulo


rectángulo. La razón es la longitud del lado opuesto al ángulo, dividida por la longitud del
lado adyacente al ángulo.

Para convertir grados en radianes, multiplique los grados por pi/180. Para convertir
radianes en grados, multiplique los radianes por 180/pi.

Ejemplo de la función Tan

En este ejemplo se utiliza la función Tan para devolver la tangente de un ángulo.

Dim MiÁngulo, MyCotangente


MiÁngulo = 1.3 ' Define el ángulo en radianes.
MyCotangente = 1 / Tan(MiÁngulo) ' Calcula la cotangente.

Funciones matemáticas derivadas

La siguiente es una lista de funciones matemáticas no intrínsecas que pueden derivarse de


funciones matemáticas intrínsecas:

Función Derivadas equivalentes

Secante Sec(X) = 1 / Cos(X)

Cosecante Cosec(X) = 1 / Sin(X)

Cotangente Cotan(X) = 1 / Tan(X)

Seno inverso Arcsin(X) = Atn(X / Sqr(-X * X + 1))

Coseno inverso Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)

114
Computación I Ing. Queca

Secante inversa Arcsec(X) = Atn(X / Sqr(X * X – 1)) + Sgn((X) – 1) * (2 * Atn(1))

Cosecante inversa Arccosec(X) = Atn(X / Sqr(X * X – 1)) + (Sgn(X) – 1) * (2 *


Atn(1))

Cotangente inversa Arccotan(X) = Atn(X) + 2 * Atn(1)

Seno hiperbólico HSin(X) = (Exp(X) – Exp(–X)) / 2

Coseno hiperbólico HCos(X) = (Exp(X) + Exp(–X)) / 2

Tangente hiperbólica HTan(X) = (Exp(X) – Exp(–X)) / (Exp(X) + Exp(–X))

Secante hiperbólica HSec(X) = 2 / (Exp(X) + Exp(–X))

Cosecante hiperbólica HCosec(X) = 2 / (Exp(X) – Exp(–X))

Cotangente hiperbólica HCotan(X) = (Exp(X) + Exp(–X)) / (Exp(X) – Exp(–X))

Seno hiperbólico inverso HArcsin(X) = Log(X + Sqr(X * X + 1))

Coseno hiperbólico inverso HArccos(X) = Log(X + Sqr(X * X – 1))

Tangente hiperbólica HArctan(X) = Log((1 + X) / (1 – X)) / 2


inversa

Secante hiperbólica inversa HArcsec(X) = Log((Sqr(–X * X + 1) + 1) / X)

Cosecante hiperbólica HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)


inversa

Cotangente hiperbólica HArccotan(X) = Log((X + 1) / (X – 1)) / 2


inversa

Logaritmo en base N LogN(X) = Log(X) / Log(N)

FUNCIONES y PROCEDIMIENTOS

Conceptos generales sobre funciones

Las aplicaciones informáticas que habitualmente se utilizan, incluso a nivel de informática


personal, suelen contener decenas y aún cientos de miles de líneas de código fuente. A
medida que los programas se van desarrollando y aumentan de tamaño, se convertirían
rápidamente en sistemas poco manejables si no fuera por la modularización, que es el
proceso consistente en dividir un programa muy grande en una serie de módulos mucho
más pequeños y manejables. A estos módulos se les suele denominar de distintas formas
(subprogramas, subrutinas, procedimientos, funciones, etc.) según los distintos lenguajes.
Sea cual sea la nomenclatura, la idea es sin embargo siempre la misma: dividir un programa
grande en un conjunto de subprogramas o funciones más pequeñas que son llamadas por el
programa principal; éstas a su vez llaman a otras funciones más específicas y así
sucesivamente.

La división de un programa en unidades más pequeñas o funciones presenta –entre otras–


las ventajas siguientes:

115
Computación I Ing. Queca

a. Modularización. Cada función tiene una misión muy concreta, de modo que nunca
tiene un número de líneas excesivo y siempre se mantiene dentro de un tamaño
manejable. Además, una misma función (por ejemplo, un producto de matrices, una
resolución de un sistema de ecuaciones lineales, ...) puede ser llamada muchas veces en
un mismo programa, e incluso puede ser reutilizada por otros programas. Cada función
puede ser desarrollada y comprobada por separado.

b. Ahorro de memoria y tiempo de desarrollo. En la medida en que una misma función es


utilizada muchas veces, el número total de líneas de código del programa disminuye, y
también lo hace la probabilidad de introducir errores en el programa.

c. Independencia de datos y ocultamiento de información. Una de las fuentes más


comunes de errores en los programas de computador son los efectos colaterales o
perturbaciones que se pueden producir entre distintas partes del programa. Es muy
frecuente que al hacer una modificación para añadir una funcionalidad o corregir un
error, se introduzcan nuevos errores en partes del programa que antes funcionaban
correctamente. Una función es capaz de mantener una gran independencia con el resto
del programa, manteniendo sus propios datos y definiendo muy claramente la interfaz o
comunicación con la función que la ha llamado y con las funciones a las que llama, y no
teniendo ninguna posibilidad de acceso a la información que no le compete.

En Visual Basic se distingue entre funciones y procedimientos Sub. En ocasiones se utiliza


la palabra genérica procedimiento para ambos. La fundamental diferencia entre un
procedimiento Sub y una función es que ésta última puede ser utilizada en una expresión
porque tiene un valor de retorno. El valor de retorno ocupa el lugar de la llamada a la
función donde esta aparece. Por ejemplo, si en una expresión aparece sin(x) se calcula el
seno de la variable x y el resultado es el valor de retorno que sustituye a sin(x) en la
expresión en la que aparecía. Por tanto, las funciones devuelven valores, a diferencia de los
procedimientos que no devuelven ningún valor, y por tanto no pueden ser utilizadas en
expresiones. Un procedimiento Sub es un segmento de código independiente del resto, que
una vez llamado por el programa, ejecuta un número determinado de instrucciones, sin
necesidad de devolver ningún valor al mismo (puede dar resultados modificando los
argumentos), mientras que una función siempre tendrá un valor de retorno.

Los nombres de los procedimientos tienen reglas de visibilidad parecidas a las de las
variables. Para llamar desde un formulario a un procedimiento Public definido en otro
formulario es necesario preceder su nombre por el del formulario en que está definido. Sin
embargo, si se desea llamar a un procedimiento definido en un módulo estándar (*.bas) no
es necesario precederlo del nombre del módulo más que si hay coincidencia de nombre con
otro procedimiento de otro módulo estándar.

Funciones (FUNCTION)

La sintaxis correspondiente a una función es la siguiente:


[Static] [Private] Function nombre ([ parámetros]) [As tipo]
[ sentencias]
[ nombre = expresion]
[Exit Function]
[ sentencias]

116
Computación I Ing. Queca

[ nombre = expresion]
End Function

Donde nombre es el nombre de la función. Será de un tipo u otro dependiendo del dato que
devuelva. Para especificar el tipo se utiliza la cláusula As Tipo (Integer, Long, Single,
Double, Currency, String o Variant). parámetros son los argumentos que son pasados
cuando se llama a la función. Visual Basic asigna el valor de cada argumento en la llamada
al parámetro que ocupa su misma posición. Si no se indica un tipo determinado los
argumentos son Variant por defecto. Como se verá en un apartado posterior, los
argumentos pueden ser pasados por referencia o por valor.

El nombre de la función, que es el valor de retorno, actúa como una variable dentro del
cuerpo de la función. El valor de la variable expresion es almacenado en el propio nombre
de la función. Si no se efectúa esta asignación, el resultado devuelto será 0 si la función es
numérica, nulo ("") si la función es de caracteres, o Empty si la función es Variant. Exit
Function permite salir de una función antes de que ésta finalice y devolver así el control
del programa a la sentencia inmediatamente a continuación de la que efectuó la llamada a la
función.

La sentencia End Function marca el final del código de la función y, al igual que la Exit
Function, devuelve el control del programa a la sentencia siguiente a la que efectuó la
llamada, pero lógicamente una vez finalizada la función.

La llamada a una función se hace de diversas formas. Por ejemplo, una de las más usuales
es la siguiente:

variable = nombre([argumentos])

donde argumentos son un lista de constantes, variables o expresiones separadas por comas
que son pasadas a la función. En principio, el número de argumentos debe ser igual al
número de parámetros de la función. Los tipos de los argumentos deben coincidir con los
tipos de sus correspondientes parámetros, de lo contrario puede haber fallos importantes en
la ejecución del programa. Esta regla no rige si los argumentos se pasan por valor
(concepto que se verá más adelante).

En cada llamada a una función hay que incluir los paréntesis, aunque ésta no tenga
argumentos.

El siguiente ejemplo corresponde a una función que devuelve como resultado la raíz
cuadrada de un número N:

Function Raiz (N As Double) As Double


If N < 0 Then
Exit Function
Else
Raiz = Sqr(N)
End Function

La llamada a esta función se hace de la forma siguiente:


Cuadrada = Raiz(Num)

117
Computación I Ing. Queca

A diferencia de C y C++ en Visual Basic no es necesario devolver explícitamente el valor


de retorno, pues el nombre de la función ya contiene el valor que se desea devolver.
Tampoco es necesario declarar las funciones antes de llamarlas.

Procedimientos SUB

La sintaxis que define un procedimiento Sub es la siguiente:


[Static] [Private] Sub nombre [( parámetros)]
[ sentencias]
[Exit Sub]
[ sentencias]
End Sub

La explicación es análoga a la dada para funciones.

La llamada a un procedimiento Sub puede ser de alguna de las dos formas siguientes:
Call nombre[(argumentos)]

o bien, sin pasar los argumentos entre paréntesis, sino poniéndolos a continuación del
nombre simplemente separados por comas:
nombre [argumentos]

A diferencia de una función, un procedimiento Sub no puede ser utilizado en una expresión
pues no devuelve ningún valor. Por supuesto una función puede ser llamada al modo de un
procedimiento Sub, pero en esta caso no se hace nada con el valor devuelto por la función.
El siguiente ejemplo corresponde a un procedimiento Sub que devuelve una variable F que
es la raíz cuadrada de un número N.

Sub Raiz (N As Double, F As Double)


If N < 0 Then
Exit Sub 'Se mandaría un mensaje de error
Else
F = Sqr(N)
End If
End Sub

La llamada a este procedimiento Sub puede ser de cualquiera de las dos formas siguientes:

Raiz N, F
Call Raiz(N, F)

En el ejemplo anterior, el resultado obtenido al extraer la raíz cuadrada al número N se


devuelve en la variable F pasada como argumento, debido a que como se ha mencionado
anteriormente, un procedimiento Sub no puede ser utilizado en una expresión.

Procedimientos recursivos

Se dice que una función (Function) es recursiva o que un procedimiento Sub es recursivo
si se llaman a sí mismos.

118
Computación I Ing. Queca

A continuación se presenta una ejemplo de una función que calcula el factorial de un


número programada de forma recursiva.
Function Factorial (N As Integer) As Long
If N = 0 Then
Factorial = 1 'Condición de final
Else
Factorial = N * Factorial (N - 1)
End If
End Function

En este ejemplo, si la variable N que se le pasa a la función vale 0, significará que se ha


llegado al final del proceso, y por tanto se le asigna el valor 1 al valor del factorial
(recordar que 0! = 1). Si es distinto de 0, la función se llama a ella misma, pero variando el
argumento a (N-1), hasta llegar al punto en el que N-1=0, finalizándose el proceso.

SENTENCIAS DE CONTROL

Las sentencias de control, denominadas también estructuras de control, permiten tomar


decisiones y realizar un proceso repetidas veces. Son los denominados bifurcaciones y
bucles. Este tipo de estructuras son comunes en cuanto a concepto en la mayoría de los
lenguajes de programación, aunque su sintaxis puede variar de un lenguaje de
programación a otro. Se trata de unas estructuras muy importantes ya que son las
encargadas de controlar el flujo de un programa según los requerimientos del mismo.
Visual Basic 6.0 dispone de las siguientes estructuras de control:

If ... Then ... Else


Select Case
For ... Next
For Each Next
Do ... Loop
While Wend

Sentencia IF ... THEN ... ELSE ...

Esta estructura permite ejecutar condicionalmente una o más sentencias y puede escribirse
de dos formas. La primera ocupa sólo una línea y tiene la forma siguiente:

If condición Then sentencia1 [Else sentencia2]

La segunda es más general y se muestra a continuación:

If condicion Then
sentencia(s)
[Else
sentencia(s)]
End If

119
Computación I Ing. Queca

Si condicion es True (verdadera), se ejecutan las sentencias que están a continuación de


Then, y si condicion es False (falsa), se ejecutan las sentencias que están a continuación
de Else, si esta cláusula ha sido especificada (pues es opcional). Para indicar que se quiere
ejecutar uno de varios bloques de sentencias dependientes cada uno de ellos de una
condición, la estructura adecuada es la siguiente:

If condicion1 Then
sentencias1
ElseIf condicion2 Then
sentencias2
Else
sentencia-n
End If

Si se cumple la condicion1 se ejecutan las sentencias1, y si no se cumple, se examinan


secuencialmente las condiciones siguientes hasta Else, ejecutándose las sentencias
correspondientes al primer ElseIf cuya condición se cumpla. Si todas las condiciones son
falsas, se ejecutan las sentencias-n correspondientes a Else, que es la opción por defecto. La
Figura 3.2 presenta esquemáticamente ambas formas de representar estas sentencias:

Figura Bifurcaciones If e If...Else.


Por ejemplo,

Numero = 53 ’ Se inicializa la variable.


If Numero < 10 Then
Digitos = 1
Else If Numero < 100 Then
' En este caso la condición se cumple (True) luego se ejecuta lo siguiente.
Digitos = 2
Else 'En el caso en que no se cumplan los dos anteriores se asigna 3
Digitos = 3
End If
End If

120
Computación I Ing. Queca

Sentencia SELECT CASE

Esta sentencia permite ejecutar una de entre varias acciones en función del valor de una
expresión.

Es una alternativa a If ... Then ... ElseIf cuando se compara la misma expresión con
diferentes valores. Su forma general es la siguiente:
Select Case expresion
Case etiq1
[ sentencias1]
Case etiq2
[ sentencias2]
Case Else
sentenciasn
End Select
Donde, expresion es una expresión numérica o alfanumérica, y etiq1, etiq2, ... pueden
adoptar las formas siguientes:

1. expresion
2. expresion To expresion
3. Is operador-de-relación expresion
4. combinación de las anteriores separadas por comas

Por ejemplo,

Numero = 8 Se inicializan las variable.


Select Case Numero Se va a evaluar la variable Numero.
Case 1 To 5 ' Numero está entre 1 y 5.
Resultado = "Se encuentra entre 1 y 5"
' Lo siguiente se ejecuta si es True la expresión.
Case 6, 7, 8 ' Numero es uno de los tres valores.
Resultado = "Se encuentra entre 6 y 8"
Case Is = 9 , Is = 10 ' Numero es 9 ó 10.
Resultado = "El valor es 9 o 10"
Case Else ' Resto de valores.
Resultado = "El número no se encuentra entre 1 y 10"
End Select

Cuando se utiliza la forma expresion To expresion, el valor más pequeño debe aparecer en
primer lugar.

Cuando se ejecuta una sentencia Select Case, Visual Basic evalúa la expresion y el control
del programa se transfiere a la sentencia cuya etiqueta tenga el mismo valor que la
expresión evaluada, ejecutando a continuación el correspondiente bloque de sentencias. Si
no existe un valor igual a la expresion entonces se ejecutan las sentencias a continuación de
Case Else.

121
Computación I Ing. Queca

Sentencia FOR ... NEXT

La sentencia For da lugar a un lazo o bucle, y permite ejecutar un conjunto de sentencias


cierto número de veces. Su forma general es:
For variable = expresion1 To expresion2 [Step expresion3]
[sentencias]
Exit For
[sentencias]
Next [variable]

For variable = expresión1 To expresion2

Sentencias

…………. Exit /

variable

Cuando se ejecuta una sentencia For, primero se asigna el valor de la expresion1 a la


variable y se comprueba si su valor es mayor o menor que la expresion2. En caso de ser
menor se ejecutan las sentencias, y en caso de ser mayor el control del programa salta a las
líneas a continuación de Next. Todo esto sucede en caso de ser la expresion3 positiva. En
caso contrario se ejecutarán las sentencias cuando la variable sea mayor que expresion2.
Una vez ejecutadas las sentencias, la variable se incrementa en el valor de la expresion3, o
en 1 si Step no se especifica, volviéndose a efectuar la comparación entre la variable y la
expresion2, y así sucesivamente.

La sentencia Exit For es opcional y permite salir de un bucle For ... Next antes de que éste
finalice. Por ejemplo,

MyString="Informática "
For Words = 3 To 1 Step -1 ' 3 veces decrementando de 1 en 1.
For Chars = Words To Words+4 '5 veces.
MyString = MyString & Chars ' Se añade el número Chars al string.
Next Chars ' Se incrementa el contador
MyString = MyString & " " ' Se añade un espacio.
Next Words
'El valor de MyString es: Informática 34567 23456 12345

122
Computación I Ing. Queca

Sentencia FOR EACH ... NEXT

Esta construcción es similar al bucle For, con la diferencia de que la variable que controla
la repetición del bucle no toma valores entre un mínimo y un máximo, sino a partir de los
elementos de un array (o de una colección de objetos). La forma general es la siguiente:
For Each variable In grupo
[ sentencias]
Next variable

Con arrays variable tiene que ser de tipo Variant. Con colecciones variables puede ser
Variant o una variable de tipo Object. Esta construcción es muy útil cuando no se sabe el
número de elementos que tiene el array o la colección de objetos.

Sentencia DO ... LOOP

Un Loop (bucle) repite la ejecución de un conjunto de sentencias mientras una condición


dada sea cierta, o hasta que una condición dada sea cierta. La condición puede ser
verificada antes o después de ejecutarse el conjunto de sentencias. Sus posibles formas son
las siguientes: Do

Formato 1:
Do [{While/Until} condicion] sentencias
[ sentencias]
[Exit Do] ………. Exit
[ sentencias]
Loop
sentencias
Formato 2:
Loo
Do hasta
[ sentencias]
[Exit Do]
[ sentencias]
Loop [{While/Until} condicion]

La sentencia opcional Exit Do permite salir de una bucle Do ... Loop antes de que finalice
éste. Por ejemplo,

Check = True Se inicializan las variables.


Counts = 0
Do ' Empieza sin comprobar ninguna condición.
Do While Counts < 20 ' Bucle que acaba si Counts>=20 o con Exit Do.
Counts = Counts + 1 ' Se incrementa Counts.
If Counts = 10 Then ' Si Counts es 10.
Check = False ' Se asigna a Check el valor False.
Exit Do ' Se acaba el segundo Do.
End If
Loop
123
Computación I Ing. Queca

Loop Until Check = False ' Salir del "loop" si Check es False.

En el ejemplo mostrado, se sale de los bucles siempre con Counts = 10. Es necesario fijarse
que si se inicializa Counts con un número mayor o igual a 10 se entraría en un bucle
infinito (el primer bucle acabaría con Counts = 20 pero el segundo no finalizaría nunca,
bloqueándose el programa y a veces el ordenador).

Sentencia WHILE ... WEND

Esta sentencia es otra forma de generar bucles que se recorren mientras se cumpla la
condición inicial. Su estructura es la siguiente:
While condicion
[ sentencias]
Wend

Mientras

Sentencias

………..

Sentencias

Por ejemplo,

Counts = 0 Se inicializa la variable.


While Counts < 20 Se comprueba el valor de Counts.
Counts = Counts + 1 Se incrementa el valor de Counts.
Wend Se acaba el bucle cuando Counts > 19.

En cualquier caso se recuerda que la mejor forma de mirar y aprender el funcionamiento de


todas estas sentencias es mediante el uso del Help de Visual Basic. Ofrece una explicación
de cada comando con ejemplos de utilización.

124
Computación I Ing. Queca

ARCHIVOS Y ENTRADA/ SALIDA DE DATOS

Describiremos brevemente dos de las muchas funciones que tiene Visual Basic, que
permitirá la resolución de algunos ejemplos.

Función INPUTBOX

Muestra un mensaje en un cuadro de diálogo, espera que el usuario escriba un texto o haga
clic en un botón y devuelve un tipo String con el contenido del cuadro de texto.

Sintaxis

InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context])

La sintaxis de la función InputBox consta de estos argumentos con nombre:

Parte Descripción

prompt Requerido. Expresión de cadena que se muestra como mensaje en el cuadro de


diálogo. La longitud máxima de prompt es de aproximadamente 1024 caracteres,
según el ancho de los caracteres utilizados. Si prompt consta de más de una línea,
puede separarlos utilizando un carácter de retorno de carro (Chr(13)), un carácter
de avance de línea (Chr(10)) o una combinación de los caracteres de retorno de
carro-avance de línea (Chr(13) y Chr(10)) entre cada línea y la siguiente.

title Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de
diálogo. Si omite title, en la barra de título se coloca el nombre de la aplicación.

default Opcional. Expresión de cadena que se muestra en el cuadro de texto como respuesta
predeterminada cuando no se suministra una cadena. Si omite default, se muestra el
cuadro de texto vacío.

xpos Opcional. Expresión numérica que especifica, en twips, la distancia en sentido


horizontal entre el borde izquierdo del cuadro de diálogo y el borde izquierdo de la
pantalla. Si se omite xpos, el cuadro de diálogo se centra horizontalmente.

ypos Opcional. Expresión numérica que especifica, en twips, la distancia en sentido


vertical entre el borde superior del cuadro de diálogo y el borde superior de la
pantalla. Si se omite ypos, el cuadro de diálogo se coloca a aproximadamente un
tercio de la altura de la pantalla, desde el borde superior de la misma.

helpfile Opcional. Expresión de cadena que identifica el archivo de Ayuda que se utilizará
para proporcionar ayuda interactiva para el cuadro de diálogo. Si se especifica
helpfile, también deberá especificarse context.

context Opcional. Expresión numérica que es el número de contexto de Ayuda asignado por
el autor al tema de Ayuda correspondiente. Si se especifica context, también deberá
especificarse helpfile.

Ejemplo de la función InputBox

En este ejemplo se muestran distintas maneras de utilizar la función InputBox para indicar
al usuario que debe introducir un valor. Si se omiten las posiciones x e y, el diálogo se
125
Computación I Ing. Queca

centra automáticamente según los ejes respectivos. La variable MyValue contiene el valor
introducido por el usuario, si éste hace clic sobre Aceptar o presiona ENTER. Si el usuario
hace clic sobre Cancelar, se devuelve una cadena de caracteres de longitud cero.

Dim Mensaje, Título, ValorPred, MiValor


Mensaje = " Introduzca un número del 1 a 3" ' Establece el mensaje.
Título = "Demostración de InputBox" ' Establece el título.
ValorPred = "1" ' Establece el valor predeterminado.
MiValor = InputBox(Mensaje, Título, ValorPred) ' Muestra el mensaje, el título, y el valor
predeterminado.
' Muestra el mensaje, el título y el valor predeterminado.
MiValor = InputBox(Mensaje, Título, , , , "DEMO.HLP", 10)

' Se muestra el diálogo en la posición 100, 100.


MiValor = InputBox(Mensaje, Título, ValorPred, 100, 100)

Función MsgBOX

Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón
y devuelve un tipo Integer correspondiente al botón elegido por el usuario.

Sintaxis

MsgBox(prompt[, buttons][, title][, helpfile, context])

La sintaxis de la función MsgBox consta de estos argumentos con nombre:

Parte Descripción

prompt Requerido. Expresión de cadena que representa el prompt en el cuadro de


diálogo. La longitud máxima de prompt es de aproximadamente 1024
caracteres, según el ancho de los caracteres utilizados. Si prompt consta de
más de una línea, puede separarlos utilizando un carácter de retorno de
carro (Chr(13)) o un carácter de avance de línea (Chr(10)), o una
combinación de caracteres de retorno de carro – avance de línea (Chr(13) y
Chr(10)) entre cada línea y la siguiente.

buttons Opcional. Expresión numérica que corresponde a la suma de los valores


que especifican el número y el tipo de los botones que se pretenden
mostrar, el estilo de icono que se va a utilizar, la identidad del botón
predeterminado y la modalidad del cuadro de mensajes. Si se omite este
argumento, el valor predeterminado para buttons es 0.

title Opcional. Expresión de cadena que se muestra en la barra de título del


cuadro de diálogo. Si se omite title, en la barra de título se coloca el
nombre de la aplicación.

helpfile Opcional. Expresión de cadena que identifica el archivo de Ayuda que se


utiliza para proporcionar ayuda interactiva en el cuadro de diálogo. Si se
especifica helpfile, también se debe especificar context.

context Opcional. Expresión numérica que es igual al número de contexto de

126
Computación I Ing. Queca

Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se


especifica context, también se debe especificar helpfile.

Valores

El argumento buttons tiene estos valores:

Constante Valor Descripción

VbOKOnly 0 Muestra solamente el botón Aceptar.

VbOKCancel 1 Muestra los botones Aceptar y Cancelar.

VbAbortRetryIgnore 2 Muestra los botones Anular, Reintentar e


Ignorar.

VbYesNoCancel 3 Muestra los botones Sí, No y Cancelar.

VbYesNo 4 Muestra los botones Sí y No.

VbRetryCancel 5 Muestra los botones Reintentar y Cancelar.

VbCritical 16 Muestra el icono de mensaje crítico.

VbQuestion 32 Muestra el icono de pregunta de advertencia.

VbExclamation 48 Muestra el icono de mensaje de advertencia.

VbInformation 64 Muestra el icono de mensaje de información.

VbDefaultButton1 0 El primer botón es el predeterminado.

VbDefaultButton2 256 El segundo botón es el predeterminado.

VbDefaultButton3 512 El tercer botón es el predeterminado.

VbDefaultButton4 768 El cuarto botón es el predeterminado.

VbApplicationModal 0 Aplicación modal; el usuario debe responder al


cuadro de mensajes antes de poder seguir
trabajando en la aplicación actual.

VbSystemModal 4096 Sistema modal; se suspenden todas las aplicaciones


hasta que el usuario responda al cuadro de
mensajes.

VbMsgBoxHelpButton 16384 Agrega el botón Ayuda al cuadro de mensaje.

VbMsgBoxSetForeground 65536 Especifica la ventana del cuadro de mensaje como


la ventana de primer plano.

VbMsgBoxRight 524288 El texto se alínea a la derecha.

VbMsgBoxRtlReading 1048576 Especifica que el texto debe aparecer para ser leído
de derecha a izquierda en sistemas hebreo y árabe.

127
Computación I Ing. Queca

El primer grupo de valores (0 a 5) describe el número y el tipo de los botones mostrados en


el cuadro de diálogo; el segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer
grupo (0, 256, 512) determina el botón predeterminado y el cuarto grupo (0, 4096)
determina la modalidad del cuadro de mensajes. Cuando se suman números para obtener el
valor final del argumento buttons, se utiliza solamente un número de cada grupo.

Nota Estas constantes las especifica Visual Basic for Applications. Por tanto, el nombre
de las mismas puede utilizarse en cualquier lugar del código en vez de sus valores reales.

Valores devueltos

Constante Valor Descripción

vbOK 1 Aceptar

vbCancel 2 Cancelar

vbAbort 3 Anular

vbRetry 4 Reintentar

vbIgnore 5 Ignorar

vbYes 6 Sí

vbNo 7 No

Ejemplo de la función MsgBox

En este ejemplo se utiliza la función MsgBox para mostrar un mensaje de error crítico en
un cuadro de diálogo con botones Sí y No. El botón No se considera la respuesta
predeterminada. El valor devuelto por la función MsgBox depende del botón elegido por el
usuario. En este ejemplo, se supone que DEMO.HLP es un archivo de Ayuda que contiene un
tema con un número de contexto igual a 1000.

Dim Mensaje, Estilo, Título, Ayuda, Ctxt, Respuesta, MiCadena


Mensaje = "¿Desea continuar?" ' Define el mensaje.
Estilo = vbYesNo + vbCritical + vbDefaultButton2 ' Define los botones.
Título = "Demostración de MsgBox" ' Define el título.
Ayuda = "DEMO.HLP" ' Define el archivo de ayuda.
Ctxt = 1000 ' Define el tema el contexto
Respuesta = MsgBox(Mensaje, Estilo, Título, Ayuda, Ctxt) ' Muestra el mensaje.
If Respuesta = vbYes Then ' El usuario eligió el botón Sí.
MiCadena = "Sí" ' Ejecuta una acción.
Else ' El usuario eligió el botón No.
MiCadena = "No" ' Ejecuta una acción.
End If

También se verá en este capítulo cómo obtener resultados alfanuméricos y gráficos por la
impresora.
128
Computación I Ing. Queca

Método PRINT

Este método permite escribir texto en formularios, cajas pictureBox y en un objeto llamado
Printer .

Características generales

La forma general del método Print se explica mejor con algunos ejemplos como los
siguientes:
pctBox.Print "La distancia es: "; Dist; " km."
pctBox.Print 123; 456; "San"; "Sebastián"
pctBox.Print 123, 456, "San", "Sebastián"
pctBox.Print -123; -456

cuyo resultado se puede ver en la Figura 7.3 (puede variar dependiendo del tipo y tamaño
de las letras):

De estos ejemplos se pueden ya sacar algunas conclusiones:

a) El método Print recibe como datos una lista de variables y/o cadenas de caracteres.
Las cadenas son impresas y las variables se sustituyen por su valor.

b) Hay dos tipos básicos de separadores para los elementos de la lista. El carácter
punto y coma (;) hace que se escriba inmediatamente a continuación de lo anterior.
La coma (,) hace que se vaya al comienzo de la siguiente área de salida. Con letra
de paso constante como la Courier las áreas de salida empiezan cada 14 caracteres,
es decir en las columnas 1, 15, 29, etc. Con letras de paso variable esto se hace sólo
de modo aproximado.

c) Las constantes numéricas positivas van precedidas por un espacio en blanco y


separadas entre sí por otro espacio en blanco. Si son negativas el segundo espacio es
ocupado por el signo menos (-).

d) El tipo y tamaño de letra que se utiliza depende de la propiedad Font del


formulario, objeto PictureBox u objeto Printer en que se esté escribiendo.

Existen otros separadores tales como Tab(n) y Spc(n). El primero de ellos lleva el punto de
inserción de texto a la columna n, mientras que el segundo deja n espacios en blanco antes
de seguir escribiendo. Tab sin argumento equivale a la coma (,). Estos espaciadores se
utilizan en combinación con el punto y coma (;), para separarlos de los demás argumentos.

Por defecto, la salida de cada método Print se escribe en una nueva línea, pero si se coloca
un punto y coma al final de un método Print, el resultado del siguiente Print se escribe en
la misma línea.

Puede controlarse el lugar del formulario o control donde se imprime la salida del método
Print. Esta salida se imprime en el lugar indicado por las propiedades CurrentX y
CurrentY del formulario o control donde se imprime. Cambiando estas propiedades se
modifica el lugar de impresión, que por defecto es la esquina superior izquierda. Existen
129
Computación I Ing. Queca

unas funciones llamadas TextWidth(string) y TextHeight(string) que devuelven la anchura


y la altura de una cadena de caracteres pasada como argumento. Estas funciones pueden
ayudar a calcular los valores más adecuados para las propiedades CurrentX y CurrentY.

La función str(valor_numérico) convierte un número en cadena de caracteres para facilitar


su impresión. En realidad, es lo que Visual Basic 6.0 ha hecho de modo implícito en los
ejemplos anteriores. En versiones anteriores del programa era necesario que el usuario
realizase la conversión de modo explícito.

Función FORMAT

La función Format realiza las conversiones necesarias para que ciertos datos numéricos o
de otro tipo puedan ser impresos con Print. Como se ha visto, en el caso de las variables
numéricas esto no es imprescindible, pero la función Format permite controlar el número
de espacios, el número de decimales, etc. En el caso de su aplicación a objetos tipo fecha
(date) y hora (time) la aplicación de Format es imprescindible, pues Print no los escribe
directamente. La forma general de esta función es la siguiente:
Format(expresion, formato)

donde expresion es una variable o expresión y formato -que es opcional- describe el


formato deseado para el resultado. El valor de retorno es una cadena de caracteres
directamente utilizable en Print. Para fechas existen formatos predefinidos tales como
“General Date”, “Long Date”, “Medium Date” y “Short Date”; para la hora los formatos
predefinidos son “Long Time”, “Medium Time” y “Short Time”. Además existe la
posibilidad de que el usuario defina sus propios formatos (ver User-Defined Date/Time
Formats (Format Function), en el Help del programa). El usuario también puede definir
sus propios formatos numéricos y de cadenas de caracteres. A diferencia de la función Str,
la función Format no deja espacio en blanco para el signo de los números positivos.

Utilización de Impresoras

Visual Basic permite obtener por la impresora gráficos y texto similares a los que se
pueden obtener por la pantalla, aunque con algunas diferencias de cierta importancia.
Existen dos formas de imprimir: la primera mediante el método PrintForm, y la segunda
utilizando el objeto Printer, que es un objeto similar al objeto PictureBox. Ambos métodos
tienen puntos fuertes y débiles que se comentarán a continuación.

Método PrintForm

El método PrintForm permite imprimir un formulario con sus controles y con los
resultados de los métodos gráficos (PSet, Line y Circle) y del método Print. Para ello la
propiedad AutoRedraw del formulario tiene que estar puesta a True, y los métodos citados
tienen que estar llamados desde un evento distinto del Paint. Lo único que no se dibuja del
formulario es la barra de título.

130
Computación I Ing. Queca

Este sistema de impresión es muy sencillo de utilizar, pero tiene el inconveniente de que el
resultado se imprime con la misma resolución de la pantalla (entre 50 y 100 puntos por
pulgada), no aprovechando por tanto la mayor resolución que suelen tener las impresoras
(300, 600 ó más puntos por pulgada).

Objeto Printer

Este segundo sistema tiene la ventaja de que permite aprovechar plenamente la resolución
de la impresora, pero no permite dibujar controles sino sólo los métodos gráficos
habituales (PSet, Line y Circle), el método Print y un método no visto hasta ahora que es
PaintPicture.

Para Visual Basic la impresora es un objeto gráfico más, similar a los formularios y a las
cajas gráficas PictureBox. Como tal objeto gráfico tiene sus propiedades generales
(DrawStyle, BackColor, ForeColor, etc.), además de otras propiedades específicas de la
impresora, como DeviceName, DriverName, Orientation, Copies, etc. Para más
información puede utilizarse el Help, buscando Printer object. En principio se utiliza la
impresora por defecto del PC, pero Visual Basic mantiene una Printers Collection, que es
algo así como un array de impresoras disponibles. A partir de esta Printers Collection se
puede cambiar a la impresora que se desee.

El objeto Printer tiene un método llamado EndDoc para enviar realmente a la impresora el
resultado de los métodos gráficos. El método PaintPicture permite incorporar el contenido
de ficheros gráficos a un formulario, PictureBox o Printer. Su forma general es:

object.PaintPicture pictProp X, Y, Width, Height

donde pictProp indica el gráfico (coincide con la propiedad Picture de PictureBox), X e Y


indican las coordenadas de inserción y los dos últimos parámetros las dimensiones
(opcionales).

FICHEROS

Tipos de Ficheros

Tanto en Windows como en Visual Basic 6.0 existen, principalmente, dos tipos de
archivos:

• Ficheros ASCII o ficheros de texto. Contienen caracteres codificados según el


código ASCII y se pueden leer con cualquier editor de texto como Notepad. Suelen
tener extensión *.txt o *.bat, pero también otras como *.m para los programas de
Matlab, *.c para los ficheros fuente de C, *.cpp para los ficheros fuente de C++ y
*.java para los de Java.

• Ficheros binarios: Son ficheros imagen de los datos o programas tal como están en
la memoria del ordenador. No son legibles directamente por el usuario. Tienen la

131
Computación I Ing. Queca

ventaja de que ocupan menos espacio en disco y que no se pierde tiempo y precisión
cambiándolos a formato ASCII al escribirlos y al leerlos en el disco.

Con Visual Basic 6.0 se pueden leer tanto ficheros ASCII como ficheros binarios. Además
el acceso a un fichero puede ser de tres formas principales.

I. Acceso secuencial. Se leen y escriben los datos como si se tratara de un libro:


siempre a continuación del anterior y sin posibilidad de volver atrás o saltar datos.
Si se quiere acceder a un dato que está hacia la mitad de un fichero, habrá que pasar
primero por todos los datos anteriores. Los ficheros de texto tienen acceso
secuencial.

II. Acceso aleatorio (random): Permiten acceder directamente a un dato sin tener que
pasar por todos los demás, y pueden acceder a la información en cualquier orden.
Tienen la limitación de que los datos están almacenados en unas unidades o bloques
que se llaman registros, y que todos los registros que se almacenan en un fichero
deben ser del mismo tamaño. Los ficheros de acceso aleatorio son ficheros binarios.

III. Acceso binario. Son como los de acceso aleatorio, pero el acceso no se hace por
registros sino por bytes.

Antes de poder leer o escribir en un fichero hay que abrirlo por medio de la sentencia Open.
En esta sentencia hay que especificar qué tipo de acceso se desea tener, distinguiendo
también si es para lectura (input), escritura (output) o escritura añadida (append).

LECTURA Y ESCRITURA EN FICHEROS SECUENCIALES

Apertura y cierre de ficheros

Para poder leer o escribir en un fichero antes debe ser abierto con la sentencia Open, cuya
forma general es la siguiente:

Open filename For modo As # fileNo

donde:

filename es el nombre del fichero a abrir. Será una variable string o un nombre entre
dobles comillas (“ ”).
Modo Para acceso secuencial existen tres posibilidades: Input para leer, Output
para escribir al comienzo de un fichero y Append para escribir al final de un
fichero ya existente. Si se intenta abrir en modo Input un fichero que no
existe, se produce un error. Si se abre para escritura en modo Output un
fichero que no existe se crea, y si ya existía se borra su contenido y se
comienza a escribir desde el principio. El modo Append es similar al modo
Output, pero respeta siempre el contenido previo del fichero escribiendo a
continuación de lo último que haya sido escrito anteriormente.
fileNo es un número entero (o una variable con un valor entero) que se asigna a
cada fichero que se abre. En todas las operaciones sucesivas de lectura y/o
escritura se hará referencia a este fichero por medio de este número. No

132
Computación I Ing. Queca

puede haber dos ficheros abiertos con el mismo número. Visual Basic
dispone de una función llamada FreeFile que devuelve un número no
ocupado por ningún fichero.

A continuación puede verse un ejemplo de fichero abierto para lectura:


Open "C:\usuarios\PRUEBA1.txt" For Input as #1

Después de terminar de leer o escribir en un fichero hay que cerrarlo. Para ello, se utilizara
el comando Close, que tiene la siguiente forma:
Close # fileNo

donde el fileNo es el número que se la había asignado al abrirlo con la instrucción Open.

Lectura y escritura de datos

Sentencia Input

Existen varias formas de leer en un fichero de acceso secuencial. Por ejemplo, para leer el
valor de una o más variables se utiliza la sentencia Input:

Input # fileNo, varName1, varName2, varName3, ...

donde el fileNo es el número asignado al archivo al abrirlo y varName1, varName2, ... son
los nombres de las variables donde se guardarán los valores leídos en el fichero. Debe haber
una correspondencia entre el orden y los tipos de las variables en la lista, con los datos
almacenados en el fichero. No se pueden leer directamente vectores, matrices o estructuras.
Si los datos del disco han de ser escritos por el propio programa, conviene utilizar la
sentencia write (mejor que Print) para garantizar que los valores están convenientemente
separados. La sentencia Write se verá posteriormente.

Función Line Input y función Input

La función Line Input # lee una línea completa del archivo y devuelve su contenido como
valor de retorno. Su forma general es:

varString = Line Input #fileNo

Conviene recordar que en los ficheros de texto se suele utilizar el carácter return (o Intro)
para delimitar las distintas líneas. Este es el carácter ASCII nº 13, que por no ser un carácter
imprimible se representa en Visual Basic como chr(13). En muchas ocasiones (como
herencia del MS-DOS) se utiliza como delimitador de líneas una combinación de los
caracteres return y linefeed, representada en Visual Basic como chr(13)+chr(10). En la
cadena de caracteres que devuelve Line no se incluye el carácter de terminación de la línea.

Para leer todas las líneas de un fichero se utiliza un bucle for o while. Visual Basic
dispone de la función EOF (End of File) que devuelve True cuando se ha llegado al final
del fichero. Véase el siguiente ejemplo:

133
Computación I Ing. Queca

Do While Not EOF(fileNo)


miLinea = Line Input #fileNo
...
Loop

También se puede utilizar la función Input, que tiene la siguiente forma general:

varString = Input(nchars, #fileNo)

donde nchars es el número de caracteres que se quieren leer y varString es la variable


donde se almacenan los caracteres leídos por la función. Esta función lee y devuelve todos
los caracteres que encuentra, incluidos los intro y linefeed. Para ayudar a utilizar esta
función existe la función LOF (fileNo), que devuelve el nº total de caracteres del fichero.
Por ejemplo, para leer todo el contenido de un fichero y escribirlo en una caja de texto se
puede utilizar:

txtCaja.text = Input(LOF(fileNo), #fileNo)

Función Print #

Para escribir el valor de unas ciertas variables en un fichero previamente abierto en modo
Output o Append se utiliza la instrucción Print #, que tiene la siguiente forma:

Print #fileNo, var1, var2, var2, ...

donde var1, var2,... pueden ser variables, expresiones que dan un resultado numérico o
alfanumérico, o cadenas de caracteres entre dobles comillas, tales como “El valor de x
es...”.

Considérese el siguiente ejemplo:

Print #1, "El valor de la variable I es: ", I

donde I es una variable con un cierto valor que se escribe a continuación de la cadena. Las
reglas para determinar el formato de la función Print # son las mismas que las del método
Print visto previamente.

Función Write #

A diferencia de Print #, la función Write # introduce comas entre las variables y/o cadenas
de caracteres de la lista, además encierra entre dobles comillas las cadenas de caracteres
antes de escribirlas en el fichero. La función Write # introduce un carácter newline, esto es,
un return o un return+linefeed después del último carácter de las lista de variables. Los
ficheros escritos con Write # son siempre legibles con Input #, cosa que no se puede decir
de Print #. Véase el siguiente ejemplo:
Se abre el fichero para escritura
Open "C:\Temp\TestFile.txt" For Output As #1
Write #1, "Hello World", 234 Datos separados por comas
MyBool = False: MyDate = #2/12/1969# Valores de tipo boolean y Date
Write #1, MyBool; " is a Boolean value"
Write #1, MyDate; " is a date"
Close #1 Se cierra el fichero
134
Computación I Ing. Queca

El fichero TestFile.txt guardado en C:\Temp contendrá:


"Hello World",234
#FALSE#," is a Boolean value"
#1969-02-12#," is a date"

FICHEROS DE ACCESO ALEATORIO

Los ficheros de acceso aleatorio se caracterizan porque en ellos se puede leer en cualquier
orden. Los ficheros de acceso aleatorio son ficheros binarios. Cuando se abre un fichero se
debe escribir For Random, al especificar el modo de apertura (si el fichero se abre For
Binary el acceso es similar, pero no por registros sino por bytes; este modo es mucho
menos utilizado).

Abrir y cerrar archivos de acceso aleatorio


Estos archivos se abren también con la sentencia Open, pero con modo Random. Al final
se añade la sentencia Len=longitudRegistro, en bytes. Véase el siguiente ejemplo:

fileNo = FreeFile
size = Len(unObjeto)
Open filename For Random as #fileNo Len = size

donde filename es una variable que almacena el nombre del archivo. Se recuerda que la
función FreeFile devuelve un número entero válido (esto es que no está siendo utilizado)
para poder abrir un fichero. El último parámetro informa de la longitud de los registros
(todos deben tener la misma longitud). Visual Basic 6.0 dispone de la función
Len(objetoName), que permite calcular la dimensión en bytes de cualquier objeto
perteneciente a una clase o estructura.

De ordinario los ficheros de acceso directo se utilizan para leer o escribir de una vez todo
un bloque de datos. Este bloque suele ser un objeto de una estructura, con varias variables
miembro.

Los ficheros abiertos para acceso directo se cierran con Close, igual que los secuenciales.

Leer y escribir en una archivo de acceso aleatorio. Funciones Get y Put

Se utilizan las funciones Get y Put. Su sintaxis es la siguiente:


Get #fileNo, registroNo, variableObjeto
Put #fileNo, registroNo, variableObjeto

La instrucción Get lee un registro del fichero y almacena los datos leídos en una variable,
que puede ser un objeto de una determinada clase o estructura. La instrucción Put escribe
el contenido de la variable en la posición determinada del fichero. Si se omite el número de
registro se lee (escribe) a continuación del registro leído (escrito) anteriormente. Véase el
siguiente ejemplo:

FileNo=FreeFile
size=Len(unObjeto)

135
Computación I Ing. Queca

Open filename for Random as #fileNo Len=size


Get #fileNo, 3, size

Con este ejemplo, se ha abierto el fichero filename de la misma forma que se realizó en el
ejemplo anterior, pero ahora, además se ha leído un registro de longitud size, y más en
concreto, el tercer registro. Si se quisiera modificar el valor de este registro, no habría más
que asignarle el valor que se quisiera, para a continuación introducirlo en el fichero
mediante la sentencia siguiente:

Put #fileNo, 3, size

FICHEROS DE ACCESO BINARIO

La técnica a emplear es básicamente la misma que con los ficheros de acceso aleatorio, con
la salvedad de que en lugar de manejar registros, en los ficheros de acceso binario se
trabaja con bytes.

Véase el siguiente ejemplo:


FileNo=FreeFile
Open filename for Binary as #fileNo
Get #1, 4, dato
dato = 7
Put #1, 4, dato
Close #1

En el anterior ejemplo se puede observar como primero se introduce en la variable dato el


valor del cuarto byte del fichero filename, para posteriormente asignarle el valor 7, e
introducirlo de nuevo en el cuarto byte de filename.

ARRAYS

Un array permite referirse a una serie de elementos del mismo tipo con un mismo nombre,
y hace referencia un único elemento de la serie utilizando uno o más índices, como un
vector o una matriz en Álgebra.

Devuelve una variante que contiene una matriz.

Sintaxis

Array(lista_argumentos)

El argumento lista_argumentos requerido es una lista de valores delimitados por comas que
se asignan a los elementos de la matriz contenida en el tipo Variant. Si no se especifica
ningún argumento, se crea una matriz de longitud cero.

Comentarios

La notación usada para hacer referencia a cualquier elemento de una matriz consiste en el
nombre de la variable seguido por un paréntesis que contiene un número de índice para el
136
Computación I Ing. Queca

elemento deseado. En el ejemplo siguiente, la primera instrucción crea una variable llamada
A de tipo Variant. La segunda instrucción asigna una matriz a la variable A. La última
instrucción asigna a otra variable el valor contenido en el segundo elemento de la matriz.

Dim A As Variant
A = Array(10,20,30)
B = A(2)

El límite inferior de una matriz creada mediante la función Array se determina por el límite
inferior especificado con la instrucción Option Base, a menos que Array esté autorizado
con el nombre de la biblioteca tipo (por ejemplo VBA.Array). Si se autoriza con el nombre
de la biblioteca tipo, Array no se verá afectado por Option Base.

Nota Una variable Variant no declarada como una matriz puede contener, no obstante,
una matriz. Una variable Variant puede contener una matriz de cualquier tipo, excepto
cadenas de longitud fija y tipos definidos por el usuario. Aunque una variable Variant que
contiene una matriz es conceptualmente diferente de una matriz cuyos elementos son de
tipo Variant, se tiene acceso a los elementos de la matriz del mismo modo.

Ejemplo de la función Array

En este ejemplo se utiliza la función Array para devolver una Variant que contiene una
matriz.

Dim MiSemana, MiDía


MiSemana = Array("Lun", "Mar", "Miér", "Jue", "Vie", "Sáb", "Dom")
' Se da por hecho que el límite inferior es igual a 1
' en los valores devueltos (mediante Opción Base)
MiDía = MiSemana(2) ' MiDía contiene "Mar".
MiDía = MiSemana(4) ' MiDía contiene "Jue".

Instrucción Exit

Sale de un bloque de código de Do…Loop, For...Next, Function, Sub o Property.

Sintaxis

Exit Do

Exit For

Exit Function

Exit Property

Exit Sub

La sintaxis de la instrucción Exit puede ser la siguiente:

137
Computación I Ing. Queca

Instrucción Descripción

Exit Do Proporciona una manera de salir de una instrucción Do...Loop. Solamente se


puede utilizar dentro de una instrucción Do...Loop. La instrucción Exit Do
transfiere el control a la instrucción que sigue a la instrucción Loop. Cuando se
utiliza con instrucciones anidadas Do...Loop, la instrucción Exit Do transfiere el
control al bucle que está anidado un nivel por encima del bucle donde ocurre.

Exit For Proporciona una manera de salir de un bucle For. Sólo se puede utilizar en un
bucle For...Next o For Each...Next. La instrucción Exit For transfiere el control
a la instrucción que sigue a la instrucción Next. Cuando se utiliza con bucles
anidados For, la instrucción Exit For transfiere el control al bucle que está
anidado un nivel por encima del bucle donde ocurre.

Exit Function Sale inmediatamente del procedimiento Function en el que aparece. La ejecución
continúa con la instrucción que sigue a la instrucción que llamó al procedimiento
Function.

Exit Property Sale inmediatamente del procedimiento Property en el que aparece. La ejecución
continúa con la instrucción que sigue a la instrucción que llamó al procedimiento
Property.

Exit Sub Sale inmediatamente del procedimiento Sub en el que aparece. La ejecución
continúa con la instrucción que sigue a la instrucción que llamó al procedimiento
Sub.

Comentarios

No confunda las instrucciones Exit con las instrucciones End. La instrucción Exit no
define dónde termina una estructura.

Ejemplo de la instrucción Exit

En este ejemplo se utiliza la instrucción Exit para salir del bucle For...Next, Do...Loop y
de un procedimiento Sub.

Sub ExitStatementDemo()
Dim I, MiNúmero
Do ' Establece un bucle infinito.
For I = 1 To 1000 ' Hace un bucle 1000 veces.
MiNúmero = Int(Rnd * 1000)' Genera números aleatorios.
Select Case MiNúmero ' Evalúa el número aleatorio.
Case 7: Exit For ' Si es 7, sale de For...Next.
Case 29: Exit Do ' Si es 29, sale de Do...Loop.
Case 54: Exit Sub ' Si es 54, sale del procedimiento Sub.
End Select
Next I
Loop
End Sub

138
Computación I Ing. Queca

programa en Visual Basic

Programa I

Cargue Visual Basic, si no lo ha hecho ya, iniciemos nuestro proyecto que tendrá un solo
formulario, el que aparece por defecto. Active la ventana de propiedades y fije los
siguientes valores.

AutoRedraw=Trae
BorderStyle=Fixed double
Caption=Mi primer Programa

A continuación seleccione en la paleta de herramientas el controlCommandButton, un


Boton normal de Windows e insertelo en la esquina inferior derecha del formulario.
Modifique las siguientes propiedades:

Caption=Saludo
Name=BotónSaludo

El siguiente paso será asignar código a uno de los posibles eventos que puede recibir este
botón. Haga un doble Clic sobre el botón, para abrir la ventana de código, o bien abra el
menú emergente pulsando el botón derecho del ratón, y seleccione la opción Ver código.
Vera como automáticamente el cursor aparece en el cuerpo del procedimiento
BotónSaludo_Click, que será el encargado de responder al evento Clic de este control.
Introducimos la siguiente línea.

Print “!Hola ¡, ¿que tal? “

Y se verá de la siguiente forma:

Private Sub BotónSaludo_Click()


Print "!Hola!, ¿que tal?"
End Sub

139
Computación I Ing. Queca

Programa II

Realizar un programa para convertir numeros decimales a base Binario.

Formulario

Name=Form1
Caption= Ejemplo n:

TextBox
Name=Text1

CommandButton 1
Name= Convertir
Caption= &Convertir

CommandButton 2
Name= Salir
Caption= &Salir

Frame
Name=Frame1
Caption= Resultado - Convertido

Label
Name=Label1

Código fuente

Option Explicit

Dim m As Integer, Conv As String, c As String

Function ConvierTe(n As Integer) As String


m=n
Conv = ""
Do
c = m Mod 2
m=m\2
140
Computación I Ing. Queca

Conv = Str(c) + Conv


Loop Until m = 0

ConvierTe = Conv
End Function

Private Sub Convertir_Click()


If IsNumeric(Text1.Text) Then
Label1.Caption = ConvierTe(Val(Text1.Text))
Else
MsgBox "El valor no es numero", vbCritical, "Error de datos"
End If
End Sub

Private Sub salir_Click()


End
End Sub

141
Computación I Ing. Queca

Bibliografía
Fundamentos de las Computadoras
Jan Smith 2009
http://www.jegsworks.com/lessons-sp/lessonintro.htm

El algoritmo, una iniciación a la programación


Wilder Urbaez
http://www.desarrolloweb.com/manuales/67/

Encarta
2006
Microsoft Corporation

Ayuda Visual Basic


2006
Microsoft Corporation

142

También podría gustarte