Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
Concepto
Una computadora es un dispositivo electrónico que ejecuta las instrucciones en un programa.
Entrada
Todo lo que le decimos a la computadora, es una Entrada o Input.
Tipos de Inputs:
Teclados y Punteros
Teclado El dispositivo para Input más utilizado es el teclado (inglés
keyboard).
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.
3
Computación I Ing. Queca
4
Computación I Ing. Queca
Ciclo de Máquina
Dispositivos
Salida Output
Salida o Output son datos que ya han sido procesados y convertidos en una forma útil que
ahora se llama Información.
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
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.
Memoria Principal
Almacenamiento Auxiliar
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!)
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.
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
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!
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!
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.
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.
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!
10
Computación I Ing. Queca
PROGRAM IDEXMP
INTEGER BUS_NUM
BUS_NUM = 99
WRITE(*,*) ' TAKE BUS ', BUS_NUM
END
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.
11
Computación I Ing. Queca
#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
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:
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
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
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.
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 .
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:
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.
Si se siguen las reglas se puede observar claramente los niveles que tiene cada
operación.
Ejemplo:
Variables
Definición
Estas variables, pueden ser caracteres, nombres, ó combinaciones que permiten temporalmente
guardar información para su manipulación posteriormente;
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
b s
8 3 11
SENTENCIAS DE CONTROL
ESTRUCTURAS ALGORÍTMICAS
ESTRUCTURA SECUENCIALES
Estructura de un Algoritmo
.. à ………………
n à Fin
18
Computación I Ing. Queca
Por tanto:
Para:
L ECTURA
P ROCESOS O CALCULOS
E SCRITURA
Análisis:
Para sumar dos números es necesario contar con tres variables a, b, s:
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
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
Análisis:
Formula:
A = 3.1416*r*r 1 à Inicio
Realizar un algoritmo para que encuentre el área de un triangulo rectángulo, dado los
lados de dicho triangulo ingresado por teclado:
Aná lisis:
Area=
Formula:
A = (b*h)/2 1 à Inicio
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
Realizar un algoritmo para que convierta grados Fahrenheit a Celsius, dado los
grados
F(Fahrenheit) ingresado por teclado:
Pseudocódigo:
1 à Inicio
Inicio
2 à Que la comp. pida la temperatura en Fahrenheit F
Leer F
Fin
5 à Fin
Realizar un algoritmo para que encuentre el área de un triangulo, dado los lados
del triangulo ingresado por teclado:
Algoritmo:
Formula: 1 à Inicio
Proceso a realizar:
P = (a+b+c)/2 4 à Que la comp. Calcule área = sqrt (p*(p-a)*(p-b)*(p-c))
P, área
6 à Fin
Inicio
Leer a , b , c
Area = sqrt(p*(p-a)*(p-b)*(p-c))
Escribir C
Fin
22
Computación I Ing. Queca
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
Realizar un algoritmo para que dado las Horas Minutos y segundos convierta todo
en segundos, H, M, S, ingresados por teclado:
Aná lisis:
Inicio
Leer H, M, S
Segundos=H*3600 + M*60 + S
Escribir Segundos
Fin
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
Inicio
Leer CatA, CatB
Imprime Hip
Fin
24
Computación I Ing. Queca
Inicio
Leer R, H
VOL= 3,1416*R²H
AREA= 2*3,1416*R*H
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:
SUBPROGRAMA SUBPROGRAMAS --
SEGÚN SEA
DECISION MULTIPLE -----
CONECTORES ---
26
Computación I Ing. Queca
INICIO
5
C= F − 32 Ejecutándose todas una sola vez
9
FIN
: Diagrama de Flujo:
INICIO
1 à Inicio
s = a+b
4 à Que la comp. Calcule s=a+b
6 à Fin
FIN
27
Computación I Ing. Queca
INICIO
Inicio
Leer r
A = 3,1416 * r * r r
Escribir A
Fin
A = 3.1416 * r * r
FIN
Realizar un algoritmo para que encuentre el área de un triangulo rectángulo, dado los
lados de dicho triangulo ingresado por teclado:
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
Realizar un algoritmo para que convierta grados Fahrenheit a Celsius, dado los
grados F(Fahrenheit) ingresado por teclado:
Inicio
Leer F
F
C=(5/9)*(F – 32)
Imprimir C
5
Fin C= F − 32
9
FIN
Realizar un algoritmo para que encuentre el área de un triangulo, dado los lados
del triangulo ingresado por teclado:
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
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:
INICIO
aX + bY = c
dX + eY= f
Inicio a, b, c, d, e, f
Leer a, b, c, d, e, f
X, Y
FIN
Realizar un algoritmo para que convierta Horas en Segundos, dado una H(hora)
ingresado por teclado
INICIO
Inicio
Leer H H
S = H*3600
Imprimir S
Fin S = H * 3600
FIN
30
Computación I Ing. Queca
Realizar un algoritmo para que dado las Horas Minutos y segundos convierta todo
en segundos, H, M, S, ingresados por teclado:
INICIO
Inicio
H, M, S
Leer H, M, S
Segundos
FIN
Realizar un algoritmo para que convierta Kilogramos a Libras, dado L(libras) ingresado por
teclado:
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:
No cumple Si cumple
Condición
Sentencias Sentencias
Diagrama Sintáctico:
32
Computación I Ing. Queca
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:
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
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
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
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
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
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
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
INICIO
a, b, c
No Si
a>b
No Si No Si
b>c a>c
Mayor
FIN
36
Computación I Ing. Queca
10 2 No Si
Residuo (Num/2) = 0
0 5
15 2
1 7
FIN
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:
Análisis:
D = b *b 4*a*c D= discriminante
D=b*b-4*a*c
Si D < 0
Opción
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
FIN
38
Computación I Ing. Queca
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
FIN
39
Computación I Ing. Queca
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.
Sentencias
Sentencias
Sentencias
Sintaxis:
Para <variable> = <Inicio de Bucle> à <Fin de Bucle>
Sentencias
40
Computación I Ing. Queca
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
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á ingresado por teclado.
INICIO
se incrementara en uno cada vez que retorne
n
2 4 6 8 10
I=1à n
FIN
41
Computación I Ing. Queca
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
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á 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
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
FIN
Sentencia Mientras:
Sentencias
Sintaxis:
Mientras <Condicion>
<Sentencias>
Fin Mientras
43
Computación I Ing. Queca
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
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
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
Sentencias
Sintaxis:
Hacer
<Sentencias>
Mientras <Condicion>
45
Computación I Ing. Queca
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
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
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
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.
n n n
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
* / * / * / * /* / * /* / * /* / * /
para N términos
INICIO
I=1à N
Residuo(I/2)=1
Nota > 51
/ *
FIN
50
Computación I Ing. Queca
* * * * * para N = 5
* * * * *
* * * * *
* * * * *
* * * * *
INICIO
I=1à N
J=1à N
Salto d Línea
FIN
51
Computación I Ing. Queca
* * * * * para N = 5
* * * *
* * *
* *
*
INICIO
I=Nà 1
J=1à I
Salto d Línea
FIN
52
Computación I Ing. Queca
* para N = 5
* *
* * *
* * * *
* * * * *
INICIO
I = 1à N
J = 1à I
Salto d Línea
FIN
53
Computación I Ing. Queca
* * * * * para N = 5
* * * *
* * *
* *
*
INICIO
I=1à N
J=1à N
J>=I
Espacio *
Salto d Línea
FIN
54
Computación I Ing. Queca
* * * * * 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
Realizar un Diagrama de Flujo que rote los dígitos de un número, el valor de N será ingresado
por teclado.
Ejemplo:
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
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
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.
a[1] = 5 5
a[2] = 3 3
a[4] = 1
1
60
Computación I Ing. Queca
Casillas de la Fila 1
Arreglo [fila][Columna]
Casillas de la Fila 2
a[1][2] = 5
Columna 0
Columna 1
Columna 2
Columna 3
a[2][3] = 3
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
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
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
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
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
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
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
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 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 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
Sub Main()
End Sub
End Module
70
Computación I Ing. Queca
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
S = 4*D S= 4*D
D Console.WriteLine(D) Impresion en
Console.WriteLine( Tiene & D & Bolivianos ) Pantalla
Tiene D Bolivianos
do
Sentencias
< Sentencias > Hacer Mientras
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)
End Module
Ejemplo 163:
Realizar la codificación en Visual Basic.Net el siguiente diagrama de flujo
Module Module1
No Si
Nota < 51 If Nota < 51 Then
Console.WriteLine( Reprobado )
Else
Aprobó Reprobó
Console.WriteLine( Aprobado )
End If
End Module
72
Computación I Ing. Queca
Operadores:
73
Computación I Ing. Queca
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.
74
Computación I Ing. Queca
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
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
s = a+b s = a + b
s Print s
Ejemplo 163:
Realizar la codificación en Visual Basic.Net el siguiente diagrama de flujo
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
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
Fin
77
Computación I Ing. Queca
Operadores:
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
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
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)
Control
TextBox (Cuadro de texto)
Control
CommandButton (Botón)
Comenzar o terminar un proceso. Cuando el usuario pulsa este botón, se produce el evento Click.
80
Computación I Ing. Queca
Control
Control
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.
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
C# Basic.net Java#
button1.Text= "&Suma"; Suma.Text= "&Suma" button1.set_Text("&Suma");
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".
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
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.
C# Basic.net Java#
Boolean v; Dim v As Boolean boolean v;
v=CheckBox1.Checked; v=CheckBox1.Checked v=CheckBox1.get_Checked();
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.
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.
C# Basic.net Java#
84
Computación I Ing. Queca
C# Basic.net Java#
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.
85
Computación I Ing. Queca
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.
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");
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
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.
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.
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
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.
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
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.
cylinderObj= AcadModel.AddCylinder(cylCenter,cylRadius,cylinderHeight)
cylinderObj.Color = 3 'acWhite
92
Computación I Ing. Queca
boxObj.Boolean(acSubtraction, cylinderObj)
AcadDoc.Regen(True)
Ejemplo 178:
Ejemplo realizado en Visual Basic 6.0 que trabaja con AutoCAD, se muestra en el siguiente
grafico
93
Computación I Ing. Queca
Dim endAngle2 As Double
Dim regObj
regObj = AcadModel.AddRegion(curves)
regObj(0).Color = 2
94
Computación I Ing. Queca
Dim solidObj As Object
Set solidObj=AcadModel.AddRevolvedSolid(regObj(0),axisPt,axisDir, angle)
solidObj.Color = 4
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.
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.
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.
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.
OPERADORES
Operadores Aritméticos
^ (Operador)
Sintaxis
resultado = número^exponente
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.
Dim MiValor
MiValor = 2 ^ 2 ' Devuelve 4.
MiValor = 3 ^ 3 ^ 3 ' Devuelve 19683.
MiValor = (-5) ^ 3 ' Devuelve -125.
* (Operador)
Sintaxis
resultado = número1*número2
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
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
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.
Dim MiValor
MiValor = 2 * 2 ' Devuelve 4.
MiValor = 459.35 * 334.90 ' Devuelve 153836.315.
/ (operador)
Sintaxis
resultado = número1/número2
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
Dim MiValor
MiValor = 10 / 4 ' Devuelve 2.5.
MiValor = 10 / 3 ' Devuelve 3.333333.
\ (operador)
Sintaxis
resultado = número1\número2
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
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.
Dim MiValor
MiValor = 11 \ 4 ' Devuelve 2.
MiValor = 9 \ 3 ' Devuelve 3.
MiValor = 100 \ 3 ' Devuelve 33.
Mod (operador)
Sintaxis
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
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)
Sintaxis
resultado = expresión1+expresión2
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
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
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
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.
- (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
Parte Descripción
resultado Requerido; cualquier variable numérica.
105
Computación I Ing. Queca
Comentarios
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.
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.
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)
Sintaxis
Atn(número)
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
Para convertir grados en radianes, multiplique los grados por PI/180. Para convertir
radianes en grados, multiplique los radianes por 180/pi.
Dim pi
pi = 4 * Atn(1) ' Calcula el valor de pi.
Cos (Función)
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
Para convertir grados en radianes, multiplique los grados por pi/180. Para convertir
radianes en grados, multiplique los radianes por 180/pi.
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)
Comentarios
En este ejemplo se utiliza la función Exp para que devuelva e elevado a una potencia.
Sintaxis
Int(número)
Fix(número)
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.
Sgn(número) * Int(Abs(número))
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.
Log (Función)
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 ejemplo siguiente ilustra una función personalizada (Function) que calcula logaritmos
en base 10:
110
Computación I Ing. Queca
En este ejemplo se utiliza la función Log para que devuelve el logaritmo natural de un
número.
Rnd (Función)
Sintaxis
Rnd[(número)]
Valores devueltos
Comentarios
La función Rnd devuelve un valor menor que 1 pero mayor o igual que cero.
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
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.
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)
Sintaxis
Sgn(número)
Valores devueltos
Comentarios
El signo del argumento número determina el valor devuelto por la función Sgn.
Sin (Función)
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.
Para convertir grados en radianes, multiplique los grados por pi/180. Para convertir
radianes en grados, multiplique los radianes por 180/pi.
Sqr (Función)
Sintaxis
Sqr(número)
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)
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
Para convertir grados en radianes, multiplique los grados por pi/180. Para convertir
radianes en grados, multiplique los radianes por 180/pi.
114
Computación I Ing. Queca
FUNCIONES y PROCEDIMIENTOS
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.
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)
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:
117
Computación I Ing. Queca
Procedimientos SUB
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.
La llamada a este procedimiento Sub puede ser de cualquiera de las dos formas siguientes:
Raiz N, F
Call Raiz(N, F)
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
SENTENCIAS DE CONTROL
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 condicion Then
sentencia(s)
[Else
sentencia(s)]
End If
119
Computación I Ing. Queca
If condicion1 Then
sentencias1
ElseIf condicion2 Then
sentencias2
Else
sentencia-n
End If
120
Computación I Ing. Queca
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,
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
Sentencias
…………. Exit /
variable
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
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.
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,
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).
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,
124
Computación I Ing. Queca
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
Parte Descripción
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.
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.
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.
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
Parte Descripción
126
Computación I Ing. Queca
Valores
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
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
vbOK 1 Aceptar
vbCancel 2 Cancelar
vbAbort 3 Anular
vbRetry 4 Reintentar
vbIgnore 5 Ignorar
vbYes 6 Sí
vbNo 7 No
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.
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):
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.
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
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)
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:
FICHEROS
Tipos de Ficheros
Tanto en Windows como en Visual Basic 6.0 existen, principalmente, dos tipos de
archivos:
• 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.
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).
Para poder leer o escribir en un fichero antes debe ser abierto con la sentencia Open, cuya
forma general es la siguiente:
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.
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.
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:
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.
La función Line Input # lee una línea completa del archivo y devuelve su contenido como
valor de retorno. Su forma general es:
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
También se puede utilizar la función Input, que tiene la siguiente forma general:
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:
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...”.
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
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).
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.
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
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:
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.
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.
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.
En este ejemplo se utiliza la función Array para devolver una Variant que contiene una
matriz.
Instrucción Exit
Sintaxis
Exit Do
Exit For
Exit Function
Exit Property
Exit Sub
137
Computación I Ing. Queca
Instrucción Descripción
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.
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 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
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.
139
Computación I Ing. Queca
Programa II
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
ConvierTe = Conv
End Function
141
Computación I Ing. Queca
Bibliografía
Fundamentos de las Computadoras
Jan Smith 2009
http://www.jegsworks.com/lessons-sp/lessonintro.htm
Encarta
2006
Microsoft Corporation
142